From 8a083f40b0a560f18d673751c1ac54cd428aef25 Mon Sep 17 00:00:00 2001 From: csf Date: Mon, 6 Mar 2023 23:37:43 +0900 Subject: [PATCH 01/26] fix mobile change theme failure --- flutter/lib/common.dart | 2 +- src/lang/cn.rs | 2 +- src/lang/tw.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart index dc91e941..3d6f62ef 100644 --- a/flutter/lib/common.dart +++ b/flutter/lib/common.dart @@ -375,7 +375,7 @@ class MyTheme { static void changeDarkMode(ThemeMode mode) async { Get.changeThemeMode(mode); - if (desktopType == DesktopType.main) { + if (desktopType == DesktopType.main || isAndroid || isIOS) { if (mode == ThemeMode.system) { await bind.mainSetLocalOption(key: kCommConfKeyTheme, value: ''); } else { diff --git a/src/lang/cn.rs b/src/lang/cn.rs index 3f4f6d25..b5f71e58 100644 --- a/src/lang/cn.rs +++ b/src/lang/cn.rs @@ -349,7 +349,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Security", "安全"), ("Theme", "主题"), ("Dark Theme", "暗黑主题"), - ("Light Theme", ""), + ("Light Theme", "明亮主题"), ("Dark", "黑暗"), ("Light", "明亮"), ("Follow System", "跟随系统"), diff --git a/src/lang/tw.rs b/src/lang/tw.rs index d0f12cdf..3fb2297e 100644 --- a/src/lang/tw.rs +++ b/src/lang/tw.rs @@ -349,7 +349,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Security", "安全"), ("Theme", "主題"), ("Dark Theme", "暗黑主題"), - ("Light Theme", ""), + ("Light Theme", "明亮主題"), ("Dark", "黑暗"), ("Light", "明亮"), ("Follow System", "跟隨系統"), From 9f69cf3d6edc76d15a7c82672c0c3245a35ce469 Mon Sep 17 00:00:00 2001 From: csf Date: Tue, 7 Mar 2023 11:08:41 +0900 Subject: [PATCH 02/26] fix mobile server event stream --- flutter/lib/consts.dart | 3 +++ src/flutter.rs | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/flutter/lib/consts.dart b/flutter/lib/consts.dart index 95e4d17e..e2a3c6f0 100644 --- a/flutter/lib/consts.dart +++ b/flutter/lib/consts.dart @@ -14,7 +14,10 @@ const String kPeerPlatformAndroid = "Android"; /// [kAppTypeMain] used by 'Desktop Main Page' , 'Mobile (Client and Server)', "Install Page" const String kAppTypeMain = "main"; + +/// [kAppTypeConnectionManager] only for 'Desktop CM Page' const String kAppTypeConnectionManager = "cm"; + const String kAppTypeDesktopRemote = "remote"; const String kAppTypeDesktopFileTransfer = "file transfer"; const String kAppTypeDesktopPortForward = "port forward"; diff --git a/src/flutter.rs b/src/flutter.rs index a39b992b..354e418e 100644 --- a/src/flutter.rs +++ b/src/flutter.rs @@ -26,8 +26,14 @@ use std::{ sync::{Arc, RwLock}, }; +/// tag "main" for [Desktop Main Page] and [Mobile (Client and Server)] (the mobile don't need multiple windows, only one global event stream is needed) +/// tag "cm" only for [Desktop CM Page] pub(super) const APP_TYPE_MAIN: &str = "main"; +#[cfg(not(any(target_os = "android", target_os = "ios")))] pub(super) const APP_TYPE_CM: &str = "cm"; +#[cfg(any(target_os = "android", target_os = "ios"))] +pub(super) const APP_TYPE_CM: &str = "main"; + pub(super) const APP_TYPE_DESKTOP_REMOTE: &str = "remote"; pub(super) const APP_TYPE_DESKTOP_FILE_TRANSFER: &str = "file transfer"; pub(super) const APP_TYPE_DESKTOP_PORT_FORWARD: &str = "port forward"; From 93d196c2f89929e52c97c992375c459a434a7e45 Mon Sep 17 00:00:00 2001 From: csf Date: Tue, 7 Mar 2023 11:21:23 +0900 Subject: [PATCH 03/26] mobile save config when disable input --- flutter/lib/models/server_model.dart | 3 +++ 1 file changed, 3 insertions(+) diff --git a/flutter/lib/models/server_model.dart b/flutter/lib/models/server_model.dart index 7ee23ec4..90059e47 100644 --- a/flutter/lib/models/server_model.dart +++ b/flutter/lib/models/server_model.dart @@ -263,8 +263,11 @@ class ServerModel with ChangeNotifier { toggleInput() { if (_inputOk) { parent.target?.invokeMethod("stop_input"); + bind.mainSetOption(key: "enable-keyboard", value: 'N'); } else { if (parent.target != null) { + /// the result of toggle-on depends on user actions in the settings page. + /// handle result, see [ServerModel.changeStatue] showInputWarnAlert(parent.target!); } } From 56773b8d548098f52be37460a1b17eef4878552e Mon Sep 17 00:00:00 2001 From: Mr-Update <37781396+Mr-Update@users.noreply.github.com> Date: Tue, 7 Mar 2023 14:55:26 +0100 Subject: [PATCH 04/26] Update README-DE.md --- docs/README-DE.md | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/README-DE.md b/docs/README-DE.md index ff3ec1d7..2c159bd0 100644 --- a/docs/README-DE.md +++ b/docs/README-DE.md @@ -6,18 +6,18 @@ DateistrukturScreenshots
[English] | [Українська] | [česky] | [中文] | [Magyar] | [Español] | [فارسی] | [Français] | [Polski] | [Indonesian] | [Suomi] | [മലയാളം] | [日本語] | [Nederlands] | [Italiano] | [Русский] | [Português (Brasil)] | [Esperanto] | [한국어] | [العربي] | [Tiếng Việt] | [Dansk] | [Ελληνικά]
- Wir brauchen deine Hilfe, um dieses README, die RustDesk-Benutzeroberfläche und die Dokumentation in deine Muttersprache zu übersetzen. + Wir brauchen Ihre Hilfe, um dieses README, die RustDesk-Benutzeroberfläche und die Dokumentation in Ihre Muttersprache zu übersetzen.

-Rede mit uns auf: [Discord](https://discord.gg/nDceKgxnkV) | [Twitter](https://twitter.com/rustdesk) | [Reddit](https://www.reddit.com/r/rustdesk) +Reden Sie mit uns auf: [Discord](https://discord.gg/nDceKgxnkV) | [Twitter](https://twitter.com/rustdesk) | [Reddit](https://www.reddit.com/r/rustdesk) [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/I2I04VU09) -RustDesk ist eine in Rust geschriebene Remote-Desktop-Software, die out of the box ohne besondere Konfiguration funktioniert. Du hast die volle Kontrolle über deine Daten und musst dir keine Sorgen um die Sicherheit machen. Du kannst unseren Rendezvous/Relay-Server nutzen, [einen eigenen Server aufsetzen](https://rustdesk.com/server) oder [einen eigenen Server programmieren](https://github.com/rustdesk/rustdesk-server-demo). +RustDesk ist eine in Rust geschriebene Remote-Desktop-Software, die out of the box ohne besondere Konfiguration funktioniert. Sie haben die volle Kontrolle über Ihre Daten und müssen sich keine Sorgen um die Sicherheit machen. Sie können unseren Rendezvous/Relay-Server nutzen, [einen eigenen Server aufsetzen](https://rustdesk.com/server) oder [einen eigenen Server programmieren](https://github.com/rustdesk/rustdesk-server-demo). ![image](https://user-images.githubusercontent.com/71636191/171661982-430285f0-2e12-4b1d-9957-4a58e375304d.png) -RustDesk heißt jegliche Mitarbeit willkommen. Schau dir [CONTRIBUTING-DE.md](CONTRIBUTING-DE.md) an, wenn du Unterstützung beim Start brauchst. +RustDesk heißt jegliche Mitarbeit willkommen. Schauen Sie sich [CONTRIBUTING-DE.md](CONTRIBUTING-DE.md) an, wenn Sie Unterstützung beim Start brauchen. [**FAQ**](https://github.com/rustdesk/rustdesk/wiki/FAQ) @@ -31,29 +31,29 @@ RustDesk heißt jegliche Mitarbeit willkommen. Schau dir [CONTRIBUTING-DE.md](CO ## Freie öffentliche Server -Nachfolgend sind die Server gelistet, die du kostenlos nutzen kannst. Es kann sein, dass sich diese Liste immer mal wieder ändert. Falls du nicht in der Nähe einer dieser Server bist, kann es sein, dass deine Verbindung langsam sein wird. +Nachfolgend sind die Server gelistet, die Sie kostenlos nutzen können. Es kann sein, dass sich diese Liste immer mal wieder ändert. Falls Sie nicht in der Nähe einer dieser Server sind, kann es sein, dass Ihre Verbindung langsam sein wird. | Standort | Anbieter | Spezifikation | | --------- | ------------- | ------------------ | -| Südkorea (Seoul) | AWS lightsail | 1 vCPU / 0,5 GB RAM | -| Deutschland | Hetzner | 2 vCPU / 4 GB RAM | -| Deutschland | Codext | 4 vCPU / 8 GB RAM | -| Finnland (Helsinki) | 0x101 Cyber Security | 4 vCPU / 8 GB RAM | -| USA (Ashburn) | 0x101 Cyber Security | 4 vCPU / 8 GB RAM | -| Ukraine (Kiew) | dc.volia (2VM) | 2 vCPU / 4 GB RAM | +| Südkorea (Seoul) | [AWS lightsail](https://aws.amazon.com/de/) | 1 vCPU / 0,5 GB RAM | +| Deutschland | [Hetzner](https://www.hetzner.com/de/) | 2 vCPU / 4 GB RAM | +| Deutschland | [Codext](https://codext.de/) | 4 vCPU / 8 GB RAM | +| Finnland (Helsinki) | [Netlock](https://netlockendpoint.com/de/index.html) | 4 vCPU / 8 GB RAM | +| USA (Ashburn) | [Netlock](https://netlockendpoint.com/de/index.html) | 4 vCPU / 8 GB RAM | +| Ukraine (Kiew) | [dc.volia](https://dc.volia.com) | 2 vCPU / 4 GB RAM | ## Dev-Container [![In Dev-Containern öffnen](https://img.shields.io/static/v1?label=Dev%20Container&message=Open&color=blue&logo=visualstudiocode)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/rustdesk/rustdesk) -Wenn du VS Code und Docker bereits installiert hast, kannst du auf das Abzeichen oben klicken, um loszulegen. Wenn du darauf klickst, wird VS Code automatisch die Dev-Container-Erweiterung installieren, den Quellcode in ein Container-Volume klonen und einen Dev-Container für die Verwendung aufsetzen. +Wenn Sie VS Code und Docker bereits installiert haben, können Sie auf das Abzeichen oben klicken, um loszulegen. Wenn Sie darauf klicken, wird VS Code automatisch die Dev-Container-Erweiterung installieren, den Quellcode in ein Container-Volume klonen und einen Dev-Container für die Verwendung aufsetzen. -Weitere Informationen findest du in [DEVCONTAINER-DE.md](DEVCONTAINER-DE.md). +Weitere Informationen finden Sie in [DEVCONTAINER-DE.md](DEVCONTAINER-DE.md). ## Abhängigkeiten Desktop-Versionen verwenden [Sciter](https://sciter.com/) oder Flutter für die GUI, dieses Tutorial ist nur für Sciter. -Bitte lade die dynamische Bibliothek Sciter selbst herunter. +Bitte laden Sie die dynamische Bibliothek Sciter selbst herunter. [Windows](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.win/x64/sciter.dll) | [Linux](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so) | @@ -61,14 +61,14 @@ Bitte lade die dynamische Bibliothek Sciter selbst herunter. ## Grobe Schritte zum Kompilieren -- Bereite deine Rust-Entwicklungsumgebung und C++-Build-Umgebung vor +- Bereiten Sie Ihre Rust-Entwicklungsumgebung und C++-Build-Umgebung vor -- Installiere [vcpkg](https://github.com/microsoft/vcpkg) und füge die Systemumgebungsvariable `VCPKG_ROOT` hinzu +- Installieren Sie [vcpkg](https://github.com/microsoft/vcpkg) und fügen Sie die Systemumgebungsvariable `VCPKG_ROOT` hinzu - Windows: `vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static` - Linux/macOS: `vcpkg install libvpx libyuv opus` -- Nutze `cargo run` +- Nutzen Sie `cargo run` ## [Erstellen](https://rustdesk.com/docs/de/dev/build/) @@ -167,7 +167,7 @@ method return time=1662544486.931020 sender=:1.54 -> destination=:1.139 serial=2 ## Auf Docker kompilieren -Beginne damit, das Repository zu klonen und den Docker-Container zu bauen: +Beginnen Sie damit, das Repository zu klonen und den Docker-Container zu bauen: ```sh git clone https://github.com/rustdesk/rustdesk @@ -175,25 +175,25 @@ cd rustdesk docker build -t "rustdesk-builder" . ``` -Führe jedes Mal, wenn du das Programm kompilieren musst, folgenden Befehl aus: +Führen Sie jedes Mal, wenn Sie das Programm kompilieren müssen, folgenden Befehl aus: ```sh docker run --rm -it -v $PWD:/home/user/rustdesk -v rustdesk-git-cache:/home/user/.cargo/git -v rustdesk-registry-cache:/home/user/.cargo/registry -e PUID="$(id -u)" -e PGID="$(id -g)" rustdesk-builder ``` -Bedenke, dass das erste Kompilieren länger dauern kann, bis die Abhängigkeiten zwischengespeichert sind. Nachfolgende Kompiliervorgänge sind schneller. Wenn du verschiedene Argumente für den Kompilierbefehl angeben musst, kannst du dies am Ende des Befehls an der Position `` tun. Wenn du zum Beispiel eine optimierte Releaseversion kompilieren willst, kannst du `--release` am Ende des Befehls anhängen. Das daraus entstehende Programm findest du im Zielordner auf deinem System. Du kannst es mit folgendem Befehl ausführen: +Bedenken Sie, dass das erste Kompilieren länger dauern kann, bis die Abhängigkeiten zwischengespeichert sind. Nachfolgende Kompiliervorgänge sind schneller. Wenn Sie verschiedene Argumente für den Kompilierbefehl angeben müssen, können Sie dies am Ende des Befehls an der Position `` tun. Wenn Sie zum Beispiel eine optimierte Releaseversion kompilieren wollen, können Sie `--release` am Ende des Befehls anhängen. Das daraus entstehende Programm finden Sie im Zielordner auf Ihrem System. Sie können es mit folgendem Befehl ausführen: ```sh target/debug/rustdesk ``` -Oder, wenn du eine Releaseversion benutzt: +Oder, wenn Sie eine Releaseversion benutzen: ```sh target/release/rustdesk ``` -Bitte stelle sicher, dass du diese Befehle im Stammverzeichnis des RustDesk-Repositorys nutzt. Ansonsten kann es passieren, dass das Programm die Ressourcen nicht finden kann. Bitte bedenke auch, dass andere Cargo-Unterbefehle wie `install` oder `run` aktuell noch nicht unterstützt werden, da sie das Programm innerhalb des Containers starten oder installieren würden, anstatt auf deinem eigentlichen System. +Bitte stellen Sie sicher, dass Sie diese Befehle im Stammverzeichnis des RustDesk-Repositorys nutzen. Ansonsten kann es passieren, dass das Programm die Ressourcen nicht finden kann. Bitte bedenken Sie auch, dass andere Cargo-Unterbefehle wie `install` oder `run` aktuell noch nicht unterstützt werden, da sie das Programm innerhalb des Containers starten oder installieren würden, anstatt auf Ihrem eigentlichen System. ## Dateistruktur From 8f3f0d4cc4541b8ff3dfc2664f5658a7cc13726f Mon Sep 17 00:00:00 2001 From: tsarmis <126983335+tsarmis@users.noreply.github.com> Date: Tue, 7 Mar 2023 19:58:03 +0200 Subject: [PATCH 05/26] Update and rename gr.rs to el.rs --- src/lang/{gr.rs => el.rs} | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) rename src/lang/{gr.rs => el.rs} (97%) diff --git a/src/lang/gr.rs b/src/lang/el.rs similarity index 97% rename from src/lang/gr.rs rename to src/lang/el.rs index 819c257c..40cf36b9 100644 --- a/src/lang/gr.rs +++ b/src/lang/el.rs @@ -24,7 +24,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Refresh random password", "Νέος τυχαίος κωδικός πρόσβασης"), ("Set your own password", "Ορίστε τον δικό σας κωδικό πρόσβασης"), ("Enable Keyboard/Mouse", "Ενεργοποίηση πληκτρολογίου/ποντικιού"), - ("Enable Clipboard", "Ενεργοποίηση Προχείρου"), + ("Enable Clipboard", "Ενεργοποίηση προχείρου"), ("Enable File Transfer", "Ενεργοποίηση μεταφοράς αρχείων"), ("Enable TCP Tunneling", "Ενεργοποίηση TCP Tunneling"), ("IP Whitelisting", "Λίστα επιτρεπόμενων IP"), @@ -44,7 +44,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("id_change_tip", "Επιτρέπονται μόνο οι χαρακτήρες a-z, A-Z, 0-9 και _ (υπογράμμιση). Το πρώτο γράμμα πρέπει να είναι a-z, A-Z και το μήκος πρέπει να είναι μεταξύ 6 και 16 χαρακτήρων."), ("Website", "Ιστότοπος"), ("About", "Πληροφορίες"), - ("Slogan_tip", "Προγραμματισμένος με πάθος - σε έναν κόσμο που βυθίζεται στο χάος!"), + ("Slogan_tip", "Φτιαγμένο με πάθος - σε έναν κόσμο που βυθίζεται στο χάος!"), ("Privacy Statement", "Πολιτική απορρήτου"), ("Mute", "Σίγαση"), ("Build Date", "Ημερομηνία δημιουργίας"), @@ -120,12 +120,12 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Original", "Πρωτότυπο"), ("Shrink", "Συρρίκνωση"), ("Stretch", "Προσαρμογή"), - ("Scrollbar", "Γραμμή κύλισης"), + ("Scrollbar", "Μπάρα κύλισης"), ("ScrollAuto", "Αυτόματη κύλιση"), ("Good image quality", "Καλή ποιότητα εικόνας"), - ("Balanced", "Ισορροπημένο"), - ("Optimize reaction time", "Βελτιστοποίηση χρόνου αντίδρασης"), - ("Custom", "Προσαρμογή ποιότητας εικόνας"), + ("Balanced", "Ισορροπημένη"), + ("Optimize reaction time", "Βελτιστοποίηση απόκρισης"), + ("Custom", "Προσαρμοσμένη ποιότητας εικόνας"), ("Show remote cursor", "Εμφάνιση απομακρυσμένου κέρσορα"), ("Show quality monitor", "Εμφάνιση παρακολούθησης ποιότητας σύνδεσης"), ("Disable clipboard", "Απενεργοποίηση προχείρου"), @@ -146,9 +146,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Set Password", "Ορίστε κωδικό πρόσβασης"), ("OS Password", "Κωδικός πρόσβασης λειτουργικού συστήματος"), ("install_tip", "Λόγω UAC, το RustDesk ενδέχεται να μην λειτουργεί σωστά σε ορισμένες περιπτώσεις. Για να αποφύγετε το UAC, κάντε κλικ στο κουμπί παρακάτω για να εγκαταστήσετε το RustDesk στο σύστημα"), - ("Click to upgrade", "Κάντε κλικ για αναβάθμιση"), - ("Click to download", "Κάντε κλικ για λήψη"), - ("Click to update", "Κάντε κλικ για ενημέρωση"), + ("Click to upgrade", "Πιέστε για αναβάθμιση"), + ("Click to download", "Πιέστε για λήψη"), + ("Click to update", "Πιέστε για ενημέρωση"), ("Configure", "Διαμόρφωση"), ("config_acc", "Για τον απομακρυσμένο έλεγχο του υπολογιστή σας, πρέπει να εκχωρήσετε δικαιώματα πρόσβασης στο RustDesk."), ("config_screen", "Για να αποκτήσετε απομακρυσμένη πρόσβαση στον υπολογιστή σας, πρέπει να εκχωρήσετε το δικαίωμα RustDesk \"Screen Capture\"."), @@ -242,7 +242,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Invalid folder name", "Μη έγκυρο όνομα φακέλου"), ("Socks5 Proxy", "Διαμεσολαβητής Socks5"), ("Hostname", "Όνομα υπολογιστή"), - ("Discovered", "Ανακαλύφθηκε"), + ("Discovered", "Ανακαλύφθηκαν"), ("install_daemon_tip", "Για να ξεκινά με την εκκίνηση του υπολογιστή, πρέπει να εγκαταστήσετε την υπηρεσία συστήματος"), ("Remote ID", "Απομακρυσμένο ID"), ("Paste", "Επικόλληση"), @@ -344,7 +344,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Secure Connection", "Ασφαλής σύνδεση"), ("Insecure Connection", "Μη ασφαλής σύνδεση"), ("Scale original", "Κλιμάκωση πρωτότυπου"), - ("Scale adaptive", "Προσαρμοστική κλίμακα"), + ("Scale adaptive", "Προσαρμοσμένη κλίμακα"), ("General", "Γενικά"), ("Security", "Ασφάλεια"), ("Theme", "Θέμα"), @@ -460,6 +460,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Codec", "Κωδικοποίηση"), ("Resolution", "Ανάλυση"), ("No transfers in progress", "Δεν υπάρχει μεταφορά σε εξέλιξη"), - ("Set one-time password length", ""), - ].iter().cloned().collect(); + ("Set one-time password length", "Μέγεθος κωδικού μιας χρήσης"), + ].iter().cloned().collect(); } From cd70da2e57dbe7eb46919f6ee9365640c7b0d632 Mon Sep 17 00:00:00 2001 From: tsarmis <126983335+tsarmis@users.noreply.github.com> Date: Tue, 7 Mar 2023 20:13:38 +0200 Subject: [PATCH 06/26] Update lang.rs the correct locale for the Greek language is el. (el, el_GR, el_CY all are the same Greek language) --- src/lang.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lang.rs b/src/lang.rs index 23ffa08d..97251032 100644 --- a/src/lang.rs +++ b/src/lang.rs @@ -10,7 +10,7 @@ mod eo; mod es; mod fa; mod fr; -mod gr; +mod el; mod hu; mod id; mod it; @@ -59,7 +59,7 @@ pub const LANGS: &[(&str, &str)] = &[ ("ua", "Українська"), ("fa", "فارسی"), ("ca", "Català"), - ("gr", "Ελληνικά"), + ("el", "Ελληνικά"), ("sv", "Svenska"), ("sq", "Shqip"), ("sr", "Srpski"), @@ -122,7 +122,7 @@ pub fn translate_locale(name: String, locale: &str) -> String { "ua" => ua::T.deref(), "fa" => fa::T.deref(), "ca" => ca::T.deref(), - "gr" => gr::T.deref(), + "el" => el::T.deref(), "sv" => sv::T.deref(), "sq" => sq::T.deref(), "sr" => sr::T.deref(), From 39dba0c7afcf3c5f32737d28714771cd1239041a Mon Sep 17 00:00:00 2001 From: grummbeer Date: Tue, 7 Mar 2023 21:20:30 +0100 Subject: [PATCH 07/26] Android. Remove exclamation mark from notification. --- .../src/main/kotlin/com/carriez/flutter_hbb/MainService.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flutter/android/app/src/main/kotlin/com/carriez/flutter_hbb/MainService.kt b/flutter/android/app/src/main/kotlin/com/carriez/flutter_hbb/MainService.kt index fa7440c8..1c3fbce6 100644 --- a/flutter/android/app/src/main/kotlin/com/carriez/flutter_hbb/MainService.kt +++ b/flutter/android/app/src/main/kotlin/com/carriez/flutter_hbb/MainService.kt @@ -623,7 +623,7 @@ class MainService : Service() { .setAutoCancel(true) .setPriority(NotificationCompat.PRIORITY_DEFAULT) .setContentTitle(DEFAULT_NOTIFY_TITLE) - .setContentText(translate(DEFAULT_NOTIFY_TEXT) + '!') + .setContentText(translate(DEFAULT_NOTIFY_TEXT)) .setOnlyAlertOnce(true) .setContentIntent(pendingIntent) .setColor(ContextCompat.getColor(this, R.color.primary)) @@ -689,7 +689,7 @@ class MainService : Service() { private fun setTextNotification(_title: String?, _text: String?) { val title = _title ?: DEFAULT_NOTIFY_TITLE - val text = _text ?: translate(DEFAULT_NOTIFY_TEXT) + '!' + val text = _text ?: translate(DEFAULT_NOTIFY_TEXT) val notification = notificationBuilder .clearActions() .setStyle(null) From d1e0ae7815870c34f04cff5b8e896d38d91e9437 Mon Sep 17 00:00:00 2001 From: rustdesk Date: Wed, 8 Mar 2023 11:28:00 +0800 Subject: [PATCH 08/26] never show empty display server, use x11 instead, #3541 --- libs/hbb_common/src/platform/linux.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/hbb_common/src/platform/linux.rs b/libs/hbb_common/src/platform/linux.rs index 191ea2e6..f6133415 100644 --- a/libs/hbb_common/src/platform/linux.rs +++ b/libs/hbb_common/src/platform/linux.rs @@ -81,8 +81,10 @@ fn get_display_server_of_session(session: &str) -> String { display_server = sestype; } } - // If the session is not a tty, then just return the type as usual - display_server + if display_server == "" { + display_server = "x11".to_owned(); + } + display_server.to_lowercase() } pub fn get_values_of_seat0(indices: Vec) -> Vec { From 2689688da5a8bc49ef0af31cfb45c060a71c510a Mon Sep 17 00:00:00 2001 From: rustdesk Date: Wed, 8 Mar 2023 11:44:41 +0800 Subject: [PATCH 09/26] chore: remove extra empty --- src/lang/ca.rs | 2 +- src/lang/cn.rs | 2 +- src/lang/cs.rs | 2 +- src/lang/da.rs | 2 +- src/lang/de.rs | 2 +- src/lang/el.rs | 2 +- src/lang/eo.rs | 2 +- src/lang/es.rs | 2 +- src/lang/fa.rs | 2 +- src/lang/fr.rs | 2 +- src/lang/hu.rs | 2 +- src/lang/id.rs | 2 +- src/lang/it.rs | 2 +- src/lang/ja.rs | 2 +- src/lang/ko.rs | 2 +- src/lang/kz.rs | 2 +- src/lang/nl.rs | 2 +- src/lang/pl.rs | 2 +- src/lang/pt_PT.rs | 2 +- src/lang/ptbr.rs | 2 +- src/lang/ro.rs | 2 +- src/lang/ru.rs | 2 +- src/lang/sk.rs | 2 +- src/lang/sl.rs | 2 +- src/lang/sq.rs | 2 +- src/lang/sr.rs | 2 +- src/lang/sv.rs | 2 +- src/lang/template.rs | 2 +- src/lang/th.rs | 2 +- src/lang/tr.rs | 2 +- src/lang/tw.rs | 2 +- src/lang/ua.rs | 2 +- src/lang/vn.rs | 2 +- src/ui_interface.rs | 2 +- 34 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/lang/ca.rs b/src/lang/ca.rs index c4bc10bb..1e3b4930 100644 --- a/src/lang/ca.rs +++ b/src/lang/ca.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Avís"), ("Login screen using Wayland is not supported", "La pantalla d'inici de sessió amb Wayland no és compatible"), ("Reboot required", "Cal reiniciar"), - ("Unsupported display server ", "Servidor de visualització no compatible"), + ("Unsupported display server", "Servidor de visualització no compatible"), ("x11 expected", "x11 necessari"), ("Port", ""), ("Settings", "Ajustaments"), diff --git a/src/lang/cn.rs b/src/lang/cn.rs index 9a8f176a..94f0cd2d 100644 --- a/src/lang/cn.rs +++ b/src/lang/cn.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "警告"), ("Login screen using Wayland is not supported", "不支持使用 Wayland 登录界面"), ("Reboot required", "重启后才能生效"), - ("Unsupported display server ", "不支持当前显示服务器"), + ("Unsupported display server", "不支持当前显示服务器"), ("x11 expected", "请切换到 x11"), ("Port", "端口"), ("Settings", "设置"), diff --git a/src/lang/cs.rs b/src/lang/cs.rs index e3ddc5db..e7fb7684 100644 --- a/src/lang/cs.rs +++ b/src/lang/cs.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Upozornení"), ("Login screen using Wayland is not supported", "Přihlašovací obrazovka prostřednictvím Wayland není podporována"), ("Reboot required", "Je třeba restartovat"), - ("Unsupported display server ", "Nepodporovaný zobrazovací server"), + ("Unsupported display server", "Nepodporovaný zobrazovací server"), ("x11 expected", "očekávány x11"), ("Port", ""), ("Settings", "Nastavení"), diff --git a/src/lang/da.rs b/src/lang/da.rs index f37f30a6..08758d7d 100644 --- a/src/lang/da.rs +++ b/src/lang/da.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Advarsel"), ("Login screen using Wayland is not supported", "Registreringsskærm med Wayland understøttes ikke"), ("Reboot required", "Genstart krævet"), - ("Unsupported display server ", "Ikke-understøttet displayserver"), + ("Unsupported display server", "Ikke-understøttet displayserver"), ("x11 expected", "X11 Forventet"), ("Port", "Port"), ("Settings", "Indstillinger"), diff --git a/src/lang/de.rs b/src/lang/de.rs index 7a935d29..78d6d6c1 100644 --- a/src/lang/de.rs +++ b/src/lang/de.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Warnung"), ("Login screen using Wayland is not supported", "Anmeldebildschirm mit Wayland wird nicht unterstützt."), ("Reboot required", "Neustart erforderlich"), - ("Unsupported display server ", "Nicht unterstützter Anzeigeserver"), + ("Unsupported display server", "Nicht unterstützter Anzeigeserver"), ("x11 expected", "X11 erwartet"), ("Port", "Port"), ("Settings", "Einstellungen"), diff --git a/src/lang/el.rs b/src/lang/el.rs index 40cf36b9..89458bec 100644 --- a/src/lang/el.rs +++ b/src/lang/el.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Προειδοποίηση"), ("Login screen using Wayland is not supported", "Η οθόνη εισόδου με χρήση του Wayland δεν υποστηρίζεται"), ("Reboot required", "Απαιτείται επανεκκίνηση"), - ("Unsupported display server ", "Μη υποστηριζόμενος διακομιστής εμφάνισης "), + ("Unsupported display server", "Μη υποστηριζόμενος διακομιστής εμφάνισης "), ("x11 expected", "απαιτείται X11"), ("Port", "Θύρα"), ("Settings", "Ρυθμίσεις"), diff --git a/src/lang/eo.rs b/src/lang/eo.rs index ed64addf..63995a91 100644 --- a/src/lang/eo.rs +++ b/src/lang/eo.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Averto"), ("Login screen using Wayland is not supported", "Konektajn ekranojn uzantajn Wayland ne estas subtenitaj"), ("Reboot required", "Restarto deviga"), - ("Unsupported display server ", "La aktuala bilda servilo ne estas subtenita"), + ("Unsupported display server", "La aktuala bilda servilo ne estas subtenita"), ("x11 expected", "Bonvolu uzi x11"), ("Port", ""), ("Settings", "Agordoj"), diff --git a/src/lang/es.rs b/src/lang/es.rs index 3270ae26..fb45ddcd 100644 --- a/src/lang/es.rs +++ b/src/lang/es.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Aviso"), ("Login screen using Wayland is not supported", "La pantalla de inicio de sesión con Wayland no es compatible"), ("Reboot required", "Reinicio requerido"), - ("Unsupported display server ", "Servidor de visualización no compatible"), + ("Unsupported display server", "Servidor de visualización no compatible"), ("x11 expected", "x11 necesario"), ("Port", "Puerto"), ("Settings", "Ajustes"), diff --git a/src/lang/fa.rs b/src/lang/fa.rs index e2a7e951..9c24ca6c 100644 --- a/src/lang/fa.rs +++ b/src/lang/fa.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "هشدار"), ("Login screen using Wayland is not supported", "پشتیبانی نمی شود Wayland ورود به سیستم با استفاده از "), ("Reboot required", "راه اندازی مجدد مورد نیاز است"), - ("Unsupported display server ", "سرور تصویر پشتیبانی نشده است"), + ("Unsupported display server", "سرور تصویر پشتیبانی نشده است"), ("x11 expected", ""), ("Port", "پورت"), ("Settings", "تنظیمات"), diff --git a/src/lang/fr.rs b/src/lang/fr.rs index c0d739f9..7cb6d123 100644 --- a/src/lang/fr.rs +++ b/src/lang/fr.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Avertissement"), ("Login screen using Wayland is not supported", "L'écran de connexion utilisant Wayland n'est pas pris en charge"), ("Reboot required", "Redémarrage requis"), - ("Unsupported display server ", "Le serveur d'affichage actuel n'est pas pris en charge"), + ("Unsupported display server", "Le serveur d'affichage actuel n'est pas pris en charge"), ("x11 expected", "x11 requis"), ("Port", "Port"), ("Settings", "Paramètres"), diff --git a/src/lang/hu.rs b/src/lang/hu.rs index 46750eb1..f9ff3bd0 100644 --- a/src/lang/hu.rs +++ b/src/lang/hu.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Figyelmeztetés"), ("Login screen using Wayland is not supported", "Bejelentkezéskori Wayland használata nem támogatott"), ("Reboot required", "Újraindítás szükséges"), - ("Unsupported display server ", "Nem támogatott megjelenítő szerver"), + ("Unsupported display server", "Nem támogatott megjelenítő szerver"), ("x11 expected", "x11-re számítottt"), ("Port", "Port"), ("Settings", "Beállítások"), diff --git a/src/lang/id.rs b/src/lang/id.rs index 4133f136..e210432c 100644 --- a/src/lang/id.rs +++ b/src/lang/id.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Peringatan"), ("Login screen using Wayland is not supported", "Layar masuk menggunakan Wayland tidak didukung"), ("Reboot required", "Diperlukan boot ulang"), - ("Unsupported display server ", "Server tampilan tidak didukung "), + ("Unsupported display server", "Server tampilan tidak didukung "), ("x11 expected", "x11 diharapkan"), ("Port", "Port"), ("Settings", "Pengaturan"), diff --git a/src/lang/it.rs b/src/lang/it.rs index 17f066ee..7dfc67f2 100644 --- a/src/lang/it.rs +++ b/src/lang/it.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Avviso"), ("Login screen using Wayland is not supported", "La schermata di accesso non è supportata utilizzando Wayland"), ("Reboot required", "Riavvio necessario"), - ("Unsupported display server ", "Display server non supportato"), + ("Unsupported display server", "Display server non supportato"), ("x11 expected", "x11 necessario"), ("Port", "Porta"), ("Settings", "Impostazioni"), diff --git a/src/lang/ja.rs b/src/lang/ja.rs index b8031573..48391d8f 100644 --- a/src/lang/ja.rs +++ b/src/lang/ja.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "注意"), ("Login screen using Wayland is not supported", "Waylandを使用したログインスクリーンはサポートされていません"), ("Reboot required", "再起動が必要"), - ("Unsupported display server ", "サポートされていないディスプレイサーバー"), + ("Unsupported display server", "サポートされていないディスプレイサーバー"), ("x11 expected", "X11 が必要です"), ("Port", ""), ("Settings", "設定"), diff --git a/src/lang/ko.rs b/src/lang/ko.rs index fe6a0bfe..91b73fc4 100644 --- a/src/lang/ko.rs +++ b/src/lang/ko.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "경고"), ("Login screen using Wayland is not supported", "Wayland를 사용한 로그인 화면이 지원되지 않습니다"), ("Reboot required", "재부팅이 필요합니다"), - ("Unsupported display server ", "지원하지 않는 디스플레이 서버"), + ("Unsupported display server", "지원하지 않는 디스플레이 서버"), ("x11 expected", "x11 예상됨"), ("Port", ""), ("Settings", "설정"), diff --git a/src/lang/kz.rs b/src/lang/kz.rs index 4b1e92ca..9d7cf397 100644 --- a/src/lang/kz.rs +++ b/src/lang/kz.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Ескерту"), ("Login screen using Wayland is not supported", "Wayland қолданған Кіру екіреніне қолдау көрсетілмейді"), ("Reboot required", "Қайта-қосу қажет"), - ("Unsupported display server ", "Қолдаусыз дисплей сербері"), + ("Unsupported display server", "Қолдаусыз дисплей сербері"), ("x11 expected", "x11 күтілген"), ("Port", "Порт"), ("Settings", "Орнатпалар"), diff --git a/src/lang/nl.rs b/src/lang/nl.rs index 7888eed8..5b959a35 100644 --- a/src/lang/nl.rs +++ b/src/lang/nl.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Waarschuwing"), ("Login screen using Wayland is not supported", "Aanmeldingsscherm via Wayland wordt niet ondersteund"), ("Reboot required", "Opnieuw opstarten vereist"), - ("Unsupported display server ", "Niet-ondersteunde weergaveserver"), + ("Unsupported display server", "Niet-ondersteunde weergaveserver"), ("x11 expected", "x11 verwacht"), ("Port", "Poort"), ("Settings", "Instellingen"), diff --git a/src/lang/pl.rs b/src/lang/pl.rs index b997267f..4d99f3be 100644 --- a/src/lang/pl.rs +++ b/src/lang/pl.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Ostrzeżenie"), ("Login screen using Wayland is not supported", "Ekran logowania korzystający z Wayland nie jest obsługiwany"), ("Reboot required", "Wymagany ponowne uruchomienie"), - ("Unsupported display server ", "Nieobsługiwany serwer wyświetlania"), + ("Unsupported display server", "Nieobsługiwany serwer wyświetlania"), ("x11 expected", "Wymagany jest X11"), ("Port", "Port"), ("Settings", "Ustawienia"), diff --git a/src/lang/pt_PT.rs b/src/lang/pt_PT.rs index 98b8035a..e568daeb 100644 --- a/src/lang/pt_PT.rs +++ b/src/lang/pt_PT.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Aviso"), ("Login screen using Wayland is not supported", "Tela de Login com Wayland não é suportada"), ("Reboot required", "Reinicialização necessária"), - ("Unsupported display server ", "Servidor de display não suportado"), + ("Unsupported display server", "Servidor de display não suportado"), ("x11 expected", "x11 em falha"), ("Port", ""), ("Settings", "Configurações"), diff --git a/src/lang/ptbr.rs b/src/lang/ptbr.rs index 18c9168c..54389652 100644 --- a/src/lang/ptbr.rs +++ b/src/lang/ptbr.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Aviso"), ("Login screen using Wayland is not supported", "Tela de Login utilizando Wayland não é suportada"), ("Reboot required", "Reinicialização necessária"), - ("Unsupported display server ", "Servidor de display não suportado"), + ("Unsupported display server", "Servidor de display não suportado"), ("x11 expected", "x11 esperado"), ("Port", "Porta"), ("Settings", "Configurações"), diff --git a/src/lang/ro.rs b/src/lang/ro.rs index 225fa727..14675762 100644 --- a/src/lang/ro.rs +++ b/src/lang/ro.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Avertisment"), ("Login screen using Wayland is not supported", "Ecranele de conectare care folosesc Wayland nu sunt acceptate"), ("Reboot required", "Repornire necesară"), - ("Unsupported display server ", "Tipul de server de afișaj nu este acceptat"), + ("Unsupported display server", "Tipul de server de afișaj nu este acceptat"), ("x11 expected", "E necesar X11"), ("Port", "Port"), ("Settings", "Setări"), diff --git a/src/lang/ru.rs b/src/lang/ru.rs index 59957a2c..adc5872a 100644 --- a/src/lang/ru.rs +++ b/src/lang/ru.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Предупреждение"), ("Login screen using Wayland is not supported", "Вход в систему с использованием Wayland не поддерживается"), ("Reboot required", "Требуется перезагрузка"), - ("Unsupported display server ", "Неподдерживаемый сервер отображения"), + ("Unsupported display server", "Неподдерживаемый сервер отображения"), ("x11 expected", "Ожидается X11"), ("Port", "Порт"), ("Settings", "Настройки"), diff --git a/src/lang/sk.rs b/src/lang/sk.rs index cec9e5b3..1031fb9d 100644 --- a/src/lang/sk.rs +++ b/src/lang/sk.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Upozornenie"), ("Login screen using Wayland is not supported", "Prihlasovacia obrazovka prostredníctvom Wayland nie je podporovaná"), ("Reboot required", "Vyžaduje sa reštart"), - ("Unsupported display server ", "Nepodporovaný zobrazovací (display) server"), + ("Unsupported display server", "Nepodporovaný zobrazovací (display) server"), ("x11 expected", "očakáva sa x11"), ("Port", ""), ("Settings", "Nastavenia"), diff --git a/src/lang/sl.rs b/src/lang/sl.rs index 295cd28a..b1b5dbeb 100755 --- a/src/lang/sl.rs +++ b/src/lang/sl.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("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"), + ("Unsupported display server", "Nepodprt zaslonski strežnik"), ("x11 expected", "Pričakovan X11"), ("Port", "Vrata"), ("Settings", "Nastavitve"), diff --git a/src/lang/sq.rs b/src/lang/sq.rs index ebbdf4a2..a73a5f10 100644 --- a/src/lang/sq.rs +++ b/src/lang/sq.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Dicka po shkon keq"), ("Login screen using Wayland is not supported", "Hyrja në ekran duke përdorur Wayland muk suportohet"), ("Reboot required", "Kërkohet rinisja"), - ("Unsupported display server ", "Nuk supurtohet severi ekranit"), + ("Unsupported display server", "Nuk supurtohet severi ekranit"), ("x11 expected", "Pritet x11"), ("Port", "Port"), ("Settings", "Cilësimet"), diff --git a/src/lang/sr.rs b/src/lang/sr.rs index 67fb4979..c4e70bd8 100644 --- a/src/lang/sr.rs +++ b/src/lang/sr.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Upozorenje"), ("Login screen using Wayland is not supported", "Ekran za prijavu koji koristi Wayland nije podržan"), ("Reboot required", "Potreban je restart"), - ("Unsupported display server ", "Nepodržan server za prikaz"), + ("Unsupported display server", "Nepodržan server za prikaz"), ("x11 expected", "x11 očekivan"), ("Port", "Port"), ("Settings", "Postavke"), diff --git a/src/lang/sv.rs b/src/lang/sv.rs index 9da1f107..88db1e93 100644 --- a/src/lang/sv.rs +++ b/src/lang/sv.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Varning"), ("Login screen using Wayland is not supported", "Login med Wayland stöds inte"), ("Reboot required", "Omstart krävs"), - ("Unsupported display server ", "Displayserver stöds inte "), + ("Unsupported display server", "Displayserver stöds inte "), ("x11 expected", "x11 förväntades"), ("Port", "Port"), ("Settings", "Inställningar"), diff --git a/src/lang/template.rs b/src/lang/template.rs index cbbd65b4..2255d8aa 100644 --- a/src/lang/template.rs +++ b/src/lang/template.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", ""), ("Login screen using Wayland is not supported", ""), ("Reboot required", ""), - ("Unsupported display server ", ""), + ("Unsupported display server", ""), ("x11 expected", ""), ("Port", ""), ("Settings", ""), diff --git a/src/lang/th.rs b/src/lang/th.rs index 97a8725e..e0bfe884 100644 --- a/src/lang/th.rs +++ b/src/lang/th.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "คำเตือน"), ("Login screen using Wayland is not supported", "หน้าจอการเข้าสู่ระบบโดยใช้ Wayland ยังไม่ถูกรองรับ"), ("Reboot required", "จำเป็นต้องเริ่มต้นระบบใหม่"), - ("Unsupported display server ", "เซิร์ฟเวอร์การแสดงผลที่ไม่รองรับ"), + ("Unsupported display server", "เซิร์ฟเวอร์การแสดงผลที่ไม่รองรับ"), ("x11 expected", "ต้องใช้งาน x11"), ("Port", "พอร์ท"), ("Settings", "ตั้งค่า"), diff --git a/src/lang/tr.rs b/src/lang/tr.rs index 3b1137cb..e0d1d577 100644 --- a/src/lang/tr.rs +++ b/src/lang/tr.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Uyarı"), ("Login screen using Wayland is not supported", "Wayland kullanan giriş ekranı desteklenmiyor"), ("Reboot required", "Yeniden başlatma gerekli"), - ("Unsupported display server ", "Desteklenmeyen görüntü sunucusu"), + ("Unsupported display server", "Desteklenmeyen görüntü sunucusu"), ("x11 expected", "x11 bekleniyor"), ("Port", "Port"), ("Settings", "Ayarlar"), diff --git a/src/lang/tw.rs b/src/lang/tw.rs index 3cf05689..6bf0b0fa 100644 --- a/src/lang/tw.rs +++ b/src/lang/tw.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "警告"), ("Login screen using Wayland is not supported", "不支援使用 Wayland 的登入畫面"), ("Reboot required", "需要重新啟動"), - ("Unsupported display server ", "不支援顯示伺服器"), + ("Unsupported display server", "不支援顯示伺服器"), ("x11 expected", "預期 x11"), ("Port", "端口"), ("Settings", "設定"), diff --git a/src/lang/ua.rs b/src/lang/ua.rs index 4665d7c3..d5142452 100644 --- a/src/lang/ua.rs +++ b/src/lang/ua.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Попередження"), ("Login screen using Wayland is not supported", "Вхід у систему з використанням Wayland не підтримується"), ("Reboot required", "Потрібне перезавантаження"), - ("Unsupported display server ", "Графічний сервер не підтримується"), + ("Unsupported display server", "Графічний сервер не підтримується"), ("x11 expected", "Очікується X11"), ("Port", "Порт"), ("Settings", "Налаштування"), diff --git a/src/lang/vn.rs b/src/lang/vn.rs index 0130b11c..c71d12d1 100644 --- a/src/lang/vn.rs +++ b/src/lang/vn.rs @@ -204,7 +204,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Warning", "Cảnh báo"), ("Login screen using Wayland is not supported", "Màn hình đăng nhập sử dụng Wayland không đựoc hỗ trợ"), ("Reboot required", "Yêu cầu khởi động lại"), - ("Unsupported display server ", "Máy chủ hiển thị không đuợc hỗ trọ"), + ("Unsupported display server", "Máy chủ hiển thị không đuợc hỗ trọ"), ("x11 expected", "Cần x11"), ("Port", ""), ("Settings", "Cài đặt"), diff --git a/src/ui_interface.rs b/src/ui_interface.rs index 1d4bd5cf..ec570b42 100644 --- a/src/ui_interface.rs +++ b/src/ui_interface.rs @@ -511,7 +511,7 @@ pub fn get_error() -> String { if dtype != "x11" { return format!( "{} {}, {}", - crate::client::translate("Unsupported display server ".to_owned()), + crate::client::translate("Unsupported display server".to_owned()), dtype, crate::client::translate("x11 expected".to_owned()), ); From e00eaee4b56b7c00bfb00b316089b360099b587d Mon Sep 17 00:00:00 2001 From: fufesou Date: Tue, 7 Mar 2023 19:10:37 +0800 Subject: [PATCH 10/26] win, install cert Signed-off-by: fufesou --- Cargo.lock | 1 + Cargo.toml | 3 +- flutter/lib/desktop/pages/install_page.dart | 18 +++ src/platform/windows.rs | 164 ++++++++++++++++++++ 4 files changed, 185 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index d0f22a0a..1029bfed 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4943,6 +4943,7 @@ dependencies = [ "flutter_rust_bridge_codegen", "fruitbasket", "hbb_common", + "hex", "hound", "image 0.24.5", "impersonate_system", diff --git a/Cargo.toml b/Cargo.toml index ba92733c..47c2bb0e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -64,6 +64,7 @@ errno = "0.2.8" rdev = { git = "https://github.com/fufesou/rdev" } url = { version = "2.1", features = ["serde"] } dlopen = "0.1" +hex = "0.4.3" reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls"], default-features=false } chrono = "0.4.23" @@ -87,7 +88,7 @@ system_shutdown = "3.0.0" [target.'cfg(target_os = "windows")'.dependencies] trayicon = { git = "https://github.com/open-trade/trayicon-rs", features = ["winit"] } winit = "0.26" -winapi = { version = "0.3", features = ["winuser"] } +winapi = { version = "0.3", features = ["winuser", "wincrypt"] } winreg = "0.10" windows-service = "0.4" virtual_display = { path = "libs/virtual_display" } diff --git a/flutter/lib/desktop/pages/install_page.dart b/flutter/lib/desktop/pages/install_page.dart index 00ca2bb2..856430dc 100644 --- a/flutter/lib/desktop/pages/install_page.dart +++ b/flutter/lib/desktop/pages/install_page.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hbb/common.dart'; @@ -63,6 +65,7 @@ class _InstallPageBodyState extends State<_InstallPageBody> late final TextEditingController controller; final RxBool startmenu = true.obs; final RxBool desktopicon = true.obs; + final RxBool driverCert = false.obs; final RxBool showProgress = false.obs; final RxBool btnEnabled = true.obs; @@ -165,6 +168,20 @@ class _InstallPageBodyState extends State<_InstallPageBody> Text(translate('Create desktop icon')) ], ), + Offstage( + offstage: !Platform.isWindows, + child: Row( + children: [ + Obx(() => Checkbox( + value: driverCert.value, + onChanged: (b) { + if (b != null) driverCert.value = b; + })), + Text( + '${translate('Install driver cert')} ${translate('Virtual display requirement')}') + ], + ), + ), GestureDetector( onTap: () => launchUrlString('http://rustdesk.com/privacy'), child: Row( @@ -230,6 +247,7 @@ class _InstallPageBodyState extends State<_InstallPageBody> String args = ''; if (startmenu.value) args += ' startmenu'; if (desktopicon.value) args += ' desktopicon'; + if (driverCert.value) args += ' driverCert'; bind.installInstallMe(options: args, path: controller.text); } diff --git a/src/platform/windows.rs b/src/platform/windows.rs index 3d8b415b..fe91b618 100644 --- a/src/platform/windows.rs +++ b/src/platform/windows.rs @@ -1084,6 +1084,9 @@ copy /Y \"{tmp_path}\\Uninstall {app_name}.lnk\" \"{start_menu}\\\" app_name = crate::get_app_name(), ); } + if options.contains("driverCert") { + allow_err!(cert::install_cert("IddSampleDriver.cer")); + } let meta = std::fs::symlink_metadata(std::env::current_exe()?)?; let size = meta.len() / 1024; @@ -1236,6 +1239,7 @@ fn get_uninstall(kill_self: bool) -> String { } pub fn uninstall_me(kill_self: bool) -> ResultType<()> { + allow_err!(cert::uninstall_certs()); run_cmds(get_uninstall(kill_self), true, "uninstall") } @@ -1902,3 +1906,163 @@ pub fn user_accessible_folder() -> ResultType { } Ok(dir) } + +mod cert { + use hbb_common::{bail, log, ResultType}; + use std::{path::Path, str::from_utf8}; + use winapi::shared::{ + minwindef::{BYTE, DWORD, TRUE}, + ntdef::NULL, + }; + use winapi::um::{ + errhandlingapi::GetLastError, + wincrypt::{ + CertCloseStore, CertEnumCertificatesInStore, CertNameToStrA, CertOpenSystemStoreA, + CryptHashCertificate, ALG_ID, CALG_SHA1, CERT_ID_SHA1_HASH, CERT_X500_NAME_STR, + PCCERT_CONTEXT, + }, + winreg::HKEY_LOCAL_MACHINE, + }; + use winreg::{ + enums::{KEY_WRITE, REG_BINARY}, + RegKey, + }; + + const ROOT_CERT_STORE_PATH: &str = "SOFTWARE\\Microsoft\\SystemCertificates\\ROOT\\Certificates\\"; + const THUMBPRINT_ALG: ALG_ID = CALG_SHA1; + const THUMBPRINT_LEN: DWORD = 20; + + #[inline] + unsafe fn compute_thumbprint(pb_encoded: *const BYTE, cb_encoded: DWORD) -> (Vec, String) { + let mut size = THUMBPRINT_LEN; + let mut thumbprint = [0u8; THUMBPRINT_LEN as usize]; + if CryptHashCertificate( + 0, + THUMBPRINT_ALG, + 0, + pb_encoded, + cb_encoded, + thumbprint.as_mut_ptr(), + &mut size, + ) == TRUE + { + (thumbprint.to_vec(), hex::encode(thumbprint)) + } else { + (thumbprint.to_vec(), "".to_owned()) + } + } + + #[inline] + unsafe fn open_reg_cert_store() -> ResultType { + let hklm = winreg::RegKey::predef(HKEY_LOCAL_MACHINE); + Ok(hklm.open_subkey_with_flags(ROOT_CERT_STORE_PATH, KEY_WRITE)?) + } + + // https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-gpef/6a9e35fa-2ac7-4c10-81e1-eabe8d2472f1 + fn create_cert_blob(thumbprint: Vec, encoded: Vec) -> Vec { + let mut blob = Vec::new(); + + let mut property_id = (CERT_ID_SHA1_HASH as u32).to_le_bytes().to_vec(); + let mut pro_reserved = [0x01, 0x00, 0x00, 0x00].to_vec(); + let mut pro_length = (THUMBPRINT_LEN as u32).to_le_bytes().to_vec(); + let mut pro_val = thumbprint; + blob.append(&mut property_id); + blob.append(&mut pro_reserved); + blob.append(&mut pro_length); + blob.append(&mut pro_val); + + let mut blob_reserved = [0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00].to_vec(); + let mut blob_length = (encoded.len() as u32).to_le_bytes().to_vec(); + let mut blob_val = encoded; + blob.append(&mut blob_reserved); + blob.append(&mut blob_length); + blob.append(&mut blob_val); + + blob + } + + pub fn install_cert>(path: P) -> ResultType<()> { + let mut cert_bytes = std::fs::read(path)?; + unsafe { + let thumbprint = compute_thumbprint(cert_bytes.as_mut_ptr(), cert_bytes.len() as _); + log::debug!("Thumbprint of cert {}", &thumbprint.1); + + let reg_cert_key = open_reg_cert_store()?; + let (cert_key, _) = reg_cert_key.create_subkey(&thumbprint.1.to_ascii_uppercase())?; + let data = winreg::RegValue { + vtype: REG_BINARY, + bytes: create_cert_blob(thumbprint.0, cert_bytes), + }; + cert_key.set_raw_value("Blob", &data)?; + } + Ok(()) + } + + fn get_thumbprints_to_rm() -> ResultType> { + let issuers_to_rm = ["CN=\"WDKTestCert admin,133225435702113567\""]; + + let mut thumbprints = Vec::new(); + let mut buf = [0u8; 1024]; + + unsafe { + let store_handle = CertOpenSystemStoreA(0 as _, "ROOT\0".as_ptr() as _); + if store_handle.is_null() { + bail!("Error opening certificate store: {}", GetLastError()); + } + + let mut cert_ctx: PCCERT_CONTEXT = CertEnumCertificatesInStore(store_handle, NULL as _); + while !cert_ctx.is_null() { + // https://stackoverflow.com/a/66432736 + let cb_size = CertNameToStrA( + (*cert_ctx).dwCertEncodingType, + &mut ((*(*cert_ctx).pCertInfo).Issuer) as _, + CERT_X500_NAME_STR, + buf.as_mut_ptr() as _, + buf.len() as _, + ); + if cb_size != 1 { + if let Ok(issuer) = from_utf8(&buf) { + for iss in issuers_to_rm.iter() { + if issuer.contains(iss) { + let (_, thumbprint) = compute_thumbprint( + (*cert_ctx).pbCertEncoded, + (*cert_ctx).cbCertEncoded, + ); + if !thumbprint.is_empty() { + thumbprints.push(thumbprint); + } + } + } + } + } + cert_ctx = CertEnumCertificatesInStore(store_handle, cert_ctx); + } + CertCloseStore(store_handle, 0); + } + + Ok(thumbprints) + } + + pub fn uninstall_certs() -> ResultType<()> { + let thumbprints = get_thumbprints_to_rm()?; + let reg_cert_key = unsafe { open_reg_cert_store()? }; + for thumbprint in thumbprints.iter() { + reg_cert_key.delete_subkey(&hex::encode(thumbprint)).ok(); + } + Ok(()) + } +} + +#[cfg(test)] +mod tests { + use super::*; + #[test] + fn test_install_cert() { + println!("install driver cert: {:?}", cert::install_cert("RustDeskIddDriver.cer")); + } + + #[test] + fn test_uninstall_cert() { + println!("uninstall driver certs: {:?}", cert::uninstall_certs()); + } +} From 9bb9a749798ac6d3953a5e8313db20ef8d91b4c4 Mon Sep 17 00:00:00 2001 From: fufesou Date: Tue, 7 Mar 2023 19:43:39 +0800 Subject: [PATCH 11/26] win, install cert Signed-off-by: fufesou --- flutter/lib/desktop/pages/install_page.dart | 2 +- src/lang/ca.rs | 2 ++ src/lang/cn.rs | 2 ++ src/lang/cs.rs | 2 ++ src/lang/da.rs | 2 ++ src/lang/eo.rs | 2 ++ src/lang/es.rs | 2 ++ src/lang/fr.rs | 2 ++ src/lang/hu.rs | 2 ++ src/lang/id.rs | 2 ++ src/lang/it.rs | 2 ++ src/lang/ja.rs | 2 ++ src/lang/ko.rs | 2 ++ src/lang/kz.rs | 2 ++ src/lang/nl.rs | 2 ++ src/lang/pl.rs | 2 ++ src/lang/pt_PT.rs | 2 ++ src/lang/ptbr.rs | 2 ++ src/lang/ro.rs | 2 ++ src/lang/sk.rs | 2 ++ src/lang/sl.rs | 2 ++ src/lang/sq.rs | 2 ++ src/lang/sr.rs | 2 ++ src/lang/sv.rs | 2 ++ src/lang/template.rs | 2 ++ src/lang/th.rs | 2 ++ src/lang/tr.rs | 2 ++ src/lang/tw.rs | 2 ++ src/lang/ua.rs | 2 ++ src/lang/vn.rs | 2 ++ src/platform/windows.rs | 6 +++--- 31 files changed, 62 insertions(+), 4 deletions(-) diff --git a/flutter/lib/desktop/pages/install_page.dart b/flutter/lib/desktop/pages/install_page.dart index 856430dc..5dbba39d 100644 --- a/flutter/lib/desktop/pages/install_page.dart +++ b/flutter/lib/desktop/pages/install_page.dart @@ -178,7 +178,7 @@ class _InstallPageBodyState extends State<_InstallPageBody> if (b != null) driverCert.value = b; })), Text( - '${translate('Install driver cert')} ${translate('Virtual display requirement')}') + '${translate('Install driver cert(test cert)')} ${translate('Virtual display requirement')}') ], ), ), diff --git a/src/lang/ca.rs b/src/lang/ca.rs index 1e3b4930..8ce7c59e 100644 --- a/src/lang/ca.rs +++ b/src/lang/ca.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/cn.rs b/src/lang/cn.rs index 94f0cd2d..4ae8cbd7 100644 --- a/src/lang/cn.rs +++ b/src/lang/cn.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "分辨率"), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", "安装驱动证书(测试证书)"), + ("Virtual display requirement", "虚拟显示器要求") ].iter().cloned().collect(); } diff --git a/src/lang/cs.rs b/src/lang/cs.rs index e7fb7684..a835825d 100644 --- a/src/lang/cs.rs +++ b/src/lang/cs.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/da.rs b/src/lang/da.rs index 08758d7d..afa86e2d 100644 --- a/src/lang/da.rs +++ b/src/lang/da.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/eo.rs b/src/lang/eo.rs index 63995a91..c07f34be 100644 --- a/src/lang/eo.rs +++ b/src/lang/eo.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/es.rs b/src/lang/es.rs index fb45ddcd..ca486a75 100644 --- a/src/lang/es.rs +++ b/src/lang/es.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Resolución"), ("No transfers in progress", "No hay transferencias en curso"), ("Set one-time password length", "Establecer contraseña de un solo uso"), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/fr.rs b/src/lang/fr.rs index 7cb6d123..4f39d295 100644 --- a/src/lang/fr.rs +++ b/src/lang/fr.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/hu.rs b/src/lang/hu.rs index f9ff3bd0..32cf282e 100644 --- a/src/lang/hu.rs +++ b/src/lang/hu.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/id.rs b/src/lang/id.rs index e210432c..1da76479 100644 --- a/src/lang/id.rs +++ b/src/lang/id.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/it.rs b/src/lang/it.rs index 7dfc67f2..41d3000d 100644 --- a/src/lang/it.rs +++ b/src/lang/it.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Risoluzione"), ("No transfers in progress", "Nessun trasferimento in corso"), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/ja.rs b/src/lang/ja.rs index 48391d8f..24dc25b0 100644 --- a/src/lang/ja.rs +++ b/src/lang/ja.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/ko.rs b/src/lang/ko.rs index 91b73fc4..fc92d964 100644 --- a/src/lang/ko.rs +++ b/src/lang/ko.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/kz.rs b/src/lang/kz.rs index 9d7cf397..cb74d04b 100644 --- a/src/lang/kz.rs +++ b/src/lang/kz.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/nl.rs b/src/lang/nl.rs index 5b959a35..900a1c4b 100644 --- a/src/lang/nl.rs +++ b/src/lang/nl.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Resolutie"), ("No transfers in progress", "Geen overdrachten in uitvoering"), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/pl.rs b/src/lang/pl.rs index 4d99f3be..3665b00c 100644 --- a/src/lang/pl.rs +++ b/src/lang/pl.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Rozdzielczość"), ("No transfers in progress", "Brak transferów w toku"), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/pt_PT.rs b/src/lang/pt_PT.rs index e568daeb..4f9074f0 100644 --- a/src/lang/pt_PT.rs +++ b/src/lang/pt_PT.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/ptbr.rs b/src/lang/ptbr.rs index 54389652..a7e831fb 100644 --- a/src/lang/ptbr.rs +++ b/src/lang/ptbr.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/ro.rs b/src/lang/ro.rs index 14675762..0b2b1407 100644 --- a/src/lang/ro.rs +++ b/src/lang/ro.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/sk.rs b/src/lang/sk.rs index 1031fb9d..086ef00e 100644 --- a/src/lang/sk.rs +++ b/src/lang/sk.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/sl.rs b/src/lang/sl.rs index b1b5dbeb..7db2a9d2 100755 --- a/src/lang/sl.rs +++ b/src/lang/sl.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/sq.rs b/src/lang/sq.rs index a73a5f10..c18080d9 100644 --- a/src/lang/sq.rs +++ b/src/lang/sq.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/sr.rs b/src/lang/sr.rs index c4e70bd8..30e2e7a0 100644 --- a/src/lang/sr.rs +++ b/src/lang/sr.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/sv.rs b/src/lang/sv.rs index 88db1e93..6284a346 100644 --- a/src/lang/sv.rs +++ b/src/lang/sv.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/template.rs b/src/lang/template.rs index 2255d8aa..19474fc1 100644 --- a/src/lang/template.rs +++ b/src/lang/template.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/th.rs b/src/lang/th.rs index e0bfe884..06b6731a 100644 --- a/src/lang/th.rs +++ b/src/lang/th.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/tr.rs b/src/lang/tr.rs index e0d1d577..80938a70 100644 --- a/src/lang/tr.rs +++ b/src/lang/tr.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/tw.rs b/src/lang/tw.rs index 6bf0b0fa..882a779a 100644 --- a/src/lang/tw.rs +++ b/src/lang/tw.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "分辨率"), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/ua.rs b/src/lang/ua.rs index d5142452..70512a71 100644 --- a/src/lang/ua.rs +++ b/src/lang/ua.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/vn.rs b/src/lang/vn.rs index c71d12d1..c7e6e8f4 100644 --- a/src/lang/vn.rs +++ b/src/lang/vn.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/platform/windows.rs b/src/platform/windows.rs index fe91b618..11a8ee53 100644 --- a/src/platform/windows.rs +++ b/src/platform/windows.rs @@ -1084,9 +1084,6 @@ copy /Y \"{tmp_path}\\Uninstall {app_name}.lnk\" \"{start_menu}\\\" app_name = crate::get_app_name(), ); } - if options.contains("driverCert") { - allow_err!(cert::install_cert("IddSampleDriver.cer")); - } let meta = std::fs::symlink_metadata(std::env::current_exe()?)?; let size = meta.len() / 1024; @@ -1177,6 +1174,9 @@ sc delete {app_name} ); run_cmds(cmds, debug, "install")?; std::thread::sleep(std::time::Duration::from_millis(2000)); + if options.contains("driverCert") { + allow_err!(cert::install_cert(std::path::Path::new(&path).join("IddSampleDriver.cer"))); + } if !silent { std::process::Command::new(&exe).spawn()?; std::process::Command::new(&exe).arg("--tray").spawn()?; From ea44eb5380996b58c6b9745855e8611869ba9288 Mon Sep 17 00:00:00 2001 From: fufesou Date: Tue, 7 Mar 2023 19:52:29 +0800 Subject: [PATCH 12/26] win, add idd-driver build option Signed-off-by: fufesou --- .github/workflows/flutter-nightly.yml | 2 +- build.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/flutter-nightly.yml b/.github/workflows/flutter-nightly.yml index 4ae28158..c9aa01a8 100644 --- a/.github/workflows/flutter-nightly.yml +++ b/.github/workflows/flutter-nightly.yml @@ -86,7 +86,7 @@ jobs: shell: bash - name: Build rustdesk - run: python3 .\build.py --portable --hwcodec --flutter + run: python3 .\build.py --portable --hwcodec --flutter --idd-driver - name: Sign rustdesk files uses: GermanBluefox/code-sign-action@v7 diff --git a/build.py b/build.py index 45fe1b13..d7e6e0ed 100755 --- a/build.py +++ b/build.py @@ -106,6 +106,12 @@ def make_parser(): action='store_true', help='Skip cargo build process, only flutter version + Linux supported currently' ) + if windows: + parser.add_argument( + '--idd-driver', + action='store_true', + help='Build idd driver for virtual display.' + ) return parser From 4f60dc952268789814010468df5e3355904e3d03 Mon Sep 17 00:00:00 2001 From: fufesou Date: Tue, 7 Mar 2023 20:29:44 +0800 Subject: [PATCH 13/26] win,debug Signed-off-by: fufesou --- .github/workflows/flutter-nightly.yml | 2 +- build.py | 6 ------ src/platform/windows.rs | 10 +++++----- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/.github/workflows/flutter-nightly.yml b/.github/workflows/flutter-nightly.yml index c9aa01a8..2a1254e2 100644 --- a/.github/workflows/flutter-nightly.yml +++ b/.github/workflows/flutter-nightly.yml @@ -86,7 +86,7 @@ jobs: shell: bash - name: Build rustdesk - run: python3 .\build.py --portable --hwcodec --flutter --idd-driver + run: python3 .\build.py --portable --hwcodec --flutter --feature IddDriver - name: Sign rustdesk files uses: GermanBluefox/code-sign-action@v7 diff --git a/build.py b/build.py index d7e6e0ed..45fe1b13 100755 --- a/build.py +++ b/build.py @@ -106,12 +106,6 @@ def make_parser(): action='store_true', help='Skip cargo build process, only flutter version + Linux supported currently' ) - if windows: - parser.add_argument( - '--idd-driver', - action='store_true', - help='Build idd driver for virtual display.' - ) return parser diff --git a/src/platform/windows.rs b/src/platform/windows.rs index 11a8ee53..22896e65 100644 --- a/src/platform/windows.rs +++ b/src/platform/windows.rs @@ -1908,7 +1908,7 @@ pub fn user_accessible_folder() -> ResultType { } mod cert { - use hbb_common::{bail, log, ResultType}; + use hbb_common::{allow_err, bail, log, ResultType}; use std::{path::Path, str::from_utf8}; use winapi::shared::{ minwindef::{BYTE, DWORD, TRUE}, @@ -1946,7 +1946,7 @@ mod cert { &mut size, ) == TRUE { - (thumbprint.to_vec(), hex::encode(thumbprint)) + (thumbprint.to_vec(), hex::encode(thumbprint).to_ascii_uppercase()) } else { (thumbprint.to_vec(), "".to_owned()) } @@ -1988,7 +1988,7 @@ mod cert { log::debug!("Thumbprint of cert {}", &thumbprint.1); let reg_cert_key = open_reg_cert_store()?; - let (cert_key, _) = reg_cert_key.create_subkey(&thumbprint.1.to_ascii_uppercase())?; + let (cert_key, _) = reg_cert_key.create_subkey(&thumbprint.1)?; let data = winreg::RegValue { vtype: REG_BINARY, bytes: create_cert_blob(thumbprint.0, cert_bytes), @@ -2021,7 +2021,7 @@ mod cert { buf.len() as _, ); if cb_size != 1 { - if let Ok(issuer) = from_utf8(&buf) { + if let Ok(issuer) = from_utf8(&buf[..cb_size as _]) { for iss in issuers_to_rm.iter() { if issuer.contains(iss) { let (_, thumbprint) = compute_thumbprint( @@ -2047,7 +2047,7 @@ mod cert { let thumbprints = get_thumbprints_to_rm()?; let reg_cert_key = unsafe { open_reg_cert_store()? }; for thumbprint in thumbprints.iter() { - reg_cert_key.delete_subkey(&hex::encode(thumbprint)).ok(); + allow_err!(reg_cert_key.delete_subkey(thumbprint)); } Ok(()) } From cf676df976e7ed751ee8151ac663be5e7d6d79e4 Mon Sep 17 00:00:00 2001 From: fufesou Date: Tue, 7 Mar 2023 20:34:06 +0800 Subject: [PATCH 14/26] remove unused file Signed-off-by: fufesou --- build.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.py b/build.py index 45fe1b13..0f511fc5 100755 --- a/build.py +++ b/build.py @@ -37,7 +37,7 @@ def parse_rc_features(feature): 'IddDriver': { 'zip_url': 'https://github.com/fufesou/RustDeskIddDriver/releases/download/v0.1/RustDeskIddDriver_x64.zip', 'checksum_url': 'https://github.com/fufesou/RustDeskIddDriver/releases/download/v0.1/checksum_md5', - 'exclude': ['README.md'], + 'exclude': ['README.md', 'certmgr.exe', 'install_cert_runas_admin.bat'], }, 'PrivacyMode': { 'zip_url': 'https://github.com/fufesou/RustDeskTempTopMostWindow/releases/download/v0.1' @@ -386,7 +386,7 @@ def main(): os.chdir('libs/virtual_display/dylib') system2('cargo build --release') os.chdir('../../..') - + return if flutter: build_flutter_windows(version, features) return From 28e95c0552171fad8484ac0157308473e86af24d Mon Sep 17 00:00:00 2001 From: fufesou Date: Tue, 7 Mar 2023 20:42:40 +0800 Subject: [PATCH 15/26] debug Signed-off-by: fufesou --- build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.py b/build.py index 0f511fc5..4a39f596 100755 --- a/build.py +++ b/build.py @@ -386,7 +386,7 @@ def main(): os.chdir('libs/virtual_display/dylib') system2('cargo build --release') os.chdir('../../..') - return + if flutter: build_flutter_windows(version, features) return From 79934d006b3a2b83badc972a3f98a4bf5490133b Mon Sep 17 00:00:00 2001 From: fufesou Date: Tue, 7 Mar 2023 21:01:28 +0800 Subject: [PATCH 16/26] fix error cert file Signed-off-by: fufesou --- src/lang/cn.rs | 2 +- src/platform/windows.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lang/cn.rs b/src/lang/cn.rs index 4ae8cbd7..7f579ecd 100644 --- a/src/lang/cn.rs +++ b/src/lang/cn.rs @@ -462,6 +462,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", "安装驱动证书(测试证书)"), - ("Virtual display requirement", "虚拟显示器要求") + ("Virtual display requirement", "虚拟显示器需要") ].iter().cloned().collect(); } diff --git a/src/platform/windows.rs b/src/platform/windows.rs index 22896e65..dbf30311 100644 --- a/src/platform/windows.rs +++ b/src/platform/windows.rs @@ -1175,7 +1175,7 @@ sc delete {app_name} run_cmds(cmds, debug, "install")?; std::thread::sleep(std::time::Duration::from_millis(2000)); if options.contains("driverCert") { - allow_err!(cert::install_cert(std::path::Path::new(&path).join("IddSampleDriver.cer"))); + allow_err!(cert::install_cert(std::path::Path::new(&path).join("RustDeskIddDriver.cer"))); } if !silent { std::process::Command::new(&exe).spawn()?; From c0257bff525b57935f77fdad9bff2fa49122af01 Mon Sep 17 00:00:00 2001 From: fufesou Date: Tue, 7 Mar 2023 22:38:01 +0800 Subject: [PATCH 17/26] win, install cert Signed-off-by: fufesou --- src/core_main.rs | 4 ++++ src/lang/de.rs | 2 ++ src/lang/fa.rs | 2 ++ src/lang/ru.rs | 2 ++ src/platform/windows.rs | 25 ++++++++++++++++++++++--- 5 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/core_main.rs b/src/core_main.rs index 60a7d9c9..76b630f8 100644 --- a/src/core_main.rs +++ b/src/core_main.rs @@ -143,6 +143,10 @@ pub fn core_main() -> Option> { #[cfg(feature = "with_rc")] hbb_common::allow_err!(crate::rc::extract_resources(&args[1])); return None; + } else if args[0] == "--install-cert" { + #[cfg(windows)] + hbb_common::allow_err!(crate::platform::windows::install_cert(&args[1])); + return None; } else if args[0] == "--portable-service" { crate::platform::elevate_or_run_as_system( click_setup, diff --git a/src/lang/de.rs b/src/lang/de.rs index 78d6d6c1..26fb727c 100644 --- a/src/lang/de.rs +++ b/src/lang/de.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Auflösung"), ("No transfers in progress", "Keine Übertragungen im Gange"), ("Set one-time password length", "Länge des Einmalpassworts festlegen"), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/fa.rs b/src/lang/fa.rs index 9c24ca6c..a4576870 100644 --- a/src/lang/fa.rs +++ b/src/lang/fa.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "وضوح"), ("No transfers in progress", "هیچ انتقالی در حال انجام نیست"), ("Set one-time password length", "طول رمز یکبار مصرف را تعیین کنید"), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/lang/ru.rs b/src/lang/ru.rs index adc5872a..145700c0 100644 --- a/src/lang/ru.rs +++ b/src/lang/ru.rs @@ -461,5 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Разрешение"), ("No transfers in progress", "Передача не осуществляется"), ("Set one-time password length", "Установить длину одноразового пароля"), + ("Install driver cert(test cert)", ""), + ("Virtual display requirement", "") ].iter().cloned().collect(); } diff --git a/src/platform/windows.rs b/src/platform/windows.rs index dbf30311..696a18ab 100644 --- a/src/platform/windows.rs +++ b/src/platform/windows.rs @@ -1108,6 +1108,12 @@ if exist \"{tmp_path}\\{app_name} Tray.lnk\" del /f /q \"{tmp_path}\\{app_name} ); let src_exe = std::env::current_exe()?.to_str().unwrap_or("").to_string(); + let install_cert = if options.contains("driverCert") { + format!("\"{}\" --install-cert \"RustDeskIddDriver.cer\"", src_exe) + } else { + "".to_owned() + }; + let cmds = format!( " {uninstall_str} @@ -1139,6 +1145,7 @@ sc create {app_name} binpath= \"\\\"{exe}\\\" --import-config \\\"{config_path}\ sc start {app_name} sc stop {app_name} sc delete {app_name} +{install_cert} {after_install} {sleep} ", @@ -1159,6 +1166,7 @@ sc delete {app_name} shortcuts=shortcuts, config_path=Config::file().to_str().unwrap_or(""), lic=register_licence(), + install_cert=install_cert, after_install=get_after_install(&exe), sleep=if debug { "timeout 300" @@ -1174,9 +1182,6 @@ sc delete {app_name} ); run_cmds(cmds, debug, "install")?; std::thread::sleep(std::time::Duration::from_millis(2000)); - if options.contains("driverCert") { - allow_err!(cert::install_cert(std::path::Path::new(&path).join("RustDeskIddDriver.cer"))); - } if !silent { std::process::Command::new(&exe).spawn()?; std::process::Command::new(&exe).arg("--tray").spawn()?; @@ -1907,6 +1912,20 @@ pub fn user_accessible_folder() -> ResultType { Ok(dir) } +#[inline] +pub fn install_cert(cert_file: &str) -> ResultType<()> { + let exe_file = std::env::current_exe()?; + if let Some(cur_dir) = exe_file.parent() { + allow_err!(cert::install_cert(cur_dir.join(cert_file))); + } else { + bail!( + "Invalid exe parent for {}", + exe_file.to_string_lossy().as_ref() + ); + } + Ok(()) +} + mod cert { use hbb_common::{allow_err, bail, log, ResultType}; use std::{path::Path, str::from_utf8}; From ad32eec879c135ee2eb0e7d3d8da61d2e25745bd Mon Sep 17 00:00:00 2001 From: fufesou Date: Wed, 8 Mar 2023 11:14:29 +0800 Subject: [PATCH 18/26] better install prompt Signed-off-by: fufesou --- flutter/lib/common.dart | 1 - flutter/lib/desktop/pages/install_page.dart | 50 +++++++++++++++++---- src/lang/ca.rs | 3 +- src/lang/cn.rs | 3 +- src/lang/cs.rs | 3 +- src/lang/da.rs | 3 +- src/lang/de.rs | 3 +- src/lang/eo.rs | 3 +- src/lang/es.rs | 3 +- src/lang/fa.rs | 3 +- src/lang/fr.rs | 3 +- src/lang/hu.rs | 3 +- src/lang/id.rs | 3 +- src/lang/it.rs | 3 +- src/lang/ja.rs | 3 +- src/lang/ko.rs | 3 +- src/lang/kz.rs | 3 +- src/lang/nl.rs | 3 +- src/lang/pl.rs | 3 +- src/lang/pt_PT.rs | 3 +- src/lang/ptbr.rs | 3 +- src/lang/ro.rs | 3 +- src/lang/ru.rs | 3 +- src/lang/sk.rs | 3 +- src/lang/sl.rs | 3 +- src/lang/sq.rs | 3 +- src/lang/sr.rs | 3 +- src/lang/sv.rs | 3 +- src/lang/template.rs | 3 +- src/lang/th.rs | 3 +- src/lang/tr.rs | 3 +- src/lang/tw.rs | 3 +- src/lang/ua.rs | 3 +- src/lang/vn.rs | 3 +- 34 files changed, 106 insertions(+), 41 deletions(-) diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart index fce2c852..666eab0b 100644 --- a/flutter/lib/common.dart +++ b/flutter/lib/common.dart @@ -946,7 +946,6 @@ Widget msgboxContent(String type, String title, String text) { void msgBoxCommon(OverlayDialogManager dialogManager, String title, Widget content, List buttons, {bool hasCancel = true}) { - dialogManager.dismissAll(); dialogManager.show((setState, close) => CustomAlertDialog( title: Text( translate(title), diff --git a/flutter/lib/desktop/pages/install_page.dart b/flutter/lib/desktop/pages/install_page.dart index 5dbba39d..96a090b1 100644 --- a/flutter/lib/desktop/pages/install_page.dart +++ b/flutter/lib/desktop/pages/install_page.dart @@ -65,7 +65,7 @@ class _InstallPageBodyState extends State<_InstallPageBody> late final TextEditingController controller; final RxBool startmenu = true.obs; final RxBool desktopicon = true.obs; - final RxBool driverCert = false.obs; + final RxBool driverCert = true.obs; final RxBool showProgress = false.obs; final RxBool btnEnabled = true.obs; @@ -242,13 +242,47 @@ class _InstallPageBodyState extends State<_InstallPageBody> } void install() { - btnEnabled.value = false; - showProgress.value = true; - String args = ''; - if (startmenu.value) args += ' startmenu'; - if (desktopicon.value) args += ' desktopicon'; - if (driverCert.value) args += ' driverCert'; - bind.installInstallMe(options: args, path: controller.text); + do_install() { + btnEnabled.value = false; + showProgress.value = true; + String args = ''; + if (startmenu.value) args += ' startmenu'; + if (desktopicon.value) args += ' desktopicon'; + if (driverCert.value) args += ' driverCert'; + bind.installInstallMe(options: args, path: controller.text); + } + + if (driverCert.isTrue) { + final tag = 'install-info-install-cert-confirm'; + final btns = [ + dialogButton( + 'Cancel', + onPressed: () => gFFI.dialogManager.dismissByTag(tag), + isOutline: true, + ), + dialogButton( + 'OK', + onPressed: () { + gFFI.dialogManager.dismissByTag(tag); + do_install(); + }, + isOutline: false, + ), + ]; + gFFI.dialogManager.show( + (setState, close) => CustomAlertDialog( + title: null, + content: SelectionArea( + child: msgboxContent( + 'info', '', 'Continue with installing cert is checked.')), + actions: btns, + onCancel: close, + ), + tag: tag, + ); + } else { + do_install(); + } } void selectInstallPath() async { diff --git a/src/lang/ca.rs b/src/lang/ca.rs index 8ce7c59e..7f0d902d 100644 --- a/src/lang/ca.rs +++ b/src/lang/ca.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/cn.rs b/src/lang/cn.rs index 7f579ecd..2dad9d63 100644 --- a/src/lang/cn.rs +++ b/src/lang/cn.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", "安装驱动证书(测试证书)"), - ("Virtual display requirement", "虚拟显示器需要") + ("Virtual display requirement", "虚拟显示器需"), + ("Continue with installing cert is checked.", "安装证书已选择,是否继续") ].iter().cloned().collect(); } diff --git a/src/lang/cs.rs b/src/lang/cs.rs index a835825d..d6a27eed 100644 --- a/src/lang/cs.rs +++ b/src/lang/cs.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/da.rs b/src/lang/da.rs index afa86e2d..082e0ec0 100644 --- a/src/lang/da.rs +++ b/src/lang/da.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/de.rs b/src/lang/de.rs index 26fb727c..56392539 100644 --- a/src/lang/de.rs +++ b/src/lang/de.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", "Keine Übertragungen im Gange"), ("Set one-time password length", "Länge des Einmalpassworts festlegen"), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/eo.rs b/src/lang/eo.rs index c07f34be..631d66a2 100644 --- a/src/lang/eo.rs +++ b/src/lang/eo.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/es.rs b/src/lang/es.rs index ca486a75..bbfce42c 100644 --- a/src/lang/es.rs +++ b/src/lang/es.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", "No hay transferencias en curso"), ("Set one-time password length", "Establecer contraseña de un solo uso"), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/fa.rs b/src/lang/fa.rs index a4576870..f7b609bd 100644 --- a/src/lang/fa.rs +++ b/src/lang/fa.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", "هیچ انتقالی در حال انجام نیست"), ("Set one-time password length", "طول رمز یکبار مصرف را تعیین کنید"), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/fr.rs b/src/lang/fr.rs index 4f39d295..933944fa 100644 --- a/src/lang/fr.rs +++ b/src/lang/fr.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/hu.rs b/src/lang/hu.rs index 32cf282e..557ce943 100644 --- a/src/lang/hu.rs +++ b/src/lang/hu.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/id.rs b/src/lang/id.rs index 1da76479..40483bc6 100644 --- a/src/lang/id.rs +++ b/src/lang/id.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/it.rs b/src/lang/it.rs index 41d3000d..afbf862c 100644 --- a/src/lang/it.rs +++ b/src/lang/it.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", "Nessun trasferimento in corso"), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/ja.rs b/src/lang/ja.rs index 24dc25b0..f64e95c6 100644 --- a/src/lang/ja.rs +++ b/src/lang/ja.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/ko.rs b/src/lang/ko.rs index fc92d964..e43df3cc 100644 --- a/src/lang/ko.rs +++ b/src/lang/ko.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/kz.rs b/src/lang/kz.rs index cb74d04b..636dcaf7 100644 --- a/src/lang/kz.rs +++ b/src/lang/kz.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/nl.rs b/src/lang/nl.rs index 900a1c4b..912eaec3 100644 --- a/src/lang/nl.rs +++ b/src/lang/nl.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", "Geen overdrachten in uitvoering"), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/pl.rs b/src/lang/pl.rs index 3665b00c..b89f2fb2 100644 --- a/src/lang/pl.rs +++ b/src/lang/pl.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", "Brak transferów w toku"), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/pt_PT.rs b/src/lang/pt_PT.rs index 4f9074f0..dad48c82 100644 --- a/src/lang/pt_PT.rs +++ b/src/lang/pt_PT.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/ptbr.rs b/src/lang/ptbr.rs index a7e831fb..c5d32b19 100644 --- a/src/lang/ptbr.rs +++ b/src/lang/ptbr.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/ro.rs b/src/lang/ro.rs index 0b2b1407..1a9ecd78 100644 --- a/src/lang/ro.rs +++ b/src/lang/ro.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/ru.rs b/src/lang/ru.rs index 145700c0..f8603a44 100644 --- a/src/lang/ru.rs +++ b/src/lang/ru.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", "Передача не осуществляется"), ("Set one-time password length", "Установить длину одноразового пароля"), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/sk.rs b/src/lang/sk.rs index 086ef00e..3a938349 100644 --- a/src/lang/sk.rs +++ b/src/lang/sk.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/sl.rs b/src/lang/sl.rs index 7db2a9d2..8ae15250 100755 --- a/src/lang/sl.rs +++ b/src/lang/sl.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/sq.rs b/src/lang/sq.rs index c18080d9..77af8b5c 100644 --- a/src/lang/sq.rs +++ b/src/lang/sq.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/sr.rs b/src/lang/sr.rs index 30e2e7a0..2fb24a22 100644 --- a/src/lang/sr.rs +++ b/src/lang/sr.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/sv.rs b/src/lang/sv.rs index 6284a346..18259f32 100644 --- a/src/lang/sv.rs +++ b/src/lang/sv.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/template.rs b/src/lang/template.rs index 19474fc1..f0bb91f3 100644 --- a/src/lang/template.rs +++ b/src/lang/template.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/th.rs b/src/lang/th.rs index 06b6731a..b0b31829 100644 --- a/src/lang/th.rs +++ b/src/lang/th.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/tr.rs b/src/lang/tr.rs index 80938a70..81ac5cbb 100644 --- a/src/lang/tr.rs +++ b/src/lang/tr.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/tw.rs b/src/lang/tw.rs index 882a779a..3d394307 100644 --- a/src/lang/tw.rs +++ b/src/lang/tw.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/ua.rs b/src/lang/ua.rs index 70512a71..c4045277 100644 --- a/src/lang/ua.rs +++ b/src/lang/ua.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } diff --git a/src/lang/vn.rs b/src/lang/vn.rs index c7e6e8f4..6ecf025a 100644 --- a/src/lang/vn.rs +++ b/src/lang/vn.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("Install driver cert(test cert)", ""), - ("Virtual display requirement", "") + ("Virtual display requirement", ""), + ("Continue with installing cert is checked.", "") ].iter().cloned().collect(); } From 1d85d87b402b025e9702cc92d13889a153107a95 Mon Sep 17 00:00:00 2001 From: fufesou Date: Wed, 8 Mar 2023 12:51:04 +0800 Subject: [PATCH 19/26] translate changes Signed-off-by: fufesou --- flutter/lib/desktop/pages/install_page.dart | 5 ++--- src/lang/ca.rs | 6 +++--- src/lang/cn.rs | 6 +++--- src/lang/cs.rs | 6 +++--- src/lang/da.rs | 6 +++--- src/lang/de.rs | 6 +++--- src/lang/el.rs | 7 +++++-- src/lang/en.rs | 1 + src/lang/eo.rs | 6 +++--- src/lang/es.rs | 6 +++--- src/lang/fa.rs | 6 +++--- src/lang/fr.rs | 6 +++--- src/lang/hu.rs | 6 +++--- src/lang/id.rs | 6 +++--- src/lang/it.rs | 6 +++--- src/lang/ja.rs | 6 +++--- src/lang/ko.rs | 6 +++--- src/lang/kz.rs | 6 +++--- src/lang/nl.rs | 6 +++--- src/lang/pl.rs | 6 +++--- src/lang/pt_PT.rs | 6 +++--- src/lang/ptbr.rs | 6 +++--- src/lang/ro.rs | 6 +++--- src/lang/ru.rs | 6 +++--- src/lang/sk.rs | 6 +++--- src/lang/sl.rs | 6 +++--- src/lang/sq.rs | 6 +++--- src/lang/sr.rs | 6 +++--- src/lang/sv.rs | 6 +++--- src/lang/template.rs | 6 +++--- src/lang/th.rs | 6 +++--- src/lang/tr.rs | 6 +++--- src/lang/tw.rs | 6 +++--- src/lang/ua.rs | 6 +++--- src/lang/vn.rs | 6 +++--- 35 files changed, 104 insertions(+), 101 deletions(-) diff --git a/flutter/lib/desktop/pages/install_page.dart b/flutter/lib/desktop/pages/install_page.dart index 96a090b1..2334d633 100644 --- a/flutter/lib/desktop/pages/install_page.dart +++ b/flutter/lib/desktop/pages/install_page.dart @@ -178,7 +178,7 @@ class _InstallPageBodyState extends State<_InstallPageBody> if (b != null) driverCert.value = b; })), Text( - '${translate('Install driver cert(test cert)')} ${translate('Virtual display requirement')}') + '${translate('Install driver cert (test cert)')} ${translate('Virtual display need')}') ], ), ), @@ -273,8 +273,7 @@ class _InstallPageBodyState extends State<_InstallPageBody> (setState, close) => CustomAlertDialog( title: null, content: SelectionArea( - child: msgboxContent( - 'info', '', 'Continue with installing cert is checked.')), + child: msgboxContent('info', '', 'instsall_cert_tip')), actions: btns, onCancel: close, ), diff --git a/src/lang/ca.rs b/src/lang/ca.rs index 7f0d902d..7c238c81 100644 --- a/src/lang/ca.rs +++ b/src/lang/ca.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/cn.rs b/src/lang/cn.rs index 2dad9d63..d1207118 100644 --- a/src/lang/cn.rs +++ b/src/lang/cn.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "分辨率"), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", "安装驱动证书(测试证书)"), - ("Virtual display requirement", "虚拟显示器需"), - ("Continue with installing cert is checked.", "安装证书已选择,是否继续") + ("Install driver cert (test cert)", "安装驱动证书 (测试证书)"), + ("Virtual display need", "虚拟显示器需要"), + ("instsall_cert_tip", "已选择安装驱动,是否继续?") ].iter().cloned().collect(); } diff --git a/src/lang/cs.rs b/src/lang/cs.rs index d6a27eed..622730d9 100644 --- a/src/lang/cs.rs +++ b/src/lang/cs.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/da.rs b/src/lang/da.rs index 082e0ec0..ce84b480 100644 --- a/src/lang/da.rs +++ b/src/lang/da.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/de.rs b/src/lang/de.rs index 56392539..37de302b 100644 --- a/src/lang/de.rs +++ b/src/lang/de.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Auflösung"), ("No transfers in progress", "Keine Übertragungen im Gange"), ("Set one-time password length", "Länge des Einmalpassworts festlegen"), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/el.rs b/src/lang/el.rs index 89458bec..162218ed 100644 --- a/src/lang/el.rs +++ b/src/lang/el.rs @@ -460,6 +460,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Codec", "Κωδικοποίηση"), ("Resolution", "Ανάλυση"), ("No transfers in progress", "Δεν υπάρχει μεταφορά σε εξέλιξη"), - ("Set one-time password length", "Μέγεθος κωδικού μιας χρήσης"), - ].iter().cloned().collect(); + ("Set one-time password length", "Μέγεθος κωδικού μιας χρήσης"), + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") + ].iter().cloned().collect(); } diff --git a/src/lang/en.rs b/src/lang/en.rs index 25053001..01a4c843 100644 --- a/src/lang/en.rs +++ b/src/lang/en.rs @@ -45,5 +45,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("config_microphone", "In order to speak remotely, you need to grant RustDesk \"Record Audio\" permissions."), ("relay_hint_tip", "It may not be possible to connect directly, you can try to connect via relay. \nIn addition, if you want to use relay on your first try, you can add the \"/r\" suffix to the ID, or select the option \"Always connect via relay\" in the peer card."), ("No transfers in progress", ""), + ("instsall_cert_tip", "\"Install driver cert\" is checked, continue?") ].iter().cloned().collect(); } diff --git a/src/lang/eo.rs b/src/lang/eo.rs index 631d66a2..5c6c9278 100644 --- a/src/lang/eo.rs +++ b/src/lang/eo.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/es.rs b/src/lang/es.rs index bbfce42c..fefa8b74 100644 --- a/src/lang/es.rs +++ b/src/lang/es.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Resolución"), ("No transfers in progress", "No hay transferencias en curso"), ("Set one-time password length", "Establecer contraseña de un solo uso"), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/fa.rs b/src/lang/fa.rs index f7b609bd..f6be0e01 100644 --- a/src/lang/fa.rs +++ b/src/lang/fa.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "وضوح"), ("No transfers in progress", "هیچ انتقالی در حال انجام نیست"), ("Set one-time password length", "طول رمز یکبار مصرف را تعیین کنید"), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/fr.rs b/src/lang/fr.rs index 933944fa..1e438bba 100644 --- a/src/lang/fr.rs +++ b/src/lang/fr.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/hu.rs b/src/lang/hu.rs index 557ce943..1c243e2f 100644 --- a/src/lang/hu.rs +++ b/src/lang/hu.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/id.rs b/src/lang/id.rs index 40483bc6..8edc78e1 100644 --- a/src/lang/id.rs +++ b/src/lang/id.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/it.rs b/src/lang/it.rs index afbf862c..400e0ad9 100644 --- a/src/lang/it.rs +++ b/src/lang/it.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Risoluzione"), ("No transfers in progress", "Nessun trasferimento in corso"), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/ja.rs b/src/lang/ja.rs index f64e95c6..e87a232f 100644 --- a/src/lang/ja.rs +++ b/src/lang/ja.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/ko.rs b/src/lang/ko.rs index e43df3cc..06d10d01 100644 --- a/src/lang/ko.rs +++ b/src/lang/ko.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/kz.rs b/src/lang/kz.rs index 636dcaf7..ede87875 100644 --- a/src/lang/kz.rs +++ b/src/lang/kz.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/nl.rs b/src/lang/nl.rs index 912eaec3..55ad9504 100644 --- a/src/lang/nl.rs +++ b/src/lang/nl.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Resolutie"), ("No transfers in progress", "Geen overdrachten in uitvoering"), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/pl.rs b/src/lang/pl.rs index b89f2fb2..08106782 100644 --- a/src/lang/pl.rs +++ b/src/lang/pl.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Rozdzielczość"), ("No transfers in progress", "Brak transferów w toku"), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/pt_PT.rs b/src/lang/pt_PT.rs index dad48c82..11583b26 100644 --- a/src/lang/pt_PT.rs +++ b/src/lang/pt_PT.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/ptbr.rs b/src/lang/ptbr.rs index c5d32b19..7aa01468 100644 --- a/src/lang/ptbr.rs +++ b/src/lang/ptbr.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/ro.rs b/src/lang/ro.rs index 1a9ecd78..49b3b358 100644 --- a/src/lang/ro.rs +++ b/src/lang/ro.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/ru.rs b/src/lang/ru.rs index f8603a44..243ffda4 100644 --- a/src/lang/ru.rs +++ b/src/lang/ru.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Разрешение"), ("No transfers in progress", "Передача не осуществляется"), ("Set one-time password length", "Установить длину одноразового пароля"), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/sk.rs b/src/lang/sk.rs index 3a938349..1a5b9207 100644 --- a/src/lang/sk.rs +++ b/src/lang/sk.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/sl.rs b/src/lang/sl.rs index 8ae15250..1efc4de4 100755 --- a/src/lang/sl.rs +++ b/src/lang/sl.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/sq.rs b/src/lang/sq.rs index 77af8b5c..ffe3c9ed 100644 --- a/src/lang/sq.rs +++ b/src/lang/sq.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/sr.rs b/src/lang/sr.rs index 2fb24a22..fe7e0bae 100644 --- a/src/lang/sr.rs +++ b/src/lang/sr.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/sv.rs b/src/lang/sv.rs index 18259f32..98ceed9a 100644 --- a/src/lang/sv.rs +++ b/src/lang/sv.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/template.rs b/src/lang/template.rs index f0bb91f3..e0d7929a 100644 --- a/src/lang/template.rs +++ b/src/lang/template.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/th.rs b/src/lang/th.rs index b0b31829..615c1550 100644 --- a/src/lang/th.rs +++ b/src/lang/th.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/tr.rs b/src/lang/tr.rs index 81ac5cbb..5bbddde5 100644 --- a/src/lang/tr.rs +++ b/src/lang/tr.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/tw.rs b/src/lang/tw.rs index 3d394307..a056d6b8 100644 --- a/src/lang/tw.rs +++ b/src/lang/tw.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "分辨率"), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/ua.rs b/src/lang/ua.rs index c4045277..1bab4a55 100644 --- a/src/lang/ua.rs +++ b/src/lang/ua.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/vn.rs b/src/lang/vn.rs index 6ecf025a..f5b8052e 100644 --- a/src/lang/vn.rs +++ b/src/lang/vn.rs @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert(test cert)", ""), - ("Virtual display requirement", ""), - ("Continue with installing cert is checked.", "") + ("Install driver cert (test cert)", ""), + ("Virtual display need", ""), + ("instsall_cert_tip", "") ].iter().cloned().collect(); } From 18ca4273bef7fc4b8815f62d504b71e2eb771550 Mon Sep 17 00:00:00 2001 From: fufesou Date: Wed, 8 Mar 2023 15:57:33 +0800 Subject: [PATCH 20/26] better prompt Signed-off-by: fufesou --- flutter/lib/desktop/pages/install_page.dart | 78 ++++++++++++++------- src/lang/ca.rs | 5 +- src/lang/cn.rs | 5 +- src/lang/cs.rs | 5 +- src/lang/da.rs | 5 +- src/lang/de.rs | 5 +- src/lang/el.rs | 5 +- src/lang/en.rs | 3 +- src/lang/eo.rs | 5 +- src/lang/es.rs | 5 +- src/lang/fa.rs | 5 +- src/lang/fr.rs | 5 +- src/lang/hu.rs | 5 +- src/lang/id.rs | 5 +- src/lang/it.rs | 5 +- src/lang/ja.rs | 5 +- src/lang/ko.rs | 5 +- src/lang/kz.rs | 5 +- src/lang/nl.rs | 5 +- src/lang/pl.rs | 5 +- src/lang/pt_PT.rs | 5 +- src/lang/ptbr.rs | 5 +- src/lang/ro.rs | 5 +- src/lang/ru.rs | 5 +- src/lang/sk.rs | 5 +- src/lang/sl.rs | 5 +- src/lang/sq.rs | 5 +- src/lang/sr.rs | 5 +- src/lang/sv.rs | 5 +- src/lang/template.rs | 5 +- src/lang/th.rs | 5 +- src/lang/tr.rs | 5 +- src/lang/tw.rs | 5 +- src/lang/ua.rs | 5 +- src/lang/vn.rs | 5 +- 35 files changed, 119 insertions(+), 127 deletions(-) diff --git a/flutter/lib/desktop/pages/install_page.dart b/flutter/lib/desktop/pages/install_page.dart index 2334d633..adc0df13 100644 --- a/flutter/lib/desktop/pages/install_page.dart +++ b/flutter/lib/desktop/pages/install_page.dart @@ -148,40 +148,63 @@ class _InstallPageBodyState extends State<_InstallPageBody> .marginOnly(left: em)) ], ).marginSymmetric(vertical: 2 * em), - Row( - children: [ - Obx(() => Checkbox( - value: startmenu.value, - onChanged: (b) { - if (b != null) startmenu.value = b; - })), - Text(translate('Create start menu shortcuts')) - ], - ), - Row( - children: [ - Obx(() => Checkbox( - value: desktopicon.value, - onChanged: (b) { - if (b != null) desktopicon.value = b; - })), - Text(translate('Create desktop icon')) - ], - ), - Offstage( - offstage: !Platform.isWindows, + TextButton( + onPressed: () => startmenu.value = !startmenu.value, child: Row( children: [ Obx(() => Checkbox( - value: driverCert.value, + value: startmenu.value, onChanged: (b) { - if (b != null) driverCert.value = b; + if (b != null) startmenu.value = b; })), - Text( - '${translate('Install driver cert (test cert)')} ${translate('Virtual display need')}') + RichText( + text: TextSpan( + text: translate('Create start menu shortcuts'), + style: DefaultTextStyle.of(context).style, + ), + ), ], ), ), + TextButton( + onPressed: () => desktopicon.value = !desktopicon.value, + child: Row( + children: [ + Obx(() => Checkbox( + value: desktopicon.value, + onChanged: (b) { + if (b != null) desktopicon.value = b; + })), + RichText( + text: TextSpan( + text: translate('Create desktop icon'), + style: DefaultTextStyle.of(context).style, + ), + ), + ], + ), + ), + Offstage( + offstage: !Platform.isWindows, + child: TextButton( + onPressed: () => driverCert.value = !driverCert.value, + child: Row( + children: [ + Obx(() => Checkbox( + value: driverCert.value, + onChanged: (b) { + if (b != null) driverCert.value = b; + })), + RichText( + text: TextSpan( + text: translate('idd_driver_tip'), + style: DefaultTextStyle.of(context).style, + ), + ), + ], + ), + ), + ), GestureDetector( onTap: () => launchUrlString('http://rustdesk.com/privacy'), child: Row( @@ -273,7 +296,8 @@ class _InstallPageBodyState extends State<_InstallPageBody> (setState, close) => CustomAlertDialog( title: null, content: SelectionArea( - child: msgboxContent('info', '', 'instsall_cert_tip')), + child: + msgboxContent('info', 'Warning', 'confirm_idd_driver_tip')), actions: btns, onCancel: close, ), diff --git a/src/lang/ca.rs b/src/lang/ca.rs index 7c238c81..3cea5e60 100644 --- a/src/lang/ca.rs +++ b/src/lang/ca.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/cn.rs b/src/lang/cn.rs index d1207118..161fa035 100644 --- a/src/lang/cn.rs +++ b/src/lang/cn.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "分辨率"), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", "安装驱动证书 (测试证书)"), - ("Virtual display need", "虚拟显示器需要"), - ("instsall_cert_tip", "已选择安装驱动,是否继续?") + ("idd_driver_tip", "安装虚拟显示器驱动,以便在没有连接显示器的情况下启动虚拟显示器进行控制。"), + ("confirm_idd_driver_tip", "安装虚拟显示器驱动的选项已勾选。请注意,测试证书将被安装以信任虚拟显示器驱动。测试证书仅会用于信任Rustdesk的驱动。") ].iter().cloned().collect(); } diff --git a/src/lang/cs.rs b/src/lang/cs.rs index 622730d9..86e9c47c 100644 --- a/src/lang/cs.rs +++ b/src/lang/cs.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/da.rs b/src/lang/da.rs index ce84b480..d262c08c 100644 --- a/src/lang/da.rs +++ b/src/lang/da.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/de.rs b/src/lang/de.rs index 37de302b..21e57701 100644 --- a/src/lang/de.rs +++ b/src/lang/de.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Auflösung"), ("No transfers in progress", "Keine Übertragungen im Gange"), ("Set one-time password length", "Länge des Einmalpassworts festlegen"), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/el.rs b/src/lang/el.rs index 162218ed..b0e629ba 100644 --- a/src/lang/el.rs +++ b/src/lang/el.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Ανάλυση"), ("No transfers in progress", "Δεν υπάρχει μεταφορά σε εξέλιξη"), ("Set one-time password length", "Μέγεθος κωδικού μιας χρήσης"), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/en.rs b/src/lang/en.rs index 01a4c843..100788f6 100644 --- a/src/lang/en.rs +++ b/src/lang/en.rs @@ -45,6 +45,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("config_microphone", "In order to speak remotely, you need to grant RustDesk \"Record Audio\" permissions."), ("relay_hint_tip", "It may not be possible to connect directly, you can try to connect via relay. \nIn addition, if you want to use relay on your first try, you can add the \"/r\" suffix to the ID, or select the option \"Always connect via relay\" in the peer card."), ("No transfers in progress", ""), - ("instsall_cert_tip", "\"Install driver cert\" is checked, continue?") + ("idd_driver_tip", "Install virtual display driver which is used when you have no physical displays."), + ("confirm_idd_driver_tip", "The option to install the virtual display driver is checked. Note that a test certificate will be installed to trust the virtual display driver. This test certificate will only be used to trust Rustdesk drivers.") ].iter().cloned().collect(); } diff --git a/src/lang/eo.rs b/src/lang/eo.rs index 5c6c9278..f36afedc 100644 --- a/src/lang/eo.rs +++ b/src/lang/eo.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/es.rs b/src/lang/es.rs index fefa8b74..2b38ecd1 100644 --- a/src/lang/es.rs +++ b/src/lang/es.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Resolución"), ("No transfers in progress", "No hay transferencias en curso"), ("Set one-time password length", "Establecer contraseña de un solo uso"), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/fa.rs b/src/lang/fa.rs index f6be0e01..0cc8188b 100644 --- a/src/lang/fa.rs +++ b/src/lang/fa.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "وضوح"), ("No transfers in progress", "هیچ انتقالی در حال انجام نیست"), ("Set one-time password length", "طول رمز یکبار مصرف را تعیین کنید"), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/fr.rs b/src/lang/fr.rs index 1e438bba..ef74b066 100644 --- a/src/lang/fr.rs +++ b/src/lang/fr.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/hu.rs b/src/lang/hu.rs index 1c243e2f..f984afcd 100644 --- a/src/lang/hu.rs +++ b/src/lang/hu.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/id.rs b/src/lang/id.rs index 8edc78e1..53f718e8 100644 --- a/src/lang/id.rs +++ b/src/lang/id.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/it.rs b/src/lang/it.rs index 400e0ad9..c3b77ddf 100644 --- a/src/lang/it.rs +++ b/src/lang/it.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Risoluzione"), ("No transfers in progress", "Nessun trasferimento in corso"), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/ja.rs b/src/lang/ja.rs index e87a232f..4a0fc3ab 100644 --- a/src/lang/ja.rs +++ b/src/lang/ja.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/ko.rs b/src/lang/ko.rs index 06d10d01..a3aef55c 100644 --- a/src/lang/ko.rs +++ b/src/lang/ko.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/kz.rs b/src/lang/kz.rs index ede87875..8b7582af 100644 --- a/src/lang/kz.rs +++ b/src/lang/kz.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/nl.rs b/src/lang/nl.rs index 55ad9504..6fb53711 100644 --- a/src/lang/nl.rs +++ b/src/lang/nl.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Resolutie"), ("No transfers in progress", "Geen overdrachten in uitvoering"), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/pl.rs b/src/lang/pl.rs index 08106782..d60fe2d3 100644 --- a/src/lang/pl.rs +++ b/src/lang/pl.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Rozdzielczość"), ("No transfers in progress", "Brak transferów w toku"), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/pt_PT.rs b/src/lang/pt_PT.rs index 11583b26..2747a0ca 100644 --- a/src/lang/pt_PT.rs +++ b/src/lang/pt_PT.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/ptbr.rs b/src/lang/ptbr.rs index 7aa01468..e8fca4b8 100644 --- a/src/lang/ptbr.rs +++ b/src/lang/ptbr.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/ro.rs b/src/lang/ro.rs index 49b3b358..e4521305 100644 --- a/src/lang/ro.rs +++ b/src/lang/ro.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/ru.rs b/src/lang/ru.rs index 243ffda4..473ec402 100644 --- a/src/lang/ru.rs +++ b/src/lang/ru.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Разрешение"), ("No transfers in progress", "Передача не осуществляется"), ("Set one-time password length", "Установить длину одноразового пароля"), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/sk.rs b/src/lang/sk.rs index 1a5b9207..aeed03fc 100644 --- a/src/lang/sk.rs +++ b/src/lang/sk.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/sl.rs b/src/lang/sl.rs index 1efc4de4..eaa8b1b5 100755 --- a/src/lang/sl.rs +++ b/src/lang/sl.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/sq.rs b/src/lang/sq.rs index ffe3c9ed..46f14c73 100644 --- a/src/lang/sq.rs +++ b/src/lang/sq.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/sr.rs b/src/lang/sr.rs index fe7e0bae..ee48beb3 100644 --- a/src/lang/sr.rs +++ b/src/lang/sr.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/sv.rs b/src/lang/sv.rs index 98ceed9a..b099acc9 100644 --- a/src/lang/sv.rs +++ b/src/lang/sv.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/template.rs b/src/lang/template.rs index e0d7929a..bfab1a33 100644 --- a/src/lang/template.rs +++ b/src/lang/template.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/th.rs b/src/lang/th.rs index 615c1550..d77eb5fc 100644 --- a/src/lang/th.rs +++ b/src/lang/th.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/tr.rs b/src/lang/tr.rs index 5bbddde5..d4d0b942 100644 --- a/src/lang/tr.rs +++ b/src/lang/tr.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/tw.rs b/src/lang/tw.rs index a056d6b8..e1119b12 100644 --- a/src/lang/tw.rs +++ b/src/lang/tw.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "分辨率"), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/ua.rs b/src/lang/ua.rs index 1bab4a55..216f764c 100644 --- a/src/lang/ua.rs +++ b/src/lang/ua.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } diff --git a/src/lang/vn.rs b/src/lang/vn.rs index f5b8052e..c7fbc5b9 100644 --- a/src/lang/vn.rs +++ b/src/lang/vn.rs @@ -461,8 +461,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", ""), ("No transfers in progress", ""), ("Set one-time password length", ""), - ("Install driver cert (test cert)", ""), - ("Virtual display need", ""), - ("instsall_cert_tip", "") + ("idd_driver_tip", ""), + ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); } From ceda7320b4577e58615a45334a0d57b55830da6b Mon Sep 17 00:00:00 2001 From: ilGigioVr88 Date: Wed, 8 Mar 2023 09:18:15 +0100 Subject: [PATCH 21/26] Update it.rs --- src/lang/it.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lang/it.rs b/src/lang/it.rs index 7dfc67f2..00974b43 100644 --- a/src/lang/it.rs +++ b/src/lang/it.rs @@ -460,6 +460,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Codec", "Codec"), ("Resolution", "Risoluzione"), ("No transfers in progress", "Nessun trasferimento in corso"), - ("Set one-time password length", ""), + ("Set one-time password length", "Imposta la lunghezza della password monouso"), ].iter().cloned().collect(); } From 3da68377ae9b0194bfa5a0377a01e4213f2b64c6 Mon Sep 17 00:00:00 2001 From: rustdesk Date: Wed, 8 Mar 2023 17:03:13 +0800 Subject: [PATCH 22/26] fix it --- src/lang/it.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lang/it.rs b/src/lang/it.rs index cd7e20a9..0cab5720 100644 --- a/src/lang/it.rs +++ b/src/lang/it.rs @@ -461,7 +461,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Risoluzione"), ("No transfers in progress", "Nessun trasferimento in corso"), ("Set one-time password length", "Imposta la lunghezza della password monouso"), - ("Set one-time password length", ""), ("idd_driver_tip", ""), ("confirm_idd_driver_tip", "") ].iter().cloned().collect(); From 513feca03f19916152249136de56f604ed963ad5 Mon Sep 17 00:00:00 2001 From: grummbeer Date: Tue, 7 Mar 2023 22:03:52 +0100 Subject: [PATCH 23/26] Translations. Add "RDP Settings" --- flutter/lib/common/widgets/peer_card.dart | 2 +- src/lang/ca.rs | 3 ++- src/lang/cn.rs | 3 ++- src/lang/cs.rs | 3 ++- src/lang/da.rs | 3 ++- src/lang/de.rs | 3 ++- src/lang/el.rs | 3 ++- src/lang/eo.rs | 3 ++- src/lang/es.rs | 3 ++- src/lang/fa.rs | 3 ++- src/lang/fr.rs | 3 ++- src/lang/hu.rs | 3 ++- src/lang/id.rs | 3 ++- src/lang/it.rs | 3 ++- src/lang/ja.rs | 3 ++- src/lang/ko.rs | 3 ++- src/lang/kz.rs | 3 ++- src/lang/nl.rs | 3 ++- src/lang/pl.rs | 3 ++- src/lang/pt_PT.rs | 3 ++- src/lang/ptbr.rs | 3 ++- src/lang/ro.rs | 3 ++- src/lang/ru.rs | 3 ++- src/lang/sk.rs | 3 ++- src/lang/sl.rs | 3 ++- src/lang/sq.rs | 3 ++- src/lang/sr.rs | 3 ++- src/lang/sv.rs | 3 ++- src/lang/template.rs | 3 ++- src/lang/th.rs | 3 ++- src/lang/tr.rs | 3 ++- src/lang/tw.rs | 3 ++- src/lang/ua.rs | 3 ++- src/lang/vn.rs | 3 ++- 34 files changed, 67 insertions(+), 34 deletions(-) diff --git a/flutter/lib/common/widgets/peer_card.dart b/flutter/lib/common/widgets/peer_card.dart index 7d2d0cd2..51ab3066 100644 --- a/flutter/lib/common/widgets/peer_card.dart +++ b/flutter/lib/common/widgets/peer_card.dart @@ -1115,7 +1115,7 @@ void _rdpDialog(String id) async { } return CustomAlertDialog( - title: Text('RDP ${translate('Settings')}'), + title: Text(translate('RDP Settings')), content: ConstrainedBox( constraints: const BoxConstraints(minWidth: 500), child: Column( diff --git a/src/lang/ca.rs b/src/lang/ca.rs index 3cea5e60..9507ffc2 100644 --- a/src/lang/ca.rs +++ b/src/lang/ca.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/cn.rs b/src/lang/cn.rs index 161fa035..e5ba70aa 100644 --- a/src/lang/cn.rs +++ b/src/lang/cn.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", "安装虚拟显示器驱动,以便在没有连接显示器的情况下启动虚拟显示器进行控制。"), - ("confirm_idd_driver_tip", "安装虚拟显示器驱动的选项已勾选。请注意,测试证书将被安装以信任虚拟显示器驱动。测试证书仅会用于信任Rustdesk的驱动。") + ("confirm_idd_driver_tip", "安装虚拟显示器驱动的选项已勾选。请注意,测试证书将被安装以信任虚拟显示器驱动。测试证书仅会用于信任Rustdesk的驱动。"), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/cs.rs b/src/lang/cs.rs index 86e9c47c..5920e002 100644 --- a/src/lang/cs.rs +++ b/src/lang/cs.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/da.rs b/src/lang/da.rs index d262c08c..6e7394d7 100644 --- a/src/lang/da.rs +++ b/src/lang/da.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/de.rs b/src/lang/de.rs index 21e57701..26925a9f 100644 --- a/src/lang/de.rs +++ b/src/lang/de.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", "Keine Übertragungen im Gange"), ("Set one-time password length", "Länge des Einmalpassworts festlegen"), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", "RDP Einstellungen"), ].iter().cloned().collect(); } diff --git a/src/lang/el.rs b/src/lang/el.rs index b0e629ba..4c369819 100644 --- a/src/lang/el.rs +++ b/src/lang/el.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", "Δεν υπάρχει μεταφορά σε εξέλιξη"), ("Set one-time password length", "Μέγεθος κωδικού μιας χρήσης"), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/eo.rs b/src/lang/eo.rs index f36afedc..457fbea0 100644 --- a/src/lang/eo.rs +++ b/src/lang/eo.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/es.rs b/src/lang/es.rs index 2b38ecd1..7443f864 100644 --- a/src/lang/es.rs +++ b/src/lang/es.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", "No hay transferencias en curso"), ("Set one-time password length", "Establecer contraseña de un solo uso"), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/fa.rs b/src/lang/fa.rs index 0cc8188b..f1503a83 100644 --- a/src/lang/fa.rs +++ b/src/lang/fa.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", "هیچ انتقالی در حال انجام نیست"), ("Set one-time password length", "طول رمز یکبار مصرف را تعیین کنید"), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/fr.rs b/src/lang/fr.rs index ef74b066..63d1ce31 100644 --- a/src/lang/fr.rs +++ b/src/lang/fr.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/hu.rs b/src/lang/hu.rs index f984afcd..4789ba55 100644 --- a/src/lang/hu.rs +++ b/src/lang/hu.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/id.rs b/src/lang/id.rs index 53f718e8..e2a969a8 100644 --- a/src/lang/id.rs +++ b/src/lang/id.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/it.rs b/src/lang/it.rs index 0cab5720..1c531c59 100644 --- a/src/lang/it.rs +++ b/src/lang/it.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", "Nessun trasferimento in corso"), ("Set one-time password length", "Imposta la lunghezza della password monouso"), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ja.rs b/src/lang/ja.rs index 4a0fc3ab..a2d3446b 100644 --- a/src/lang/ja.rs +++ b/src/lang/ja.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ko.rs b/src/lang/ko.rs index a3aef55c..9c2076d6 100644 --- a/src/lang/ko.rs +++ b/src/lang/ko.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/kz.rs b/src/lang/kz.rs index 8b7582af..b8a415e4 100644 --- a/src/lang/kz.rs +++ b/src/lang/kz.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/nl.rs b/src/lang/nl.rs index 6fb53711..595e0710 100644 --- a/src/lang/nl.rs +++ b/src/lang/nl.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", "Geen overdrachten in uitvoering"), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/pl.rs b/src/lang/pl.rs index d60fe2d3..08f6ca90 100644 --- a/src/lang/pl.rs +++ b/src/lang/pl.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", "Brak transferów w toku"), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/pt_PT.rs b/src/lang/pt_PT.rs index 2747a0ca..1eb5fc6e 100644 --- a/src/lang/pt_PT.rs +++ b/src/lang/pt_PT.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ptbr.rs b/src/lang/ptbr.rs index e8fca4b8..df0f5a26 100644 --- a/src/lang/ptbr.rs +++ b/src/lang/ptbr.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ro.rs b/src/lang/ro.rs index e4521305..7515ccbf 100644 --- a/src/lang/ro.rs +++ b/src/lang/ro.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ru.rs b/src/lang/ru.rs index 473ec402..afeb8d17 100644 --- a/src/lang/ru.rs +++ b/src/lang/ru.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", "Передача не осуществляется"), ("Set one-time password length", "Установить длину одноразового пароля"), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sk.rs b/src/lang/sk.rs index aeed03fc..1d8c6c62 100644 --- a/src/lang/sk.rs +++ b/src/lang/sk.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sl.rs b/src/lang/sl.rs index eaa8b1b5..07bb2b54 100755 --- a/src/lang/sl.rs +++ b/src/lang/sl.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sq.rs b/src/lang/sq.rs index 46f14c73..a7cdfa8e 100644 --- a/src/lang/sq.rs +++ b/src/lang/sq.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sr.rs b/src/lang/sr.rs index ee48beb3..bcdedef5 100644 --- a/src/lang/sr.rs +++ b/src/lang/sr.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sv.rs b/src/lang/sv.rs index b099acc9..63167ed8 100644 --- a/src/lang/sv.rs +++ b/src/lang/sv.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/template.rs b/src/lang/template.rs index bfab1a33..3fb6d17a 100644 --- a/src/lang/template.rs +++ b/src/lang/template.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/th.rs b/src/lang/th.rs index d77eb5fc..808f69f8 100644 --- a/src/lang/th.rs +++ b/src/lang/th.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/tr.rs b/src/lang/tr.rs index d4d0b942..34949aa4 100644 --- a/src/lang/tr.rs +++ b/src/lang/tr.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/tw.rs b/src/lang/tw.rs index e1119b12..17ef4b7e 100644 --- a/src/lang/tw.rs +++ b/src/lang/tw.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ua.rs b/src/lang/ua.rs index 216f764c..cc44d86d 100644 --- a/src/lang/ua.rs +++ b/src/lang/ua.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } diff --git a/src/lang/vn.rs b/src/lang/vn.rs index c7fbc5b9..b774e094 100644 --- a/src/lang/vn.rs +++ b/src/lang/vn.rs @@ -462,6 +462,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("No transfers in progress", ""), ("Set one-time password length", ""), ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", "") + ("confirm_idd_driver_tip", ""), + ("RDP Settings", ""), ].iter().cloned().collect(); } From c28238542ae97a61b3250d207b9748539758ec53 Mon Sep 17 00:00:00 2001 From: grummbeer Date: Wed, 8 Mar 2023 02:13:55 +0100 Subject: [PATCH 24/26] Fix. Mobile. Remove left label in RDP dialog --- flutter/lib/common/widgets/peer_card.dart | 63 +++++++++++++---------- 1 file changed, 37 insertions(+), 26 deletions(-) diff --git a/flutter/lib/common/widgets/peer_card.dart b/flutter/lib/common/widgets/peer_card.dart index 51ab3066..73660cc3 100644 --- a/flutter/lib/common/widgets/peer_card.dart +++ b/flutter/lib/common/widgets/peer_card.dart @@ -1126,56 +1126,67 @@ void _rdpDialog(String id) async { ), Row( children: [ - ConstrainedBox( - constraints: const BoxConstraints(minWidth: 140), - child: Text( - "${translate('Port')}:", - textAlign: TextAlign.right, - ).marginOnly(right: 10)), + isDesktop + ? ConstrainedBox( + constraints: const BoxConstraints(minWidth: 140), + child: Text( + "${translate('Port')}:", + textAlign: TextAlign.right, + ).marginOnly(right: 10)) + : SizedBox.shrink(), Expanded( child: TextField( inputFormatters: [ FilteringTextInputFormatter.allow(RegExp( r'^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$')) ], - decoration: const InputDecoration( - border: OutlineInputBorder(), hintText: '3389'), + decoration: InputDecoration( + labelText: isDesktop ? null : translate('Port'), + border: isDesktop ? const OutlineInputBorder() : null, + hintText: '3389'), controller: portController, autofocus: true, ), ), ], - ).marginOnly(bottom: 8), + ).marginOnly(bottom: isDesktop ? 8 : 0), Row( children: [ - ConstrainedBox( - constraints: const BoxConstraints(minWidth: 140), - child: Text( - "${translate('Username')}:", - textAlign: TextAlign.right, - ).marginOnly(right: 10)), + isDesktop + ? ConstrainedBox( + constraints: const BoxConstraints(minWidth: 140), + child: Text( + "${translate('Username')}:", + textAlign: TextAlign.right, + ).marginOnly(right: 10)) + : SizedBox.shrink(), Expanded( child: TextField( - decoration: - const InputDecoration(border: OutlineInputBorder()), + decoration: InputDecoration( + labelText: isDesktop ? null : translate('Username'), + border: isDesktop ? const OutlineInputBorder() : null), controller: userController, ), ), ], - ).marginOnly(bottom: 8), + ).marginOnly(bottom: isDesktop ? 8 : 0), Row( children: [ - ConstrainedBox( - constraints: const BoxConstraints(minWidth: 140), - child: Text( - "${translate('Password')}:", - textAlign: TextAlign.right, - ).marginOnly(right: 10)), + isDesktop + ? ConstrainedBox( + constraints: const BoxConstraints(minWidth: 140), + child: Text( + "${translate('Password')}:", + textAlign: TextAlign.right, + ).marginOnly(right: 10)) + : SizedBox.shrink(), Expanded( child: Obx(() => TextField( obscureText: secure.value, decoration: InputDecoration( - border: const OutlineInputBorder(), + labelText: isDesktop ? null : translate('Password'), + border: + isDesktop ? const OutlineInputBorder() : null, suffixIcon: IconButton( onPressed: () => secure.value = !secure.value, icon: Icon(secure.value @@ -1185,7 +1196,7 @@ void _rdpDialog(String id) async { )), ), ], - ).marginOnly(bottom: 8), + ).marginOnly(bottom: isDesktop ? 8 : 0), ], ), ), From de27f3613450e6dde022ec9798dbcc754749dda5 Mon Sep 17 00:00:00 2001 From: fufesou Date: Wed, 8 Mar 2023 21:00:56 +0800 Subject: [PATCH 25/26] set KEYBOARD_ONLY for rdev Signed-off-by: fufesou --- src/keyboard.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/keyboard.rs b/src/keyboard.rs index 3f7ed677..bfff9ff8 100644 --- a/src/keyboard.rs +++ b/src/keyboard.rs @@ -215,6 +215,7 @@ static mut IS_0X021D_DOWN: bool = false; static mut IS_LEFT_OPTION_DOWN: bool = false; pub fn start_grab_loop() { + std::env::set_var("KEYBOARD_ONLY", "y"); #[cfg(any(target_os = "windows", target_os = "macos"))] std::thread::spawn(move || { let try_handle_keyboard = move |event: Event, key: Key, is_press: bool| -> Option { From acae095541cc3da02708ba8c5b6cd55bff5ff2b4 Mon Sep 17 00:00:00 2001 From: Mr-Update <37781396+Mr-Update@users.noreply.github.com> Date: Wed, 8 Mar 2023 14:11:11 +0100 Subject: [PATCH 26/26] Update de.rs --- src/lang/de.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lang/de.rs b/src/lang/de.rs index 26925a9f..f753265f 100644 --- a/src/lang/de.rs +++ b/src/lang/de.rs @@ -152,7 +152,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Configure", "Konfigurieren"), ("config_acc", "Um Ihren PC aus der Ferne zu steuern, müssen Sie RustDesk Zugriffsrechte erteilen."), ("config_screen", "Um aus der Ferne auf Ihren PC zugreifen zu können, müssen Sie RustDesk die Berechtigung \"Bildschirmaufnahme\" erteilen."), - ("Installing ...", " Wird installiert …"), + ("Installing ...", "Wird installiert …"), ("Install", "Installieren"), ("Installation", "Installation"), ("Installation Path", "Installationspfad"), @@ -461,8 +461,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Resolution", "Auflösung"), ("No transfers in progress", "Keine Übertragungen im Gange"), ("Set one-time password length", "Länge des Einmalpassworts festlegen"), - ("idd_driver_tip", ""), - ("confirm_idd_driver_tip", ""), - ("RDP Settings", "RDP Einstellungen"), + ("idd_driver_tip", "Installieren Sie den virtuellen Anzeigetreiber, der verwendet wird, wenn Sie keine physischen Anzeigen haben."), + ("confirm_idd_driver_tip", "Die Option zur Installation des virtuellen Anzeigetreibers ist aktiviert. Beachten Sie, dass ein Testzertifikat installiert wird, um dem virtuellen Anzeigetreiber zu vertrauen. Dieses Testzertifikat wird nur verwendet, um Rustdesk-Treibern zu vertrauen."), + ("RDP Settings", "RDP-Einstellungen"), ].iter().cloned().collect(); }