From dd86823287b45b8c8668bd81530376a27ffde00a Mon Sep 17 00:00:00 2001 From: rustdesk Date: Mon, 10 Aug 2026 18:56:00 +0800 Subject: [PATCH] webrtc: fix race edge cases that discard or mislabel a direct connection Three correctness fixes in the transport race, plus three convention cleanups. - race_transports_prefer_webrtc committed a relayed result while a direct attempt was still in flight: the others arm returned on webrtc_fut.is_none() even with an unfinished direct future, and the WebRTC-error arm returned a held relay without checking others_fut. A relay is now committed only when nothing direct can still arrive (or the window expires); a parked relay is also preferred over composing an error when both sides fail. Three regression tests, mutation-checked. - connect()'s plain select_ok let a TURN-relayed WebRTC win as "first success", dropping still-racing UDP/IPv6 direct attempts and reporting the relayed pair as direct. It now runs through the same prefer-P2P race with each attempt carrying whether its path is direct, and the WebRTC future resolves is_relayed() so a TURN win is held behind direct attempts, not committed as one. - The RelayResponse path kept direct == true when a WebRTC win's DTLS handshake failed and it fell back to relay, so the relay was reported P2P. Clear the flag with the transport switch. - Trim the OffererGuard doc to the three-line max; move the new enable-webrtc localization key to the end of every lang list; the KCP option constant moved to hbb_common config::keys (0f663aa). Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01ExUfAkYbq8UC9pQCiLy8TQ --- libs/hbb_common | 2 +- src/client.rs | 189 +++++++++++++++++++++++++++++++------------ src/common.rs | 4 +- 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/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 +- 53 files changed, 188 insertions(+), 107 deletions(-) diff --git a/libs/hbb_common b/libs/hbb_common index 589701294..1f8463d72 160000 --- a/libs/hbb_common +++ b/libs/hbb_common @@ -1 +1 @@ -Subproject commit 58970129492d5488e38bdd547e483f19a6b18e0f +Subproject commit 1f8463d720e9d9452be75d3b5e584a787ad34385 diff --git a/src/client.rs b/src/client.rs index fd0db825e..bd439ce64 100644 --- a/src/client.rs +++ b/src/client.rs @@ -175,14 +175,9 @@ pub fn get_key_state(key: enigo::Key) -> bool { ENIGO.lock().unwrap().get_key_state(key) } -/// RAII guard for a WebRTC offerer that has not yet been adopted into a connection. -/// -/// The offerer's `RTCPeerConnection` is created eagerly in `Client::start` and inserted into the -/// global `SESSIONS` map; if it never receives a remote answer it stays in ICE state `New` -/// forever, so its state-change handler never fires and it never self-removes. This guard closes -/// the pc on drop, covering the paths that would otherwise leak it: early `?`/`bail!` returns in -/// `_start_inner`, and `select_ok` cancelling the racing attempt that holds the offerer. Call -/// [`OffererGuard::into_inner`] to disarm when the stream is adopted into a live connection. +/// Closes an unadopted WebRTC offerer's pc on drop. Without an answer it stays in ICE `New` +/// forever, so its state handler never fires to self-remove it from `SESSIONS`; this covers the +/// early returns and cancelled races that would leak it. `into_inner` disarms on adoption. struct OffererGuard(Option); impl OffererGuard { @@ -254,8 +249,12 @@ async fn race_transports_prefer_webrtc<'a, T: 'a>( } } Err(e) => { - if let Some(conn) = held.take() { - return Ok(conn); + // Commit a held relay only when nothing direct is still racing; otherwise + // keep it and let the survivor (or the window) decide. + if others_fut.is_none() { + if let Some(conn) = held.take() { + return Ok(conn); + } } match others_err.take() { Some(oe) => bail!("WebRTC failed: {}; fallback failed: {}", e, oe), @@ -274,11 +273,15 @@ async fn race_transports_prefer_webrtc<'a, T: 'a>( others_fut = None; match res { Ok((conn, unfinished)) => { - if is_p2p(&conn) || webrtc_fut.is_none() { + if is_p2p(&conn) { + return Ok(conn); + } + // Relayed: commit now only if nothing direct can still arrive. If a + // direct attempt is still in flight (here or in `unfinished`), hold it + // and keep racing for the preference window instead of discarding them. + if webrtc_fut.is_none() && unfinished.is_empty() { return Ok(conn); } - // Hold the first relay, but keep polling unfinished alternatives: an IPv6 - // direct attempt may complete inside the same WebRTC preference window. if held.is_none() { held = Some(conn); window.as_mut().reset( @@ -291,15 +294,16 @@ async fn race_transports_prefer_webrtc<'a, T: 'a>( } } Err(e) => match webrtc_err.take() { - Some(we) => bail!("WebRTC failed: {}; fallback failed: {}", we, e), - None if webrtc_fut.is_none() => { - // The preferred branch may have parked a relay here; nothing else can - // win now, so commit it rather than failing the connection. - match held.take() { - Some(conn) => return Ok(conn), - None => return Err(e), - } - } + // Nothing more can win, but a parked relay is still a valid outcome — take + // it before failing the connection. + Some(we) => match held.take() { + Some(conn) => return Ok(conn), + None => bail!("WebRTC failed: {}; fallback failed: {}", we, e), + }, + None if webrtc_fut.is_none() => match held.take() { + Some(conn) => return Ok(conn), + None => return Err(e), + }, None => others_err = Some(e), }, } @@ -1066,7 +1070,7 @@ impl Client { } // The ? / secure_connection failures below return early; webrtc_guard stays // in scope and closes the offerer on any such exit (loss, error, cancellation). - let (mut conn, kcp, mut typ, direct) = race_result?; + let (mut conn, kcp, mut typ, mut direct) = race_result?; feedback = rr.feedback; log::info!("{:?} used to establish {typ} connection", start.elapsed()); let pk = match Self::secure_connection( @@ -1116,6 +1120,10 @@ impl Client { .await?; conn = relay_conn; typ = if use_ws() { "WebSocket" } else { "Relay" }; + // The transport is now a relay: the WebRTC win it replaced must + // not carry its direct flag into the return, or the relay is + // reported P2P and the outer race treats it as one. + direct = false; pk } Err(e) => return Err(e), @@ -1331,50 +1339,81 @@ impl Client { log::info!("peer address: {}, timeout: {}", peer, connect_timeout); let start = std::time::Instant::now(); - let mut connect_futures = Vec::new(); + // Each attempt carries whether its path is direct (4th field). TCP/UDP/IPv6 punch are + // always direct; WebRTC is direct only when ICE nominated a non-TURN pair. + let mut direct_futures = Vec::new(); if allow_tcp_punch { let fut = connect_tcp_local(peer, Some(local_addr), connect_timeout); - connect_futures.push( + direct_futures.push( async move { let conn = fut.await?; - Ok((conn, None, "TCP")) + Ok((conn, None, "TCP", true)) } .boxed(), ); } if let Some(udp_socket_nat) = udp_socket_nat { - connect_futures.push(udp_nat_connect(udp_socket_nat, "UDP", connect_timeout).boxed()); - } - if let Some(udp_socket_v6) = udp_socket_v6 { - connect_futures.push(udp_nat_connect(udp_socket_v6, "IPv6", connect_timeout).boxed()); - } - // Race a clone of the offerer; the guard retains its own clone so a losing/cancelled race - // still closes the pc (select_ok drops the future's clone without closing). - if let Some(stream) = webrtc_guard.as_ref().and_then(|g| g.stream()) { - let mut raced = stream.clone(); - // The punch-tuned timeout can be as low as 1s — enough for a raw TCP SYN but not for - // candidate trickle + ICE checks + DTLS. Give WebRTC its own floor (prefer-P2P) so a - // viable P2P path is not abandoned before it can complete; TCP/UDP keep the tighter - // timeout, so a working direct connection still wins the race immediately, and the - // relay fallback below only waits the extra time when direct attempts all failed. - let webrtc_timeout = connect_timeout.max(Self::WEBRTC_PREFER_WINDOW_MS); - connect_futures.push( + direct_futures.push( async move { - raced.wait_connected(webrtc_timeout).await?; - Ok((Stream::WebRTC(raced), None, "WebRTC")) + let (conn, kcp, typ) = + udp_nat_connect(udp_socket_nat, "UDP", connect_timeout).await?; + Ok((conn, kcp, typ, true)) } .boxed(), ); } - // Run all connection attempts concurrently, return the first successful one - let direct_result = if connect_futures.is_empty() { - Err(anyhow!("No direct transport available")) - } else { - select_ok(connect_futures).await.map(|conn| conn.0) + if let Some(udp_socket_v6) = udp_socket_v6 { + direct_futures.push( + async move { + let (conn, kcp, typ) = + udp_nat_connect(udp_socket_v6, "IPv6", connect_timeout).await?; + Ok((conn, kcp, typ, true)) + } + .boxed(), + ); + } + // Race a clone of the offerer; the guard retains its own clone so a losing/cancelled race + // still closes the pc (select_ok drops the future's clone without closing). + let webrtc_fut = webrtc_guard + .as_ref() + .and_then(|g| g.stream()) + .map(|stream| { + let mut raced = stream.clone(); + // The punch-tuned timeout can be as low as 1s — enough for a raw TCP SYN but not + // for candidate trickle + ICE checks + DTLS. Give WebRTC its own floor (prefer-P2P) + // so a viable P2P path is not abandoned before it can complete; TCP/UDP keep the + // tighter timeout, so a working direct connection still wins immediately, and the + // relay fallback only waits the extra time when direct attempts all failed. + let webrtc_timeout = connect_timeout.max(Self::WEBRTC_PREFER_WINDOW_MS); + async move { + raced.wait_connected(webrtc_timeout).await?; + // Resolve the pair here: a TURN win is relayed, not direct, and must be held + // behind still-racing direct attempts rather than committed as P2P. + let relayed = raced.is_relayed().await.unwrap_or(true); + Ok((Stream::WebRTC(raced), None, "WebRTC", !relayed)) + } + .boxed() + }); + // Prefer P2P: a direct result wins outright, a relayed WebRTC (TURN) is held for the + // window so a direct punch can still land. Falls back to plain select_ok when only one + // kind is present. + let direct_result = match (webrtc_fut, direct_futures.is_empty()) { + (Some(webrtc_fut), false) => { + race_transports_prefer_webrtc( + webrtc_fut, + direct_futures, + Self::WEBRTC_PREFER_WINDOW_MS, + |r| r.3, + ) + .await + } + (Some(webrtc_fut), true) => webrtc_fut.await, + (None, false) => select_ok(direct_futures).await.map(|c| c.0), + (None, true) => Err(anyhow!("No direct transport available")), }; - let (mut conn, kcp, mut typ) = match direct_result { - Ok(conn) => (Ok(conn.0), conn.1, conn.2), - Err(e) => (Err(e), None, ""), + let (mut conn, kcp, mut typ, mut direct) = match direct_result { + Ok((conn, kcp, typ, direct)) => (Ok(conn), kcp, typ, direct), + Err(e) => (Err(e), None, "", false), }; if let Some(stop) = webrtc_bridge_stop { let _ = stop.send(()); @@ -1382,7 +1421,6 @@ impl Client { // webrtc_guard stays armed across the relay override and secure_connection below; it is // disarmed only at the successful return when WebRTC is the kept transport. - let mut direct = !conn.is_err(); // Keep a WebRTC win instead of replacing it with the RustDesk relay: under relay-by- // policy the pc was built with Relay-only ICE (TURN configured), which already honors // the relay requirement, and under ws-forced relay a direct full-ICE connection is the @@ -5320,6 +5358,51 @@ mod webrtc_race_tests { assert!(start.elapsed() < Duration::from_secs(5)); } + // WebRTC fails first (others still racing), then a relay arrives with a direct attempt still + // unfinished behind it. The relay must not be committed while that direct attempt can win. + #[tokio::test] + async fn relay_does_not_preempt_unfinished_direct_after_webrtc_fails() { + let got = race_transports_prefer_webrtc( + err_after(5, "webrtc dead"), + vec![ok_after(10, "relay"), ok_after(100, "ipv6")], + 60_000, + |t| *t == "ipv6", + ) + .await + .unwrap(); + assert_eq!(got, "ipv6"); + } + + // A relay is held with a direct attempt racing behind it, then WebRTC fails. The held relay + // must not be committed while the direct attempt is still in flight. + #[tokio::test] + async fn held_relay_waits_for_racing_direct_when_webrtc_fails() { + let got = race_transports_prefer_webrtc( + err_after(50, "webrtc dead"), + vec![ok_after(10, "relay"), ok_after(100, "ipv6")], + 60_000, + |t| *t == "ipv6", + ) + .await + .unwrap(); + assert_eq!(got, "ipv6"); + } + + // Both attempts error, but a relay was parked before they did — it is the outcome, not a + // composed error. + #[tokio::test] + async fn held_relay_survives_both_errors() { + let got = race_transports_prefer_webrtc( + err_after(50, "webrtc dead"), + vec![ok_after(10, "relay"), err_after(100, "ipv6 dead")], + 60_000, + |t| *t == "ipv6", + ) + .await + .unwrap(); + assert_eq!(got, "relay"); + } + #[tokio::test] async fn held_relay_committed_when_window_expires() { let start = Instant::now(); diff --git a/src/common.rs b/src/common.rs index ee994ada4..4024c835f 100644 --- a/src/common.rs +++ b/src/common.rs @@ -2397,8 +2397,6 @@ pub fn is_udp_disabled() -> bool { Config::get_option(keys::OPTION_DISABLE_UDP) == "Y" } -pub const OPTION_ENABLE_KCP_CC: &str = "enable-kcp-congestion-control"; - /// Run KCP with its congestion window (nc=0) instead of the turbo profile it has always shipped. /// /// Opt-in: which profile wins depends on why packets are lost — nc=1 deepens real congestion, @@ -2406,7 +2404,7 @@ pub const OPTION_ENABLE_KCP_CC: &str = "enable-kcp-congestion-control"; /// without a shaped link, so keep what users run today. #[inline] pub fn get_kcp_cc_enabled() -> bool { - Config::get_option(OPTION_ENABLE_KCP_CC) == "Y" + Config::get_option(keys::OPTION_ENABLE_KCP_CC) == "Y" } // this crate https://github.com/yoshd/stun-client supports nat type diff --git a/src/lang/ar.rs b/src/lang/ar.rs index 36b9664ee..742124ee9 100644 --- a/src/lang/ar.rs +++ b/src/lang/ar.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "سرعة لوحة التتبع الافتراضية"), ("Numeric one-time password", "كلمة مرور رقمية لمرة واحدة"), ("Enable IPv6 P2P connection", "تمكين اتصال نظير إلى نظير عبر IPv6"), - ("Enable WebRTC P2P connection", "تمكين اتصال نظير إلى نظير عبر WebRTC"), ("Enable UDP hole punching", "تمكين تقنية حفر الثغرات عبر UDP"), ("View camera", "عرض الكاميرا"), ("Enable camera", "تمكين الكاميرا"), @@ -759,5 +758,6 @@ 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", "قفل اللوحة"), + ("Enable WebRTC P2P connection", "تمكين اتصال نظير إلى نظير عبر WebRTC"), ].iter().cloned().collect(); } diff --git a/src/lang/be.rs b/src/lang/be.rs index 00ba9b589..2d49048d2 100644 --- a/src/lang/be.rs +++ b/src/lang/be.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Стандартная хуткасць трэкпада"), ("Numeric one-time password", "Лічбавы аднаразовы пароль"), ("Enable IPv6 P2P connection", "Выкарыстоўваць падключэнне IPv6 P2P"), - ("Enable WebRTC P2P connection", "Выкарыстоўваць падключэнне WebRTC P2P"), ("Enable UDP hole punching", "Выкарыстоўваць UDP hole punching"), ("View camera", "Рэжым камеры"), ("Enable camera", "Уключыць камеру"), @@ -759,5 +758,6 @@ 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", "Заблакіраваць палатно"), + ("Enable WebRTC P2P connection", "Выкарыстоўваць падключэнне WebRTC P2P"), ].iter().cloned().collect(); } diff --git a/src/lang/bg.rs b/src/lang/bg.rs index fa37e0f31..683c4b250 100644 --- a/src/lang/bg.rs +++ b/src/lang/bg.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Скорост на тъчпада по подразбиране"), ("Numeric one-time password", "Цифрова еднократна парола"), ("Enable IPv6 P2P connection", "Позволяване на IPv6 P2P връзка"), - ("Enable WebRTC P2P connection", "Позволяване на WebRTC P2P връзка"), ("Enable UDP hole punching", "Позволяване на UDP hole punching"), ("View camera", "Преглед на камерата"), ("Enable camera", "Позволяване на камерата"), @@ -759,5 +758,6 @@ 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", "Заключване на платното"), + ("Enable WebRTC P2P connection", "Позволяване на WebRTC P2P връзка"), ].iter().cloned().collect(); } diff --git a/src/lang/ca.rs b/src/lang/ca.rs index ea41e9881..18acedbb7 100644 --- a/src/lang/ca.rs +++ b/src/lang/ca.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Velocitat per defecte del trackpad"), ("Numeric one-time password", "Contrasenya numèrica d'un sol ús"), ("Enable IPv6 P2P connection", "Habilita la connexió IPv6 P2P"), - ("Enable WebRTC P2P connection", "Habilita la connexió WebRTC P2P"), ("Enable UDP hole punching", "Activa la perforació UDP"), ("View camera", "Mostra la càmera"), ("Enable camera", "Habilita la càmera"), @@ -759,5 +758,6 @@ 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ç"), + ("Enable WebRTC P2P connection", "Habilita la connexió WebRTC P2P"), ].iter().cloned().collect(); } diff --git a/src/lang/cn.rs b/src/lang/cn.rs index 331c1e67a..b68f960df 100644 --- a/src/lang/cn.rs +++ b/src/lang/cn.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "默认触控板速度"), ("Numeric one-time password", "一次性密码为数字"), ("Enable IPv6 P2P connection", "启用 IPv6 P2P 连接"), - ("Enable WebRTC P2P connection", "启用 WebRTC P2P 连接"), ("Enable UDP hole punching", "启用 UDP 打洞"), ("View camera", "查看摄像头"), ("Enable camera", "允许查看摄像头"), @@ -759,5 +758,6 @@ 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", "锁定画布"), + ("Enable WebRTC P2P connection", "启用 WebRTC P2P 连接"), ].iter().cloned().collect(); } diff --git a/src/lang/cs.rs b/src/lang/cs.rs index 0b490d98d..e1314cb60 100644 --- a/src/lang/cs.rs +++ b/src/lang/cs.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Výchozí rychlost trackpadu"), ("Numeric one-time password", "Číselné jednorázové heslo"), ("Enable IPv6 P2P connection", "Povolit připojení IPv6 P2P"), - ("Enable WebRTC P2P connection", "Povolit připojení WebRTC P2P"), ("Enable UDP hole punching", "Povolit UDP hole punching"), ("View camera", "Zobrazit kameru"), ("Enable camera", "Povolit kameru"), @@ -759,5 +758,6 @@ 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í"), + ("Enable WebRTC P2P connection", "Povolit připojení WebRTC P2P"), ].iter().cloned().collect(); } diff --git a/src/lang/da.rs b/src/lang/da.rs index 5fcec542a..f756ac27c 100644 --- a/src/lang/da.rs +++ b/src/lang/da.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Standard pegefeltshastighed"), ("Numeric one-time password", "Numerisk engangskode"), ("Enable IPv6 P2P connection", "Aktivér IPv6 P2P-forbindelse"), - ("Enable WebRTC P2P connection", "Aktivér WebRTC P2P-forbindelse"), ("Enable UDP hole punching", "Aktivér UDP hole punching"), ("View camera", "Se kamera"), ("Enable camera", "Aktivér kamera"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Aktivér WebRTC P2P-forbindelse"), ].iter().cloned().collect(); } diff --git a/src/lang/de.rs b/src/lang/de.rs index b9a0e0733..10315cf5b 100644 --- a/src/lang/de.rs +++ b/src/lang/de.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Standardgeschwindigkeit des Trackpads"), ("Numeric one-time password", "Numerisches Einmalpasswort"), ("Enable IPv6 P2P connection", "IPv6-P2P-Verbindung aktivieren"), - ("Enable WebRTC P2P connection", "WebRTC-P2P-Verbindung aktivieren"), ("Enable UDP hole punching", "UDP-Hole-Punching aktivieren"), ("View camera", "Kamera anzeigen"), ("Enable camera", "Kamera zulassen"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "WebRTC-P2P-Verbindung aktivieren"), ].iter().cloned().collect(); } diff --git a/src/lang/el.rs b/src/lang/el.rs index be9b5bc1a..db0e390d2 100644 --- a/src/lang/el.rs +++ b/src/lang/el.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Προεπιλεγμένη ταχύτητα trackpad"), ("Numeric one-time password", "Αριθμητικός κωδικός πρόσβασης μίας χρήσης"), ("Enable IPv6 P2P connection", "Ενεργοποίηση σύνδεσης IPv6 P2P"), - ("Enable WebRTC P2P connection", "Ενεργοποίηση σύνδεσης WebRTC P2P"), ("Enable UDP hole punching", "Ενεργοποίηση διάτρησης οπών UDP"), ("View camera", "Προβολή κάμερας"), ("Enable camera", "Ενεργοποίηση κάμερας"), @@ -759,5 +758,6 @@ 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", "Κλείδωμα καμβά"), + ("Enable WebRTC P2P connection", "Ενεργοποίηση σύνδεσης WebRTC P2P"), ].iter().cloned().collect(); } diff --git a/src/lang/eo.rs b/src/lang/eo.rs index bca7d3686..009227b3e 100644 --- a/src/lang/eo.rs +++ b/src/lang/eo.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Implicita rapideco de tuŝplato"), ("Numeric one-time password", "Numera unufoja pasvorto"), ("Enable IPv6 P2P connection", "Ebligi IPv6 P2P-konekton"), - ("Enable WebRTC P2P connection", "Ebligi WebRTC P2P-konekton"), ("Enable UDP hole punching", "Ebligi UDP-trapikadon"), ("View camera", "Rigardi kameron"), ("Enable camera", "Ebligi kameron"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Ebligi WebRTC P2P-konekton"), ].iter().cloned().collect(); } diff --git a/src/lang/es.rs b/src/lang/es.rs index 0f88a2ec0..2da839310 100644 --- a/src/lang/es.rs +++ b/src/lang/es.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Velocidad predeterminada de trackpad"), ("Numeric one-time password", "Contraseña numérica de un solo uso"), ("Enable IPv6 P2P connection", "Habilitar conexión IPv6 P2P"), - ("Enable WebRTC P2P connection", "Habilitar conexión WebRTC P2P"), ("Enable UDP hole punching", "Habilitar perforación de agujero UDP"), ("View camera", "Ver cámara"), ("Enable camera", "Habilitar cámara"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Habilitar conexión WebRTC P2P"), ].iter().cloned().collect(); } diff --git a/src/lang/et.rs b/src/lang/et.rs index b8b0da81f..2c7b1d4ac 100644 --- a/src/lang/et.rs +++ b/src/lang/et.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Vaikimisi puuteplaadi kiirus"), ("Numeric one-time password", "Numbriline ühekordne parool"), ("Enable IPv6 P2P connection", "Luba IPv6 P2P-ühendus"), - ("Enable WebRTC P2P connection", "Luba WebRTC P2P-ühendus"), ("Enable UDP hole punching", "Luba UDP-augustamine"), ("View camera", "Vaata kaamerat"), ("Enable camera", "Luba kaamera"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Luba WebRTC P2P-ühendus"), ].iter().cloned().collect(); } diff --git a/src/lang/eu.rs b/src/lang/eu.rs index 20f1ef1ad..479592353 100644 --- a/src/lang/eu.rs +++ b/src/lang/eu.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Trackpad-aren abiadura lehenetsia"), ("Numeric one-time password", "Behin-behineko pasahitz numerikoa"), ("Enable IPv6 P2P connection", "Gaitu IPv6 P2P konexioa"), - ("Enable WebRTC P2P connection", "Gaitu WebRTC P2P konexioa"), ("Enable UDP hole punching", "Gaitu UDP zulo-egitea"), ("View camera", "Ikusi kamera"), ("Enable camera", "Gaitu kamera"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Gaitu WebRTC P2P konexioa"), ].iter().cloned().collect(); } diff --git a/src/lang/fa.rs b/src/lang/fa.rs index 05b4bb850..ec1a946f3 100644 --- a/src/lang/fa.rs +++ b/src/lang/fa.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "سرعت پیش‌فرض ترک‌پد"), ("Numeric one-time password", "رمز عبور یک‌بار مصرف عددی"), ("Enable IPv6 P2P connection", "فعال‌سازی اتصال همتا‌به‌همتای IPv6"), - ("Enable WebRTC P2P connection", "فعال‌سازی اتصال همتا‌به‌همتای WebRTC"), ("Enable UDP hole punching", "فعال‌سازی تکنیک UDP hole punching"), ("View camera", "نمایش دوربین"), ("Enable camera", "فعال کردن دوربین"), @@ -759,5 +758,6 @@ 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", "قفل کردن صفحه"), + ("Enable WebRTC P2P connection", "فعال‌سازی اتصال همتا‌به‌همتای WebRTC"), ].iter().cloned().collect(); } diff --git a/src/lang/fi.rs b/src/lang/fi.rs index 142f2ad0e..880aa0201 100644 --- a/src/lang/fi.rs +++ b/src/lang/fi.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Oletusnopeus kosketuslevylle"), ("Numeric one-time password", "Numeerinen kertakäyttösalasana"), ("Enable IPv6 P2P connection", "Ota IPv6 P2P yhteys käyttöön"), - ("Enable WebRTC P2P connection", "Ota WebRTC P2P yhteys käyttöön"), ("Enable UDP hole punching", "Ota käyttöön UDP hole punching tekniikka"), ("View camera", "Näytä kamera"), ("Enable camera", "Ota kamera käyttöön"), @@ -759,5 +758,6 @@ 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ä"), + ("Enable WebRTC P2P connection", "Ota WebRTC P2P yhteys käyttöön"), ].iter().cloned().collect(); } diff --git a/src/lang/fr.rs b/src/lang/fr.rs index da26152e5..fa8efcb42 100644 --- a/src/lang/fr.rs +++ b/src/lang/fr.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Vitesse par défaut du pavé tactile"), ("Numeric one-time password", "Mot de passe à usage unique numérique"), ("Enable IPv6 P2P connection", "Activer la connexion P2P IPv6"), - ("Enable WebRTC P2P connection", "Activer la connexion P2P WebRTC"), ("Enable UDP hole punching", "Activer le « hole punching » UDP"), ("View camera", "Afficher la caméra"), ("Enable camera", "Activer la caméra"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Activer la connexion P2P WebRTC"), ].iter().cloned().collect(); } diff --git a/src/lang/ge.rs b/src/lang/ge.rs index 6141c0b6b..e644eb363 100644 --- a/src/lang/ge.rs +++ b/src/lang/ge.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "ტაჩპადის ნაგულისხმევი სიჩქარე"), ("Numeric one-time password", "ციფრული ერთჯერადი პაროლი"), ("Enable IPv6 P2P connection", "IPv6 P2P კავშირის ჩართვა"), - ("Enable WebRTC P2P connection", "WebRTC P2P კავშირის ჩართვა"), ("Enable UDP hole punching", "UDP hole punching-ის ჩართვა"), ("View camera", "კამერის ნახვა"), ("Enable camera", "კამერის ჩართვა"), @@ -759,5 +758,6 @@ 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", "ტილოს დაბლოკვა"), + ("Enable WebRTC P2P connection", "WebRTC P2P კავშირის ჩართვა"), ].iter().cloned().collect(); } diff --git a/src/lang/gu.rs b/src/lang/gu.rs index da06ec50c..ee2001725 100644 --- a/src/lang/gu.rs +++ b/src/lang/gu.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "ડિફોલ્ટ ટ્રેકપેડ સ્પીડ"), ("Numeric one-time password", "ન્યુમેરિક OTP"), ("Enable IPv6 P2P connection", "IPv6 P2P કનેક્શન સક્ષમ કરો"), - ("Enable WebRTC P2P connection", "WebRTC P2P કનેક્શન સક્ષમ કરો"), ("Enable UDP hole punching", "UDP હોલ પંચિંગ સક્ષમ કરો"), ("View camera", "કેમેરા જુઓ"), ("Enable camera", "કેમેરા સક્ષમ કરો"), @@ -759,5 +758,6 @@ 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", "કેનવાસ લોક કરો"), + ("Enable WebRTC P2P connection", "WebRTC P2P કનેક્શન સક્ષમ કરો"), ].iter().cloned().collect(); } diff --git a/src/lang/he.rs b/src/lang/he.rs index dd9602955..22d184dfc 100644 --- a/src/lang/he.rs +++ b/src/lang/he.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "מהירות ברירת מחדל של משטח מגע"), ("Numeric one-time password", "סיסמה חד-פעמית מספרית"), ("Enable IPv6 P2P connection", "אפשר חיבור IPv6 P2P"), - ("Enable WebRTC P2P connection", "אפשר חיבור WebRTC P2P"), ("Enable UDP hole punching", "אפשר UDP hole punching"), ("View camera", "הצג מצלמה"), ("Enable camera", "הפעל מצלמה"), @@ -759,5 +758,6 @@ 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", "נעל לוח ציור"), + ("Enable WebRTC P2P connection", "אפשר חיבור WebRTC P2P"), ].iter().cloned().collect(); } diff --git a/src/lang/hi.rs b/src/lang/hi.rs index 59bacad40..75077849e 100644 --- a/src/lang/hi.rs +++ b/src/lang/hi.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "डिफ़ॉल्ट ट्रैकपैड गति"), ("Numeric one-time password", "संख्यात्मक वन-टाइम पासवर्ड"), ("Enable IPv6 P2P connection", "IPv6 P2P कनेक्शन सक्षम करें"), - ("Enable WebRTC P2P connection", "WebRTC P2P कनेक्शन सक्षम करें"), ("Enable UDP hole punching", "UDP होल पंचिंग सक्षम करें"), ("View camera", "कैमरा देखें"), ("Enable camera", "कैमरा सक्षम करें"), @@ -759,5 +758,6 @@ 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", "कैनवास लॉक करें"), + ("Enable WebRTC P2P connection", "WebRTC P2P कनेक्शन सक्षम करें"), ].iter().cloned().collect(); } diff --git a/src/lang/hr.rs b/src/lang/hr.rs index 57fca3270..b9d9fed49 100644 --- a/src/lang/hr.rs +++ b/src/lang/hr.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Zadana brzina dodirne ploče"), ("Numeric one-time password", "Numerička jednokratna lozinka"), ("Enable IPv6 P2P connection", "Omogući IPv6 P2P vezu"), - ("Enable WebRTC P2P connection", "Omogući WebRTC P2P vezu"), ("Enable UDP hole punching", "Omogući UDP hole punching"), ("View camera", "Pregled kamere"), ("Enable camera", "Omogući kameru"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Omogući WebRTC P2P vezu"), ].iter().cloned().collect(); } diff --git a/src/lang/hu.rs b/src/lang/hu.rs index d66926dc4..4072aaded 100644 --- a/src/lang/hu.rs +++ b/src/lang/hu.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Alapértelmezett érintőpad sebessége"), ("Numeric one-time password", "Numerikus, egyszer használatos jelszó"), ("Enable IPv6 P2P connection", "IPv6 P2P kapcsolat engedélyezése"), - ("Enable WebRTC P2P connection", "WebRTC P2P kapcsolat engedélyezése"), ("Enable UDP hole punching", "UDP résszűrés engedélyezése"), ("View camera", "Kamera nézet"), ("Enable camera", "Kamera engedélyezése"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "WebRTC P2P kapcsolat engedélyezése"), ].iter().cloned().collect(); } diff --git a/src/lang/id.rs b/src/lang/id.rs index 7e8b8d8e3..8da15ef24 100644 --- a/src/lang/id.rs +++ b/src/lang/id.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Kecepatan default trackpad"), ("Numeric one-time password", "Kata sandi sekali pakai numerik"), ("Enable IPv6 P2P connection", "Aktifkan koneksi P2P IPv6"), - ("Enable WebRTC P2P connection", "Aktifkan koneksi P2P WebRTC"), ("Enable UDP hole punching", "Aktifkan UDP hole punching"), ("View camera", "Lihat Kamera"), ("Enable camera", "Aktifkan kamera"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Aktifkan koneksi P2P WebRTC"), ].iter().cloned().collect(); } diff --git a/src/lang/it.rs b/src/lang/it.rs index 6cd0483e2..555d432e0 100644 --- a/src/lang/it.rs +++ b/src/lang/it.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Velocità predefinita trackpad"), ("Numeric one-time password", "Password numerica monouso"), ("Enable IPv6 P2P connection", "Abilita connessione P2P IPv6"), - ("Enable WebRTC P2P connection", "Abilita connessione P2P WebRTC"), ("Enable UDP hole punching", "Abilita hole punching UDP"), ("View camera", "Visualizza telecamera"), ("Enable camera", "Abilita camera"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Abilita connessione P2P WebRTC"), ].iter().cloned().collect(); } diff --git a/src/lang/ja.rs b/src/lang/ja.rs index 9e112932b..cb20f3483 100644 --- a/src/lang/ja.rs +++ b/src/lang/ja.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "既定のトラックパッドの速度"), ("Numeric one-time password", "数字のワンタイムパスワード"), ("Enable IPv6 P2P connection", "IPv6 P2P 接続を有効化する"), - ("Enable WebRTC P2P connection", "WebRTC P2P 接続を有効化する"), ("Enable UDP hole punching", "UDP ホールパンチを有効化する"), ("View camera", "カメラを表示"), ("Enable camera", "カメラを有効化する"), @@ -759,5 +758,6 @@ 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", "キャンバスをロック"), + ("Enable WebRTC P2P connection", "WebRTC P2P 接続を有効化する"), ].iter().cloned().collect(); } diff --git a/src/lang/ko.rs b/src/lang/ko.rs index c5c45cbfc..d41b9ae1d 100644 --- a/src/lang/ko.rs +++ b/src/lang/ko.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "기본 트랙패드 속도"), ("Numeric one-time password", "숫자 일회용 비밀번호"), ("Enable IPv6 P2P connection", "IPv6 P2P 연결 사용"), - ("Enable WebRTC P2P connection", "WebRTC P2P 연결 사용"), ("Enable UDP hole punching", "UDP 홀 펀칭 사용"), ("View camera", "카메라 보기"), ("Enable camera", "카메라 허용"), @@ -759,5 +758,6 @@ 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", "캔버스 잠금"), + ("Enable WebRTC P2P connection", "WebRTC P2P 연결 사용"), ].iter().cloned().collect(); } diff --git a/src/lang/kz.rs b/src/lang/kz.rs index b8016e482..e6643e653 100644 --- a/src/lang/kz.rs +++ b/src/lang/kz.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Әдепкі трекпад жылдамдығы"), ("Numeric one-time password", "Сандық бір-реттік құпия сөз"), ("Enable IPv6 P2P connection", "IPv6 P2P қосылымын іске қосу"), - ("Enable WebRTC P2P connection", "WebRTC P2P қосылымын іске қосу"), ("Enable UDP hole punching", "UDP hole punching'ті іске қосу"), ("View camera", "Камераны Көру"), ("Enable camera", "Камераны қосу"), @@ -759,5 +758,6 @@ 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", "Кенепті құлыптау"), + ("Enable WebRTC P2P connection", "WebRTC P2P қосылымын іске қосу"), ].iter().cloned().collect(); } diff --git a/src/lang/lt.rs b/src/lang/lt.rs index 8469b34c2..20ca418f2 100644 --- a/src/lang/lt.rs +++ b/src/lang/lt.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Numatytasis jutiklinės dalies greitis"), ("Numeric one-time password", "Skaitmeninis vienkartinis slaptažodis"), ("Enable IPv6 P2P connection", "Įgalinti IPv6 P2P ryšį"), - ("Enable WebRTC P2P connection", "Įgalinti WebRTC P2P ryšį"), ("Enable UDP hole punching", "Įgalinti UDP gręžimą (hole punching)"), ("View camera", "Peržiūrėti kamerą"), ("Enable camera", "Įgalinti kamerą"), @@ -759,5 +758,6 @@ 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ę"), + ("Enable WebRTC P2P connection", "Įgalinti WebRTC P2P ryšį"), ].iter().cloned().collect(); } diff --git a/src/lang/lv.rs b/src/lang/lv.rs index 510020e74..3c773c8c0 100644 --- a/src/lang/lv.rs +++ b/src/lang/lv.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Noklusējuma skārienpaliktņa ātrums"), ("Numeric one-time password", "Vienreiz lietojama ciparu parole"), ("Enable IPv6 P2P connection", "Iespējot IPv6 P2P savienojumu"), - ("Enable WebRTC P2P connection", "Iespējot WebRTC P2P savienojumu"), ("Enable UDP hole punching", "Iespējot UDP caurumu veidošanu"), ("View camera", "Skatīt kameru"), ("Enable camera", "Iespējot kameru"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Iespējot WebRTC P2P savienojumu"), ].iter().cloned().collect(); } diff --git a/src/lang/ml.rs b/src/lang/ml.rs index a1dbc594c..1fc05a20e 100644 --- a/src/lang/ml.rs +++ b/src/lang/ml.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "സാധാരണ ട്രാക്ക്പാഡ് വേഗത"), ("Numeric one-time password", "അക്കങ്ങൾ മാത്രമുള്ള OTP"), ("Enable IPv6 P2P connection", "IPv6 P2P കണക്ഷൻ അനുവദിക്കുക"), - ("Enable WebRTC P2P connection", "WebRTC P2P കണക്ഷൻ അനുവദിക്കുക"), ("Enable UDP hole punching", "UDP ഹോൾ പഞ്ചിംഗ് അനുവദിക്കുക"), ("View camera", "ക്യാമറ കാണുക"), ("Enable camera", "ക്യാമറ ഓൺ ചെയ്യുക"), @@ -759,5 +758,6 @@ 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", "ക്യാൻവാസ് ലോക്ക് ചെയ്യുക"), + ("Enable WebRTC P2P connection", "WebRTC P2P കണക്ഷൻ അനുവദിക്കുക"), ].iter().cloned().collect(); } diff --git a/src/lang/nb.rs b/src/lang/nb.rs index 55028ba1e..af862b12d 100644 --- a/src/lang/nb.rs +++ b/src/lang/nb.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Standard styreplatehastighet"), ("Numeric one-time password", "Numerisk engangspassord"), ("Enable IPv6 P2P connection", "Aktiver IPv6 P2P-tilkobling"), - ("Enable WebRTC P2P connection", "Aktiver WebRTC P2P-tilkobling"), ("Enable UDP hole punching", "Aktiver UDP hole punching"), ("View camera", "Vis kamera"), ("Enable camera", "Aktiver kamera"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Aktiver WebRTC P2P-tilkobling"), ].iter().cloned().collect(); } diff --git a/src/lang/nl.rs b/src/lang/nl.rs index f97704c2b..013e08912 100644 --- a/src/lang/nl.rs +++ b/src/lang/nl.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Standaardsnelheid Trackpad"), ("Numeric one-time password", "Eenmalig numeriek wachtwoord"), ("Enable IPv6 P2P connection", "IPv6 P2P-verbinding inschakelen"), - ("Enable WebRTC P2P connection", "WebRTC P2P-verbinding inschakelen"), ("Enable UDP hole punching", "UDP-hole punching inschakelen"), ("View camera", "Camera weergeven"), ("Enable camera", "Camera inschakelen"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "WebRTC P2P-verbinding inschakelen"), ].iter().cloned().collect(); } diff --git a/src/lang/pl.rs b/src/lang/pl.rs index bacc2ac96..da0826a88 100644 --- a/src/lang/pl.rs +++ b/src/lang/pl.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Domyślna szybkość gładzika"), ("Numeric one-time password", "Jednorazowe hasło cyfrowe"), ("Enable IPv6 P2P connection", "Włącz połączenie P2P IPv6"), - ("Enable WebRTC P2P connection", "Włącz połączenie P2P WebRTC"), ("Enable UDP hole punching", "Włącz tworzenie tunelu UDP"), ("View camera", "Podgląd kamery"), ("Enable camera", "Włącz kamerę"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Włącz połączenie P2P WebRTC"), ].iter().cloned().collect(); } diff --git a/src/lang/pt_PT.rs b/src/lang/pt_PT.rs index 764140a7c..d687d6676 100644 --- a/src/lang/pt_PT.rs +++ b/src/lang/pt_PT.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Velocidade predefinida do trackpad"), ("Numeric one-time password", "Palavra-passe de uso único numérica"), ("Enable IPv6 P2P connection", "Ativar ligação P2P por IPv6"), - ("Enable WebRTC P2P connection", "Ativar ligação P2P por WebRTC"), ("Enable UDP hole punching", "Ativar UDP hole punching"), ("View camera", "Ver câmara"), ("Enable camera", "Ativar câmara"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Ativar ligação P2P por WebRTC"), ].iter().cloned().collect(); } diff --git a/src/lang/ptbr.rs b/src/lang/ptbr.rs index 9598eddee..da4fdaae3 100644 --- a/src/lang/ptbr.rs +++ b/src/lang/ptbr.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Velocidade padrão do trackpad"), ("Numeric one-time password", "Senha numérica de uso único"), ("Enable IPv6 P2P connection", "Habilitar conexão IPv6 P2P"), - ("Enable WebRTC P2P connection", "Habilitar conexão WebRTC P2P"), ("Enable UDP hole punching", "Habilitar UDP hole punching"), ("View camera", "Visualizar câmera"), ("Enable camera", "Habilitar câmera"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Habilitar conexão WebRTC P2P"), ].iter().cloned().collect(); } diff --git a/src/lang/ro.rs b/src/lang/ro.rs index b836f9d5a..76dafbaa3 100644 --- a/src/lang/ro.rs +++ b/src/lang/ro.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Viteza implicită a touchpad-ului"), ("Numeric one-time password", "Parolă unică numerică"), ("Enable IPv6 P2P connection", "Activează conexiunea P2P prin IPv6"), - ("Enable WebRTC P2P connection", "Activează conexiunea P2P prin WebRTC"), ("Enable UDP hole punching", "Activează traversarea UDP (hole punching)"), ("View camera", "Vezi camera"), ("Enable camera", "Activează camera"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Activează conexiunea P2P prin WebRTC"), ].iter().cloned().collect(); } diff --git a/src/lang/ru.rs b/src/lang/ru.rs index ba4b8c812..8bbb5aaf4 100644 --- a/src/lang/ru.rs +++ b/src/lang/ru.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Скорость трекпада по умолчанию"), ("Numeric one-time password", "Цифровой одноразовый пароль"), ("Enable IPv6 P2P connection", "Использовать подключение IPv6 P2P"), - ("Enable WebRTC P2P connection", "Использовать подключение WebRTC P2P"), ("Enable UDP hole punching", "Использовать UDP hole punching"), ("View camera", "Просмотр камеры"), ("Enable camera", "Включить камеру"), @@ -759,5 +758,6 @@ 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", "Заблокировать холст"), + ("Enable WebRTC P2P connection", "Использовать подключение WebRTC P2P"), ].iter().cloned().collect(); } diff --git a/src/lang/sc.rs b/src/lang/sc.rs index 01aa3ada4..0df3f5e64 100644 --- a/src/lang/sc.rs +++ b/src/lang/sc.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Velotzidade predefinida de su pannellu tàtile"), ("Numeric one-time password", "Crae numèrica monoimpreu"), ("Enable IPv6 P2P connection", "Abìlita connessione P2P IPv6"), - ("Enable WebRTC P2P connection", "Abìlita connessione P2P WebRTC"), ("Enable UDP hole punching", "Abìlita s'istampadura UDP"), ("View camera", "Mustra sa càmera"), ("Enable camera", "Abìlita sa càmera"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Abìlita connessione P2P WebRTC"), ].iter().cloned().collect(); } diff --git a/src/lang/sk.rs b/src/lang/sk.rs index 117c9f17a..4e32aacc5 100644 --- a/src/lang/sk.rs +++ b/src/lang/sk.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Predvolená rýchlosť touchpadu"), ("Numeric one-time password", "Číselné jednorazové heslo"), ("Enable IPv6 P2P connection", "Povoliť pripojenie IPv6 P2P"), - ("Enable WebRTC P2P connection", "Povoliť pripojenie WebRTC P2P"), ("Enable UDP hole punching", "Povoliť UDP hole punching"), ("View camera", "Zobraziť kameru"), ("Enable camera", "Povoliť kameru"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Povoliť pripojenie WebRTC P2P"), ].iter().cloned().collect(); } diff --git a/src/lang/sl.rs b/src/lang/sl.rs index e843a280c..8e034775c 100644 --- a/src/lang/sl.rs +++ b/src/lang/sl.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Privzeta hitrost sledilne ploščice"), ("Numeric one-time password", "Numerično enkratno geslo"), ("Enable IPv6 P2P connection", "Omogoči povezavo IPv6 P2P"), - ("Enable WebRTC P2P connection", "Omogoči povezavo WebRTC P2P"), ("Enable UDP hole punching", "Omogoči preboj lukenj UDP"), ("View camera", "Pogled kamere"), ("Enable camera", "Omogoči kamero"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Omogoči povezavo WebRTC P2P"), ].iter().cloned().collect(); } diff --git a/src/lang/sq.rs b/src/lang/sq.rs index d6c8ecae6..f428d7d72 100644 --- a/src/lang/sq.rs +++ b/src/lang/sq.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Shpejtësia e parazgjedhur e trackpad-it"), ("Numeric one-time password", "Fjalëkalim numerik një-herë"), ("Enable IPv6 P2P connection", "Aktivizo lidhjen IPv6 P2P"), - ("Enable WebRTC P2P connection", "Aktivizo lidhjen WebRTC P2P"), ("Enable UDP hole punching", "Aktivizo UDP hole punching"), ("View camera", "Shiko kamerën"), ("Enable camera", "Aktivizo kamerën"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Aktivizo lidhjen WebRTC P2P"), ].iter().cloned().collect(); } diff --git a/src/lang/sr.rs b/src/lang/sr.rs index 1747014d1..d14281c18 100644 --- a/src/lang/sr.rs +++ b/src/lang/sr.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Podrazumevana brzina dodirne table"), ("Numeric one-time password", "Numerička jednokratna lozinka"), ("Enable IPv6 P2P connection", "Omogući IPv6 P2P konekciju"), - ("Enable WebRTC P2P connection", "Omogući WebRTC P2P konekciju"), ("Enable UDP hole punching", "Omogući UDP hole punching"), ("View camera", "Pregled kamere"), ("Enable camera", "Omogući kameru"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Omogući WebRTC P2P konekciju"), ].iter().cloned().collect(); } diff --git a/src/lang/sv.rs b/src/lang/sv.rs index 6a40cfe3a..ebb7a310b 100644 --- a/src/lang/sv.rs +++ b/src/lang/sv.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Standardhastighet för styrplattan"), ("Numeric one-time password", "Numeriskt engångslösenord"), ("Enable IPv6 P2P connection", "Aktivera IPv6 P2P anslutning"), - ("Enable WebRTC P2P connection", "Aktivera WebRTC P2P anslutning"), ("Enable UDP hole punching", "Aktivera UDP hålslagning"), ("View camera", "Visa kamera"), ("Enable camera", "Aktivera kamera"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Aktivera WebRTC P2P anslutning"), ].iter().cloned().collect(); } diff --git a/src/lang/ta.rs b/src/lang/ta.rs index 01999454c..1914aa6ab 100644 --- a/src/lang/ta.rs +++ b/src/lang/ta.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "இயல்புநிலை டிராக்பேட் வேகம்"), ("Numeric one-time password", "எண் ஒருமுறை கடவுச்சொல்"), ("Enable IPv6 P2P connection", "IPv6 P2P இணைப்பு இயக்கு"), - ("Enable WebRTC P2P connection", "WebRTC P2P இணைப்பு இயக்கு"), ("Enable UDP hole punching", "UDP hole punching இயக்கு"), ("View camera", "கேமரா பார்"), ("Enable camera", "கேமரா இயக்கு"), @@ -759,5 +758,6 @@ 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", "கேன்வாஸைப் பூட்டு"), + ("Enable WebRTC P2P connection", "WebRTC P2P இணைப்பு இயக்கு"), ].iter().cloned().collect(); } diff --git a/src/lang/template.rs b/src/lang/template.rs index fbb768e3f..27fa1ee21 100644 --- a/src/lang/template.rs +++ b/src/lang/template.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", ""), ("Numeric one-time password", ""), ("Enable IPv6 P2P connection", ""), - ("Enable WebRTC P2P connection", ""), ("Enable UDP hole punching", ""), ("View camera", ""), ("Enable camera", ""), @@ -759,5 +758,6 @@ 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", ""), + ("Enable WebRTC P2P connection", ""), ].iter().cloned().collect(); } diff --git a/src/lang/th.rs b/src/lang/th.rs index 5b86bc7f6..8802b6fbf 100644 --- a/src/lang/th.rs +++ b/src/lang/th.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "ความเร็วแทร็กแพดเริ่มต้น"), ("Numeric one-time password", "รหัสผ่านครั้งเดียวแบบตัวเลข"), ("Enable IPv6 P2P connection", "เปิดใช้งานการเชื่อมต่อ P2P แบบ IPv6"), - ("Enable WebRTC P2P connection", "เปิดใช้งานการเชื่อมต่อ P2P แบบ WebRTC"), ("Enable UDP hole punching", "เปิดใช้งาน UDP hole punching"), ("View camera", "ดูกล้อง"), ("Enable camera", "เปิดใช้งานกล้อง"), @@ -759,5 +758,6 @@ 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", "ล็อคแคนวาส"), + ("Enable WebRTC P2P connection", "เปิดใช้งานการเชื่อมต่อ P2P แบบ WebRTC"), ].iter().cloned().collect(); } diff --git a/src/lang/tr.rs b/src/lang/tr.rs index 6e88eac8f..8a5a6d1ea 100644 --- a/src/lang/tr.rs +++ b/src/lang/tr.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Varsayılan izleme paneli hızı"), ("Numeric one-time password", "Sayısal tek seferlik parola"), ("Enable IPv6 P2P connection", "IPv6 P2P bağlantısını etkinleştir"), - ("Enable WebRTC P2P connection", "WebRTC P2P bağlantısını etkinleştir"), ("Enable UDP hole punching", "UDP delik açmayı etkinleştir"), ("View camera", "Kamerayı görüntüle"), ("Enable camera", "Kamerayı etkinleştir"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "WebRTC P2P bağlantısını etkinleştir"), ].iter().cloned().collect(); } diff --git a/src/lang/tw.rs b/src/lang/tw.rs index 2ab8c9757..b4d37d9a6 100644 --- a/src/lang/tw.rs +++ b/src/lang/tw.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "預設觸控板速度"), ("Numeric one-time password", "數字一次性密碼"), ("Enable IPv6 P2P connection", "啟用 IPv6 P2P 連線"), - ("Enable WebRTC P2P connection", "啟用 WebRTC P2P 連線"), ("Enable UDP hole punching", "啟用 UDP 打洞"), ("View camera", "檢視相機"), ("Enable camera", "允許查看鏡頭"), @@ -759,5 +758,6 @@ 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", "鎖定畫布"), + ("Enable WebRTC P2P connection", "啟用 WebRTC P2P 連線"), ].iter().cloned().collect(); } diff --git a/src/lang/uk.rs b/src/lang/uk.rs index 8c82cbae2..2fbf18f04 100644 --- a/src/lang/uk.rs +++ b/src/lang/uk.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Швидкість тачпада за замовчуванням"), ("Numeric one-time password", "Числовий одноразовий пароль"), ("Enable IPv6 P2P connection", "Увімкнути P2P-підключення через IPv6"), - ("Enable WebRTC P2P connection", "Увімкнути P2P-підключення через WebRTC"), ("Enable UDP hole punching", "Увімкнути UDP hole punching"), ("View camera", "Перегляд камери"), ("Enable camera", "Увімкнути камеру"), @@ -759,5 +758,6 @@ 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", "Блокування полотна"), + ("Enable WebRTC P2P connection", "Увімкнути P2P-підключення через WebRTC"), ].iter().cloned().collect(); } diff --git a/src/lang/vi.rs b/src/lang/vi.rs index 2d5d7ad99..352113817 100644 --- a/src/lang/vi.rs +++ b/src/lang/vi.rs @@ -673,7 +673,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Default trackpad speed", "Tốc độ Trackpad mặc định"), ("Numeric one-time password", "Mật khẩu số dùng một lần"), ("Enable IPv6 P2P connection", "Cho phép kết nối IPv6 P2P"), - ("Enable WebRTC P2P connection", "Cho phép kết nối WebRTC P2P"), ("Enable UDP hole punching", "Bật UDP Hole Punching"), ("View camera", "Xem Camera"), ("Enable camera", "Bật Camera"), @@ -759,5 +758,6 @@ 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"), + ("Enable WebRTC P2P connection", "Cho phép kết nối WebRTC P2P"), ].iter().cloned().collect(); }