diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart index dcdc191ff..aee5a73af 100644 --- a/flutter/lib/common.dart +++ b/flutter/lib/common.dart @@ -130,9 +130,10 @@ class MyTheme { backgroundColor: Color(0xFFFFFFFF), scaffoldBackgroundColor: Color(0xFFEEEEEE), textTheme: const TextTheme( - titleLarge: TextStyle(fontSize: 19, color: Colors.black87), - bodySmall: - TextStyle(fontSize: 12, color: Colors.black54, height: 1.25)), + titleLarge: TextStyle(fontSize: 19, color: Colors.black87), + bodySmall: TextStyle(fontSize: 12, color: Colors.black54, height: 1.25), + bodyMedium: TextStyle(fontSize: 14, color: Colors.black54, height: 1.25), + ), hintColor: Color(0xFFAAAAAA), primarySwatch: Colors.blue, visualDensity: VisualDensity.adaptivePlatformDensity, @@ -159,7 +160,8 @@ class MyTheme { scaffoldBackgroundColor: Color(0xFF141414), textTheme: const TextTheme( titleLarge: TextStyle(fontSize: 19), - bodySmall: TextStyle(fontSize: 12, height: 1.25)), + bodySmall: TextStyle(fontSize: 12, height: 1.25), + bodyMedium: TextStyle(fontSize: 14, height: 1.25)), cardColor: Color(0xFF252525), primarySwatch: Colors.blue, visualDensity: VisualDensity.adaptivePlatformDensity, diff --git a/flutter/lib/common/widgets/dialog.dart b/flutter/lib/common/widgets/dialog.dart index 82e4fb5cc..cfb57a4cb 100644 --- a/flutter/lib/common/widgets/dialog.dart +++ b/flutter/lib/common/widgets/dialog.dart @@ -72,3 +72,86 @@ void changeIdDialog() { ); }); } + +void changeWhiteList({Function()? callback}) async { + var newWhiteList = (await bind.mainGetOption(key: 'whitelist')).split(','); + var newWhiteListField = newWhiteList.join('\n'); + var controller = TextEditingController(text: newWhiteListField); + var msg = ""; + var isInProgress = false; + gFFI.dialogManager.show((setState, close) { + return CustomAlertDialog( + title: Text(translate("IP Whitelisting")), + content: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(translate("whitelist_sep")), + const SizedBox( + height: 8.0, + ), + Row( + children: [ + Expanded( + child: TextField( + maxLines: null, + decoration: InputDecoration( + border: const OutlineInputBorder(), + errorText: msg.isEmpty ? null : translate(msg), + ), + controller: controller, + focusNode: FocusNode()..requestFocus()), + ), + ], + ), + const SizedBox( + height: 4.0, + ), + Offstage( + offstage: !isInProgress, child: const LinearProgressIndicator()) + ], + ), + actions: [ + TextButton(onPressed: close, child: Text(translate("Cancel"))), + TextButton( + onPressed: () async { + await bind.mainSetOption(key: 'whitelist', value: ''); + callback?.call(); + close(); + }, + child: Text(translate("Clear"))), + TextButton( + onPressed: () async { + setState(() { + msg = ""; + isInProgress = true; + }); + newWhiteListField = controller.text.trim(); + var newWhiteList = ""; + if (newWhiteListField.isEmpty) { + // pass + } else { + final ips = + newWhiteListField.trim().split(RegExp(r"[\s,;\n]+")); + // test ip + final ipMatch = RegExp(r"^\d+\.\d+\.\d+\.\d+$"); + for (final ip in ips) { + if (!ipMatch.hasMatch(ip)) { + msg = "${translate("Invalid IP")} $ip"; + setState(() { + isInProgress = false; + }); + return; + } + } + newWhiteList = ips.join(','); + } + await bind.mainSetOption(key: 'whitelist', value: newWhiteList); + callback?.call(); + close(); + }, + child: Text(translate("OK"))), + ], + onCancel: close, + ); + }); +} diff --git a/flutter/lib/common/widgets/peer_card.dart b/flutter/lib/common/widgets/peer_card.dart index 7c9a7ac1f..9a77eee04 100644 --- a/flutter/lib/common/widgets/peer_card.dart +++ b/flutter/lib/common/widgets/peer_card.dart @@ -74,9 +74,12 @@ class _PeerCardState extends State<_PeerCard> _showPeerMenu(peer.id); }, child: ListTile( - contentPadding: const EdgeInsets.only(left: 12), + contentPadding: const EdgeInsets.only(left: 12), // subtitle: Text('${peer.username}@${peer.hostname}'), - title: Text(peer.alias.isEmpty ? formatID(peer.id) : peer.alias), + title: Row(children: [ + getOnline(4, peer.online), + Text(peer.alias.isEmpty ? formatID(peer.id) : peer.alias) + ]), leading: Container( decoration: BoxDecoration( color: str2color('${peer.id}${peer.platform}', 0x7f), @@ -160,7 +163,7 @@ class _PeerCardState extends State<_PeerCard> child: Column( children: [ Row(children: [ - getOnline(4, peer.online), + getOnline(8, peer.online), Expanded( child: Text( alias.isEmpty ? formatID(peer.id) : alias, @@ -252,7 +255,7 @@ class _PeerCardState extends State<_PeerCard> children: [ Expanded( child: Row(children: [ - getOnline(4, peer.online), + getOnline(8, peer.online), Expanded( child: Text( peer.alias.isEmpty ? formatID(peer.id) : peer.alias, @@ -494,7 +497,8 @@ abstract class BasePeerCard extends StatelessWidget { @protected MenuEntryBase _removeAction( - String id, Future Function() reloadFunc) { + String id, Future Function() reloadFunc, + {bool isLan = false}) { return MenuEntryButton( childBuilder: (TextStyle? style) => Text( translate('Remove'), @@ -502,7 +506,11 @@ abstract class BasePeerCard extends StatelessWidget { ), proc: () { () async { - await bind.mainRemovePeer(id: id); + if (isLan) { + // TODO + } else { + await bind.mainRemovePeer(id: id); + } removePreference(id); await reloadFunc(); }(); @@ -656,7 +664,9 @@ class RecentPeerCard extends BasePeerCard { menuItems.add(_removeAction(peer.id, () async { await bind.mainLoadRecentPeers(); })); - menuItems.add(_unrememberPasswordAction(peer.id)); + if (await bind.mainPeerHasPassword(id: peer.id)) { + menuItems.add(_unrememberPasswordAction(peer.id)); + } menuItems.add(_addFavAction(peer.id)); return menuItems; } @@ -686,7 +696,9 @@ class FavoritePeerCard extends BasePeerCard { menuItems.add(_removeAction(peer.id, () async { await bind.mainLoadFavPeers(); })); - menuItems.add(_unrememberPasswordAction(peer.id)); + if (await bind.mainPeerHasPassword(id: peer.id)) { + menuItems.add(_unrememberPasswordAction(peer.id)); + } menuItems.add(_rmFavAction(peer.id, () async { await bind.mainLoadFavPeers(); })); @@ -714,8 +726,7 @@ class DiscoveredPeerCard extends BasePeerCard { } menuItems.add(_wolAction(peer.id)); menuItems.add(MenuEntryDivider()); - menuItems.add(_renameAction(peer.id, false)); - menuItems.add(_unrememberPasswordAction(peer.id)); + menuItems.add(_removeAction(peer.id, () async {})); return menuItems; } } @@ -742,8 +753,9 @@ class AddressBookPeerCard extends BasePeerCard { menuItems.add(MenuEntryDivider()); menuItems.add(_renameAction(peer.id, false)); menuItems.add(_removeAction(peer.id, () async {})); - menuItems.add(_unrememberPasswordAction(peer.id)); - menuItems.add(_addFavAction(peer.id)); + if (await bind.mainPeerHasPassword(id: peer.id)) { + menuItems.add(_unrememberPasswordAction(peer.id)); + } menuItems.add(_editTagAction(peer.id)); return menuItems; } @@ -751,7 +763,8 @@ class AddressBookPeerCard extends BasePeerCard { @protected @override MenuEntryBase _removeAction( - String id, Future Function() reloadFunc) { + String id, Future Function() reloadFunc, + {bool isLan = false}) { return MenuEntryButton( childBuilder: (TextStyle? style) => Text( translate('Remove'), @@ -987,12 +1000,12 @@ void _rdpDialog(String id) async { }); } -Widget getOnline(int rightMargin, bool online) { +Widget getOnline(double rightPadding, bool online) { return Tooltip( message: translate(online ? 'Online' : 'Offline'), waitDuration: const Duration(seconds: 1), child: Padding( - padding: const EdgeInsets.fromLTRB(0, 4, 8, 4), + padding: EdgeInsets.fromLTRB(0, 4, rightPadding, 4), child: CircleAvatar( radius: 3, backgroundColor: online ? Colors.green : kColorWarn))); } diff --git a/flutter/lib/desktop/pages/desktop_setting_page.dart b/flutter/lib/desktop/pages/desktop_setting_page.dart index 10044d8f0..1f11a6fc5 100644 --- a/flutter/lib/desktop/pages/desktop_setting_page.dart +++ b/flutter/lib/desktop/pages/desktop_setting_page.dart @@ -1320,91 +1320,6 @@ void changeServer() async { }); } -void changeWhiteList({Function()? callback}) async { - Map oldOptions = jsonDecode(await bind.mainGetOptions()); - var newWhiteList = ((oldOptions['whitelist'] ?? "") as String).split(','); - var newWhiteListField = newWhiteList.join('\n'); - var controller = TextEditingController(text: newWhiteListField); - var msg = ""; - var isInProgress = false; - gFFI.dialogManager.show((setState, close) { - return CustomAlertDialog( - title: Text(translate("IP Whitelisting")), - content: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text(translate("whitelist_sep")), - const SizedBox( - height: 8.0, - ), - Row( - children: [ - Expanded( - child: TextField( - maxLines: null, - decoration: InputDecoration( - border: const OutlineInputBorder(), - errorText: msg.isEmpty ? null : translate(msg), - ), - controller: controller, - focusNode: FocusNode()..requestFocus()), - ), - ], - ), - const SizedBox( - height: 4.0, - ), - Offstage( - offstage: !isInProgress, child: const LinearProgressIndicator()) - ], - ), - actions: [ - TextButton(onPressed: close, child: Text(translate("Cancel"))), - TextButton( - onPressed: () async { - await bind.mainSetOption(key: 'whitelist', value: ''); - callback?.call(); - close(); - }, - child: Text(translate("Clear"))), - TextButton( - onPressed: () async { - setState(() { - msg = ""; - isInProgress = true; - }); - newWhiteListField = controller.text.trim(); - var newWhiteList = ""; - if (newWhiteListField.isEmpty) { - // pass - } else { - final ips = - newWhiteListField.trim().split(RegExp(r"[\s,;\n]+")); - // test ip - final ipMatch = RegExp(r"^\d+\.\d+\.\d+\.\d+$"); - for (final ip in ips) { - if (!ipMatch.hasMatch(ip)) { - msg = "${translate("Invalid IP")} $ip"; - setState(() { - isInProgress = false; - }); - return; - } - } - newWhiteList = ips.join(','); - } - oldOptions['whitelist'] = newWhiteList; - await bind.mainSetOptions(json: jsonEncode(oldOptions)); - callback?.call(); - close(); - }, - child: Text(translate("OK"))), - ], - onCancel: close, - ); - }); -} - void changeSocks5Proxy() async { var socks = await bind.mainGetSocks(); diff --git a/flutter/lib/mobile/pages/server_page.dart b/flutter/lib/mobile/pages/server_page.dart index bed043b25..52b378681 100644 --- a/flutter/lib/mobile/pages/server_page.dart +++ b/flutter/lib/mobile/pages/server_page.dart @@ -334,9 +334,12 @@ class PermissionRow extends StatelessWidget { fit: BoxFit.scaleDown, alignment: Alignment.centerLeft, child: Text(name, - style: const TextStyle( + style: TextStyle( fontSize: 16.0, - fontWeight: FontWeight.bold, + fontWeight: + Theme.of(context).brightness == Brightness.dark + ? FontWeight.bold + : null, color: MyTheme.accent80)))), Expanded( flex: 2, @@ -409,7 +412,9 @@ class ConnectionManager extends StatelessWidget { ? const SizedBox.shrink() : Text( translate("android_new_connection_tip"), - style: const TextStyle(color: Colors.black54), + style: Theme.of(globalKey.currentContext!) + .textTheme + .bodyMedium, ), client.authorized ? ElevatedButton.icon( diff --git a/flutter/lib/mobile/pages/settings_page.dart b/flutter/lib/mobile/pages/settings_page.dart index 985fe2df0..2c16a7991 100644 --- a/flutter/lib/mobile/pages/settings_page.dart +++ b/flutter/lib/mobile/pages/settings_page.dart @@ -2,12 +2,14 @@ import 'dart:async'; import 'dart:convert'; import 'package:flutter/material.dart'; +import 'package:get/get.dart'; import 'package:http/http.dart' as http; import 'package:provider/provider.dart'; import 'package:settings_ui/settings_ui.dart'; import 'package:url_launcher/url_launcher.dart'; import '../../common.dart'; +import '../../common/widgets/dialog.dart'; import '../../models/model.dart'; import '../../models/platform_model.dart'; import '../widgets/dialog.dart'; @@ -32,6 +34,8 @@ const url = 'https://rustdesk.com/'; final _hasIgnoreBattery = androidVersion >= 26; var _ignoreBatteryOpt = false; var _enableAbr = false; +var _denyLANDiscovery = false; +var _onlyWhiteList = false; class _SettingsState extends State with WidgetsBindingObserver { String? username; @@ -59,6 +63,20 @@ class _SettingsState extends State with WidgetsBindingObserver { _enableAbr = enableAbrRes; } + final denyLanDiscovery = !option2bool('enable-lan-discovery', + await bind.mainGetOption(key: 'enable-lan-discovery')); + if (denyLanDiscovery != _denyLANDiscovery) { + update = true; + _denyLANDiscovery = denyLanDiscovery; + } + + final onlyWhiteList = + (await bind.mainGetOption(key: 'whitelist')).isNotEmpty; + if (onlyWhiteList != _onlyWhiteList) { + update = true; + _onlyWhiteList = onlyWhiteList; + } + if (update) { setState(() {}); } @@ -99,14 +117,55 @@ class _SettingsState extends State with WidgetsBindingObserver { SettingsTile.switchTile( title: Text('${translate('Adaptive Bitrate')} (beta)'), initialValue: _enableAbr, - onToggle: (v) { - bind.mainSetOption(key: "enable-abr", value: v ? "" : "N"); + onToggle: (v) async { + await bind.mainSetOption(key: "enable-abr", value: v ? "" : "N"); + final newValue = await bind.mainGetOption(key: "enable-abr") != "N"; setState(() { - _enableAbr = !_enableAbr; + _enableAbr = newValue; }); }, ) ]; + final shareScreenTiles = [ + SettingsTile.switchTile( + title: Text(translate('Deny LAN Discovery')), + initialValue: _denyLANDiscovery, + onToggle: (v) async { + await bind.mainSetOption( + key: "enable-lan-discovery", + value: bool2option("enable-lan-discovery", !v)); + final newValue = !option2bool('enable-lan-discovery', + await bind.mainGetOption(key: 'enable-lan-discovery')); + setState(() { + _denyLANDiscovery = newValue; + }); + }, + ), + SettingsTile.switchTile( + title: Row(children: [ + Text(translate('Use IP Whitelisting')), + Offstage( + offstage: !_onlyWhiteList, + child: const Icon(Icons.warning_amber_rounded, + color: Color.fromARGB(255, 255, 204, 0))) + .marginOnly(left: 5) + ]), + initialValue: _onlyWhiteList, + onToggle: (_) async { + update() async { + final onlyWhiteList = + (await bind.mainGetOption(key: 'whitelist')).isNotEmpty; + if (onlyWhiteList != _onlyWhiteList) { + setState(() { + _onlyWhiteList = onlyWhiteList; + }); + } + } + + changeWhiteList(callback: update); + }, + ) + ]; if (_hasIgnoreBattery) { enhancementsTiles.insert( 0, @@ -182,6 +241,10 @@ class _SettingsState extends State with WidgetsBindingObserver { }, ) ]), + SettingsSection( + title: Text(translate("Share Screen")), + tiles: shareScreenTiles, + ), SettingsSection( title: Text(translate("Enhancements")), tiles: enhancementsTiles, diff --git a/flutter/lib/models/server_model.dart b/flutter/lib/models/server_model.dart index a26fe5062..5e3fb755e 100644 --- a/flutter/lib/models/server_model.dart +++ b/flutter/lib/models/server_model.dart @@ -436,7 +436,7 @@ class ServerModel with ChangeNotifier { clientInfo(client), Text( translate("android_new_connection_tip"), - style: const TextStyle(color: Colors.black54), + style: Theme.of(globalKey.currentContext!).textTheme.bodyMedium, ), ], ), diff --git a/flutter/pubspec.lock b/flutter/pubspec.lock index 3d55e5598..db5b4b535 100644 --- a/flutter/pubspec.lock +++ b/flutter/pubspec.lock @@ -243,8 +243,8 @@ packages: dependency: "direct main" description: path: "." - ref: "1818097611168f6148317f4c527aa45ff29d5850" - resolved-ref: "1818097611168f6148317f4c527aa45ff29d5850" + ref: "74c10aa49fecc088992a9edef1f6da39f83df505" + resolved-ref: "74c10aa49fecc088992a9edef1f6da39f83df505" url: "https://github.com/Kingtous/rustdesk_desktop_multi_window" source: git version: "0.1.0" diff --git a/res/lang.py b/res/lang.py index c7005a055..d1d4254ed 100644 --- a/res/lang.py +++ b/res/lang.py @@ -36,7 +36,7 @@ def expand(): lang = os.path.basename(fn)[:-3] if lang in ['en','cn']: continue dict = get_lang(lang) - fw = open("%s.rs"%lang, "wt") + fw = open("./src/lang/%s.rs"%lang, "wt") for line in open('./src/lang/cn.rs'): line_strip = line.strip() if line_strip.startswith('("'): diff --git a/src/flutter_ffi.rs b/src/flutter_ffi.rs index 40ae4d58d..2957a62d0 100644 --- a/src/flutter_ffi.rs +++ b/src/flutter_ffi.rs @@ -24,9 +24,9 @@ use crate::ui_interface::{ get_option, get_options, get_peer, get_peer_option, get_socks, get_uuid, get_version, goto_install, has_hwcodec, has_rendezvous_service, is_can_screen_recording, is_installed, is_installed_daemon, is_installed_lower_version, is_process_trusted, is_rdp_service_open, - is_share_rdp, post_request, send_to_cm, set_local_option, set_option, set_options, - set_peer_option, set_permanent_password, set_socks, store_fav, test_if_valid_server, update_me, - update_temporary_password, using_public_server, + is_share_rdp, peer_has_password, post_request, send_to_cm, set_local_option, set_option, + set_options, set_peer_option, set_permanent_password, set_socks, store_fav, + test_if_valid_server, update_me, update_temporary_password, using_public_server, }; use crate::{ client::file_trait::FileManager, @@ -578,6 +578,10 @@ pub fn main_forget_password(id: String) { forget_password(id) } +pub fn main_peer_has_password(id: String) -> bool { + peer_has_password(id) +} + pub fn main_get_recent_peers() -> String { if !config::APP_DIR.read().unwrap().is_empty() { let peers: Vec> = PeerConfig::peers() diff --git a/src/lang/cn.rs b/src/lang/cn.rs index d160d41e4..68667f693 100644 --- a/src/lang/cn.rs +++ b/src/lang/cn.rs @@ -327,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", "账户"), ("Theme", "主题"), ("Dark Theme", "暗黑主题"), + ("Dark", "黑暗"), + ("Light", "明亮"), + ("Follow System", "跟随系统"), ("Enable hardware codec", "使用硬件编解码"), ("Unlock Security Settings", "解锁安全设置"), ("Enable Audio", "允许传输音频"), diff --git a/src/lang/cs.rs b/src/lang/cs.rs index e2324fbec..545f7e5b2 100644 --- a/src/lang/cs.rs +++ b/src/lang/cs.rs @@ -187,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Reboot required", "Je třeba restartovat"), ("Unsupported display server ", "Nepodporovaný zobrazovací server"), ("x11 expected", "očekávány x11"), - ("Port", "Číslo portu"), + ("Port", ""), ("Settings", "Nastavení"), ("Username", "Uživatelské jméno"), ("Invalid port", "Neplatné číslo portu"), @@ -268,7 +268,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("android_stop_service_tip", "Zastavení služby automaticky ukončí veškerá navázaná spojení."), ("android_version_audio_tip", "Vámi nyní používaná verze systému Android nepodporuje zachytávání zvuku – přejděte na Android 10 nebo novější."), ("android_start_service_tip", "Službu pro sdílení obrazovky spustíte klepnutím na [Spustit službu] nebo UDĚLTE pověření pro [Zachytávání obsahu obrazovky]."), - ("Account", "Účet"), + ("Account", ""), ("Overwrite", "Přepsat"), ("This file exists, skip or overwrite this file?", "Tento soubor existuje – přeskočit ho nebo přepsat?"), ("Quit", "Ukončit"), @@ -327,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""), diff --git a/src/lang/da.rs b/src/lang/da.rs index 0e6aa9334..2417f883f 100644 --- a/src/lang/da.rs +++ b/src/lang/da.rs @@ -187,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Reboot required", "Genstart krævet"), ("Unsupported display server ", "Ikke-understøttet displayserver"), ("x11 expected", "X11 Forventet"), - ("Port", "Port"), + ("Port", ""), ("Settings", "Indstillinger"), ("Username", " Brugernavn"), ("Invalid port", "Ugyldig port"), @@ -268,7 +268,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("android_stop_service_tip", "Ved at lukke tjenesten lukkes alle fremstillede forbindelser automatisk."), ("android_version_audio_tip", "Den aktuelle Android -version understøtter ikke lydoptagelse, skal du opdatere om Android 10 eller højere."), ("android_start_service_tip", "Tryk på [Start Service] eller åbn autorisationen [skærmoptagelse] for at starte skærmudgivelsen."), - ("Account", "Konto"), + ("Account", ""), ("Overwrite", "Overskriv"), ("This file exists, skip or overwrite this file?", "Denne fil findes, springer over denne fil eller overskriver?"), ("Quit", "Afslut"), @@ -327,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""), diff --git a/src/lang/de.rs b/src/lang/de.rs index 6204dfc64..79faeb946 100644 --- a/src/lang/de.rs +++ b/src/lang/de.rs @@ -187,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Reboot required", "Neustart erforderlich"), ("Unsupported display server ", "Nicht unterstützter Display-Server"), ("x11 expected", "X11 erwartet"), - ("Port", "Port"), + ("Port", ""), ("Settings", "Einstellungen"), ("Username", " Benutzername"), ("Invalid port", "Ungültiger Port"), @@ -268,7 +268,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("android_stop_service_tip", "Durch das Deaktivieren des Dienstes werden automatisch alle hergestellten Verbindungen getrennt."), ("android_version_audio_tip", "Ihre Android-Version unterstützt keine Audioaufnahme, bitte aktualisieren Sie auf Android 10 oder höher, falls möglich."), ("android_start_service_tip", "Tippen Sie auf [Dienst aktivieren] oder aktivieren Sie die Berechtigung [Bildschirmzugr.], um den Bildschirmfreigabedienst zu starten."), - ("Account", "Konto"), + ("Account", ""), ("Overwrite", "Überschreiben"), ("This file exists, skip or overwrite this file?", "Diese Datei existiert; überspringen oder überschreiben?"), ("Quit", "Beenden"), @@ -327,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""), diff --git a/src/lang/eo.rs b/src/lang/eo.rs index 7f035c92a..015a2e09e 100644 --- a/src/lang/eo.rs +++ b/src/lang/eo.rs @@ -187,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Reboot required", "Restarto deviga"), ("Unsupported display server ", "La aktuala bilda servilo ne estas subtenita"), ("x11 expected", "Bonvolu uzi x11"), - ("Port", "Pordo"), + ("Port", ""), ("Settings", "Agordoj"), ("Username", " Uzanta nomo"), ("Invalid port", "Pordo nevalida"), @@ -327,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""), diff --git a/src/lang/es.rs b/src/lang/es.rs index 05b0fb8c6..0ae6ee3ed 100644 --- a/src/lang/es.rs +++ b/src/lang/es.rs @@ -187,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Reboot required", "Reinicio requerido"), ("Unsupported display server ", "Servidor de visualización no compatible"), ("x11 expected", "x11 necesario"), - ("Port", "Puerto"), + ("Port", ""), ("Settings", "Ajustes"), ("Username", " Nombre de usuario"), ("Invalid port", "Puerto inválido"), @@ -268,7 +268,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("android_stop_service_tip", "Cerrar el servicio cerrará automáticamente todas las conexiones establecidas."), ("android_version_audio_tip", "La versión actual de Android no admite la captura de audio, actualice a Android 10 o posterior."), ("android_start_service_tip", "Toque el permiso [Iniciar servicio] o ABRIR [Captura de pantalla] para iniciar el servicio de uso compartido de pantalla."), - ("Account", "Cuenta"), + ("Account", ""), ("Overwrite", "Sobrescribir"), ("This file exists, skip or overwrite this file?", "Este archivo existe, ¿omitir o sobrescribir este archivo?"), ("Quit", "Salir"), @@ -289,23 +289,10 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Keep RustDesk background service", "Dejar RustDesk como Servicio en 2do plano"), ("Ignore Battery Optimizations", "Ignorar optimizacioens de bateria"), ("android_open_battery_optimizations_tip", ""), - ("Random Password After Session", ""), - ("Keep", ""), - ("Update", ""), - ("Disable", ""), - ("Onetime Password", ""), - ("Verification Method", ""), - ("Enable security password", ""), - ("Enable random password", ""), - ("Enable onetime password", ""), - ("Disable onetime password", ""), - ("Activate onetime password", ""), - ("Set security password", ""), - ("Connection not allowed", ""), + ("Connection not allowed", "Conexión no disponible"), ("Legacy mode", ""), ("Map mode", ""), ("Translate mode", ""), - ("Connection not allowed", "Conexión no disponible"), ("Use temporary password", "Usar contraseña temporal"), ("Use permanent password", "Usar contraseña permamente"), ("Use both passwords", "Usar ambas comtraseñas"), @@ -340,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""), diff --git a/src/lang/fr.rs b/src/lang/fr.rs index 3281060b8..f2c2997de 100644 --- a/src/lang/fr.rs +++ b/src/lang/fr.rs @@ -187,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Reboot required", "Redémarrage pour prendre effet"), ("Unsupported display server ", "Le serveur d'affichage actuel n'est pas pris en charge"), ("x11 expected", "Veuillez passer à x11"), - ("Port", "Port"), + ("Port", ""), ("Settings", "Paramètres"), ("Username", " Nom d'utilisateur"), ("Invalid port", "Port invalide"), @@ -268,7 +268,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("android_stop_service_tip", "La fermeture du service fermera automatiquement toutes les connexions établies."), ("android_version_audio_tip", "La version actuelle d'Android ne prend pas en charge la capture audio, veuillez passer à Android 10 ou supérieur."), ("android_start_service_tip", "Appuyez sur [Démarrer le service] ou sur l'autorisation OUVRIR [Capture d'écran] pour démarrer le service de partage d'écran."), - ("Account", "Compte"), + ("Account", ""), ("Overwrite", "Écraser"), ("This file exists, skip or overwrite this file?", "Ce fichier existe, ignorer ou écraser ce fichier ?"), ("Quit", "Quitter"), @@ -327,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""), diff --git a/src/lang/hu.rs b/src/lang/hu.rs index ab46b0c86..d835de69f 100644 --- a/src/lang/hu.rs +++ b/src/lang/hu.rs @@ -187,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Reboot required", "Újraindítás szükséges"), ("Unsupported display server ", "Nem támogatott kijelző szerver"), ("x11 expected", "x11-re számítottt"), - ("Port", "Port"), + ("Port", ""), ("Settings", "Beállítások"), ("Username", "Felhasználónév"), ("Invalid port", "Érvénytelen port"), @@ -268,7 +268,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("android_stop_service_tip", "A szolgáltatás bezárása automatikusan szétkapcsol minden létező kapcsolatot."), ("android_version_audio_tip", "A jelenlegi Android verzió nem támogatja a hangrögzítést, kérlek frissíts legalább Android 10-re, vagy egy újabb verzióra."), ("android_start_service_tip", "Nyomj a [Szolgáltatás Indítása] opcióra, vagy adj [Képernyőrözítési] jogot az applikációnak hogy elindítsd a képernyőmegosztó szolgáltatást."), - ("Account", "Fiók"), + ("Account", ""), ("Overwrite", "Felülírás"), ("This file exists, skip or overwrite this file?", "Ez a fájl már létezik, skippeljünk, vagy felülírjuk ezt a fájlt?"), ("Quit", "Kilépés"), @@ -327,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""), diff --git a/src/lang/id.rs b/src/lang/id.rs index d2c70155b..975e15059 100644 --- a/src/lang/id.rs +++ b/src/lang/id.rs @@ -187,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Reboot required", "Diperlukan boot ulang"), ("Unsupported display server ", "Server tampilan tidak didukung "), ("x11 expected", "x11 diharapkan"), - ("Port", "Port"), + ("Port", ""), ("Settings", "Pengaturan"), ("Username", "Username"), ("Invalid port", "Kesalahan port"), @@ -268,7 +268,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("android_stop_service_tip", "Menutup layanan akan secara otomatis menutup semua koneksi yang dibuat."), ("android_version_audio_tip", "Versi Android saat ini tidak mendukung pengambilan audio, harap tingkatkan ke Android 10 atau lebih tinggi."), ("android_start_service_tip", "Ketuk izin [Mulai Layanan] atau BUKA [Tangkapan Layar] untuk memulai layanan berbagi layar."), - ("Account", "Akun"), + ("Account", ""), ("Overwrite", "Timpa"), ("This file exists, skip or overwrite this file?", "File ini sudah ada, lewati atau timpa file ini?"), ("Quit", "Keluar"), @@ -289,23 +289,10 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Keep RustDesk background service", "Pertahankan RustDesk berjalan pada background service"), ("Ignore Battery Optimizations", "Abaikan Pengoptimalan Baterai"), ("android_open_battery_optimizations_tip", ""), - ("Random Password After Session", ""), - ("Keep", ""), - ("Update", ""), - ("Disable", ""), - ("Onetime Password", ""), - ("Verification Method", ""), - ("Enable security password", ""), - ("Enable random password", ""), - ("Enable onetime password", ""), - ("Disable onetime password", ""), - ("Activate onetime password", ""), - ("Set security password", ""), - ("Connection not allowed", ""), + ("Connection not allowed", "Koneksi tidak dijinkan"), ("Legacy mode", ""), ("Map mode", ""), ("Translate mode", ""), - ("Connection not allowed", "Koneksi tidak dijinkan"), ("Use temporary password", "Gunakan kata sandi sementara"), ("Use permanent password", "Gunakan kata sandi permanaen"), ("Use both passwords", "Gunakan kedua kata sandi "), @@ -340,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""), diff --git a/src/lang/it.rs b/src/lang/it.rs index 3638f7a70..972f29114 100644 --- a/src/lang/it.rs +++ b/src/lang/it.rs @@ -187,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Reboot required", "Riavvio necessario"), ("Unsupported display server ", "Display server non supportato"), ("x11 expected", "x11 necessario"), - ("Port", "Porta"), + ("Port", ""), ("Settings", "Impostazioni"), ("Username", " Nome utente"), ("Invalid port", "Porta non valida"), @@ -268,7 +268,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("android_stop_service_tip", "La chiusura del servizio chiuderà automaticamente tutte le connessioni stabilite."), ("android_version_audio_tip", "L'attuale versione di Android non supporta l'acquisizione audio, esegui l'upgrade ad Android 10 o versioni successive."), ("android_start_service_tip", "Toccare [Avvia servizio] o APRI l'autorizzazione [Cattura schermo] per avviare il servizio di condivisione dello schermo."), - ("Account", "Account"), + ("Account", ""), ("Overwrite", "Sovrascrivi"), ("This file exists, skip or overwrite this file?", "Questo file esiste, saltare o sovrascrivere questo file?"), ("Quit", "Esci"), @@ -290,6 +290,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Ignore Battery Optimizations", ""), ("android_open_battery_optimizations_tip", ""), ("Connection not allowed", "Connessione non consentita"), + ("Legacy mode", ""), + ("Map mode", ""), + ("Translate mode", ""), ("Use temporary password", "Usa password temporanea"), ("Use permanent password", "Usa password permanente"), ("Use both passwords", "Usa entrambe le password"), @@ -301,6 +304,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Are you sure you want to restart", "Sei sicuro di voler riavviare?"), ("Restarting Remote Device", "Il dispositivo remoto si sta riavviando"), ("remote_restarting_tip", "Riavviare il dispositivo remoto"), + ("Copied", ""), ("Exit Fullscreen", "Esci dalla modalità schermo intero"), ("Fullscreen", "A schermo intero"), ("Mobile Actions", "Azioni mobili"), @@ -318,14 +322,14 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Insecure Connection", "Connessione insicura"), ("Scale original", "Scala originale"), ("Scale adaptive", "Scala adattiva"), - ("Legacy mode", ""), - ("Map mode", ""), - ("Translate mode", ""), ("General", ""), ("Security", ""), ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""), diff --git a/src/lang/ja.rs b/src/lang/ja.rs index a5b822c29..5bcc90cfe 100644 --- a/src/lang/ja.rs +++ b/src/lang/ja.rs @@ -103,6 +103,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Original", "オリジナル"), ("Shrink", "縮小"), ("Stretch", "伸縮"), + ("Scrollbar", ""), + ("ScrollAuto", ""), ("Good image quality", "画質優先"), ("Balanced", "バランス"), ("Optimize reaction time", "速度優先"), @@ -185,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Reboot required", "再起動が必要"), ("Unsupported display server ", "サポートされていないディスプレイサーバー"), ("x11 expected", "X11 が必要です"), - ("Port", "ポート"), + ("Port", ""), ("Settings", "設定"), ("Username", "ユーザー名"), ("Invalid port", "無効なポート"), @@ -266,11 +268,11 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("android_stop_service_tip", "サービスを停止すると、現在確立されている接続が全て自動的に閉じられます。"), ("android_version_audio_tip", "現在のAndroidバージョンでは音声キャプチャはサポートされていません。Android 10以降にアップグレードしてください。"), ("android_start_service_tip", "「サービスを開始」をタップするか「画面キャプチャ」を開くと、画面共有サービスが開始されます。"), - ("Account", "アカウント"), + ("Account", ""), ("Overwrite", "上書き"), ("This file exists, skip or overwrite this file?", "このファイルは存在しています。スキップするか上書きしますか?"), ("Quit", "終了"), - ("doc_mac_permission", "https://rustdesk.com/docs/en/manual/mac/#enable-permissions"), // @TODO: Update url when someone translates the document + ("doc_mac_permission", "https://rustdesk.com/docs/en/manual/mac/#enable-permissions"), // @TODO: Update url when someone translates the docum"), ("Help", "ヘルプ"), ("Failed", "失敗"), ("Succeeded", "成功"), @@ -302,6 +304,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Are you sure you want to restart", "本当に再起動しますか"), ("Restarting Remote Device", "リモート端末を再起動中"), ("remote_restarting_tip", "リモート端末は再起動中です。このメッセージボックスを閉じて、しばらくした後に固定のパスワードを使用して再接続してください。"), + ("Copied", ""), ("Exit Fullscreen", "全画面表示を終了"), ("Fullscreen", "全画面表示"), ("Mobile Actions", "モバイル アクション"), @@ -324,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""), diff --git a/src/lang/ko.rs b/src/lang/ko.rs index c788c7277..b46950b00 100644 --- a/src/lang/ko.rs +++ b/src/lang/ko.rs @@ -103,6 +103,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Original", "원본"), ("Shrink", "축소"), ("Stretch", "확대"), + ("Scrollbar", ""), + ("ScrollAuto", ""), ("Good image quality", "최적 이미지 품질"), ("Balanced", "균형"), ("Optimize reaction time", "반응 시간 최적화"), @@ -185,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Reboot required", "재부팅이 필요합니다"), ("Unsupported display server ", "지원하지 않는 디스플레이 서버"), ("x11 expected", "x11 예상됨"), - ("Port", "포트"), + ("Port", ""), ("Settings", "설정"), ("Username", "사용자명"), ("Invalid port", "유효하지 않은 포트"), @@ -266,7 +268,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("android_stop_service_tip", "서비스를 종료하면 모든 연결이 자동으로 닫힙니다."), ("android_version_audio_tip", "현재 Android 버전은 오디오 캡처를 지원하지 않습니다. Android 10 이상으로 업그레이드하십시오."), ("android_start_service_tip", "[서비스 시작] 또는 [화면 캡처] 권한을 눌러 화면 공유 서비스를 시작합니다."), - ("Account", "계정"), + ("Account", ""), ("Overwrite", "덮어쓰기"), ("This file exists, skip or overwrite this file?", "해당 파일이 이미 존재합니다, 넘어가거나 덮어쓰시겠습니까?"), ("Quit", "종료"), @@ -288,6 +290,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Ignore Battery Optimizations", "배터리 최적화 무시하기"), ("android_open_battery_optimizations_tip", "해당 기능을 비활성화하려면 RustDesk 응용 프로그램 설정 페이지로 이동하여 [배터리]에서 [제한 없음] 선택을 해제하십시오."), ("Connection not allowed", "연결이 허용되지 않음"), + ("Legacy mode", ""), + ("Map mode", ""), + ("Translate mode", ""), ("Use temporary password", "임시 비밀번호 사용"), ("Use permanent password", "영구 비밀번호 사용"), ("Use both passwords", "두 비밀번호 (임시/영구) 사용"), @@ -299,6 +304,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Are you sure you want to restart", "정말로 재시작 하시겠습니까"), ("Restarting Remote Device", "원격 기기를 다시 시작하는중"), ("remote_restarting_tip", "원격 장치를 다시 시작하는 중입니다. 이 메시지 상자를 닫고 잠시 후 영구 비밀번호로 다시 연결하십시오."), + ("Copied", ""), ("Exit Fullscreen", "전체 화면 종료"), ("Fullscreen", "전체화면"), ("Mobile Actions", "모바일 액션"), @@ -321,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""), diff --git a/src/lang/kz.rs b/src/lang/kz.rs index 06ac673ff..fb3ed1fbd 100644 --- a/src/lang/kz.rs +++ b/src/lang/kz.rs @@ -290,6 +290,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Ignore Battery Optimizations", "Бәтері Оңтайландыруларын Елемеу"), ("android_open_battery_optimizations_tip", "Егер де бұл ерекшелікті өшіруді қаласаңыз, келесі RustDesk апылқат орнатпалары бетіне барып, [Бәтері]'ні тауып кіріңіз де [Шектеусіз]'ден құсбелгіні алып тастауды өтінеміз"), ("Connection not allowed", "Қосылу рұқсат етілмеген"), + ("Legacy mode", ""), + ("Map mode", ""), + ("Translate mode", ""), ("Use temporary password", "Уақытша құпия сөзді қолдану"), ("Use permanent password", "Тұрақты құпия сөзді қолдану"), ("Use both passwords", "Қос құпия сөзді қолдану"), @@ -319,6 +322,31 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Insecure Connection", "Қатерлі Қосылым"), ("Scale original", "Scale original"), ("Scale adaptive", "Scale adaptive"), + ("General", ""), + ("Security", ""), + ("Account", "Есепкі"), + ("Theme", ""), + ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), + ("Enable hardware codec", ""), + ("Unlock Security Settings", ""), + ("Enable Audio", ""), + ("Temporary Password Length", ""), + ("Unlock Network Settings", ""), + ("Server", ""), + ("Direct IP Access", ""), + ("Proxy", ""), + ("Port", "Порт"), + ("Apply", ""), + ("Disconnect all devices?", ""), + ("Clear", ""), + ("Audio Input Device", ""), + ("Deny remote access", ""), + ("Use IP Whitelisting", ""), + ("Network", ""), + ("Enable RDP", ""), ("Pin menubar", "Мәзір жолағын бекіту"), ("Unpin menubar", "Мәзір жолағын босату"), ("Enable LAN Discovery", ""), diff --git a/src/lang/pl.rs b/src/lang/pl.rs index 513e7589d..22cd2a3eb 100644 --- a/src/lang/pl.rs +++ b/src/lang/pl.rs @@ -187,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Reboot required", "Wymagany restart"), ("Unsupported display server ", "Nieobsługiwany serwer wyświetlania "), ("x11 expected", "oczekiwane X11"), - ("Port", "Port"), + ("Port", ""), ("Settings", "Ustawienia"), ("Username", "Nazwa użytkownika"), ("Invalid port", "Nieprawidłowy port"), @@ -268,7 +268,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("android_stop_service_tip", "android_stop_service_tip"), ("android_version_audio_tip", "android_version_audio_tip"), ("android_start_service_tip", "android_start_service_tip"), - ("Account", "Konto"), + ("Account", ""), ("Overwrite", "Nadpisz"), ("This file exists, skip or overwrite this file?", "Ten plik istnieje, pominąć czy nadpisać ten plik?"), ("Quit", "Zrezygnuj"), @@ -289,19 +289,21 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Keep RustDesk background service", "Zachowaj usługę w tle RustDesk"), ("Ignore Battery Optimizations", "Ignoruj optymalizację baterii"), ("android_open_battery_optimizations_tip", "android_open_battery_optimizations_tip"), - ("Random Password After Session", "Losowe hasło po sesji"), - ("Keep", "Zachowaj"), - ("Update", "Aktualizacja"), - ("Disable", "Wyłącz"), - ("Onetime Password", "Hasło jednorazowe"), - ("Verification Method", "Metoda weryfikacji"), - ("Enable security password", "Włącz hasło zabezpieczające"), - ("Enable random password", "Włącz losowe hasło"), - ("Enable onetime password", "Włącz hasło jednorazowe"), - ("Disable onetime password", "Wyłącz hasło jednorazowe"), - ("Activate onetime password", "Aktywuj hasło jednorazowe"), - ("Set security password", "Ustaw hasło zabezpieczające"), ("Connection not allowed", "Połączenie niedozwolone"), + ("Legacy mode", ""), + ("Map mode", ""), + ("Translate mode", ""), + ("Use temporary password", ""), + ("Use permanent password", ""), + ("Use both passwords", ""), + ("Set permanent password", ""), + ("Set temporary password length", ""), + ("Enable Remote Restart", ""), + ("Allow remote restart", ""), + ("Restart Remote Device", ""), + ("Are you sure you want to restart", ""), + ("Restarting Remote Device", ""), + ("remote_restarting_tip", ""), ("Copied", ""), ("Exit Fullscreen", "Wyłączyć tryb pełnoekranowy"), ("Fullscreen", "Pełny ekran"), @@ -325,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""), diff --git a/src/lang/pt_PT.rs b/src/lang/pt_PT.rs index 928c7a2b6..4010c4820 100644 --- a/src/lang/pt_PT.rs +++ b/src/lang/pt_PT.rs @@ -103,6 +103,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Original", "Original"), ("Shrink", "Reduzir"), ("Stretch", "Aumentar"), + ("Scrollbar", ""), + ("ScrollAuto", ""), ("Good image quality", "Qualidade visual boa"), ("Balanced", "Equilibrada"), ("Optimize reaction time", "Optimizar tempo de reacção"), @@ -127,7 +129,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Set Password", "Definir palavra-chave"), ("OS Password", "Senha do SO"), ("install_tip", "Devido ao UAC, o RustDesk não funciona correctamente em alguns casos. Para evitar o UAC, por favor clique no botão abaixo para instalar o RustDesk no sistema."), - ("Click to update", "Clique para fazer a actualização"), + ("Click to upgrade", ""), ("Click to download", "Clique para carregar"), ("Click to update", "Clique para fazer a actualização"), ("Configure", "Configurar"), @@ -185,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Reboot required", "Reinicialização necessária"), ("Unsupported display server ", "Servidor de display não suportado"), ("x11 expected", "x11 em falha"), - ("Port", "Porta"), + ("Port", ""), ("Settings", "Configurações"), ("Username", "Nome de utilizador"), ("Invalid port", "Porta inválida"), @@ -266,7 +268,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("android_stop_service_tip", "Fechar o serviço irá automaticamente fechar todas as ligações estabelecidas."), ("android_version_audio_tip", "A versão atual do Android não suporta captura de áudio, por favor actualize para o Android 10 ou maior."), ("android_start_service_tip", "Toque [Iniciar Serviço] ou abra a permissão [Captura de Ecran] para iniciar o serviço de partilha de ecran."), - ("Account", "Conta"), + ("Account", ""), ("Overwrite", "Substituir"), ("This file exists, skip or overwrite this file?", "Este ficheiro já existe, ignorar ou substituir este ficheiro?"), ("Quit", "Saída"), @@ -288,6 +290,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Ignore Battery Optimizations", "Ignorar optimizações de Bateria"), ("android_open_battery_optimizations_tip", ""), ("Connection not allowed", "Ligação não autorizada"), + ("Legacy mode", ""), + ("Map mode", ""), + ("Translate mode", ""), ("Use temporary password", "Utilizar palavra-chave temporária"), ("Use permanent password", "Utilizar palavra-chave permanente"), ("Use both passwords", "Utilizar ambas as palavras-chave"), @@ -299,6 +304,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Are you sure you want to restart", "Tem a certeza que pretende reiniciar"), ("Restarting Remote Device", "A reiniciar sistema remoto"), ("remote_restarting_tip", ""), + ("Copied", ""), ("Exit Fullscreen", "Sair da tela cheia"), ("Fullscreen", "Tela cheia"), ("Mobile Actions", "Ações para celular"), @@ -321,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""), diff --git a/src/lang/ptbr.rs b/src/lang/ptbr.rs index 8d9f283d1..d452dbbb0 100644 --- a/src/lang/ptbr.rs +++ b/src/lang/ptbr.rs @@ -187,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Reboot required", "Reinicialização necessária"), ("Unsupported display server ", "Servidor de display não suportado"), ("x11 expected", "x11 esperado"), - ("Port", "Porta"), + ("Port", ""), ("Settings", "Configurações"), ("Username", "Nome de usuário"), ("Invalid port", "Porta inválida"), @@ -268,7 +268,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("android_stop_service_tip", "Fechar o serviço irá automaticamente fechar todas as conexões estabelecidas."), ("android_version_audio_tip", "A versão atual do Android não suporta captura de áudio, por favor atualize para o Android 10 ou maior."), ("android_start_service_tip", "Toque [Iniciar Serviço] ou abra a permissão [Captura de Tela] para iniciar o serviço de compartilhamento de tela."), - ("Account", "Conta"), + ("Account", ""), ("Overwrite", "Substituir"), ("This file exists, skip or overwrite this file?", "Este arquivo existe, pular ou substituir este arquivo?"), ("Quit", "Saída"), @@ -327,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""), diff --git a/src/lang/ru.rs b/src/lang/ru.rs index 050ae1139..5dd0118ce 100644 --- a/src/lang/ru.rs +++ b/src/lang/ru.rs @@ -187,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Reboot required", "Требуется перезагрузка"), ("Unsupported display server ", "Неподдерживаемый сервер дисплея"), ("x11 expected", "Ожидается X11"), - ("Port", "Порт"), + ("Port", ""), ("Settings", "Настройки"), ("Username", "Имя пользователя"), ("Invalid port", "Неверный порт"), @@ -268,7 +268,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("android_stop_service_tip", "Закрытие службы автоматически закроет все установленные соединения."), ("android_version_audio_tip", "Текущая версия Android не поддерживает захват звука, обновите ее до Android 10 или выше."), ("android_start_service_tip", "Нажмите [Запуск промежуточного сервера] или ОТКРЫТЬ разрешение [Захват экрана], чтобы запустить службу демонстрации экрана."), - ("Account", "Аккаунт"), + ("Account", ""), ("Overwrite", "Перезаписать"), ("This file exists, skip or overwrite this file?", "Этот файл существует, пропустить или перезаписать файл?"), ("Quit", "Выйти"), @@ -327,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""), diff --git a/src/lang/sk.rs b/src/lang/sk.rs index 08844c14c..07cffa239 100644 --- a/src/lang/sk.rs +++ b/src/lang/sk.rs @@ -187,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Reboot required", "Vyžaduje sa reštart"), ("Unsupported display server ", "Nepodporovaný zobrazovací (display) server"), ("x11 expected", "očakáva sa x11"), - ("Port", "Port"), + ("Port", ""), ("Settings", "Nastavenia"), ("Username", "Uživateľské meno"), ("Invalid port", "Neplatný port"), @@ -268,7 +268,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("android_stop_service_tip", "Zastavenie služby automaticky ukončí všetky naviazané spojenia."), ("android_version_audio_tip", "Vaša verzia Androidu neumožňuje zaznamenávanie zvuku. Prejdite na verziu Android 10 alebo vyššiu."), ("android_start_service_tip", "Klepnite na [Spustiť službu] alebo OTVORTE oprávnenie [Zachytávanie obsahu obrazovky], aby sa aktivovala služba zdieľania obrazovky."), - ("Account", "Účet"), + ("Account", ""), ("Overwrite", "Prepísať"), ("This file exists, skip or overwrite this file?", "Preskočiť alebo prepísať existujúci súbor?"), ("Quit", "Ukončiť"), @@ -327,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""), diff --git a/src/lang/template.rs b/src/lang/template.rs index 8ebe86e01..97e65f2e2 100644 --- a/src/lang/template.rs +++ b/src/lang/template.rs @@ -327,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""), diff --git a/src/lang/tr.rs b/src/lang/tr.rs index 3482a8e21..d6920782a 100644 --- a/src/lang/tr.rs +++ b/src/lang/tr.rs @@ -187,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Reboot required", "Yeniden başlatma gerekli"), ("Unsupported display server ", "Desteklenmeyen görüntü sunucusu"), ("x11 expected", "x11 bekleniyor"), - ("Port", "Port"), + ("Port", ""), ("Settings", "Ayarlar"), ("Username", "Kullanıcı Adı"), ("Invalid port", "Geçersiz port"), @@ -268,7 +268,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("android_stop_service_tip", "Hizmetin kapatılması, kurulan tüm bağlantıları otomatik olarak kapatacaktır."), ("android_version_audio_tip", "Mevcut Android sürümü ses yakalamayı desteklemiyor, lütfen Android 10 veya sonraki bir sürüme yükseltin."), ("android_start_service_tip", "Ekran paylaşım hizmetini başlatmak için [Hizmeti Başlat] veya AÇ [Ekran Yakalama] iznine dokunun."), - ("Account", "Hesap"), + ("Account", ""), ("Overwrite", "üzerine yaz"), ("This file exists, skip or overwrite this file?", "Bu dosya var, bu dosya atlansın veya üzerine yazılsın mı?"), ("Quit", "Çıkış"), @@ -289,23 +289,10 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Keep RustDesk background service", ""), ("Ignore Battery Optimizations", ""), ("android_open_battery_optimizations_tip", ""), - ("Random Password After Session", ""), - ("Keep", ""), - ("Update", ""), - ("Disable", ""), - ("Onetime Password", ""), - ("Verification Method", ""), - ("Enable security password", ""), - ("Enable random password", ""), - ("Enable onetime password", ""), - ("Disable onetime password", ""), - ("Activate onetime password", ""), - ("Set security password", ""), - ("Connection not allowed", ""), + ("Connection not allowed", "bağlantıya izin verilmedi"), ("Legacy mode", ""), ("Map mode", ""), ("Translate mode", ""), - ("Connection not allowed", "bağlantıya izin verilmedi"), ("Use temporary password", "Geçici şifre kullan"), ("Use permanent password", "Kalıcı şifre kullan"), ("Use both passwords", "İki şifreyide kullan"), @@ -340,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""), diff --git a/src/lang/tw.rs b/src/lang/tw.rs index 594291e4d..efd225ba7 100644 --- a/src/lang/tw.rs +++ b/src/lang/tw.rs @@ -187,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Reboot required", "需要重新啟動"), ("Unsupported display server ", "不支援顯示伺服器"), ("x11 expected", "預期 x11"), - ("Port", "連接埠"), + ("Port", "端口"), ("Settings", "設定"), ("Username", "使用者名稱"), ("Invalid port", "連接埠無效"), @@ -268,7 +268,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("android_stop_service_tip", "關閉服務將自動關閉所有已建立的連接。"), ("android_version_audio_tip", "目前的 Android 版本不支持音訊錄製,請升級至 Android 10 或以上版本。"), ("android_start_service_tip", "點擊 「啟動服務」 或啟用 「畫面錄製」 權限以開啟手機畫面共享服務。"), - ("Account", "帳戶"), + ("Account", "賬戶"), ("Overwrite", "覆寫"), ("This file exists, skip or overwrite this file?", "此檔案/資料夾已存在,要跳過或是覆寫此檔案嗎?"), ("Quit", "退出"), @@ -327,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", "賬戶"), ("Theme", "主題"), ("Dark Theme", "暗黑主題"), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", "使用硬件編解碼"), ("Unlock Security Settings", "解鎖安全設置"), ("Enable Audio", "允許傳輸音頻"), diff --git a/src/lang/vn.rs b/src/lang/vn.rs index eca713626..ef882f076 100644 --- a/src/lang/vn.rs +++ b/src/lang/vn.rs @@ -187,7 +187,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("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ọ"), ("x11 expected", "Cần x11"), - ("Port", "Cổng"), + ("Port", ""), ("Settings", "Cài đặt"), ("Username", "Tên người dùng"), ("Invalid port", "Cổng không hợp lệ"), @@ -268,7 +268,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("android_stop_service_tip", "Đóng dịch vụ sẽ tự động đóng tất cả các kết nối đã thiết lập."), ("android_version_audio_tip", "Phiên bản Android hiện tại không hỗ trợ ghi âm, vui lòng nâng cấp lên Android 10 trở lên."), ("android_start_service_tip", "Nhấn vào [Bắt đầu dịch vụ] hoặc MỞ quyền [Ghi màn hình] để bắt đầu dịch vụ chia sẻ màn hình."), - ("Account", "Tài khoản"), + ("Account", ""), ("Overwrite", "Ghi đè"), ("This file exists, skip or overwrite this file?", "Tệp tin này đã tồn tại, bạn có muốn bỏ qua hay ghi đè lên tệp tin này?"), ("Quit", "Thoát"), @@ -327,6 +327,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Account", ""), ("Theme", ""), ("Dark Theme", ""), + ("Dark", ""), + ("Light", ""), + ("Follow System", ""), ("Enable hardware codec", ""), ("Unlock Security Settings", ""), ("Enable Audio", ""),