From f28ac38ccfa662fd06639a062e0d06249860b142 Mon Sep 17 00:00:00 2001 From: palmoni5 Date: Tue, 1 Sep 2026 02:47:26 +0000 Subject: [PATCH] feat: optionally sync clipboard between connected sessions (#15934) * feat(clipboard): optionally sync clipboard between connected sessions Clipboard content received from a remote session is written to the local clipboard with an owner marker, so the client clipboard loop deliberately skips re-broadcasting it to avoid echo loops. As a result, text copied in one remote window could not be pasted in another connected remote window. Add an opt-in local option (allow-sync-clipboard-between-sessions) that relays Clipboard/MultiClipboards messages received from one session to all other connected sessions, excluding the source session. Per-session clipboard permissions and view-only mode are still respected via the existing send path, and the owner marker on the receiving peers prevents any echo back. Desktop (flutter) only; file clipboard is not affected. * fix(lang): propagate sync-clipboard-between-sessions-tip to all locale files Add the new key to template.rs and every locale file per the localization convention, move the en.rs entry to the end of the list, and drop comments that only restated the names next to them. * fix(lang): add the 'Sync clipboard between sessions' label to the localization catalog The checkbox label goes through translate(), so add it to template.rs and every locale file so non-English locales can translate it. en.rs is skipped since the English display text is identical to the key. * fix(clipboard): check the source session's full clipboard permission before relaying The relay was gated only by the incoming clipboard_allowed check (!disable_clipboard && !view_only). Gate it with is_text_clipboard_required() instead, which additionally respects the source session's server_clipboard_enabled and server_keyboard_enabled state, matching the predicate already applied to destination sessions. A message arriving after the source permission was revoked (or from a non-conforming peer) is no longer propagated to other sessions. The existing local update_clipboard behavior is unchanged. * fix(lang): translate the new clipboard sync entries in all locale files Fill the 'Sync clipboard between sessions' label and its tooltip in every locale file instead of leaving them blank, following each file's existing terminology. template.rs keeps the empty master entries. --- flutter/lib/consts.dart | 2 ++ .../desktop/pages/desktop_setting_page.dart | 9 +++++++ src/client/io_loop.rs | 24 +++++++++++++++++++ src/clipboard.rs | 11 +++++++++ src/flutter.rs | 16 +++++++++++++ src/lang/ar.rs | 2 ++ src/lang/be.rs | 2 ++ src/lang/bg.rs | 2 ++ src/lang/ca.rs | 2 ++ src/lang/cn.rs | 2 ++ src/lang/cs.rs | 2 ++ src/lang/da.rs | 2 ++ src/lang/de.rs | 2 ++ src/lang/el.rs | 2 ++ src/lang/en.rs | 1 + src/lang/eo.rs | 2 ++ src/lang/es.rs | 2 ++ src/lang/et.rs | 2 ++ src/lang/eu.rs | 2 ++ src/lang/fa.rs | 2 ++ src/lang/fi.rs | 2 ++ src/lang/fr.rs | 2 ++ src/lang/ge.rs | 2 ++ src/lang/gu.rs | 2 ++ src/lang/he.rs | 2 ++ src/lang/hi.rs | 2 ++ src/lang/hr.rs | 2 ++ src/lang/hu.rs | 2 ++ src/lang/id.rs | 2 ++ src/lang/it.rs | 2 ++ src/lang/ja.rs | 2 ++ src/lang/ko.rs | 2 ++ src/lang/kz.rs | 2 ++ src/lang/lt.rs | 2 ++ src/lang/lv.rs | 2 ++ src/lang/ml.rs | 2 ++ src/lang/nb.rs | 2 ++ src/lang/nl.rs | 2 ++ src/lang/pl.rs | 2 ++ src/lang/pt_PT.rs | 2 ++ src/lang/ptbr.rs | 2 ++ src/lang/ro.rs | 2 ++ src/lang/ru.rs | 2 ++ src/lang/sc.rs | 2 ++ src/lang/sk.rs | 2 ++ src/lang/sl.rs | 2 ++ src/lang/sq.rs | 2 ++ src/lang/sr.rs | 2 ++ src/lang/sv.rs | 2 ++ src/lang/ta.rs | 2 ++ src/lang/template.rs | 2 ++ src/lang/th.rs | 2 ++ src/lang/tr.rs | 2 ++ src/lang/tw.rs | 2 ++ src/lang/uk.rs | 2 ++ src/lang/vi.rs | 2 ++ 56 files changed, 163 insertions(+) diff --git a/flutter/lib/consts.dart b/flutter/lib/consts.dart index ca0bd523fd3..c6f9d9d6b7c 100644 --- a/flutter/lib/consts.dart +++ b/flutter/lib/consts.dart @@ -168,6 +168,8 @@ const String kOptionDirectxCapture = "enable-directx-capture"; const String kOptionAllowRemoteCmModification = "allow-remote-cm-modification"; const String kOptionEnableUdpPunch = "enable-udp-punch"; const String kOptionEnableIpv6Punch = "enable-ipv6-punch"; +const String kOptionAllowSyncClipboardBetweenSessions = + "allow-sync-clipboard-between-sessions"; const String kOptionEnableTrustedDevices = "enable-trusted-devices"; const String kOptionShowVirtualMouse = "show-virtual-mouse"; const String kOptionVirtualMouseScale = "virtual-mouse-scale"; diff --git a/flutter/lib/desktop/pages/desktop_setting_page.dart b/flutter/lib/desktop/pages/desktop_setting_page.dart index 4f3ea42e2cc..256e3923ffb 100644 --- a/flutter/lib/desktop/pages/desktop_setting_page.dart +++ b/flutter/lib/desktop/pages/desktop_setting_page.dart @@ -575,6 +575,15 @@ class _GeneralState extends State<_General> { kOptionEnableIpv6Punch, isServer: false, ), + Tooltip( + message: translate('sync-clipboard-between-sessions-tip'), + child: _OptionCheckBox( + context, + 'Sync clipboard between sessions', + kOptionAllowSyncClipboardBetweenSessions, + isServer: false, + ), + ), ], ]; diff --git a/src/client/io_loop.rs b/src/client/io_loop.rs index 33ee933570d..d7a4f570f01 100644 --- a/src/client/io_loop.rs +++ b/src/client/io_loop.rs @@ -1462,6 +1462,18 @@ impl Remote { !lc.disable_clipboard.v && !lc.view_only.v }; if clipboard_allowed { + #[cfg(all( + feature = "flutter", + not(any(target_os = "android", target_os = "ios")) + ))] + if self.handler.is_text_clipboard_required() + && crate::clipboard::is_sync_clipboard_between_sessions_enabled() + { + let mut msg = Message::new(); + msg.set_clipboard(cb.clone()); + let session_id = self.handler.lc.read().unwrap().session_id; + crate::flutter::send_clipboard_msg_to_other_sessions(msg, session_id); + } #[cfg(not(any(target_os = "android", target_os = "ios")))] update_clipboard(vec![cb], ClipboardSide::Client); #[cfg(target_os = "ios")] @@ -1485,6 +1497,18 @@ impl Remote { !lc.disable_clipboard.v && !lc.view_only.v }; if clipboard_allowed { + #[cfg(all( + feature = "flutter", + not(any(target_os = "android", target_os = "ios")) + ))] + if self.handler.is_text_clipboard_required() + && crate::clipboard::is_sync_clipboard_between_sessions_enabled() + { + let mut msg = Message::new(); + msg.set_multi_clipboards(_mcb.clone()); + let session_id = self.handler.lc.read().unwrap().session_id; + crate::flutter::send_clipboard_msg_to_other_sessions(msg, session_id); + } #[cfg(not(any(target_os = "android", target_os = "ios")))] update_clipboard(_mcb.clipboards, ClipboardSide::Client); #[cfg(target_os = "ios")] diff --git a/src/clipboard.rs b/src/clipboard.rs index c7c01d6c495..2b6c8ba83ca 100644 --- a/src/clipboard.rs +++ b/src/clipboard.rs @@ -13,6 +13,17 @@ pub const CLIPBOARD_NAME: &'static str = "clipboard"; pub const FILE_CLIPBOARD_NAME: &'static str = "file-clipboard"; pub const CLIPBOARD_INTERVAL: u64 = 333; +pub const OPTION_ALLOW_SYNC_CLIPBOARD_BETWEEN_SESSIONS: &str = + "allow-sync-clipboard-between-sessions"; + +#[cfg(all(feature = "flutter", not(any(target_os = "android", target_os = "ios"))))] +pub fn is_sync_clipboard_between_sessions_enabled() -> bool { + hbb_common::config::option2bool( + OPTION_ALLOW_SYNC_CLIPBOARD_BETWEEN_SESSIONS, + &hbb_common::config::LocalConfig::get_option(OPTION_ALLOW_SYNC_CLIPBOARD_BETWEEN_SESSIONS), + ) +} + // This format is used to store the flag in the clipboard. const RUSTDESK_CLIPBOARD_OWNER_FORMAT: &'static str = "dyn.com.rustdesk.owner"; diff --git a/src/flutter.rs b/src/flutter.rs index 1ed44ee49fa..f4971f18c5b 100644 --- a/src/flutter.rs +++ b/src/flutter.rs @@ -1422,10 +1422,26 @@ pub fn update_file_clipboard_required() { #[cfg(not(target_os = "ios"))] pub fn send_clipboard_msg(msg: Message, _is_file: bool) { + send_clipboard_msg_impl(msg, _is_file, None); +} + +// `except_session_id` is the session the content came from, to avoid sending it back. +#[cfg(not(any(target_os = "android", target_os = "ios")))] +pub fn send_clipboard_msg_to_other_sessions(msg: Message, except_session_id: u64) { + send_clipboard_msg_impl(msg, false, Some(except_session_id)); +} + +#[cfg(not(target_os = "ios"))] +fn send_clipboard_msg_impl(msg: Message, _is_file: bool, except_session_id: Option) { for s in sessions::get_sessions() { if !s.is_default() { continue; } + if let Some(except_session_id) = except_session_id { + if s.lc.read().unwrap().session_id == except_session_id { + continue; + } + } #[cfg(feature = "unix-file-copy-paste")] if _is_file { if crate::is_support_file_copy_paste_num(s.lc.read().unwrap().version) diff --git a/src/lang/ar.rs b/src/lang/ar.rs index 33c80e6ebde..da12b201717 100644 --- a/src/lang/ar.rs +++ b/src/lang/ar.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "متابعة"), ("Browser didn't open? Use the url below to sign in.", "لم يفتح المتصفح؟ استخدم الرابط أدناه لتسجيل الدخول."), ("Lock canvas", "قفل اللوحة"), + ("Sync clipboard between sessions", "مزامنة الحافظة بين الجلسات"), + ("sync-clipboard-between-sessions-tip", "النص أو الصور المنسوخة في جلسة بعيدة واحدة تُرسَل أيضًا إلى حافظة جلساتك المتصلة الأخرى."), ].iter().cloned().collect(); } diff --git a/src/lang/be.rs b/src/lang/be.rs index 7a1635c275a..2c012fb64ab 100644 --- a/src/lang/be.rs +++ b/src/lang/be.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Працягнуць"), ("Browser didn't open? Use the url below to sign in.", "Браўзер не адкрыўся? Скарыстайцеся спасылкай ніжэй, каб увайсці."), ("Lock canvas", "Заблакіраваць палатно"), + ("Sync clipboard between sessions", "Сінхранізаваць буфер абмену паміж сеансамі"), + ("sync-clipboard-between-sessions-tip", "Тэкст або відарысы, скапіяваныя ў адным аддаленым сеансе, таксама адпраўляюцца ў буфер абмену іншых вашых падключаных сеансаў."), ].iter().cloned().collect(); } diff --git a/src/lang/bg.rs b/src/lang/bg.rs index d9f7cf842fb..4104846eeea 100644 --- a/src/lang/bg.rs +++ b/src/lang/bg.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Продължи"), ("Browser didn't open? Use the url below to sign in.", "Браузърът не се отвори? Използвайте URL адреса по-долу, за да се впишете."), ("Lock canvas", "Заключване на платното"), + ("Sync clipboard between sessions", "Синхронизиране на клипборда между сесиите"), + ("sync-clipboard-between-sessions-tip", "Текст или изображения, копирани в една отдалечена сесия, се изпращат и към клипборда на другите ви свързани сесии."), ].iter().cloned().collect(); } diff --git a/src/lang/ca.rs b/src/lang/ca.rs index 196574688f7..8d73f523b6f 100644 --- a/src/lang/ca.rs +++ b/src/lang/ca.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Continua"), ("Browser didn't open? Use the url below to sign in.", "No s'ha obert el navegador? Utilitzeu l'URL de sota per iniciar la sessió."), ("Lock canvas", "Bloca el llenç"), + ("Sync clipboard between sessions", "Sincronitza el porta-retalls entre sessions"), + ("sync-clipboard-between-sessions-tip", "El text o les imatges copiats en una sessió remota també s'envien al porta-retalls de les altres sessions connectades."), ].iter().cloned().collect(); } diff --git a/src/lang/cn.rs b/src/lang/cn.rs index be998606be6..8a819fd7edf 100644 --- a/src/lang/cn.rs +++ b/src/lang/cn.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "继续"), ("Browser didn't open? Use the url below to sign in.", "浏览器未打开?请使用下方网址登录。"), ("Lock canvas", "锁定画布"), + ("Sync clipboard between sessions", "在会话间同步剪贴板"), + ("sync-clipboard-between-sessions-tip", "在一个远程会话中复制的文本或图片也会发送到其他已连接会话的剪贴板。"), ].iter().cloned().collect(); } diff --git a/src/lang/cs.rs b/src/lang/cs.rs index 21daea69c24..71b151e4101 100644 --- a/src/lang/cs.rs +++ b/src/lang/cs.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Pokračovat"), ("Browser didn't open? Use the url below to sign in.", "Neotevřel se prohlížeč? Pro přihlášení použijte URL níže."), ("Lock canvas", "Zamknout zobrazení"), + ("Sync clipboard between sessions", "Synchronizovat schránku mezi relacemi"), + ("sync-clipboard-between-sessions-tip", "Text nebo obrázky zkopírované v jedné vzdálené relaci se odešlou i do schránky ostatních připojených relací."), ].iter().cloned().collect(); } diff --git a/src/lang/da.rs b/src/lang/da.rs index b29e3eddfcf..3ba11607223 100644 --- a/src/lang/da.rs +++ b/src/lang/da.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Fortsæt"), ("Browser didn't open? Use the url below to sign in.", "Åbnede browseren ikke? Brug URL'en nedenfor til at logge ind."), ("Lock canvas", "Lås lærred"), + ("Sync clipboard between sessions", "Synkroniser udklipsholder mellem sessioner"), + ("sync-clipboard-between-sessions-tip", "Tekst eller billeder, der kopieres i én fjernsession, sendes også til udklipsholderen i dine andre forbundne sessioner."), ].iter().cloned().collect(); } diff --git a/src/lang/de.rs b/src/lang/de.rs index 9c6e75bc6c0..54a691b7c69 100644 --- a/src/lang/de.rs +++ b/src/lang/de.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Weiter"), ("Browser didn't open? Use the url below to sign in.", "Hat sich der Browser nicht geöffnet? Melden Sie sich über die untenstehende URL an."), ("Lock canvas", "Sichtfeld sperren"), + ("Sync clipboard between sessions", "Zwischenablage zwischen Sitzungen synchronisieren"), + ("sync-clipboard-between-sessions-tip", "In einer Remote-Sitzung kopierter Text oder kopierte Bilder werden auch an die Zwischenablage Ihrer anderen verbundenen Sitzungen gesendet."), ].iter().cloned().collect(); } diff --git a/src/lang/el.rs b/src/lang/el.rs index d3d1e378f36..e7c7e1d09bb 100644 --- a/src/lang/el.rs +++ b/src/lang/el.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Συνέχεια"), ("Browser didn't open? Use the url below to sign in.", "Δεν άνοιξε το πρόγραμμα περιήγησης; Χρησιμοποιήστε τον παρακάτω σύνδεσμο για να συνδεθείτε."), ("Lock canvas", "Κλείδωμα καμβά"), + ("Sync clipboard between sessions", "Συγχρονισμός προχείρου μεταξύ συνεδριών"), + ("sync-clipboard-between-sessions-tip", "Κείμενο ή εικόνες που αντιγράφονται σε μία απομακρυσμένη συνεδρία αποστέλλονται και στο πρόχειρο των άλλων συνδεδεμένων συνεδριών σας."), ].iter().cloned().collect(); } diff --git a/src/lang/en.rs b/src/lang/en.rs index 227a7e29e83..3ffc0939c28 100644 --- a/src/lang/en.rs +++ b/src/lang/en.rs @@ -275,5 +275,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("id_whitelist_caveat_tip", "The ID is reported by the connecting client. This whitelist reduces exposure and does not replace the password or 2FA."), ("whitelist_cidr_tip", "CIDR notation is supported, e.g. 192.168.1.0/24"), ("Your ip is blocked by the peer", "Your IP is blocked by the peer"), + ("sync-clipboard-between-sessions-tip", "Text or images copied in one remote session are also sent to the clipboard of your other connected sessions."), ].iter().cloned().collect(); } diff --git a/src/lang/eo.rs b/src/lang/eo.rs index 4f9b0ccd7db..e1edc9053cd 100644 --- a/src/lang/eo.rs +++ b/src/lang/eo.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Daŭrigi"), ("Browser didn't open? Use the url below to sign in.", "Ĉu la retumilo ne malfermiĝis? Uzu la suban ligilon por ensaluti."), ("Lock canvas", "Ŝlosi kanvason"), + ("Sync clipboard between sessions", "Sinkronigi poŝon inter seancoj"), + ("sync-clipboard-between-sessions-tip", "Teksto aŭ bildoj kopiitaj en unu fora seanco ankaŭ sendiĝas al la poŝo de viaj aliaj konektitaj seancoj."), ].iter().cloned().collect(); } diff --git a/src/lang/es.rs b/src/lang/es.rs index 89926b43ad4..1967d56abc9 100644 --- a/src/lang/es.rs +++ b/src/lang/es.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Continuar"), ("Browser didn't open? Use the url below to sign in.", "¿No se abrió el navegador? Usa la URL de abajo para iniciar sesión."), ("Lock canvas", "Bloquear lienzo"), + ("Sync clipboard between sessions", "Sincronizar portapapeles entre sesiones"), + ("sync-clipboard-between-sessions-tip", "El texto o las imágenes copiados en una sesión remota también se envían al portapapeles de tus otras sesiones conectadas."), ].iter().cloned().collect(); } diff --git a/src/lang/et.rs b/src/lang/et.rs index 9bbb7b07d90..6b8b715f81f 100644 --- a/src/lang/et.rs +++ b/src/lang/et.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Jätka"), ("Browser didn't open? Use the url below to sign in.", "Brauser ei avanenud? Sisselogimiseks kasuta allolevat URL-i."), ("Lock canvas", "Lukusta lõuend"), + ("Sync clipboard between sessions", "Sünkrooni lõikelaud seansside vahel"), + ("sync-clipboard-between-sessions-tip", "Ühes kaugseansis kopeeritud tekst või pildid saadetakse ka teiste ühendatud seansside lõikelauale."), ].iter().cloned().collect(); } diff --git a/src/lang/eu.rs b/src/lang/eu.rs index 8515e6f5347..06783379ae1 100644 --- a/src/lang/eu.rs +++ b/src/lang/eu.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Jarraitu"), ("Browser didn't open? Use the url below to sign in.", "Nabigatzailea ez da ireki? Erabili beheko URLa saioa hasteko."), ("Lock canvas", "Blokeatu oihala"), + ("Sync clipboard between sessions", "Sinkronizatu arbela saioen artean"), + ("sync-clipboard-between-sessions-tip", "Urruneko saio batean kopiatutako testua edo irudiak konektatutako beste saioen arbelera ere bidaltzen dira."), ].iter().cloned().collect(); } diff --git a/src/lang/fa.rs b/src/lang/fa.rs index a96fe7160f3..dd16ed09aef 100644 --- a/src/lang/fa.rs +++ b/src/lang/fa.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "ادامه"), ("Browser didn't open? Use the url below to sign in.", "مرورگر باز نشد؟ برای ورود از نشانی زیر استفاده کنید."), ("Lock canvas", "قفل کردن صفحه"), + ("Sync clipboard between sessions", "همگام‌سازی کلیپ‌بورد بین نشست‌ها"), + ("sync-clipboard-between-sessions-tip", "متن یا تصاویری که در یک نشست راه دور کپی می‌شوند به کلیپ‌بورد سایر نشست‌های متصل شما نیز ارسال می‌شوند."), ].iter().cloned().collect(); } diff --git a/src/lang/fi.rs b/src/lang/fi.rs index d5695d18d3c..3b00e00b1c3 100644 --- a/src/lang/fi.rs +++ b/src/lang/fi.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Jatka"), ("Browser didn't open? Use the url below to sign in.", "Eikö selain avautunut? Kirjaudu sisään alla olevan osoitteen kautta."), ("Lock canvas", "Lukitse näkymä"), + ("Sync clipboard between sessions", "Synkronoi leikepöytä istuntojen välillä"), + ("sync-clipboard-between-sessions-tip", "Yhdessä etäistunnossa kopioitu teksti tai kuvat lähetetään myös muiden yhdistettyjen istuntojen leikepöydälle."), ].iter().cloned().collect(); } diff --git a/src/lang/fr.rs b/src/lang/fr.rs index 4dece7adc63..11372cc512a 100644 --- a/src/lang/fr.rs +++ b/src/lang/fr.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Continuer"), ("Browser didn't open? Use the url below to sign in.", "Le navigateur ne s’est pas ouvert ? Utilisez l’URL ci-dessous pour vous connecter."), ("Lock canvas", "Verrouiller la vue"), + ("Sync clipboard between sessions", "Synchroniser le presse-papiers entre les sessions"), + ("sync-clipboard-between-sessions-tip", "Le texte ou les images copiés dans une session distante sont également envoyés au presse-papiers de vos autres sessions connectées."), ].iter().cloned().collect(); } diff --git a/src/lang/ge.rs b/src/lang/ge.rs index a422c4853b3..edacbb4f5ec 100644 --- a/src/lang/ge.rs +++ b/src/lang/ge.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "გაგრძელება"), ("Browser didn't open? Use the url below to sign in.", "ბრაუზერი არ გაიხსნა? შესასვლელად გამოიყენეთ ქვემოთ მოცემული ბმული."), ("Lock canvas", "ტილოს დაბლოკვა"), + ("Sync clipboard between sessions", "გაცვლის ბუფერის სინქრონიზაცია სესიებს შორის"), + ("sync-clipboard-between-sessions-tip", "ერთ დაშორებულ სესიაში დაკოპირებული ტექსტი ან სურათები ასევე იგზავნება თქვენი სხვა დაკავშირებული სესიების გაცვლის ბუფერში."), ].iter().cloned().collect(); } diff --git a/src/lang/gu.rs b/src/lang/gu.rs index 3a1c14139cb..c0d722940c4 100644 --- a/src/lang/gu.rs +++ b/src/lang/gu.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "ચાલુ રાખો"), ("Browser didn't open? Use the url below to sign in.", "બ્રાઉઝર ખૂલ્યું નથી? લોગિન કરવા માટે નીચે આપેલ URL નો ઉપયોગ કરો."), ("Lock canvas", "કેનવાસ લોક કરો"), + ("Sync clipboard between sessions", "સત્રો વચ્ચે ક્લિપબોર્ડ સિંક કરો"), + ("sync-clipboard-between-sessions-tip", "એક રિમોટ સત્રમાં કૉપિ કરેલ ટેક્સ્ટ કે છબીઓ તમારા અન્ય જોડાયેલા સત્રોના ક્લિપબોર્ડ પર પણ મોકલવામાં આવે છે."), ].iter().cloned().collect(); } diff --git a/src/lang/he.rs b/src/lang/he.rs index 2ff95b48f67..8dd783f3093 100644 --- a/src/lang/he.rs +++ b/src/lang/he.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "המשך"), ("Browser didn't open? Use the url below to sign in.", "הדפדפן לא נפתח? השתמש בכתובת שלמטה כדי להתחבר."), ("Lock canvas", "נעל לוח ציור"), + ("Sync clipboard between sessions", "סנכרן לוח בין סשנים"), + ("sync-clipboard-between-sessions-tip", "טקסט או תמונות שהועתקו בסשן מרוחק אחד נשלחים גם ללוח של שאר הסשנים המחוברים שלך."), ].iter().cloned().collect(); } diff --git a/src/lang/hi.rs b/src/lang/hi.rs index da7fc6a4068..f9eebc60351 100644 --- a/src/lang/hi.rs +++ b/src/lang/hi.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "जारी रखें"), ("Browser didn't open? Use the url below to sign in.", "ब्राउज़र नहीं खुला? लॉगिन करने के लिए नीचे दिए गए URL का उपयोग करें।"), ("Lock canvas", "कैनवास लॉक करें"), + ("Sync clipboard between sessions", "सत्रों के बीच क्लिपबोर्ड सिंक करें"), + ("sync-clipboard-between-sessions-tip", "एक रिमोट सत्र में कॉपी किए गए टेक्स्ट या चित्र आपके अन्य जुड़े सत्रों के क्लिपबोर्ड पर भी भेजे जाते हैं।"), ].iter().cloned().collect(); } diff --git a/src/lang/hr.rs b/src/lang/hr.rs index 20f5b0da140..a793e519e35 100644 --- a/src/lang/hr.rs +++ b/src/lang/hr.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Nastavi"), ("Browser didn't open? Use the url below to sign in.", "Preglednik se nije otvorio? Za prijavu upotrijebite URL u nastavku."), ("Lock canvas", "Zaključaj pozadinu"), + ("Sync clipboard between sessions", "Sinkroniziraj međuspremnik između sesija"), + ("sync-clipboard-between-sessions-tip", "Tekst ili slike kopirani u jednoj udaljenoj sesiji šalju se i u međuspremnik vaših ostalih povezanih sesija."), ].iter().cloned().collect(); } diff --git a/src/lang/hu.rs b/src/lang/hu.rs index 28f3d04820c..4a5a737da3c 100644 --- a/src/lang/hu.rs +++ b/src/lang/hu.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Folytatás"), ("Browser didn't open? Use the url below to sign in.", "Nem nyílt meg a böngésző? A belépéshez használja az alábbi URL-címet."), ("Lock canvas", "Nézet zárolása"), + ("Sync clipboard between sessions", "Vágólap szinkronizálása a munkamenetek között"), + ("sync-clipboard-between-sessions-tip", "Az egyik távoli munkamenetben másolt szöveg vagy kép a többi csatlakoztatott munkamenet vágólapjára is elküldésre kerül."), ].iter().cloned().collect(); } diff --git a/src/lang/id.rs b/src/lang/id.rs index 8c7af75e46f..f5a8918bdcb 100644 --- a/src/lang/id.rs +++ b/src/lang/id.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Lanjutkan"), ("Browser didn't open? Use the url below to sign in.", "Browser tidak terbuka? Gunakan URL di bawah ini untuk masuk."), ("Lock canvas", "Kunci kanvas"), + ("Sync clipboard between sessions", "Sinkronkan papan klip antar sesi"), + ("sync-clipboard-between-sessions-tip", "Teks atau gambar yang disalin di satu sesi jarak jauh juga dikirim ke papan klip sesi terhubung Anda yang lain."), ].iter().cloned().collect(); } diff --git a/src/lang/it.rs b/src/lang/it.rs index 8de645fbed9..73e5e6d837d 100644 --- a/src/lang/it.rs +++ b/src/lang/it.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Continua"), ("Browser didn't open? Use the url below to sign in.", "Il browser non si è aperto? Usa l'URL qui sotto per accedere."), ("Lock canvas", "Blocca tela"), + ("Sync clipboard between sessions", "Sincronizza gli appunti tra le sessioni"), + ("sync-clipboard-between-sessions-tip", "Il testo o le immagini copiati in una sessione remota vengono inviati anche agli appunti delle altre sessioni connesse."), ].iter().cloned().collect(); } diff --git a/src/lang/ja.rs b/src/lang/ja.rs index 71713ca012e..dad7b055756 100644 --- a/src/lang/ja.rs +++ b/src/lang/ja.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "続行"), ("Browser didn't open? Use the url below to sign in.", "ブラウザが開きませんでしたか?下記の URL からログインしてください。"), ("Lock canvas", "キャンバスをロック"), + ("Sync clipboard between sessions", "セッション間でクリップボードを同期"), + ("sync-clipboard-between-sessions-tip", "1つのリモートセッションでコピーしたテキストや画像は、接続中の他のセッションのクリップボードにも送信されます。"), ].iter().cloned().collect(); } diff --git a/src/lang/ko.rs b/src/lang/ko.rs index abd48fb9e65..2151c9b8b64 100644 --- a/src/lang/ko.rs +++ b/src/lang/ko.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "계속"), ("Browser didn't open? Use the url below to sign in.", "브라우저가 열리지 않았나요? 아래 URL로 로그인하세요."), ("Lock canvas", "캔버스 잠금"), + ("Sync clipboard between sessions", "세션 간 클립보드 동기화"), + ("sync-clipboard-between-sessions-tip", "하나의 원격 세션에서 복사한 텍스트나 이미지는 연결된 다른 세션의 클립보드에도 전송됩니다."), ].iter().cloned().collect(); } diff --git a/src/lang/kz.rs b/src/lang/kz.rs index b623e5c3320..27ed4e8d6e0 100644 --- a/src/lang/kz.rs +++ b/src/lang/kz.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Жалғастыру"), ("Browser didn't open? Use the url below to sign in.", "Браузер ашылмады ма? Кіру үшін төмендегі сілтемені пайдаланыңыз."), ("Lock canvas", "Кенепті құлыптау"), + ("Sync clipboard between sessions", "Сеанстар арасында көшіру-тақтасын синхрондау"), + ("sync-clipboard-between-sessions-tip", "Бір қашықтағы сеанста көшірілген мәтін немесе суреттер басқа қосылған сеанстардың көшіру-тақтасына да жіберіледі."), ].iter().cloned().collect(); } diff --git a/src/lang/lt.rs b/src/lang/lt.rs index 45d2ddc08de..4beb665934a 100644 --- a/src/lang/lt.rs +++ b/src/lang/lt.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Tęsti"), ("Browser didn't open? Use the url below to sign in.", "Naršyklė neatsidarė? Prisijunkite naudodami toliau pateiktą URL."), ("Lock canvas", "Užrakinti drobę"), + ("Sync clipboard between sessions", "Sinchronizuoti iškarpinę tarp seansų"), + ("sync-clipboard-between-sessions-tip", "Viename nuotoliniame seanse nukopijuotas tekstas ar vaizdai taip pat siunčiami į kitų prijungtų seansų iškarpinę."), ].iter().cloned().collect(); } diff --git a/src/lang/lv.rs b/src/lang/lv.rs index a71cdc0380c..2d7038f1932 100644 --- a/src/lang/lv.rs +++ b/src/lang/lv.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Turpināt"), ("Browser didn't open? Use the url below to sign in.", "Pārlūkprogramma neatvērās? Izmantojiet tālāk norādīto URL, lai pieslēgtos."), ("Lock canvas", "Bloķēt audeklu"), + ("Sync clipboard between sessions", "Sinhronizēt starpliktuvi starp sesijām"), + ("sync-clipboard-between-sessions-tip", "Vienā attālajā sesijā nokopētais teksts vai attēli tiek nosūtīti arī uz pārējo pievienoto sesiju starpliktuvi."), ].iter().cloned().collect(); } diff --git a/src/lang/ml.rs b/src/lang/ml.rs index 157a7abb362..f7804fa0caf 100644 --- a/src/lang/ml.rs +++ b/src/lang/ml.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "തുടരുക"), ("Browser didn't open? Use the url below to sign in.", "ബ്രൗസർ തുറന്നില്ലേ? ലോഗിൻ ചെയ്യാൻ താഴെയുള്ള URL ഉപയോഗിക്കുക."), ("Lock canvas", "ക്യാൻവാസ് ലോക്ക് ചെയ്യുക"), + ("Sync clipboard between sessions", "സെഷനുകൾക്കിടയിൽ ക്ലിപ്പ്ബോർഡ് സമന്വയിപ്പിക്കുക"), + ("sync-clipboard-between-sessions-tip", "ഒരു റിമോട്ട് സെഷനിൽ പകർത്തിയ ടെക്സ്റ്റോ ചിത്രങ്ങളോ നിങ്ങളുടെ മറ്റ് കണക്റ്റുചെയ്ത സെഷനുകളുടെ ക്ലിപ്പ്ബോർഡിലേക്കും അയയ്ക്കപ്പെടും."), ].iter().cloned().collect(); } diff --git a/src/lang/nb.rs b/src/lang/nb.rs index e92c47eb209..753db92a2f8 100644 --- a/src/lang/nb.rs +++ b/src/lang/nb.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Fortsett"), ("Browser didn't open? Use the url below to sign in.", "Åpnet ikke nettleseren? Bruk URL-en nedenfor for å logge inn."), ("Lock canvas", "Lås lerret"), + ("Sync clipboard between sessions", "Synkroniser utklippstavlen mellom økter"), + ("sync-clipboard-between-sessions-tip", "Tekst eller bilder som kopieres i én ekstern økt, sendes også til utklippstavlen i de andre tilkoblede øktene dine."), ].iter().cloned().collect(); } diff --git a/src/lang/nl.rs b/src/lang/nl.rs index 813bb211061..7a575a04ca5 100644 --- a/src/lang/nl.rs +++ b/src/lang/nl.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Doorgaan"), ("Browser didn't open? Use the url below to sign in.", "Is de browser niet geopend? Gebruik onderstaande URL om in te loggen."), ("Lock canvas", "Canvas vergrendelen"), + ("Sync clipboard between sessions", "Klembord synchroniseren tussen sessies"), + ("sync-clipboard-between-sessions-tip", "Tekst of afbeeldingen die in één externe sessie worden gekopieerd, worden ook naar het klembord van uw andere verbonden sessies gestuurd."), ].iter().cloned().collect(); } diff --git a/src/lang/pl.rs b/src/lang/pl.rs index 37144a0bc1a..8b599b2ea76 100644 --- a/src/lang/pl.rs +++ b/src/lang/pl.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Kontynuuj"), ("Browser didn't open? Use the url below to sign in.", "Przeglądarka się nie otworzyła? Użyj poniższego adresu URL, aby się zalogować."), ("Lock canvas", "Zablokuj ekran"), + ("Sync clipboard between sessions", "Synchronizuj schowek między sesjami"), + ("sync-clipboard-between-sessions-tip", "Tekst lub obrazy skopiowane w jednej sesji zdalnej są wysyłane także do schowka pozostałych połączonych sesji."), ].iter().cloned().collect(); } diff --git a/src/lang/pt_PT.rs b/src/lang/pt_PT.rs index 94043d38d49..2b71cc3e2eb 100644 --- a/src/lang/pt_PT.rs +++ b/src/lang/pt_PT.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Continuar"), ("Browser didn't open? Use the url below to sign in.", "O navegador não abriu? Utilize o URL abaixo para iniciar sessão."), ("Lock canvas", "Bloquear tela"), + ("Sync clipboard between sessions", "Sincronizar área de transferência entre sessões"), + ("sync-clipboard-between-sessions-tip", "O texto ou as imagens copiados numa sessão remota também são enviados para a área de transferência das suas outras sessões ligadas."), ].iter().cloned().collect(); } diff --git a/src/lang/ptbr.rs b/src/lang/ptbr.rs index a7879960de3..892358a791d 100644 --- a/src/lang/ptbr.rs +++ b/src/lang/ptbr.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Continuar"), ("Browser didn't open? Use the url below to sign in.", "O navegador não foi aberto? Use a URL abaixo para fazer login."), ("Lock canvas", "Bloquear tela"), + ("Sync clipboard between sessions", "Sincronizar área de transferência entre sessões"), + ("sync-clipboard-between-sessions-tip", "Texto ou imagens copiados em uma sessão remota também são enviados para a área de transferência das suas outras sessões conectadas."), ].iter().cloned().collect(); } diff --git a/src/lang/ro.rs b/src/lang/ro.rs index 03eb282f5cd..6bf36882299 100644 --- a/src/lang/ro.rs +++ b/src/lang/ro.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Continuă"), ("Browser didn't open? Use the url below to sign in.", "Browserul nu s-a deschis? Folosește URL-ul de mai jos pentru a te conecta."), ("Lock canvas", "Blochează ecranul"), + ("Sync clipboard between sessions", "Sincronizează clipboardul între sesiuni"), + ("sync-clipboard-between-sessions-tip", "Textul sau imaginile copiate într-o sesiune la distanță sunt trimise și în clipboardul celorlalte sesiuni conectate."), ].iter().cloned().collect(); } diff --git a/src/lang/ru.rs b/src/lang/ru.rs index 8d29105dbc2..54d388cbe85 100644 --- a/src/lang/ru.rs +++ b/src/lang/ru.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Продолжить"), ("Browser didn't open? Use the url below to sign in.", "Браузер не открылся? Используйте ссылку ниже для входа."), ("Lock canvas", "Заблокировать холст"), + ("Sync clipboard between sessions", "Синхронизировать буфер обмена между сеансами"), + ("sync-clipboard-between-sessions-tip", "Текст или изображения, скопированные в одном удалённом сеансе, также отправляются в буфер обмена других подключённых сеансов."), ].iter().cloned().collect(); } diff --git a/src/lang/sc.rs b/src/lang/sc.rs index 8be034c4bba..e13c07fc925 100644 --- a/src/lang/sc.rs +++ b/src/lang/sc.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Sighi"), ("Browser didn't open? Use the url below to sign in.", "Non s'est abertu su navigadore? Imprea s'URL inoghe in suta pro intrare."), ("Lock canvas", "Bloca sa tela"), + ("Sync clipboard between sessions", "Sincroniza sa punta de billete intre is sessiones"), + ("sync-clipboard-between-sessions-tip", "Su testu o is immàgines copiadas in una sessione remota sunt imbiadas fintzas a sa punta de billete de is àteras sessiones connètidas."), ].iter().cloned().collect(); } diff --git a/src/lang/sk.rs b/src/lang/sk.rs index cf17d2129b6..1795c97ac1b 100644 --- a/src/lang/sk.rs +++ b/src/lang/sk.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Pokračovať"), ("Browser didn't open? Use the url below to sign in.", "Neotvoril sa prehliadač? Na prihlásenie použite URL nižšie."), ("Lock canvas", "Uzamknúť zobrazenie"), + ("Sync clipboard between sessions", "Synchronizovať schránku medzi reláciami"), + ("sync-clipboard-between-sessions-tip", "Text alebo obrázky skopírované v jednej vzdialenej relácii sa odošlú aj do schránky ostatných pripojených relácií."), ].iter().cloned().collect(); } diff --git a/src/lang/sl.rs b/src/lang/sl.rs index 6d4480fe589..694297a46da 100644 --- a/src/lang/sl.rs +++ b/src/lang/sl.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Nadaljuj"), ("Browser didn't open? Use the url below to sign in.", "Brskalnik se ni odprl? Za prijavo uporabite spodnji URL."), ("Lock canvas", "Zakleni platno"), + ("Sync clipboard between sessions", "Sinhroniziraj odložišče med sejami"), + ("sync-clipboard-between-sessions-tip", "Besedilo ali slike, kopirane v eni oddaljeni seji, se pošljejo tudi v odložišče vaših drugih povezanih sej."), ].iter().cloned().collect(); } diff --git a/src/lang/sq.rs b/src/lang/sq.rs index 47070808281..3263993f302 100644 --- a/src/lang/sq.rs +++ b/src/lang/sq.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Vazhdo"), ("Browser didn't open? Use the url below to sign in.", "Shfletuesi nuk u hap? Përdorni URL-në më poshtë për të hyrë."), ("Lock canvas", "Kyç canvas"), + ("Sync clipboard between sessions", "Sinkronizo clipboard-in midis sesioneve"), + ("sync-clipboard-between-sessions-tip", "Teksti ose imazhet e kopjuara në një sesion të largët dërgohen edhe në clipboard-in e sesioneve të tjera të lidhura."), ].iter().cloned().collect(); } diff --git a/src/lang/sr.rs b/src/lang/sr.rs index fe3d047e50c..31987bf313f 100644 --- a/src/lang/sr.rs +++ b/src/lang/sr.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Nastavi"), ("Browser didn't open? Use the url below to sign in.", "Pregledač se nije otvorio? Za prijavu koristite URL ispod."), ("Lock canvas", "Zaključaj pozadinu"), + ("Sync clipboard between sessions", "Sinhronizuj klipbord između sesija"), + ("sync-clipboard-between-sessions-tip", "Tekst ili slike kopirane u jednoj udaljenoj sesiji šalju se i u klipbord vaših ostalih povezanih sesija."), ].iter().cloned().collect(); } diff --git a/src/lang/sv.rs b/src/lang/sv.rs index 9f2efc263c6..45cc4f03095 100644 --- a/src/lang/sv.rs +++ b/src/lang/sv.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Fortsätt"), ("Browser didn't open? Use the url below to sign in.", "Öppnades inte webbläsaren? Använd URL:en nedan för att logga in."), ("Lock canvas", "Lås canvas"), + ("Sync clipboard between sessions", "Synkronisera urklipp mellan sessioner"), + ("sync-clipboard-between-sessions-tip", "Text eller bilder som kopieras i en fjärrsession skickas även till urklipp i dina andra anslutna sessioner."), ].iter().cloned().collect(); } diff --git a/src/lang/ta.rs b/src/lang/ta.rs index ac2486ccb07..2a0e1e0f768 100644 --- a/src/lang/ta.rs +++ b/src/lang/ta.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "தொடர்க"), ("Browser didn't open? Use the url below to sign in.", "உலாவி திறக்கவில்லையா? உள்நுழைய கீழே உள்ள URL ஐப் பயன்படுத்தவும்."), ("Lock canvas", "கேன்வாஸைப் பூட்டு"), + ("Sync clipboard between sessions", "அமர்வுகளுக்கு இடையே கிளிப்போர்டை ஒத்திசைக்கவும்"), + ("sync-clipboard-between-sessions-tip", "ஒரு தொலை அமர்வில் நகலெடுக்கப்பட்ட உரை அல்லது படங்கள் உங்கள் பிற இணைக்கப்பட்ட அமர்வுகளின் கிளிப்போர்டுக்கும் அனுப்பப்படும்."), ].iter().cloned().collect(); } diff --git a/src/lang/template.rs b/src/lang/template.rs index b65c9279338..feab1b71e0b 100644 --- a/src/lang/template.rs +++ b/src/lang/template.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", ""), ("Browser didn't open? Use the url below to sign in.", ""), ("Lock canvas", ""), + ("Sync clipboard between sessions", ""), + ("sync-clipboard-between-sessions-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/th.rs b/src/lang/th.rs index 7531d072d68..d261884b3f4 100644 --- a/src/lang/th.rs +++ b/src/lang/th.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "ดำเนินการต่อ"), ("Browser didn't open? Use the url below to sign in.", "เบราว์เซอร์ไม่เปิดใช่ไหม? ใช้ URL ด้านล่างเพื่อเข้าสู่ระบบ"), ("Lock canvas", "ล็อคแคนวาส"), + ("Sync clipboard between sessions", "ซิงค์คลิปบอร์ดระหว่างเซสชัน"), + ("sync-clipboard-between-sessions-tip", "ข้อความหรือรูปภาพที่คัดลอกในเซสชันระยะไกลหนึ่งจะถูกส่งไปยังคลิปบอร์ดของเซสชันอื่นที่เชื่อมต่ออยู่ด้วย"), ].iter().cloned().collect(); } diff --git a/src/lang/tr.rs b/src/lang/tr.rs index 8546d96bc77..4e5f1bbcad5 100644 --- a/src/lang/tr.rs +++ b/src/lang/tr.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Devam et"), ("Browser didn't open? Use the url below to sign in.", "Tarayıcı açılmadı mı? Giriş yapmak için aşağıdaki URL'yi kullanın."), ("Lock canvas", "Tuvali kilitle"), + ("Sync clipboard between sessions", "Oturumlar arasında panoyu senkronize et"), + ("sync-clipboard-between-sessions-tip", "Bir uzak oturumda kopyalanan metin veya görseller, bağlı diğer oturumlarınızın panosuna da gönderilir."), ].iter().cloned().collect(); } diff --git a/src/lang/tw.rs b/src/lang/tw.rs index 8663c5d5fbf..75639e65dc2 100644 --- a/src/lang/tw.rs +++ b/src/lang/tw.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "繼續"), ("Browser didn't open? Use the url below to sign in.", "瀏覽器未開啟?請使用下方網址登入。"), ("Lock canvas", "鎖定畫布"), + ("Sync clipboard between sessions", "在工作階段間同步剪貼簿"), + ("sync-clipboard-between-sessions-tip", "在一個遠端工作階段中複製的文字或圖片也會傳送到其他已連線工作階段的剪貼簿。"), ].iter().cloned().collect(); } diff --git a/src/lang/uk.rs b/src/lang/uk.rs index c11eac1f645..97c56ba868b 100644 --- a/src/lang/uk.rs +++ b/src/lang/uk.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Продовжити"), ("Browser didn't open? Use the url below to sign in.", "Браузер не відкрився? Скористайтеся посиланням нижче, щоб увійти."), ("Lock canvas", "Блокування полотна"), + ("Sync clipboard between sessions", "Синхронізувати буфер обміну між сеансами"), + ("sync-clipboard-between-sessions-tip", "Текст або зображення, скопійовані в одному віддаленому сеансі, також надсилаються до буфера обміну інших підключених сеансів."), ].iter().cloned().collect(); } diff --git a/src/lang/vi.rs b/src/lang/vi.rs index 7f4e0ef4688..8995ade8719 100644 --- a/src/lang/vi.rs +++ b/src/lang/vi.rs @@ -761,5 +761,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Continue", "Tiếp tục"), ("Browser didn't open? Use the url below to sign in.", "Trình duyệt không mở được? Hãy dùng URL bên dưới để đăng nhập."), ("Lock canvas", "Khóa khung hình"), + ("Sync clipboard between sessions", "Đồng bộ clipboard giữa các phiên"), + ("sync-clipboard-between-sessions-tip", "Văn bản hoặc hình ảnh được sao chép trong một phiên từ xa cũng được gửi đến clipboard của các phiên đã kết nối khác."), ].iter().cloned().collect(); }