mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-09-18 02:10:59 +03:00
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) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ExUfAkYbq8UC9pQCiLy8TQ
This commit is contained in:
Submodule libs/hbb_common updated: 5897012949...1f8463d720
189
src/client.rs
189
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<WebRTCStream>);
|
||||
|
||||
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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user