Fix/custom client styles (#7373)

* Fix. qs styles

Signed-off-by: fufesou <shuanglongchen@yeah.net>

* custom client, options

Signed-off-by: fufesou <shuanglongchen@yeah.net>

* Move logo.svg to icon.svg

Signed-off-by: fufesou <shuanglongchen@yeah.net>

* Refact. Custom client, connection status ui.

Signed-off-by: fufesou <shuanglongchen@yeah.net>

* Custom client ui. Disable settings, hide "Change password"

Signed-off-by: fufesou <shuanglongchen@yeah.net>

* Custom client, logo align center

Signed-off-by: fufesou <shuanglongchen@yeah.net>

* Custom client, refact, outgoing ui

Signed-off-by: fufesou <shuanglongchen@yeah.net>

* Custom client, outgoing, settings icon

Signed-off-by: fufesou <shuanglongchen@yeah.net>

* Custom client, powered by RustDesk

Signed-off-by: fufesou <shuanglongchen@yeah.net>

* Custom client, remove unused SizeBox

Signed-off-by: fufesou <shuanglongchen@yeah.net>

* Update config.rs

* Update flutter_ffi.rs

---------

Signed-off-by: fufesou <shuanglongchen@yeah.net>
Co-authored-by: RustDesk <71636191+rustdesk@users.noreply.github.com>
This commit is contained in:
fufesou 2024-03-14 11:36:14 +08:00 committed by GitHub
parent a314f59db9
commit 5253d67e04
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
49 changed files with 350 additions and 124 deletions

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1522,7 +1522,10 @@ class LastWindowPosition {
}
String get windowFramePrefix =>
bind.isIncomingOnly() ? "${kWindowPrefix}qs_" : kWindowPrefix;
kWindowPrefix +
(bind.isIncomingOnly()
? "incoming_"
: (bind.isOutgoingOnly() ? "outgoing_" : ""));
/// Save window position and size on exit
/// Note that windowId must be provided if it's subwindow
@ -1793,11 +1796,11 @@ Future<bool> restoreWindowPosition(WindowType type,
}
if (lpos.isMaximized == true) {
await restorePos();
if (!bind.isIncomingOnly()) {
if (!(bind.isIncomingOnly() || bind.isOutgoingOnly())) {
await windowManager.maximize();
}
} else {
if (!bind.isIncomingOnly()) {
if (!bind.isIncomingOnly() || bind.isOutgoingOnly()) {
await windowManager.setSize(size);
}
await restorePos();
@ -3079,25 +3082,46 @@ Color? disabledTextColor(BuildContext context, bool enabled) {
: Theme.of(context).textTheme.titleLarge?.color?.withOpacity(0.6);
}
Widget loadLogo(double size) {
return Image.asset('assets/logo.png',
// max 200 x 40
Widget? loadLogo() {
bool isFound = true;
final image = Image.asset(
'assets/logo.png',
fit: BoxFit.contain,
errorBuilder: (ctx, error, stackTrace) {
isFound = false;
return Container();
},
);
if (isFound) {
return Container(
constraints: BoxConstraints(maxWidth: 200, maxHeight: 40),
child: image,
).marginOnly(bottom: 10);
} else {
return null;
}
}
Widget loadIcon(double size) {
return Image.asset('assets/icon.png',
width: size,
height: size,
errorBuilder: (ctx, error, stackTrace) => SvgPicture.asset(
'assets/logo.svg',
'assets/icon.svg',
width: size,
height: size,
));
}
var desktopQsHomeLeftPaneSize = Size(280, 300);
Size getDesktopQsHomeSize() {
final magicWidth = 11.0;
var imcomingOnlyHomeSize = Size(280, 300);
Size getIncomingOnlyHomeSize() {
final magicWidth = Platform.isWindows ? 11.0 : 0.0;
final magicHeight = 8.0;
return desktopQsHomeLeftPaneSize +
return imcomingOnlyHomeSize +
Offset(magicWidth, kDesktopRemoteTabBarHeight + magicHeight);
}
Size getDesktopQsSettingsSize() {
Size getIncomingOnlySettingsSize() {
return Size(768, 600);
}

View File

@ -21,7 +21,10 @@ import '../../models/platform_model.dart';
import '../widgets/button.dart';
class OnlineStatusWidget extends StatefulWidget {
const OnlineStatusWidget({Key? key}) : super(key: key);
const OnlineStatusWidget({Key? key, this.onSvcStatusChanged})
: super(key: key);
final VoidCallback? onSvcStatusChanged;
@override
State<OnlineStatusWidget> createState() => _OnlineStatusWidgetState();
@ -34,7 +37,7 @@ class _OnlineStatusWidgetState extends State<OnlineStatusWidget> {
Timer? _updateTimer;
double get em => 14.0;
double get height => em * 3;
double? get height => bind.isIncomingOnly() ? null : em * 3;
void onUsePublicServerGuide() {
const url = "https://rustdesk.com/pricing.html";
@ -79,15 +82,10 @@ class _OnlineStatusWidgetState extends State<OnlineStatusWidget> {
: Color.fromARGB(255, 224, 79, 95)),
),
).marginSymmetric(horizontal: em),
Text(
_svcStopped.value
? translate("Service is not running")
: stateGlobal.svcStatus.value == SvcStatus.connecting
? translate("connecting_status")
: stateGlobal.svcStatus.value == SvcStatus.notReady
? translate("not_ready_status")
: translate('Ready'),
style: TextStyle(fontSize: em)),
Container(
width: bind.isIncomingOnly() ? 240 : null,
child: _buildConnStatusMsg(),
),
// stop
Offstage(
offstage: !_svcStopped.value,
@ -102,7 +100,8 @@ class _OnlineStatusWidgetState extends State<OnlineStatusWidget> {
.marginOnly(left: em),
),
// ready && public
Flexible(
// No need to show the guide if is custom client.
if (!bind.isIncomingOnly()) Flexible(
child: Offstage(
offstage: !(!_svcStopped.value &&
stateGlobal.svcStatus.value == SvcStatus.ready &&
@ -137,6 +136,20 @@ class _OnlineStatusWidgetState extends State<OnlineStatusWidget> {
).paddingOnly(right: bind.isIncomingOnly() ? 8 : 0);
}
_buildConnStatusMsg() {
widget.onSvcStatusChanged?.call();
return Text(
_svcStopped.value
? translate("Service is not running")
: stateGlobal.svcStatus.value == SvcStatus.connecting
? translate("connecting_status")
: stateGlobal.svcStatus.value == SvcStatus.notReady
? translate("not_ready_status")
: translate('Ready'),
style: TextStyle(fontSize: em),
);
}
updateStatus() async {
final status =
jsonDecode(await bind.mainGetConnectStatus()) as Map<String, dynamic>;
@ -260,8 +273,8 @@ class _ConnectionPageState extends State<ConnectionPage>
Expanded(child: PeerTabPage()),
],
).paddingOnly(left: 12.0)),
const Divider(height: 1),
OnlineStatusWidget()
if (!bind.isOutgoingOnly()) const Divider(height: 1),
if (!bind.isOutgoingOnly()) OnlineStatusWidget()
],
);
}

View File

@ -13,6 +13,7 @@ import 'package:flutter_hbb/desktop/pages/connection_page.dart';
import 'package:flutter_hbb/desktop/pages/desktop_setting_page.dart';
import 'package:flutter_hbb/desktop/pages/desktop_tab_page.dart';
import 'package:flutter_hbb/desktop/widgets/scroll_wrapper.dart';
import 'package:flutter_hbb/desktop/widgets/tabbar_widget.dart';
import 'package:flutter_hbb/models/platform_model.dart';
import 'package:flutter_hbb/models/server_model.dart';
import 'package:flutter_hbb/plugin/ui_manager.dart';
@ -51,38 +52,43 @@ class _DesktopHomePageState extends State<DesktopHomePage>
Timer? _updateTimer;
bool isCardClosed = false;
RxBool _editHover = false.obs;
final GlobalKey _childKey = GlobalKey();
bool _isInHomePage() {
final controller = Get.find<DesktopTabController>();
return controller.state.value.selected == 0;
}
@override
Widget build(BuildContext context) {
super.build(context);
final children = [buildLeftPane(context)];
if (!bind.isIncomingOnly()) {
children.addAll([
const VerticalDivider(width: 1),
Expanded(child: buildRightPane(context)),
]);
}
return Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: children,
children: [
buildLeftPane(context),
if (!bind.isIncomingOnly()) const VerticalDivider(width: 1),
if (!bind.isIncomingOnly()) Expanded(child: buildRightPane(context)),
],
);
}
Widget buildLeftPane(BuildContext context) {
final children = <Widget>[
buildTip(context),
buildIDBoard(context),
buildPasswordBoard(context),
if (!bind.isOutgoingOnly()) buildIDBoard(context),
if (!bind.isOutgoingOnly()) buildPasswordBoard(context),
FutureBuilder<Widget>(
future: buildHelpCards(),
builder: (_, data) {
if (data.hasData) {
if (bind.isIncomingOnly()) {
Future.delayed(Duration(milliseconds: 300), () {
_updateWindowSize();
});
if (_isInHomePage()) {
Future.delayed(Duration(milliseconds: 300), () {
_updateWindowSize();
});
}
}
return data.data!;
} else {
@ -97,10 +103,19 @@ class _DesktopHomePageState extends State<DesktopHomePage>
Divider(),
Container(
margin: EdgeInsets.fromLTRB(0, 0, 8, 6),
child: OnlineStatusWidget(),
child: OnlineStatusWidget(
onSvcStatusChanged: () {
if (_isInHomePage()) {
Future.delayed(Duration(milliseconds: 300), () {
_updateWindowSize();
});
}
},
),
),
]);
}
final textColor = Theme.of(context).textTheme.titleLarge?.color;
return ChangeNotifierProvider.value(
value: gFFI.serverModel,
child: Container(
@ -108,13 +123,45 @@ class _DesktopHomePageState extends State<DesktopHomePage>
color: Theme.of(context).colorScheme.background,
child: DesktopScrollWrapper(
scrollController: _leftPaneScrollController,
child: SingleChildScrollView(
controller: _leftPaneScrollController,
physics: DraggableNeverScrollableScrollPhysics(),
child: Column(
key: _childKey,
children: children,
),
child: Stack(
children: [
SingleChildScrollView(
controller: _leftPaneScrollController,
physics: DraggableNeverScrollableScrollPhysics(),
child: Column(
key: _childKey,
children: children,
),
),
if (bind.isOutgoingOnly() && !bind.isDisableSettings())
Positioned(
child: Divider(),
bottom: 26,
left: 0,
right: 0,
),
if (bind.isOutgoingOnly() && !bind.isDisableSettings())
Positioned(
bottom: 6,
left: 12,
child: Align(
alignment: Alignment.centerLeft,
child: InkWell(
child: Obx(
() => Icon(
Icons.settings,
color: _editHover.value
? textColor
: Colors.grey.withOpacity(0.5),
size: 22,
),
),
onTap: () => DesktopSettingPage.switch2page(1),
onHover: (value) => _editHover.value = value,
),
),
)
],
),
),
),
@ -197,6 +244,10 @@ class _DesktopHomePageState extends State<DesktopHomePage>
}
Widget buildPopupMenu(BuildContext context) {
if (bind.isDisableSettings()) {
return Offstage();
}
final textColor = Theme.of(context).textTheme.titleLarge?.color;
RxBool hover = false.obs;
return InkWell(
@ -287,21 +338,22 @@ class _DesktopHomePageState extends State<DesktopHomePage>
)))),
onHover: (value) => refreshHover.value = value,
).marginOnly(right: 8, top: 4),
InkWell(
child: Obx(
() => Tooltip(
message: translate('Change Password'),
child: Icon(
Icons.edit,
color: editHover.value
? textColor
: Color(0xFFDDDDDD),
size: 22,
)).marginOnly(right: 8, top: 4),
if (!bind.isDisableSettings())
InkWell(
child: Obx(
() => Tooltip(
message: translate('Change Password'),
child: Icon(
Icons.edit,
color: editHover.value
? textColor
: Color(0xFFDDDDDD),
size: 22,
)).marginOnly(right: 8, top: 4),
),
onTap: () => DesktopSettingPage.switch2page(1),
onHover: (value) => editHover.value = value,
),
onTap: () => DesktopSettingPage.switch2page(1),
onHover: (value) => editHover.value = value,
),
],
),
],
@ -314,6 +366,7 @@ class _DesktopHomePageState extends State<DesktopHomePage>
}
buildTip(BuildContext context) {
final logo = loadLogo();
return Padding(
padding:
const EdgeInsets.only(left: 20.0, right: 16, top: 16.0, bottom: 5),
@ -321,29 +374,68 @@ class _DesktopHomePageState extends State<DesktopHomePage>
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
translate("Your Desktop"),
style: Theme.of(context).textTheme.titleLarge,
// style: TextStyle(
// // color: MyTheme.color(context).text,
// fontWeight: FontWeight.normal,
// fontSize: 19),
Align(
alignment: Alignment.center,
child: logo == null ? Offstage() : logo.marginOnly(bottom: 0.0),
),
Column(
children: [
Align(
alignment: Alignment.centerLeft,
child: Text(
translate("Your Desktop"),
style: Theme.of(context).textTheme.titleLarge,
// style: TextStyle(
// // color: MyTheme.color(context).text,
// fontWeight: FontWeight.normal,
// fontSize: 19),
),
),
if (bind.isCustomClient())
Align(
alignment: Alignment.centerRight,
child: MouseRegion(
cursor: SystemMouseCursors.click,
child: GestureDetector(
onTap: () {
launchUrl(Uri.parse('https://rustdesk.com'));
},
child: Text(
translate("powered by RustDesk"),
overflow: TextOverflow.clip,
style: Theme.of(context)
.textTheme
.bodySmall
?.copyWith(color: Colors.grey.withOpacity(0.7)),
),
),
),
),
],
),
SizedBox(
height: 10.0,
),
Text(
translate("desk_tip"),
overflow: TextOverflow.clip,
style: Theme.of(context).textTheme.bodySmall,
)
if (!bind.isOutgoingOnly())
Text(
translate("desk_tip"),
overflow: TextOverflow.clip,
style: Theme.of(context).textTheme.bodySmall,
),
if (bind.isOutgoingOnly())
Text(
translate("outgoing_only_desk_tip"),
overflow: TextOverflow.clip,
style: Theme.of(context).textTheme.bodySmall,
),
],
),
);
}
Future<Widget> buildHelpCards() async {
if (updateUrl.isNotEmpty &&
if (!bind.isCustomClient() &&
updateUrl.isNotEmpty &&
!isCardClosed &&
bind.mainUriPrefixSync().contains('rustdesk')) {
return buildInstallCard(
@ -357,7 +449,7 @@ class _DesktopHomePageState extends State<DesktopHomePage>
if (systemError.isNotEmpty) {
return buildInstallCard("", systemError, "", () {});
}
if (Platform.isWindows) {
if (Platform.isWindows && !bind.isDisableInstallation()) {
if (!bind.mainIsInstalled()) {
return buildInstallCard("", "install_tip", "Install", () async {
await rustDeskWinManager.closeAllSubWindows();
@ -372,7 +464,8 @@ class _DesktopHomePageState extends State<DesktopHomePage>
});
}
} else if (Platform.isMacOS) {
if (!bind.mainIsCanScreenRecording(prompt: false)) {
if (!(bind.isOutgoingOnly() ||
bind.mainIsCanScreenRecording(prompt: false))) {
return buildInstallCard("Permissions", "config_screen", "Configure",
() async {
bind.mainIsCanScreenRecording(prompt: true);
@ -407,6 +500,9 @@ class _DesktopHomePageState extends State<DesktopHomePage>
// });
// }
} else if (Platform.isLinux) {
if (bind.isOutgoingOnly()) {
return Container();
}
final LinuxCards = <Widget>[];
if (bind.isSelinuxEnforcing()) {
// Check is SELinux enforcing, but show user a tip of is SELinux enabled for simple.
@ -473,8 +569,8 @@ class _DesktopHomePageState extends State<DesktopHomePage>
return Stack(
children: [
Container(
margin:
EdgeInsets.fromLTRB(0, marginTop, 0, bind.isIncomingOnly() ? marginTop : 0),
margin: EdgeInsets.fromLTRB(
0, marginTop, 0, bind.isIncomingOnly() ? marginTop : 0),
child: Container(
decoration: BoxDecoration(
gradient: LinearGradient(
@ -701,10 +797,17 @@ class _DesktopHomePageState extends State<DesktopHomePage>
}
_updateWindowSize() {
RenderBox renderBox =
_childKey.currentContext?.findRenderObject() as RenderBox;
desktopQsHomeLeftPaneSize = renderBox.size;
windowManager.setSize(getDesktopQsHomeSize());
RenderObject? renderObject = _childKey.currentContext?.findRenderObject();
if (renderObject == null) {
return;
}
if (renderObject is RenderBox) {
final size = renderObject.size;
if (size != imcomingOnlyHomeSize) {
imcomingOnlyHomeSize = size;
windowManager.setSize(getIncomingOnlyHomeSize());
}
}
}
@override

View File

@ -106,39 +106,32 @@ class _DesktopSettingPageState extends State<DesktopSettingPage>
List<_TabInfo> _settingTabs() {
final List<_TabInfo> settingTabs = <_TabInfo>[
_TabInfo('General', Icons.settings_outlined, Icons.settings),
_TabInfo('Security', Icons.enhanced_encryption_outlined,
Icons.enhanced_encryption),
if (!bind.isOutgoingOnly())
_TabInfo('Security', Icons.enhanced_encryption_outlined,
Icons.enhanced_encryption),
_TabInfo('Network', Icons.link_outlined, Icons.link),
_TabInfo('Account', Icons.person_outline, Icons.person),
if (!bind.isIncomingOnly())
_TabInfo(
'Display', Icons.desktop_windows_outlined, Icons.desktop_windows),
if (!bind.isIncomingOnly() && bind.pluginFeatureIsEnabled())
_TabInfo('Plugin', Icons.extension_outlined, Icons.extension),
if (!bind.isDisableAccount())
_TabInfo('Account', Icons.person_outline, Icons.person),
_TabInfo('About', Icons.info_outline, Icons.info)
];
if (!bind.isIncomingOnly()) {
settingTabs.insert(
3,
_TabInfo('Display', Icons.desktop_windows_outlined,
Icons.desktop_windows));
if (bind.pluginFeatureIsEnabled()) {
settingTabs.insert(
4, _TabInfo('Plugin', Icons.extension_outlined, Icons.extension));
}
}
return settingTabs;
}
List<Widget> _children() {
final children = [
_General(),
_Safety(),
if (!bind.isOutgoingOnly()) _Safety(),
_Network(),
_Account(),
if (!bind.isIncomingOnly()) _Display(),
if (!bind.isIncomingOnly() && bind.pluginFeatureIsEnabled()) _Plugin(),
if (!bind.isDisableAccount()) _Account(),
_About(),
];
if (!bind.isIncomingOnly()) {
children.insert(3, _Display());
if (bind.pluginFeatureIsEnabled()) {
children.insert(4, _Plugin());
}
}
return children;
}
@ -309,6 +302,10 @@ class _GeneralState extends State<_General> {
}
Widget service() {
if (bind.isOutgoingOnly()) {
return const Offstage();
}
return _Card(title: 'Service', children: [
Obx(() => _Button(serviceStop.value ? 'Start' : 'Stop', () {
() async {
@ -324,18 +321,14 @@ class _GeneralState extends State<_General> {
}
Widget other() {
final children = <Widget>[];
if (!bind.isIncomingOnly()) {
children.add(_OptionCheckBox(context,
'Confirm before closing multiple tabs', 'enable-confirm-closing-tabs',
isServer: false));
}
children.addAll([
final children = <Widget>[
if (!bind.isIncomingOnly())
_OptionCheckBox(context, 'Confirm before closing multiple tabs',
'enable-confirm-closing-tabs',
isServer: false),
_OptionCheckBox(context, 'Adaptive bitrate', 'enable-abr'),
wallpaper()
]);
if (!bind.isIncomingOnly()) {
children.addAll([
wallpaper(),
if (!bind.isIncomingOnly()) ...[
_OptionCheckBox(
context,
'Open connection in new tab',
@ -354,8 +347,8 @@ class _GeneralState extends State<_General> {
'enable-check-update',
isServer: false,
)
]);
}
],
];
if (bind.mainShowOption(key: 'allow-linux-headless')) {
children.add(_OptionCheckBox(
context, 'Allow linux headless', 'allow-linux-headless'));
@ -364,6 +357,10 @@ class _GeneralState extends State<_General> {
}
Widget wallpaper() {
if (bind.isOutgoingOnly()) {
return const Offstage();
}
return futureBuilder(future: () async {
final support = await bind.mainSupportRemoveWallpaper();
return support;
@ -411,6 +408,10 @@ class _GeneralState extends State<_General> {
}
Widget audio(BuildContext context) {
if (bind.isOutgoingOnly()) {
return const Offstage();
}
String getDefault() {
if (Platform.isWindows) return translate('System Sound');
return '';

View File

@ -57,10 +57,10 @@ class _DesktopTabPageState extends State<DesktopTabPage> {
if (bind.isIncomingOnly()) {
tabController.onSelected = (key) {
if (key == kTabLabelHomePage) {
windowManager.setSize(getDesktopQsHomeSize());
windowManager.setSize(getIncomingOnlyHomeSize());
windowManager.setResizable(false);
} else {
windowManager.setSize(getDesktopQsSettingsSize());
windowManager.setSize(getIncomingOnlySettingsSize());
windowManager.setResizable(true);
}
};
@ -81,7 +81,7 @@ class _DesktopTabPageState extends State<DesktopTabPage> {
body: DesktopTab(
controller: tabController,
tail: Offstage(
offstage: bind.isIncomingOnly(),
offstage: bind.isIncomingOnly() || bind.isDisableSettings(),
child: ActionIcon(
message: 'Settings',
icon: IconFont.menu,

View File

@ -327,7 +327,7 @@ class _AppIcon extends StatelessWidget {
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.symmetric(horizontal: 4.0),
child: loadLogo(30),
child: loadIcon(30),
);
}
}

View File

@ -165,7 +165,8 @@ class DesktopTabController {
}));
}
});
if ((isDesktop && bind.isIncomingOnly()) || callOnSelected) {
if ((isDesktop && (bind.isIncomingOnly() || bind.isOutgoingOnly())) ||
callOnSelected) {
if (state.value.tabs.length > index) {
final key = state.value.tabs[index].key;
onSelected?.call(key);
@ -399,7 +400,7 @@ class DesktopTab extends StatelessWidget {
child: Row(children: [
Offstage(
offstage: !showLogo,
child: loadLogo(16),
child: loadIcon(16),
),
Offstage(
offstage: !showTitle,

View File

@ -25,8 +25,6 @@ class PeerTabModel with ChangeNotifier {
'Recent sessions',
'Favorites',
'Discovered',
'Address book',
'Group',
];
final List<IconData> icons = [
Icons.access_time_filled,
@ -51,6 +49,13 @@ class PeerTabModel with ChangeNotifier {
String get lastId => _lastId;
PeerTabModel(this.parent) {
if (!(bind.isDisableAb() || bind.isDisableAccount())) {
tabNames.add('Address book');
}
if (!bind.isDisableAccount()) {
tabNames.add('Group');
}
// visible
try {
final option = bind.getLocalFlutterOption(k: 'peer-tab-visible');

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "الحالة"),
("Your Desktop", "سطح مكتبك"),
("desk_tip", "يمكن الوصول لسطح مكتبك بهذا المعرف والرقم السري."),
("outgoing_only_desk_tip", ""),
("Password", "كلمة المرور"),
("Ready", "جاهز"),
("Established", "تم الانشاء"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", ""),
("Your Desktop", ""),
("desk_tip", "Вашият работен плот може да бъде достъпен с този идентификационен код и парола."),
("outgoing_only_desk_tip", ""),
("Password", ""),
("Ready", ""),
("Established", ""),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Estat"),
("Your Desktop", "EL teu escriptori"),
("desk_tip", "Pots accedir al teu escriptori amb aquest ID i contrasenya."),
("outgoing_only_desk_tip", ""),
("Password", "Contrasenya"),
("Ready", "Llest"),
("Established", "Establert"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "状态"),
("Your Desktop", "你的桌面"),
("desk_tip", "你的桌面可以通过下面的 ID 和密码访问。"),
("outgoing_only_desk_tip", "当前版本的软件是定制版本。\n您可以连接其他设备,但是其他设备无法连接您的设备。"),
("Password", "密码"),
("Ready", "就绪"),
("Established", "已建立"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", "双重认证代码必须是 6 位数字。"),
("Multiple Windows sessions found", "发现多个 Windows 会话"),
("Please select the session you want to connect to", "请选择您要连接的会话"),
("powered by RustDesk", "由 RustDesk 提供支持"),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Stav"),
("Your Desktop", "Vaše plocha"),
("desk_tip", "Pomocí tohoto ID a hesla lze přistupovat k pracovní ploše."),
("outgoing_only_desk_tip", ""),
("Password", "Heslo"),
("Ready", "Připraveno"),
("Established", "Navázáno"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", "Kód 2FA musí mít 6 číslic."),
("Multiple Windows sessions found", "Bylo nalezeno více relací Windows"),
("Please select the session you want to connect to", "Vyberte relaci, ke které se chcete připojit"),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Status"),
("Your Desktop", "Dit skrivebord"),
("desk_tip", "Du kan få adgang til dit skrivebord med dette ID og adgangskode."),
("outgoing_only_desk_tip", ""),
("Password", "Adgangskode"),
("Ready", "Klar"),
("Established", "Etableret"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Status"),
("Your Desktop", "Ihr Desktop"),
("desk_tip", "Mit dieser ID und diesem Passwort kann auf Ihren Desktop zugegriffen werden."),
("outgoing_only_desk_tip", ""),
("Password", "Passwort"),
("Ready", "Bereit"),
("Established", "Verbunden"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", "Der 2FA-Code muss 6 Ziffern haben."),
("Multiple Windows sessions found", "Mehrere Windows-Sitzungen gefunden"),
("Please select the session you want to connect to", "Bitte wählen Sie die Sitzung, mit der Sie sich verbinden möchten"),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Κατάσταση"),
("Your Desktop", "Ο σταθμός εργασίας σας"),
("desk_tip", "Η πρόσβαση στον σταθμό εργασίας σας είναι δυνατή με αυτό το αναγνωριστικό και τον κωδικό πρόσβασης."),
("outgoing_only_desk_tip", ""),
("Password", "Κωδικός πρόσβασης"),
("Ready", "Έτοιμο"),
("Established", "Συνδέθηκε"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -2,6 +2,7 @@ lazy_static::lazy_static! {
pub static ref T: std::collections::HashMap<&'static str, &'static str> =
[
("desk_tip", "Your desktop can be accessed with this ID and password."),
("outgoing_only_desk_tip", "This is a customized edition.\nYou can connect other devices, but other devices cannot connect to your device."),
("connecting_status", "Connecting to the RustDesk network..."),
("not_ready_status", "Not ready. Please check your connection"),
("ID/Relay Server", "ID/Relay server"),

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Stato"),
("Your Desktop", "Via aparato"),
("desk_tip", "Via aparato povas esti alirita kun tiu identigilo kaj pasvorto"),
("outgoing_only_desk_tip", ""),
("Password", "Pasvorto"),
("Ready", "Preta"),
("Established", ""),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Estado"),
("Your Desktop", "Tu escritorio"),
("desk_tip", "Puedes acceder a tu escritorio con esta ID y contraseña."),
("outgoing_only_desk_tip", ""),
("Password", "Contraseña"),
("Ready", "Listo"),
("Established", "Establecido"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", "El cóidigo 2FA debe tener 6 dígitos"),
("Multiple Windows sessions found", "Encontradas sesiones de múltiples ventanas"),
("Please select the session you want to connect to", "Por favor, seleccione la sesión a la que se desea conectar"),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", ""),
("Your Desktop", ""),
("desk_tip", "Sinu töölauale saab selle ID ja parooliga ligi pääseda."),
("outgoing_only_desk_tip", ""),
("Password", ""),
("Ready", ""),
("Established", ""),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "وضعیت"),
("Your Desktop", "دسکتاپ شما"),
("desk_tip", "دسکتاپ شما با این شناسه و رمز عبور قابل دسترسی است"),
("outgoing_only_desk_tip", ""),
("Password", "رمز عبور"),
("Ready", "آماده به کار"),
("Established", "اتصال برقرار شد"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", "کد احراز هویت دو مرحله ای باید 6 رقم باشد"),
("Multiple Windows sessions found", "چندین جلسه پیدا شد"),
("Please select the session you want to connect to", "لطفاً جلسه ای را که می خواهید به آن متصل شوید انتخاب کنید"),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Statut"),
("Your Desktop", "Votre bureau"),
("desk_tip", "Votre bureau est accessible via l'identifiant et le mot de passe ci-dessous."),
("outgoing_only_desk_tip", ""),
("Password", "Mot de passe"),
("Ready", "Prêt"),
("Established", "Établi"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Státusz"),
("Your Desktop", "Saját asztal"),
("desk_tip", "A számítógép ezzel a jelszóval és azonosítóval érhető el távolról."),
("outgoing_only_desk_tip", ""),
("Password", "Jelszó"),
("Ready", "Kész"),
("Established", "Létrejött"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Status"),
("Your Desktop", "Desktop Anda"),
("desk_tip", "Desktop Anda dapat diakses dengan ID dan kata sandi ini."),
("outgoing_only_desk_tip", ""),
("Password", "Kata sandi"),
("Ready", "Sudah siap"),
("Established", "Didirikan"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Stato"),
("Your Desktop", "Questo desktop"),
("desk_tip", "Puoi accedere a questo desktop usando l'ID e la password indicati qui sotto."),
("outgoing_only_desk_tip", ""),
("Password", "Password"),
("Ready", "Pronto"),
("Established", "Stabilita"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", "Il codice 2FA deve essere composto da 6 cifre."),
("Multiple Windows sessions found", "Rilevate sessioni Windows multiple"),
("Please select the session you want to connect to", "Seleziona la sessione a cui connetterti"),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "状態"),
("Your Desktop", "デスクトップ"),
("desk_tip", "このIDとパスワードであなたのデスクトップにアクセスできます。"),
("outgoing_only_desk_tip", ""),
("Password", "パスワード"),
("Ready", "準備完了"),
("Established", "接続完了"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "상태"),
("Your Desktop", "내 데스크탑"),
("desk_tip", "아래의 ID와 비밀번호로 연결할수 있습니다"),
("outgoing_only_desk_tip", ""),
("Password", "비밀번호"),
("Ready", "준비"),
("Established", "연결됨"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Күй"),
("Your Desktop", "Сіздің Жұмыс үстеліңіз"),
("desk_tip", "Сіздің Жұмыс үстеліңіз осы ID мен құпия сөз арқылы қолжетімді"),
("outgoing_only_desk_tip", ""),
("Password", "Құпия сөз"),
("Ready", "Дайын"),
("Established", "Қосылды"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Būsena"),
("Your Desktop", "Jūsų darbalaukis"),
("desk_tip", "Jūsų darbalaukis pasiekiamas naudojant šį ID ir slaptažodį"),
("outgoing_only_desk_tip", ""),
("Password", "Slaptažodis"),
("Ready", "Pasiruošęs"),
("Established", "Įsteigta"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Statuss"),
("Your Desktop", "Jūsu darbvirsma"),
("desk_tip", "Jūsu darbvirsmai var piekļūt ar šo ID un paroli."),
("outgoing_only_desk_tip", ""),
("Password", "Parole"),
("Ready", "Gatavs"),
("Established", "Izveidots"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", "2FA kodam ir jābūt ar 6 cipariem."),
("Multiple Windows sessions found", "Atrastas vairākas Windows sesijas"),
("Please select the session you want to connect to", "Lūdzu, atlasiet sesiju, ar kuru vēlaties izveidot savienojumu"),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Status"),
("Your Desktop", "Ditt skrivebord"),
("desk_tip", "Du kan få adgang til ditt skrivebord med denne ID og passord."),
("outgoing_only_desk_tip", ""),
("Password", "Passord"),
("Ready", "Klar"),
("Established", "Etablert"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Status"),
("Your Desktop", "Uw Bureaublad"),
("desk_tip", "Uw bureaublad is toegankelijk via de ID en het wachtwoord hieronder."),
("outgoing_only_desk_tip", ""),
("Password", "Wachtwoord"),
("Ready", "Klaar"),
("Established", "Opgezet"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", "2FA-code moet 6 cijfers lang zijn."),
("Multiple Windows sessions found", "Meerdere Windows-sessies gevonden"),
("Please select the session you want to connect to", "Selecteer de sessie waarmee je verbinding wilt maken"),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Status"),
("Your Desktop", "Twój pulpit"),
("desk_tip", "Aby połączyć się z tym urządzeniem, użyj poniższego ID i hasła"),
("outgoing_only_desk_tip", ""),
("Password", "Hasło"),
("Ready", "Gotowe"),
("Established", "Nawiązano"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", "Kod 2FA musi zawierać 6 cyfr."),
("Multiple Windows sessions found", "Znaleziono wiele sesji Windows"),
("Please select the session you want to connect to", "Wybierz sesję, do której chcesz się podłączyć"),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Estado"),
("Your Desktop", "Ambiente de Trabalho"),
("desk_tip", "O seu Ambiente de Trabalho pode ser acedido com este ID e palavra-passe."),
("outgoing_only_desk_tip", ""),
("Password", "Senha"),
("Ready", "Pronto"),
("Established", "Estabelecido"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Status"),
("Your Desktop", "Seu Computador"),
("desk_tip", "Seu computador pode ser acessado com este ID e senha."),
("outgoing_only_desk_tip", ""),
("Password", "Senha"),
("Ready", "Pronto"),
("Established", "Estabelecido"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Stare"),
("Your Desktop", "Desktopul tău"),
("desk_tip", "Desktopul tău poate fi accesat folosind ID-ul și parola de mai jos."),
("outgoing_only_desk_tip", ""),
("Password", "Parolă"),
("Ready", "Pregătit"),
("Established", "Stabilit"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Статус"),
("Your Desktop", "Ваш рабочий стол"),
("desk_tip", "Ваш рабочий стол доступен с этим ID и паролем"),
("outgoing_only_desk_tip", ""),
("Password", "Пароль"),
("Ready", "Готов"),
("Established", "Установлено"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", "Код двухфакторной аутентификации должен состоять из 6 цифр."),
("Multiple Windows sessions found", "Обнаружено несколько сеансов Windows"),
("Please select the session you want to connect to", "Выберите сеанс, к которому хотите подключиться"),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Stav"),
("Your Desktop", "Vaša plocha"),
("desk_tip", "K svojej ploche sa môžete pripojiť pomocou zobrazeného ID a hesla."),
("outgoing_only_desk_tip", ""),
("Password", "Heslo"),
("Ready", "Pripravené"),
("Established", "Nadviazané"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", "Kód 2FA musí obsahovať 6 číslic."),
("Multiple Windows sessions found", "Našlo sa viacero relácií systému Windows"),
("Please select the session you want to connect to", "Vyberte reláciu, ku ktorej sa chcete pripojiť"),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Stanje"),
("Your Desktop", "Vaše namizje"),
("desk_tip", "Do vašega namizja lahko dostopate s spodnjim IDjem in geslom"),
("outgoing_only_desk_tip", ""),
("Password", "Geslo"),
("Ready", "Pripravljen"),
("Established", "Povezava vzpostavljena"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Statusi"),
("Your Desktop", "Desktopi juaj"),
("desk_tip", "Desktopi juaj mund të aksesohet me këtë ID dhe fjalëkalim."),
("outgoing_only_desk_tip", ""),
("Password", "fjalëkalimi"),
("Ready", "Gati"),
("Established", "I themeluar"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Status"),
("Your Desktop", "Vaša radna površina"),
("desk_tip", "Vašoj radnoj površini se može pristupiti ovim ID i lozinkom."),
("outgoing_only_desk_tip", ""),
("Password", "Lozinka"),
("Ready", "Spremno"),
("Established", "Uspostavljeno"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Status"),
("Your Desktop", "Ditt skrivbord"),
("desk_tip", "Ditt skrivbord kan delas med hjälp av detta ID och lösenord"),
("outgoing_only_desk_tip", ""),
("Password", "Lösenord"),
("Ready", "Redo"),
("Established", "Uppkopplad"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", ""),
("Your Desktop", ""),
("desk_tip", ""),
("outgoing_only_desk_tip", ""),
("Password", ""),
("Ready", ""),
("Established", ""),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "สถานะ"),
("Your Desktop", "หน้าจอของคุณ"),
("desk_tip", "คุณสามารถเข้าถึงเดสก์ท็อปของคุณได้ด้วย ID และรหัสผ่านต่อไปนี้"),
("outgoing_only_desk_tip", ""),
("Password", "รหัสผ่าน"),
("Ready", "พร้อม"),
("Established", "เชื่อมต่อแล้ว"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Durum"),
("Your Desktop", "Sizin Masaüstünüz"),
("desk_tip", "Masaüstünüze bu ID ve şifre ile erişilebilir"),
("outgoing_only_desk_tip", ""),
("Password", "Şifre"),
("Ready", "Hazır"),
("Established", "Bağlantı sağlandı"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "狀態"),
("Your Desktop", "您的桌面"),
("desk_tip", "您可以透過此 ID 及密碼存取您的桌面"),
("outgoing_only_desk_tip", ""),
("Password", "密碼"),
("Ready", "就緒"),
("Established", "已建立"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", "二步驟驗證碼必須是 6 位數字。"),
("Multiple Windows sessions found", "發現多個 Windows 工作階段"),
("Please select the session you want to connect to", "請選擇您想要連結的工作階段"),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Статус"),
("Your Desktop", "Ваша стільниця"),
("desk_tip", "Ваша стільниця доступна з цим ідентифікатором і паролем"),
("outgoing_only_desk_tip", ""),
("Password", "Пароль"),
("Ready", "Готово"),
("Established", "Встановлено"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", "Код двофакторної автентифікації повинен складатися з 6 символів."),
("Multiple Windows sessions found", "Виявлено декілька сеансів Windows"),
("Please select the session you want to connect to", "Будь ласка, оберіть сеанс, до якого ви хочете підключитися"),
("powered by RustDesk", ""),
].iter().cloned().collect();
}

View File

@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Status", "Trạng thái hiện tại"),
("Your Desktop", "Desktop của bạn"),
("desk_tip", "Desktop của bạn có thể đuợc truy cập bằng ID và mật khẩu này."),
("outgoing_only_desk_tip", ""),
("Password", "Mật khẩu"),
("Ready", "Sẵn sàng"),
("Established", "Đã đuợc thiết lập"),
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("2FA code must be 6 digits.", ""),
("Multiple Windows sessions found", ""),
("Please select the session you want to connect to", ""),
("powered by RustDesk", ""),
].iter().cloned().collect();
}