mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-09-19 02:41:10 +03:00
* hbb_common: bump to the port-forward-mux proto Also latches PortForward.multiplex into login_scope_digest, which destructures PortForward's fields exhaustively by design (a new field must be latched or deliberately ignored to compile). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port_forward_mux: window accounting and channel frame builders Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port_forward_mux: fix RecvWindow counter overflow on long transfers Replace cumulative accounting (granted/received) with remaining credit tracking to prevent u32 overflow after 4 GiB of data on a single channel. Wire behavior is identical, but the fix allows large file transfers without mid-stream channel closure. Add regression test for 8 GiB transfer to verify fix. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port_forward_mux: credit-windowed relay halves and channel coordinator Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * server: PortForwardMux channel table and per-channel tasks Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * server: multiplexed port-forward connections stay in the protobuf loop Wire PortForwardMux into Connection: take the multiplexed path at login when the controller sets PortForward.multiplex, route PortForwardChannel frames to it from on_message, sweep the channel table's targets after open/close, and clean it up on connection close. Introduce is_port_forward() (socket-based or multiplexed) and use it at the four sites that classify the connection, so a multiplexed connection stays in the message loop, gets TestDelay keepalives, and reports features.port_forward_mux in PeerInfo. The three sites that break into the raw pipe loop or gate the keepalive still check port_forward_socket specifically, since a multiplexed connection must not take that path. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * cm: update a port-forward row's targets as tunnel channels come and go Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port_forward_mux: controller tunnel with a single-writer stream loop Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port_forward_mux: publish Muxed before spawning the tunnel loop Publishing after spawn let a loop that dies immediately reset the state first, so the later publish pinned it at Muxed with a dead handle forever. Also adds a test pinning open-before-data ordering across many concurrently opened channels, and drops an unused Clone derive. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: share one multiplexed tunnel across a window's listeners Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: fix round 1 review findings Drop the mux default-false assignment now that definite-assignment proves every path that reads it has set it; the enable-port-forward-mux config commit picks up the missing attribution trailers; the default-on test pins the enable- prefix itself rather than option2bool's weaker fallback. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port_forward_mux: end-to-end tests over a loopback tunnel Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port_forward_mux: fix bulk test's premature half-close, pin the half-close limitation many_channels_echo_concurrently_and_a_bulk_one_does_not_starve_them dropped its bulk write half as soon as writing finished, which shuts down the write side of the socket and, by design (see the design doc's TCP half-close non-goal; today's run_forward does the same), ends the whole channel. Keep the write half alive until the reader is done so the test measures starvation, not half-close. Add a_local_half_close_ends_the_whole_channel to pin that limitation in code. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port_forward_mux: cap send credit and other final review fixes Fix 1 (critical): clamp SendCredit to MAX_SEND_CREDIT (= CHANNEL_WINDOW) in both new() and add(), so a peer with tunnel permission can no longer advertise an unbounded window and force the controlled side's unbounded FrameSink::Direct sink to buffer unlimited target data per channel. Fix 2: rename the "starve" test to many_channels_echo_concurrently and drop its (untrue) starvation claim, since it opens every channel before the bulk transfer starts. Add a_channel_opened_during_a_bulk_transfer_ is_served_promptly, which opens the small channel while the bulk one is demonstrably mid-flight. Fix 3: only look up the tunnel permission for `open` frames in the PortForwardChannel arm of on_message, instead of once per data frame. Fix 4: two rustfmt deviations in connection.rs (matches! wrapping and a tuple literal), fixed by hand without a blanket cargo fmt run. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port_forward_mux: report a refused channel's reason as an error dialog The controlled side already answers a refused port-forward channel with opened { success: false, message }; on the multiplexed path TunnelHandle:: on_frame only logged that message at debug and closed the channel, so the user saw a closed connection with no explanation, worst on the RDP path where only the RDP client's own error remained. on_frame now returns the message the window should show, deduplicated per distinct reason (capped at MAX_REPORTED_OPEN_ERRORS) so one page load's dozen refused connections surface one dialog per reason instead of a dozen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * Use on_error for refused-channel dialog in tunnel_loop Redirect the refused-channel error through the standard on_error path instead of calling msgbox directly, for consistency with other errors in the port-forward flow. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: apply the whole-branch review Correctness: - listen(): the Legacy arm is merged with the Claimed arm. On its own it ignored outcome.local_eof, so a client that hung up during login still got a target connect, an audit record and a CM row on the controlled side, and ignored outcome.mux, so a peer upgraded while a legacy window stayed open answered as a tunnel while the controller went raw. - Refusal dialogs are deduplicated per quiet spell (10 s) rather than per tunnel lifetime; the lifetime set went silent for the rest of a long-lived window after the first burst. - Android's CM listener handles UpdatePortForward; it fell into `_ => {}`. - relay_socket_to_tunnel reads into one scratch buffer per channel and sends an exact-size copy. A frame owning its 64 KiB read allocation pinned it until sent, once per byte on interactive traffic. Consistency and cleanups: - The controlled side's refusal text is the raw pipe's wording, RDP substitution included. - connection.rs: the PortForwardChannel arm is a one-line hook, the CM label is pushed from the 1 s tick alone, and the unreachable inner.tx fall-through is gone. - The Ready enum is removed; wait_ready() returns Option<Claim>. - SendCredit::add wakes with notify_one alone. - on_ui_command() replaces the two ui_receiver handlers in listen(). - TunnelHandle is no longer re-exported (unused-import warning). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: a legacy window stays legacy until it is reopened Review: the merged `Claimed | Legacy` arm gave a legacy window a hot transition to a tunnel — every accept re-negotiated, and a peer upgraded while the window stayed open was promoted underneath live connections. The product does not need a mode switch inside a window's lifetime, and the transition was extra state-machine surface for nothing: reopening the window picks up an upgraded peer. The two arms are separate again. `Claimed` negotiates once and the peer's answer fixes the window's mode. `Legacy` logs in for every accept as before, asks for no tunnel — `LoginConfigHandler::port_forward_mux` carries the request per login, so the raw pipe never has to talk to a peer that thinks it agreed to multiplex — and ignores what the peer reports. Both arms keep skipping a local socket that hung up during login. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * hbb_common: bump to main with rustdesk/hbb_common#594 merged Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * server: admit only INITIAL_WINDOW on a channel before opened The demultiplexer accepted CHANNEL_WINDOW into a pending channel's unbounded queue, four times the bound the channel task enforces once it polls. The window now starts at INITIAL_WINDOW and is widened right before `opened` advertises the rest. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port_forward_mux: a tunnel ends when its window drops the Tunnel The loop held its own handle and state sender, so once the window closed nothing was left to stop it: it kept answering TestDelay and the peer connection, CM row included, lived on until the peer went away. `Tunnel` now owns a watch sender nobody sends on; the loop's receiver errors when the last `Tunnel` drops, and the loop ends. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: one tunnel per mapping, bound to the authenticated target The login latches `PortForward.host`/`port` into the session scope and approval is shown that target, but a window-wide tunnel let any later `open` name another target with only `enable-tunnel` rechecked. A tunnel now belongs to one listener and serves the one target its login authenticated: the controlled side refuses an `open` for any other target, and a window with several targets uses one connection each, approved on its own. With one owner per tunnel the claim needs no waiters: `Establishing`, `Claim::Wait` and `wait_ready` go, and `try_claim` becomes a plain read. The CM label that followed a tunnel's targets goes with them; a row shows its mapping's target, as before. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: the legacy comment names the mapping, not the window Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port_forward_mux: a window violation drops the channel on the spot Both demultiplexers only queued a `Violation` and left the entry until the channel task woke and exited, so a peer that kept sending past the window queued one more entry per frame in the meantime, bounded by nothing. The entry now goes the moment `accept` fails; later frames for that id are unknown-channel noise. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: the login's target travels with the accept, not the handler `listen()` wrote `lc.port_forward` (and, on this branch, `port_forward_mux`) into the window's shared `LoginConfigHandler` before connecting, and `create_login_msg` read them back only when the peer's `Hash` arrived. Two mappings logging in at the same time could therefore swap targets: on master that bridged a local socket to the wrong target, and with a tunnel bound to its login's target it also left the mapping refusing every later accept until it was recreated. The target is now a `PortForward` carried by the interface clone that handles one accept, passed explicitly down to `create_login_msg`; the handler no longer has a field to race on. No lock spans the login. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port_forward_mux: pin permission revocation and whole-tunnel failure in tests Both already hold; the review asked for them to be stated. `enable-tunnel` turned off mid-session refuses the next `open` while the live channel keeps relaying, and a dead tunnel ends every channel on it together, after which the next accept establishes again on the same `Tunnel`. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: the legacy comment names re-adding the mapping only Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: the raw pipe runs the code it always ran The multiplexed login had replaced `connect_and_login`, so a mapping with the setting off, a peer without the feature, or a listener latched `Legacy` still went through the tunnel's state machine, the capped pre-read and the changed local-EOF rule. Feature off now means the old code: `listen()` keeps its accept arm and `connect_and_login` as they were, and the tunnel is a branch taken only when the setting is on, in `establish_tunnel` with its own `connect_and_login_mux`. The one line the raw path does differently is the target riding with the accept's interface clone instead of the shared handler. `get_port_forward_mux_enabled` had one caller and moves in here, so `common.rs` is untouched. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: a UI login answers the challenge its own connection was given `handle_login_from_ui` hashed the typed password against `lc.hash`, the window's shared handler field, and the window's password prompt is broadcast to every listener. With two mappings both waiting on that prompt, the `Hash` that arrived last had overwritten the other's, so one of the two answered the wrong challenge and failed to log in. Master shares the same state and broadcasts the same way. The `Hash` is now a parameter of the login; `Session` keeps it beside the connection it belongs to, and the per-accept clone that `with_port_forward` makes gets a slot of its own. `lc.hash` stays for `handle_peer_info`, which only needs the salt, and that is per peer. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: a mapping without its hash waits for it before answering the prompt The window's password prompt is broadcast to every mapping, and can reach one whose own connection has not received its `Hash` yet. That mapping used to answer anyway, with a digest over an empty challenge: the peer refused it and counted a failed attempt, and the empty-salt result was written into the shared `lc.password`, where the mapping that prompted had just stored the right one and the next `handle_peer_info` would persist whatever was there. The connection's challenge is now `Option<Hash>`, `None` until `handle_hash` runs, and `handle_login_from_ui` sends nothing without it. The mapping that prompted stores the salted password in the shared handler, and the waiting one logs in with that against its own challenge when its `Hash` arrives, without prompting again. Test: A answers its prompt, the same broadcast reaches B before its hash, B sends nothing, B's hash arrives and its login carries B's challenge and B's target with no dialog. It runs the real `handle_hash` for B. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: the tunnel's login is the raw pipe's, asked for by a window flag Master's fix for the shared login slots (#16069) keeps the target and the challenge in the window's `LoginConfigHandler` and serializes the mappings' logins with a turn lock, all inside `port_forward.rs`. This branch had carried a broader shape of the same fix, a `with_port_forward` on `Interface` and the target and `Hash` as parameters through the login functions, which every caller had to follow. That is gone: `Interface`, `Session`, `create_login_msg`, `send_login`, `handle_hash` and `handle_login_from_ui` are as on master. What the tunnel needs on top is one bit in the login, `multiplex`. It is a window flag beside `port_forward` in the handler, set once in `io_loop` before the window's mappings start, so an accept's claim and its login read the same value; the setting takes effect for windows opened after it changes. `connect_and_login_mux` is now master's `connect_and_login` with the tunnel's three differences and the same `hash_arrived` and `login_from_ui` calls. The raw pipe is master's, line for line. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * hbb_common: bump to main with rustdesk/hbb_common#595 merged 840c8ec..f94e3fe is that one merge: the five local settings custom clients could not preset. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: the off switch gets a checkbox in Settings → General `enable-port-forward-mux` was readable only by editing the config file. It is a local setting of the controlling side, so it sits with the other outgoing ones, after "Open connection in new tab", with a tooltip saying what it does. The two new keys are translated in every language. The three that the mobile file manager added, "Export", "Export Logs" and "Import Folder", were empty everywhere but five languages; they are filled in too, and Korean's "xdp-portal-unavailable" with them. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * Urdu: fill the backlog of empty and missing translations ur.rs had fallen behind: 104 keys carried an empty value and 35 keys the other languages have were absent altogether. Both are filled in, the missing ones in the order template.rs lists them. Eight entries stay empty on purpose. They are keys that only ur.rs still carries, absent from template.rs and from every other language, so their English source cannot be recovered and nothing reads them: remember_account_tip, os_account_desk_tip, another_user_login_*_tip, xorg_not_found_*_tip and no_desktop_*_tip. Twelve more dead keys keep the values they have; removing either group is a separate decision. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * Urdu: drop the keys template.rs no longer lists The twenty keys removed here are absent from template.rs and from every other language file; ur.rs was the only one still carrying them, eight of them with no value at all. They are leftovers of features that are gone: the plugin menu, the OS-account login prompts, the Xorg and no-desktop errors. ur.rs now holds exactly the template's key set, all of it translated. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: closing the tunnel reaches channels parked on their socket A channel whose far end neither reads nor writes has both relays parked on the socket, not on the inbound queue, so `close_all` dropping the queue's sender woke neither: the socket and both tasks lived on until the far end hung up. Both sides now hold a per-tunnel teardown signal that `run_channel` selects on beside its own cancel, and `close_all` sends it after clearing the map. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: a mapping latched to the raw pipe logs in without asking for the tunnel The login copied the window's `port_forward_mux` into `multiplex`, so a mapping that had latched to the raw pipe on an old peer kept asking for the tunnel. Once that peer was upgraded it answered with a tunnel while the controller switched to raw framing, and every later connection on the mapping was dead until it was re-added. The login now carries its own `port_forward_multiplex`, filled with the target under the turn lock: the probe asks, the raw pipe does not. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: a channel opened as its tunnel closes still gets the teardown `open` can straddle `close_all`: the claim passed, the frame receiver was still alive, and the channel subscribed after the signal had gone out. `watch::subscribe` marks earlier sends as seen, and the entry sits in a map that was already cleared, so nothing would ever end it. The signal is now a level: `close_all` raises it with `send_replace`, which stores even with no channel live, and `run_channel` waits for the value rather than for a change. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: the connect guard counts a live tunnel as connected `connect_port_forward_if_needed` returned early only for a raw-pipe socket; called again with a tunnel up it would have built a second `PortForwardMux` and dropped every channel of the first. Not reachable today, since the logon response is sent once, but the other checks in this change already read `is_port_forward()`. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * Urdu: the two terminal clipboard keys master added Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: a tunnel's TCP stream refuses packets over twice MAX_FRAME The codec takes a header declaring up to 1 GiB and hands the packet up only once it has all arrived, so the channel window bounded what the peer may send, not what this side buffers. Both sides now cap the codec at 2 * MAX_FRAME as soon as multiplexing is agreed: a data frame with its envelope and MAC fits with room to spare, and a header over the cap ends the tunnel before a byte of payload is read. TCP only; the WebSocket and WebRTC codecs carry caps of their own. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab * port forward: a channel id still live when the counter comes round is skipped The controller handed out `next_id` unchecked. 2^32 opens later it lands on a channel still up: the entry here was replaced, while the peer, which ignores an `open` for a live id, kept routing that id to the old socket, so the new local connection's bytes went into the old target connection. The id is now taken under the map's lock and advanced past any id in use. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
773 lines
72 KiB
Rust
773 lines
72 KiB
Rust
lazy_static::lazy_static! {
|
|
pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|
[
|
|
("Status", "स्थिति"),
|
|
("Your Desktop", "आपका डेस्कटॉप"),
|
|
("desk_tip", "आपका डेस्कटॉप इस आईडी और पासवर्ड से एक्सेस किया जा सकता है।"),
|
|
("Password", "पासवर्ड"),
|
|
("Ready", "तैयार"),
|
|
("Established", "स्थापित"),
|
|
("connecting_status", "नेटवर्क से जुड़ रहा है..."),
|
|
("Enable service", "सेवा सक्षम करें"),
|
|
("Start service", "सेवा शुरू करें"),
|
|
("Service is running", "सेवा चल रही है"),
|
|
("Service is not running", "सेवा नहीं चल रही है"),
|
|
("not_ready_status", "तैयार नहीं। कृपया अपना कनेक्शन जांचें"),
|
|
("Control Remote Desktop", "रिमोट डेस्कटॉप नियंत्रित करें"),
|
|
("Transfer file", "फ़ाइल स्थानांतरण"),
|
|
("Connect", "जुड़ें"),
|
|
("Recent sessions", "हाल के सत्र"),
|
|
("Address book", "पता पुस्तिका"),
|
|
("Confirmation", "पुष्टि"),
|
|
("TCP tunneling", "TCP टनलिंग"),
|
|
("Remove", "हटाएं"),
|
|
("Refresh random password", "यादृच्छिक (Random) पासवर्ड बदलें"),
|
|
("Set your own password", "अपना पासवर्ड सेट करें"),
|
|
("Enable keyboard/mouse", "कीबोर्ड/माउस सक्षम करें"),
|
|
("Enable clipboard", "क्लिपबोर्ड सक्षम करें"),
|
|
("Enable file transfer", "फ़ाइल स्थानांतरण सक्षम करें"),
|
|
("Enable TCP tunneling", "TCP टनलिंग सक्षम करें"),
|
|
("IP Whitelisting", "IP श्वेतसूची (Whitelisting)"),
|
|
("ID/Relay Server", "ID/रिले सर्वर"),
|
|
("Import server config", "सर्वर कॉन्फ़िगरेशन इम्पोर्ट करें"),
|
|
("Export Server Config", "सर्वर कॉन्फ़िगरेशन एक्सपोर्ट करें"),
|
|
("Import server configuration successfully", "सर्वर कॉन्फ़िगरेशन सफलतापूर्वक इम्पोर्ट किया गया"),
|
|
("Export server configuration successfully", "सर्वर कॉन्फ़िगरेशन सफलतापूर्वक एक्सपोर्ट किया गया"),
|
|
("Invalid server configuration", "अमान्य सर्वर कॉन्फ़िगरेशन"),
|
|
("Clipboard is empty", "क्लिपबोर्ड खाली है"),
|
|
("Stop service", "सेवा रोकें"),
|
|
("Change ID", "ID बदलें"),
|
|
("Your new ID", "आपकी नई ID"),
|
|
("length %min% to %max%", "लंबाई %min% से %max% तक"),
|
|
("starts with a letter", "एक अक्षर से शुरू होता है"),
|
|
("allowed characters", "अनुमत अक्षर"),
|
|
("id_change_tip", "ID बदलने के बाद वर्तमान कनेक्शन टूट जाएगा।"),
|
|
("Website", "वेबसाइट"),
|
|
("About", "के बारे में"),
|
|
("Slogan_tip", "बेहतर अनुभव के लिए बनाया गया रिमोट डेस्कटॉप सॉफ़्टवेयर"),
|
|
("Privacy Statement", "गोपनीयता कथन"),
|
|
("Mute", "म्यूट करें"),
|
|
("Build Date", "निर्माण तिथि"),
|
|
("Version", "संस्करण"),
|
|
("Home", "होम"),
|
|
("Audio Input", "ऑडियो इनपुट"),
|
|
("Enhancements", "वृद्धि (Enhancements)"),
|
|
("Hardware Codec", "हार्डवेयर कोडेक"),
|
|
("Adaptive bitrate", "अनुकूली (Adaptive) बिटरेट"),
|
|
("ID Server", "ID सर्वर"),
|
|
("Relay Server", "रिले सर्वर"),
|
|
("API Server", "API सर्वर"),
|
|
("invalid_http", "अमान्य HTTP लिंक"),
|
|
("Invalid IP", "अमान्य IP"),
|
|
("Invalid format", "अमान्य प्रारूप"),
|
|
("server_not_support", "सर्वर द्वारा समर्थित नहीं"),
|
|
("Not available", "उपलब्ध नहीं"),
|
|
("Too frequent", "बहुत बार-बार"),
|
|
("Cancel", "रद्द करें"),
|
|
("Skip", "छोड़ें"),
|
|
("Close", "बंद करें"),
|
|
("Retry", "पुनः प्रयास करें"),
|
|
("OK", "ठीक है"),
|
|
("Password Required", "पासवर्ड आवश्यक है"),
|
|
("Please enter your password", "कृपया अपना पासवर्ड दर्ज करें"),
|
|
("Remember password", "पासवर्ड याद रखें"),
|
|
("Wrong Password", "गलत पासवर्ड"),
|
|
("Do you want to enter again?", "क्या आप दोबारा दर्ज करना चाहते हैं?"),
|
|
("Connection Error", "कनेक्शन त्रुटि"),
|
|
("Error", "त्रुटि"),
|
|
("Reset by the peer", "दूसरे सिस्टम द्वारा रिसेट किया गया"),
|
|
("Connecting...", "जुड़ रहा है..."),
|
|
("Connection in progress. Please wait.", "कनेक्शन जारी है। कृपया प्रतीक्षा करें।"),
|
|
("Please try 1 minute later", "कृपया 1 मिनट बाद पुनः प्रयास करें"),
|
|
("Login Error", "लॉगिन त्रुटि"),
|
|
("Successful", "सफल"),
|
|
("Connected, waiting for image...", "जुड़ गया, इमेज की प्रतीक्षा कर रहा है..."),
|
|
("Name", "नाम"),
|
|
("Type", "प्रकार"),
|
|
("Modified", "संशोधित"),
|
|
("Size", "आकार"),
|
|
("Show Hidden Files", "छिपी हुई फाइलें दिखाएं"),
|
|
("Receive", "प्राप्त करें"),
|
|
("Send", "भेजें"),
|
|
("Refresh File", "फ़ाइल रिफ्रेश करें"),
|
|
("Local", "स्थानीय (Local)"),
|
|
("Remote", "रिमोट"),
|
|
("Remote Computer", "रिमोट कंप्यूटर"),
|
|
("Local Computer", "स्थानीय कंप्यूटर"),
|
|
("Confirm Delete", "हटाने की पुष्टि करें"),
|
|
("Delete", "हटाएं"),
|
|
("Properties", "गुण (Properties)"),
|
|
("Multi Select", "बहु-चयन"),
|
|
("Select All", "सभी चुनें"),
|
|
("Unselect All", "सभी अचयनित करें"),
|
|
("Empty Directory", "खाली निर्देशिका"),
|
|
("Not an empty directory", "निर्देशिका खाली नहीं है"),
|
|
("Are you sure you want to delete this file?", "क्या आप वाकई इस फ़ाइल को हटाना चाहते हैं?"),
|
|
("Are you sure you want to delete this empty directory?", "क्या आप वाकई इस खाली निर्देशिका को हटाना चाहते हैं?"),
|
|
("Are you sure you want to delete the file of this directory?", "क्या आप वाकई इस निर्देशिका की फ़ाइल को हटाना चाहते हैं?"),
|
|
("Do this for all conflicts", "सभी विवादों के लिए यह करें"),
|
|
("This is irreversible!", "इसे वापस नहीं लिया जा सकता!"),
|
|
("Deleting", "हटाया जा रहा है"),
|
|
("files", "फाइलें"),
|
|
("Waiting", "प्रतीक्षा कर रहा है"),
|
|
("Finished", "पूरा हुआ"),
|
|
("Speed", "गति"),
|
|
("Custom Image Quality", "कस्टम इमेज गुणवत्ता"),
|
|
("Privacy mode", "गोपनीयता मोड"),
|
|
("Block user input", "उपयोगकर्ता इनपुट ब्लॉक करें"),
|
|
("Unblock user input", "उपयोगकर्ता इनपुट अनब्लॉक करें"),
|
|
("Adjust Window", "विंडो समायोजित करें"),
|
|
("Original", "मूल (Original)"),
|
|
("Shrink", "सिकुड़ें"),
|
|
("Stretch", "खिंचाव (Stretch)"),
|
|
("Scrollbar", "स्क्रोलबार"),
|
|
("ScrollAuto", "ऑटो स्क्रॉल"),
|
|
("Good image quality", "अच्छी इमेज गुणवत्ता"),
|
|
("Balanced", "संतुलित"),
|
|
("Optimize reaction time", "प्रतिक्रिया समय अनुकूलित करें"),
|
|
("Custom", "कस्टम"),
|
|
("Show remote cursor", "रिमोट कर्सर दिखाएं"),
|
|
("Show quality monitor", "गुणवत्ता मॉनिटर दिखाएं"),
|
|
("Disable clipboard", "क्लिपबोर्ड अक्षम करें"),
|
|
("Lock after session end", "सत्र समाप्त होने के बाद लॉक करें"),
|
|
("Insert Ctrl + Alt + Del", "Ctrl + Alt + Del डालें"),
|
|
("Insert Lock", "लॉक डालें"),
|
|
("Refresh", "रिफ्रेश करें"),
|
|
("ID does not exist", "ID मौजूद नहीं है"),
|
|
("Failed to connect to rendezvous server", "Rendezvous सर्वर से जुड़ने में विफल"),
|
|
("Please try later", "कृपया बाद में प्रयास करें"),
|
|
("Remote desktop is offline", "रिमोट डेस्कटॉप ऑफ़लाइन है"),
|
|
("Key mismatch", "कुंजी बेमेल (Key mismatch)"),
|
|
("Timeout", "समय समाप्त"),
|
|
("Failed to connect to relay server", "रिले सर्वर से जुड़ने में विफल"),
|
|
("Failed to connect via rendezvous server", "Rendezvous सर्वर के माध्यम से जुड़ने में विफल"),
|
|
("Failed to connect via relay server", "रिले सर्वर के माध्यम से जुड़ने में विफल"),
|
|
("Failed to make direct connection to remote desktop", "रिमोट डेस्कटॉप से सीधा कनेक्शन बनाने में विफल"),
|
|
("Set Password", "पासवर्ड सेट करें"),
|
|
("OS Password", "OS पासवर्ड"),
|
|
("install_tip", "सर्वोत्तम प्रदर्शन के लिए, इसे इंस्टॉल करें।"),
|
|
("Click to upgrade", "अपग्रेड करने के लिए क्लिक करें"),
|
|
("Configure", "कॉन्फ़िगर करें"),
|
|
("config_acc", "एक्सेसिबिलिटी कॉन्फ़िगर करें"),
|
|
("config_screen", "स्क्रीन कॉन्फ़िगर करें"),
|
|
("Installing ...", "इंस्टॉल हो रहा है..."),
|
|
("Install", "इंस्टॉल करें"),
|
|
("Installation", "इंस्टॉलेशन"),
|
|
("Installation Path", "इंस्टॉलेशन पाथ"),
|
|
("Create start menu shortcuts", "स्टार्ट मेनू शॉर्टकट बनाएं"),
|
|
("Create desktop icon", "डेस्कटॉप आइकन बनाएं"),
|
|
("agreement_tip", "इंस्टॉल करके आप लाइसेंस समझौते को स्वीकार करते हैं।"),
|
|
("Accept and Install", "स्वीकार करें और इंस्टॉल करें"),
|
|
("End-user license agreement", "अंतिम उपयोगकर्ता लाइसेंस समझौता"),
|
|
("Generating ...", "बनाया जा रहा है..."),
|
|
("Your installation is lower version.", "आपका वर्तमान इंस्टॉलेशन पुराना संस्करण है।"),
|
|
("not_close_tcp_tip", "टनल का उपयोग करते समय इस विंडो को बंद न करें।"),
|
|
("Listening ...", "सुन रहा है (Listening)..."),
|
|
("Remote Host", "रिमोट होस्ट"),
|
|
("Remote Port", "रिमोट पोर्ट"),
|
|
("Action", "कार्य"),
|
|
("Add", "जोड़ें"),
|
|
("Local Port", "स्थानीय पोर्ट"),
|
|
("Local Address", "स्थानीय पता"),
|
|
("Change Local Port", "स्थानीय पोर्ट बदलें"),
|
|
("setup_server_tip", "तेज़ कनेक्शन के लिए अपना खुद का सर्वर सेटअप करें"),
|
|
("Too short, at least 6 characters.", "बहुत छोटा, कम से कम 6 अक्षर होने चाहिए।"),
|
|
("The confirmation is not identical.", "पुष्टि समान नहीं है।"),
|
|
("Permissions", "अनुमतियाँ"),
|
|
("Accept", "स्वीकार करें"),
|
|
("Dismiss", "खारिज करें"),
|
|
("Disconnect", "डिस्कनेक्ट करें"),
|
|
("Enable file copy and paste", "फ़ाइल कॉपी और पेस्ट सक्षम करें"),
|
|
("Connected", "जुड़ गया"),
|
|
("Direct and encrypted connection", "सीधा और एन्क्रिप्टेड कनेक्शन"),
|
|
("Relayed and encrypted connection", "रिले और एन्क्रिप्टेड कनेक्शन"),
|
|
("Direct and unencrypted connection", "सीधा और अनएन्क्रिप्टेड कनेक्शन"),
|
|
("Relayed and unencrypted connection", "रिले और अनएन्क्रिप्टेड कनेक्शन"),
|
|
("Enter Remote ID", "रिमोट ID दर्ज करें"),
|
|
("Enter your password", "अपना पासवर्ड दर्ज करें"),
|
|
("Logging in...", "लॉग इन हो रहा है..."),
|
|
("Enable RDP session sharing", "RDP सत्र साझाकरण सक्षम करें"),
|
|
("Auto Login", "ऑटो लॉगिन"),
|
|
("Enable direct IP access", "सीधी IP पहुंच सक्षम करें"),
|
|
("Rename", "नाम बदलें"),
|
|
("Space", "स्थान (Space)"),
|
|
("Create desktop shortcut", "डेस्कटॉप शॉर्टकट बनाएं"),
|
|
("Change Path", "पाथ बदलें"),
|
|
("Create Folder", "फ़ोल्डर बनाएं"),
|
|
("Please enter the folder name", "कृपया फ़ोल्डर का नाम दर्ज करें"),
|
|
("Fix it", "इसे ठीक करें"),
|
|
("Warning", "चेतावनी"),
|
|
("Login screen using Wayland is not supported", "Wayland का उपयोग करने वाली लॉगिन स्क्रीन समर्थित नहीं है"),
|
|
("Reboot required", "रीबूट आवश्यक है"),
|
|
("Unsupported display server", "असमर्थित डिस्प्ले सर्वर"),
|
|
("x11 expected", "x11 अपेक्षित है"),
|
|
("Port", "पोर्ट"),
|
|
("Settings", "सेटिंग्स"),
|
|
("Username", "उपयोगकर्ता नाम"),
|
|
("Invalid port", "अमान्य पोर्ट"),
|
|
("Closed manually by the peer", "दूसरे सिस्टम द्वारा मैन्युअल रूप से बंद किया गया"),
|
|
("Enable remote configuration modification", "रिमोट कॉन्फ़िगरेशन संशोधन सक्षम करें"),
|
|
("Run without install", "बिना इंस्टॉल किए चलाएं"),
|
|
("Connect via relay", "रिले के माध्यम से जुड़ें"),
|
|
("Always connect via relay", "हमेशा रिले के माध्यम से जुड़ें"),
|
|
("whitelist_tip", "केवल श्वेतसूचीबद्ध IP ही मुझ तक पहुंच सकते हैं"),
|
|
("Login", "लॉगिन"),
|
|
("Verify", "सत्यापित करें"),
|
|
("Remember me", "मुझे याद रखें"),
|
|
("Trust this device", "इस डिवाइस पर भरोसा करें"),
|
|
("Verification code", "सत्यापन कोड"),
|
|
("verification_tip", "एक सत्यापन कोड आपके ईमेल पर भेजा गया है"),
|
|
("Logout", "लॉगआउट"),
|
|
("Tags", "टैग"),
|
|
("Search ID", "ID खोजें"),
|
|
("whitelist_sep", "अल्पविराम, अर्धविराम या रिक्त स्थान द्वारा अलग किया गया"),
|
|
("Add ID", "ID जोड़ें"),
|
|
("Add Tag", "टैग जोड़ें"),
|
|
("Unselect all tags", "सभी टैग अचयनित करें"),
|
|
("Network error", "नेटवर्क त्रुटि"),
|
|
("Username missed", "उपयोगकर्ता नाम छूट गया"),
|
|
("Password missed", "पासवर्ड छूट गया"),
|
|
("Wrong credentials", "गलत क्रेडेंशियल"),
|
|
("The verification code is incorrect or has expired", "सत्यापन कोड गलत है या समाप्त हो गया है"),
|
|
("Edit Tag", "टैग संपादित करें"),
|
|
("Forget Password", "पासवर्ड भूल गए"),
|
|
("Favorites", "पसंदीदा"),
|
|
("Add to Favorites", "पसंदीदा में जोड़ें"),
|
|
("Remove from Favorites", "पसंदीदा से हटाएं"),
|
|
("Empty", "खाली"),
|
|
("Invalid folder name", "अमान्य फ़ोल्डर नाम"),
|
|
("Socks5 Proxy", "Socks5 प्रॉक्सी"),
|
|
("Socks5/Http(s) Proxy", "Socks5/Http(s) प्रॉक्सी"),
|
|
("Discovered", "खोजा गया"),
|
|
("install_daemon_tip", "बूट पर शुरू करने के लिए सेवा इंस्टॉल करें"),
|
|
("Remote ID", "रिमोट ID"),
|
|
("Paste", "पेस्ट करें"),
|
|
("Paste here?", "यहाँ पेस्ट करें?"),
|
|
("Are you sure to close the connection?", "क्या आप वाकई कनेक्शन बंद करना चाहते हैं?"),
|
|
("Download new version", "नया संस्करण डाउनलोड करें"),
|
|
("Touch mode", "टच मोड"),
|
|
("Mouse mode", "माउस मोड"),
|
|
("One-Finger Tap", "एक उंगली से टैप"),
|
|
("Left Mouse", "बायां माउस"),
|
|
("One-Long Tap", "एक लंबा टैप"),
|
|
("Two-Finger Tap", "दो उंगलियों से टैप"),
|
|
("Right Mouse", "दायां माउस"),
|
|
("One-Finger Move", "एक उंगली से हिलाएं"),
|
|
("Double Tap & Move", "डबल टैप और हिलाएं"),
|
|
("Mouse Drag", "माउस ड्रैग"),
|
|
("Three-Finger vertically", "तीन उंगलियां लंबवत"),
|
|
("Mouse Wheel", "माउस व्हील"),
|
|
("Two-Finger Move", "दो उंगलियों से हिलाएं"),
|
|
("Canvas Move", "कैनवास मूव"),
|
|
("Pinch to Zoom", "ज़ूम करने के लिए पिंच करें"),
|
|
("Canvas Zoom", "कैनवास ज़ूम"),
|
|
("Reset canvas", "कैनवास रिसेट करें"),
|
|
("No permission of file transfer", "फ़ाइल स्थानांतरण की अनुमति नहीं है"),
|
|
("Note", "नोट"),
|
|
("Connection", "कनेक्शन"),
|
|
("Share screen", "स्क्रीन शेयर करें"),
|
|
("Chat", "चैट"),
|
|
("Total", "कुल"),
|
|
("items", "आइटम"),
|
|
("Selected", "चयनित"),
|
|
("Screen Capture", "स्क्रीन कैप्चर"),
|
|
("Input Control", "इनपुट नियंत्रण"),
|
|
("Audio Capture", "ऑडियो कैप्चर"),
|
|
("Do you accept?", "क्या आप स्वीकार करते हैं?"),
|
|
("Open System Setting", "सिस्टम सेटिंग खोलें"),
|
|
("How to get Android input permission?", "Android इनपुट अनुमति कैसे प्राप्त करें?"),
|
|
("android_input_permission_tip1", "इनपुट अनुमति प्राप्त करने के लिए एक्सेसिबिलिटी सेवा सक्षम करें।"),
|
|
("android_input_permission_tip2", "कृपया सिस्टम सेटिंग में RustDesk खोजें और इसे चालू करें।"),
|
|
("android_new_connection_tip", "एक नया नियंत्रण अनुरोध प्राप्त हुआ है।"),
|
|
("android_service_will_start_tip", "स्क्रीन कैप्चर चालू करने से सेवा अपने आप शुरू हो जाएगी।"),
|
|
("android_stop_service_tip", "सेवा बंद करने से सभी कनेक्शन टूट जाएंगे।"),
|
|
("android_version_audio_tip", "ऑडियो कैप्चर केवल Android 10 या उच्चतर पर समर्थित है।"),
|
|
("android_start_service_tip", "स्क्रीन शेयरिंग सेवा शुरू करने के लिए क्लिक करें।"),
|
|
("android_permission_may_not_change_tip", "अनुमतियाँ बाद में नहीं बदली जा सकती हैं, कृपया ध्यान से चुनें।"),
|
|
("Account", "खाता"),
|
|
("Overwrite", "ओवरराइट (Overwrite) करें"),
|
|
("This file exists, skip or overwrite this file?", "यह फ़ाइल मौजूद है, छोड़ें या ओवरराइट करें?"),
|
|
("Quit", "बाहर निकलें"),
|
|
("Help", "सहायता"),
|
|
("Failed", "विफल"),
|
|
("Succeeded", "सफल"),
|
|
("Someone turns on privacy mode, exit", "किसी ने गोपनीयता मोड चालू किया है, बाहर निकल रहे हैं"),
|
|
("Unsupported", "असमर्थित"),
|
|
("Peer denied", "दूसरे सिस्टम ने मना कर दिया"),
|
|
("Peer exit", "दूसरा सिस्टम बाहर निकल गया"),
|
|
("Failed to turn off", "बंद करने में विफल"),
|
|
("Turned off", "बंद कर दिया गया"),
|
|
("Language", "भाषा"),
|
|
("Keep RustDesk background service", "RustDesk बैकग्राउंड सेवा चालू रखें"),
|
|
("Ignore Battery Optimizations", "बैटरी ऑप्टिमाइजेशन को अनदेखा करें"),
|
|
("android_open_battery_optimizations_tip", "डिस्कनेक्शन से बचने के लिए बैटरी ऑप्टिमाइजेशन सेटिंग खोलें"),
|
|
("Start on boot", "बूट पर शुरू करें"),
|
|
("Start the screen sharing service on boot, requires special permissions", "बूट पर स्क्रीन शेयरिंग सेवा शुरू करें, विशेष अनुमतियों की आवश्यकता है"),
|
|
("Connection not allowed", "कनेक्शन की अनुमति नहीं है"),
|
|
("Legacy mode", "लेगेसी (Legacy) मोड"),
|
|
("Map mode", "मैप मोड"),
|
|
("Translate mode", "अनुवाद मोड"),
|
|
("Use permanent password", "स्थायी पासवर्ड का उपयोग करें"),
|
|
("Use both passwords", "दोनों पासवर्ड का उपयोग करें"),
|
|
("Set permanent password", "स्थायी पासवर्ड सेट करें"),
|
|
("Enable remote restart", "रिमोट रीस्टार्ट सक्षम करें"),
|
|
("Restart remote device", "रिमोट डिवाइस रीस्टार्ट करें"),
|
|
("Are you sure you want to restart", "क्या आप वाकई रीस्टार्ट करना चाहते हैं?"),
|
|
("Restarting remote device", "रिमोट डिवाइस रीस्टार्ट हो रहा है"),
|
|
("remote_restarting_tip", "रिमोट डिवाइस रीस्टार्ट हो रहा है, कृपया प्रतीक्षा करें..."),
|
|
("Copied", "कॉपी किया गया"),
|
|
("Exit Fullscreen", "फुलस्क्रीन से बाहर निकलें"),
|
|
("Fullscreen", "फुलस्क्रीन"),
|
|
("Mobile Actions", "मोबाइल क्रियाएं"),
|
|
("Select Monitor", "मॉनिटर चुनें"),
|
|
("Control Actions", "नियंत्रण क्रियाएं"),
|
|
("Display Settings", "डिस्प्ले सेटिंग्स"),
|
|
("Ratio", "अनुपात (Ratio)"),
|
|
("Image Quality", "इमेज गुणवत्ता"),
|
|
("Scroll Style", "स्क्रॉल शैली"),
|
|
("Show Toolbar", "टूलबार दिखाएं"),
|
|
("Hide Toolbar", "टूलबार छुपाएं"),
|
|
("Direct Connection", "सीधा कनेक्शन"),
|
|
("Relay Connection", "रिले कनेक्शन"),
|
|
("Secure Connection", "सुरक्षित कनेक्शन"),
|
|
("Insecure Connection", "असुरक्षित कनेक्शन"),
|
|
("Scale original", "मूल पैमाना"),
|
|
("Scale adaptive", "अनुकूली पैमाना"),
|
|
("General", "सामान्य"),
|
|
("Security", "सुरक्षा"),
|
|
("Theme", "थीम"),
|
|
("Dark Theme", "डार्क थीम"),
|
|
("Light Theme", "लाइट थीम"),
|
|
("Dark", "डार्क"),
|
|
("Light", "लाइट"),
|
|
("Follow System", "सिस्टम का पालन करें"),
|
|
("Enable hardware codec", "हार्डवेयर कोडेक सक्षम करें"),
|
|
("Unlock Security Settings", "सुरक्षा सेटिंग्स अनलॉक करें"),
|
|
("Enable audio", "ऑडियो सक्षम करें"),
|
|
("Unlock Network Settings", "नेटवर्क सेटिंग्स अनलॉक करें"),
|
|
("Server", "सर्वर"),
|
|
("Direct IP Access", "सीधी IP पहुंच"),
|
|
("Proxy", "प्रॉक्सी"),
|
|
("Apply", "लागू करें"),
|
|
("Disconnect all devices?", "सभी डिवाइस डिस्कनेक्ट करें?"),
|
|
("Clear", "साफ करें"),
|
|
("Audio Input Device", "ऑडियो इनपुट डिवाइस"),
|
|
("Use IP Whitelisting", "IP श्वेतसूची का उपयोग करें"),
|
|
("Network", "नेटवर्क"),
|
|
("Pin Toolbar", "टूलबार पिन करें"),
|
|
("Unpin Toolbar", "टूलबार अनपिन करें"),
|
|
("Recording", "रिकॉर्डिंग"),
|
|
("Directory", "निर्देशिका"),
|
|
("Automatically record incoming sessions", "आने वाले सत्रों को स्वचालित रूप से रिकॉर्ड करें"),
|
|
("Automatically record outgoing sessions", "जाने वाले सत्रों को स्वचालित रूप से रिकॉर्ड करें"),
|
|
("Change", "बदलें"),
|
|
("Start session recording", "सत्र रिकॉर्डिंग शुरू करें"),
|
|
("Stop session recording", "सत्र रिकॉर्डिंग रोकें"),
|
|
("Enable recording session", "सत्र रिकॉर्डिंग सक्षम करें"),
|
|
("Enable LAN discovery", "LAN खोज सक्षम करें"),
|
|
("Deny LAN discovery", "LAN खोज अस्वीकार करें"),
|
|
("Write a message", "संदेश लिखें"),
|
|
("Prompt", "प्रॉम्प्ट"),
|
|
("Please wait for confirmation of UAC...", "कृपया UAC की पुष्टि की प्रतीक्षा करें..."),
|
|
("elevated_foreground_window_tip", "रिमोट डेस्कटॉप की वर्तमान विंडो को उच्च अनुमतियों की आवश्यकता है।"),
|
|
("Disconnected", "डिस्कनेक्ट हो गया"),
|
|
("Other", "अन्य"),
|
|
("Confirm before closing multiple tabs", "एकाधिक टैब बंद करने से पहले पुष्टि करें"),
|
|
("Keyboard Settings", "कीबोर्ड सेटिंग्स"),
|
|
("Full Access", "पूर्ण पहुंच (Full Access)"),
|
|
("Screen Share", "स्क्रीन शेयर"),
|
|
("ubuntu-21-04-required", "Ubuntu 21.04 या उच्चतर आवश्यक है"),
|
|
("wayland-requires-higher-linux-version", "Wayland के लिए उच्च Linux संस्करण आवश्यक है"),
|
|
("xdp-portal-unavailable", "XDP पोर्टल अनुपलब्ध है"),
|
|
("JumpLink", "JumpLink"),
|
|
("Please Select the screen to be shared(Operate on the peer side).", "कृपया साझा की जाने वाली स्क्रीन चुनें (दूसरे सिस्टम पर संचालित करें)।"),
|
|
("Show RustDesk", "RustDesk दिखाएं"),
|
|
("This PC", "यह PC"),
|
|
("or", "या"),
|
|
("Elevate", "एलीवेट (Elevate) करें"),
|
|
("Zoom cursor", "ज़ूम कर्सर"),
|
|
("Accept sessions via password", "पासवर्ड के माध्यम से सत्र स्वीकार करें"),
|
|
("Accept sessions via click", "क्लिक के माध्यम से सत्र स्वीकार करें"),
|
|
("Accept sessions via both", "दोनों के माध्यम से सत्र स्वीकार करें"),
|
|
("Please wait for the remote side to accept your session request...", "कृपया रिमोट साइड द्वारा आपके सत्र अनुरोध को स्वीकार करने की प्रतीक्षा करें..."),
|
|
("One-time Password", "वन-टाइम पासवर्ड"),
|
|
("Use one-time password", "वन-टाइम पासवर्ड का उपयोग करें"),
|
|
("One-time password length", "वन-टाइम पासवर्ड की लंबाई"),
|
|
("Request access to your device", "आपके डिवाइस तक पहुंच का अनुरोध"),
|
|
("Hide connection management window", "कनेक्शन प्रबंधन विंडो छुपाएं"),
|
|
("hide_cm_tip", "केवल तभी छुपाएं जब पासवर्ड से कनेक्शन की अनुमति हो"),
|
|
("wayland_experiment_tip", "Wayland समर्थन अभी परीक्षण मोड में है"),
|
|
("Right click to select tabs", "टैब चुनने के लिए राइट क्लिक करें"),
|
|
("Skipped", "छोड़ दिया गया"),
|
|
("Add to address book", "पता पुस्तिका में जोड़ें"),
|
|
("Group", "समूह"),
|
|
("Search", "खोजें"),
|
|
("Closed manually by web console", "वेब कंसोल द्वारा मैन्युअल रूप से बंद किया गया"),
|
|
("Local keyboard type", "स्थानीय कीबोर्ड प्रकार"),
|
|
("Select local keyboard type", "स्थानीय कीबोर्ड प्रकार चुनें"),
|
|
("software_render_tip", "यदि आपकी स्क्रीन काली है, तो इसे आज़माएं"),
|
|
("Always use software rendering", "हमेशा सॉफ़्टवेयर रेंडरिंग का उपयोग करें"),
|
|
("config_input", "इनपुट कॉन्फ़िगर करें"),
|
|
("config_microphone", "माइक्रोफ़ोन कॉन्फ़िगर करें"),
|
|
("request_elevation_tip", "रिमोट साइड से उच्च अनुमतियों का अनुरोध करें"),
|
|
("Wait", "प्रतीक्षा करें"),
|
|
("Elevation Error", "एलीवेशन (Elevation) त्रुटि"),
|
|
("Ask the remote user for authentication", "रिमोट उपयोगकर्ता से प्रमाणीकरण मांगें"),
|
|
("Choose this if the remote account is administrator", "यदि रिमोट खाता व्यवस्थापक (Admin) है तो इसे चुनें"),
|
|
("Transmit the username and password of administrator", "व्यवस्थापक का उपयोगकर्ता नाम और पासवर्ड भेजें"),
|
|
("still_click_uac_tip", "रिमोट उपयोगकर्ता को अभी भी UAC विंडो पर 'हाँ' क्लिक करना होगा।"),
|
|
("Request Elevation", "एलीवेशन का अनुरोध करें"),
|
|
("wait_accept_uac_tip", "कृपया रिमोट उपयोगकर्ता द्वारा UAC स्वीकार करने की प्रतीक्षा करें।"),
|
|
("Elevate successfully", "सफलतापूर्वक एलीवेट किया गया"),
|
|
("uppercase", "बड़े अक्षर (Uppercase)"),
|
|
("lowercase", "छोटे अक्षर (Lowercase)"),
|
|
("digit", "अंक (Digit)"),
|
|
("special character", "विशेष वर्ण"),
|
|
("length>=8", "लंबाई >= 8"),
|
|
("Weak", "कमजोर"),
|
|
("Medium", "मध्यम"),
|
|
("Strong", "मजबूत"),
|
|
("Switch Sides", "साइड्स बदलें"),
|
|
("Please confirm if you want to share your desktop?", "कृपया पुष्टि करें कि क्या आप अपना डेस्कटॉप साझा करना चाहते हैं?"),
|
|
("Display", "डिस्प्ले"),
|
|
("Default View Style", "डिफ़ॉल्ट व्यू शैली"),
|
|
("Default Scroll Style", "डिफ़ॉल्ट स्क्रॉल शैली"),
|
|
("Default Image Quality", "डिफ़ॉल्ट इमेज गुणवत्ता"),
|
|
("Default Codec", "डिफ़ॉल्ट कोडेक"),
|
|
("Bitrate", "बिटरेट"),
|
|
("FPS", "FPS"),
|
|
("Auto", "ऑटो"),
|
|
("Other Default Options", "अन्य डिफ़ॉल्ट विकल्प"),
|
|
("Voice call", "वॉयस कॉल"),
|
|
("Text chat", "टेक्स्ट चैट"),
|
|
("Stop voice call", "वॉयस कॉल बंद करें"),
|
|
("relay_hint_tip", "सीधा कनेक्शन संभव नहीं हो सकता; आप रिले के माध्यम से जुड़ने का प्रयास कर सकते हैं।"),
|
|
("Reconnect", "पुनः कनेक्ट करें"),
|
|
("Codec", "कोडेक"),
|
|
("Resolution", "रिज़ॉल्यूशन"),
|
|
("No transfers in progress", "कोई स्थानांतरण जारी नहीं है"),
|
|
("Set one-time password length", "वन-टाइम पासवर्ड की लंबाई सेट करें"),
|
|
("RDP Settings", "RDP सेटिंग्स"),
|
|
("Sort by", "इसके अनुसार क्रमबद्ध करें"),
|
|
("New Connection", "नया कनेक्शन"),
|
|
("Restore", "पुनर्स्थापित करें"),
|
|
("Minimize", "मिनिमाइज करें"),
|
|
("Maximize", "मैक्सिमाइज करें"),
|
|
("Your Device", "आपका डिवाइस"),
|
|
("empty_recent_tip", "हाल के सत्र यहाँ दिखाई देंगे।"),
|
|
("empty_favorite_tip", "पसंदीदा डिवाइस यहाँ दिखाई देंगे।"),
|
|
("empty_lan_tip", "खोजे गए डिवाइस यहाँ दिखाई देंगे।"),
|
|
("empty_address_book_tip", "आपके पता पुस्तिका में वर्तमान में कोई डिवाइस नहीं है।"),
|
|
("Empty Username", "खाली उपयोगकर्ता नाम"),
|
|
("Empty Password", "खाली पासवर्ड"),
|
|
("Me", "मैं"),
|
|
("identical_file_tip", "यह फ़ाइल पहले से ही मौजूद है।"),
|
|
("show_monitors_tip", "टूलबार में मॉनिटर दिखाएं"),
|
|
("View Mode", "व्यू मोड"),
|
|
("verify_rustdesk_password_tip", "RustDesk पासवर्ड सत्यापित करें"),
|
|
("No need to elevate", "एलीवेट करने की आवश्यकता नहीं है"),
|
|
("System Sound", "सिस्टम साउंड"),
|
|
("Default", "डिफ़ॉल्ट"),
|
|
("New RDP", "नया RDP"),
|
|
("Fingerprint", "फिंगरप्रिंट"),
|
|
("Copy Fingerprint", "फिंगरप्रिंट कॉपी करें"),
|
|
("no fingerprints", "कोई फिंगरप्रिंट नहीं"),
|
|
("Update", "अपडेट करें"),
|
|
("resolution_original_tip", "मूल रिज़ॉल्यूशन"),
|
|
("resolution_fit_local_tip", "स्थानीय स्क्रीन में फिट करें"),
|
|
("resolution_custom_tip", "कस्टम रिज़ॉल्यूशन"),
|
|
("Collapse toolbar", "टूलबार समेटें"),
|
|
("Accept and Elevate", "स्वीकार करें और एलीवेट करें"),
|
|
("accept_and_elevate_btn_tooltip", "कनेक्शन स्वीकार करें और UAC अनुमतियाँ मांगें।"),
|
|
("clipboard_wait_response_timeout_tip", "क्लिपबोर्ड प्रतिक्रिया के लिए समय समाप्त हो गया।"),
|
|
("Incoming connection", "आने वाला कनेक्शन"),
|
|
("Outgoing connection", "जाने वाला कनेक्शन"),
|
|
("Exit", "बाहर निकलें"),
|
|
("Open", "खोलें"),
|
|
("logout_tip", "क्या आप वाकई लॉगआउट करना चाहते हैं?"),
|
|
("Service", "सेवा"),
|
|
("Start", "शुरू करें"),
|
|
("Stop", "रोकें"),
|
|
("exceed_max_devices", "आप डिवाइस की अधिकतम सीमा को पार कर चुके हैं।"),
|
|
("Sync with recent sessions", "हाल के सत्रों के साथ सिंक करें"),
|
|
("Sort tags", "टैग क्रमबद्ध करें"),
|
|
("Open connection in new tab", "नये टैब में कनेक्शन खोलें"),
|
|
("Move tab to new window", "टैब को नयी विंडो में ले जाएं"),
|
|
("Can not be empty", "खाली नहीं हो सकता"),
|
|
("Already exists", "पहले से मौजूद है"),
|
|
("Change Password", "पासवर्ड बदलें"),
|
|
("Refresh Password", "पासवर्ड रिफ्रेश करें"),
|
|
("ID", "ID"),
|
|
("Grid View", "ग्रिड व्यू"),
|
|
("List View", "लिस्ट व्यू"),
|
|
("Select", "चुनें"),
|
|
("Toggle Tags", "टैग टॉगल करें"),
|
|
("pull_ab_failed_tip", "पता पुस्तिका अपडेट करने में विफल।"),
|
|
("push_ab_failed_tip", "सर्वर पर पता पुस्तिका सिंक करने में विफल।"),
|
|
("synced_peer_readded_tip", "हाल के सत्रों में मौजूद डिवाइस पता पुस्तिका में सिंक किए गए थे।"),
|
|
("Change Color", "रंग बदलें"),
|
|
("Primary Color", "प्राथमिक रंग"),
|
|
("HSV Color", "HSV रंग"),
|
|
("Installation Successful!", "इंस्टॉलेशन सफल रहा!"),
|
|
("Installation failed!", "इंस्टॉलेशन विफल रहा!"),
|
|
("Reverse mouse wheel", "माउस व्हील उल्टा करें"),
|
|
("{} sessions", "{} सत्र"),
|
|
("scam_title", "धोखाधड़ी की चेतावनी!"),
|
|
("scam_text1", "यदि आप किसी ऐसे व्यक्ति से बात कर रहे हैं जिसे आप नहीं जानते और जिसने आपसे RustDesk उपयोग करने को कहा है, तो तुरंत डिस्कनेक्ट कर दें।"),
|
|
("scam_text2", "यह एक घोटाला हो सकता है। अपना आईडी या पासवर्ड किसी को न दें।"),
|
|
("Don't show again", "दोबारा न दिखाएं"),
|
|
("I Agree", "मैं सहमत हूँ"),
|
|
("Decline", "अस्वीकार करें"),
|
|
("Timeout in minutes", "मिनटों में टाइमआउट"),
|
|
("auto_disconnect_option_tip", "निष्क्रियता पर स्वचालित रूप से डिस्कनेक्ट करें"),
|
|
("Connection failed due to inactivity", "निष्क्रियता के कारण कनेक्शन विफल रहा"),
|
|
("Check for software update on startup", "स्टार्टअप पर सॉफ़्टवेयर अपडेट की जांच करें"),
|
|
("upgrade_rustdesk_server_pro_to_{}_tip", "RustDesk सर्वर प्रो को संस्करण {} में अपग्रेड करें"),
|
|
("pull_group_failed_tip", "समूह खींचने (Pull) में विफल"),
|
|
("Filter by intersection", "इंटरसेक्शन द्वारा फ़िल्टर करें"),
|
|
("Remove wallpaper during incoming sessions", "आने वाले सत्रों के दौरान वॉलपेपर हटा दें"),
|
|
("Test", "परीक्षण"),
|
|
("display_is_plugged_out_msg", "डिस्प्ले हटा दिया गया है।"),
|
|
("No displays", "कोई डिस्प्ले नहीं"),
|
|
("Open in new window", "नयी विंडो में खोलें"),
|
|
("Show displays as individual windows", "डिस्प्ले को व्यक्तिगत विंडो के रूप में दिखाएं"),
|
|
("Use all my displays for the remote session", "रिमोट सत्र के लिए मेरे सभी डिस्प्ले का उपयोग करें"),
|
|
("selinux_tip", "डिवाइस पर SELinux सक्षम है।"),
|
|
("Change view", "व्यू बदलें"),
|
|
("Big tiles", "बड़ी टाइलें"),
|
|
("Small tiles", "छोटी टाइलें"),
|
|
("List", "लिस्ट"),
|
|
("Virtual display", "वर्चुअल डिस्प्ले"),
|
|
("Plug out all", "सभी अनप्लग करें"),
|
|
("True color (4:4:4)", "सच्चा रंग (4:4:4)"),
|
|
("Enable blocking user input", "उपयोगकर्ता इनपुट को ब्लॉक करना सक्षम करें"),
|
|
("id_input_tip", "आप ID, उपनाम (Alias) या IP पता दर्ज कर सकते हैं।"),
|
|
("privacy_mode_impl_mag_tip", "मैग्निफायर (Magnifier) गोपनीयता मोड"),
|
|
("privacy_mode_impl_virtual_display_tip", "वर्चुअल डिस्प्ले गोपनीयता मोड"),
|
|
("Enter privacy mode", "गोपनीयता मोड में प्रवेश करें"),
|
|
("Exit privacy mode", "गोपनीयता मोड से बाहर निकलें"),
|
|
("idd_not_support_under_win10_2004_tip", "वर्चुअल डिस्प्ले Windows 10 संस्करण 2004 या उच्चतर पर समर्थित है।"),
|
|
("input_source_1_tip", "इनपुट स्रोत 1"),
|
|
("input_source_2_tip", "इनपुट स्रोत 2"),
|
|
("Swap control-command key", "Control और Command कुंजियों को बदलें"),
|
|
("swap-left-right-mouse", "बाएं और दाएं माउस बटन को बदलें"),
|
|
("2FA code", "2FA कोड"),
|
|
("More", "अधिक"),
|
|
("enable-2fa-title", "द्वि-कारक प्रमाणीकरण (2FA) सक्षम करें"),
|
|
("enable-2fa-desc", "कृपया अपना ऑथेंटिकेटर ऐप सेट करें।"),
|
|
("wrong-2fa-code", "गलत 2FA कोड।"),
|
|
("enter-2fa-title", "2FA कोड दर्ज करें"),
|
|
("Email verification code must be 6 characters.", "ईमेल सत्यापन कोड 6 अक्षरों का होना चाहिए।"),
|
|
("2FA code must be 6 digits.", "2FA कोड 6 अंकों का होना चाहिए।"),
|
|
("Multiple Windows sessions found", "एकाधिक Windows सत्र मिले"),
|
|
("Please select the session you want to connect to", "कृपया वह सत्र चुनें जिससे आप जुड़ना चाहते हैं"),
|
|
("powered_by_me", "मेरे द्वारा संचालित"),
|
|
("outgoing_only_desk_tip", "यह केवल आउटगोइंग मोड है"),
|
|
("preset_password_warning", "सुरक्षा के लिए, कृपया डिफ़ॉल्ट पासवर्ड बदलें।"),
|
|
("Security Alert", "सुरक्षा चेतावनी"),
|
|
("My address book", "मेरी पता पुस्तिका"),
|
|
("Personal", "व्यक्तिगत"),
|
|
("Owner", "स्वामी"),
|
|
("Set shared password", "साझा पासवर्ड सेट करें"),
|
|
("Exist in", "इसमें मौजूद है"),
|
|
("Read-only", "केवल पढ़ने के लिए"),
|
|
("Read/Write", "पढ़ना/लिखना"),
|
|
("Full Control", "पूर्ण नियंत्रण"),
|
|
("share_warning_tip", "सावधानी: आप अपना एक्सेस साझा कर रहे हैं।"),
|
|
("Everyone", "हर कोई"),
|
|
("ab_web_console_tip", "वेब कंसोल पता पुस्तिका"),
|
|
("allow-only-conn-window-open-tip", "केवल तभी कनेक्शन की अनुमति दें जब RustDesk विंडो खुली हो"),
|
|
("no_need_privacy_mode_no_physical_displays_tip", "कोई भौतिक डिस्प्ले नहीं मिला, गोपनीयता मोड की आवश्यकता नहीं है।"),
|
|
("Follow remote cursor", "रिमोट कर्सर का पालन करें"),
|
|
("Follow remote window focus", "रिमोट विंडो फोकस का पालन करें"),
|
|
("default_proxy_tip", "डिफ़ॉल्ट प्रॉक्सी सेटिंग"),
|
|
("no_audio_input_device_tip", "कोई ऑडियो इनपुट डिवाइस नहीं मिला।"),
|
|
("Incoming", "आने वाली"),
|
|
("Outgoing", "जाने वाली"),
|
|
("Clear Wayland screen selection", "Wayland स्क्रीन चयन साफ़ करें"),
|
|
("clear_Wayland_screen_selection_tip", "Wayland के स्क्रीन चयन को रीसेट करें।"),
|
|
("confirm_clear_Wayland_screen_selection_tip", "क्या आप वाकई स्क्रीन चयन साफ़ करना चाहते हैं?"),
|
|
("android_new_voice_call_tip", "नया वॉयस कॉल अनुरोध"),
|
|
("texture_render_tip", "टेक्सचर रेंडरिंग का उपयोग करें"),
|
|
("Use texture rendering", "टेक्सचर रेंडरिंग का उपयोग करें"),
|
|
("Floating window", "फ्लोटिंग विंडो"),
|
|
("floating_window_tip", "बैकग्राउंड में रहने के दौरान RustDesk को दिखाएं"),
|
|
("Keep screen on", "स्क्रीन चालू रखें"),
|
|
("Never", "कभी नहीं"),
|
|
("During controlled", "नियंत्रण के दौरान"),
|
|
("During service is on", "जब सेवा चालू हो"),
|
|
("Capture screen using DirectX", "DirectX का उपयोग करके स्क्रीन कैप्चर करें"),
|
|
("Back", "पीछे"),
|
|
("Apps", "ऐप्स"),
|
|
("Volume up", "आवाज़ बढ़ाएं"),
|
|
("Volume down", "आवाज़ कम करें"),
|
|
("Power", "पावर"),
|
|
("Telegram bot", "Telegram बॉट"),
|
|
("enable-bot-tip", "सूचनाओं के लिए बोट सक्षम करें"),
|
|
("enable-bot-desc", "निर्देशों के लिए हमारे टेलीग्राम बोट को देखें।"),
|
|
("cancel-2fa-confirm-tip", "क्या आप वाकई 2FA रद्द करना चाहते हैं?"),
|
|
("cancel-bot-confirm-tip", "क्या आप वाकई बोट रद्द करना चाहते हैं?"),
|
|
("About RustDesk", "RustDesk के बारे में"),
|
|
("Send clipboard keystrokes", "क्लिपबोर्ड कीस्ट्रोक्स भेजें"),
|
|
("network_error_tip", "नेटवर्क कनेक्शन त्रुटि, कृपया पुनः प्रयास करें।"),
|
|
("Unlock with PIN", "PIN से अनलॉक करें"),
|
|
("Requires at least {} characters", "कम से कम {} अक्षरों की आवश्यकता है"),
|
|
("Wrong PIN", "गलत PIN"),
|
|
("Set PIN", "PIN सेट करें"),
|
|
("Enable trusted devices", "विश्वसनीय डिवाइस सक्षम करें"),
|
|
("Manage trusted devices", "विश्वसनीय डिवाइस प्रबंधित करें"),
|
|
("Platform", "प्लेटफ़ॉर्म"),
|
|
("Days remaining", "शेष दिन"),
|
|
("enable-trusted-devices-tip", "केवल विश्वसनीय डिवाइस ही पासवर्ड के बिना जुड़ सकते हैं"),
|
|
("Parent directory", "पैरेंट निर्देशिका"),
|
|
("Resume", "फिर से शुरू करें"),
|
|
("Invalid file name", "अमान्य फ़ाइल नाम"),
|
|
("one-way-file-transfer-tip", "केवल एकतरफा फ़ाइल स्थानांतरण की अनुमति है"),
|
|
("Authentication Required", "प्रमाणीकरण आवश्यक"),
|
|
("Authenticate", "प्रमाणित करें"),
|
|
("web_id_input_tip", "रिमोट आईडी दर्ज करें"),
|
|
("Download", "डाउनलोड करें"),
|
|
("Upload folder", "फ़ोल्डर अपलोड करें"),
|
|
("Upload files", "फाइलें अपलोड करें"),
|
|
("Clipboard is synchronized", "क्लिपबोर्ड सिंक हो गया है"),
|
|
("Update client clipboard", "क्लाइंट क्लिपबोर्ड अपडेट करें"),
|
|
("Untagged", "बिना टैग वाला"),
|
|
("new-version-of-{}-tip", "{} का नया संस्करण उपलब्ध है"),
|
|
("Accessible devices", "सुलभ डिवाइस"),
|
|
("upgrade_remote_rustdesk_client_to_{}_tip", "रिमोट RustDesk क्लाइंट को संस्करण {} में अपग्रेड करें"),
|
|
("d3d_render_tip", "D3D रेंडरिंग का उपयोग करें"),
|
|
("Use D3D rendering", "D3D रेंडरिंग का उपयोग करें"),
|
|
("Printer", "प्रिंटर"),
|
|
("printer-os-requirement-tip", "प्रिंटिंग के लिए Windows आवश्यक है।"),
|
|
("printer-requires-installed-{}-client-tip", "इसके लिए क्लाइंट साइड पर {} इंस्टॉल होना चाहिए।"),
|
|
("printer-{}-not-installed-tip", "प्रिंटर {} इंस्टॉल नहीं है।"),
|
|
("printer-{}-ready-tip", "प्रिंटर {} तैयार है।"),
|
|
("Install {} Printer", "{} प्रिंटर इंस्टॉल करें"),
|
|
("Outgoing Print Jobs", "आउटगोइंग प्रिंट कार्य"),
|
|
("Incoming Print Jobs", "इनकमिंग प्रिंट कार्य"),
|
|
("Incoming Print Job", "इनकमिंग प्रिंट कार्य"),
|
|
("use-the-default-printer-tip", "डिफ़ॉल्ट प्रिंटर का उपयोग करें"),
|
|
("use-the-selected-printer-tip", "चयनित प्रिंटर का उपयोग करें"),
|
|
("auto-print-tip", "स्वचालित रूप से प्रिंट करें"),
|
|
("print-incoming-job-confirm-tip", "प्रिंट कार्य स्वीकार करने से पहले पुष्टि करें"),
|
|
("remote-printing-disallowed-tile-tip", "रिमोट प्रिंटिंग की अनुमति नहीं है"),
|
|
("remote-printing-disallowed-text-tip", "कृपया सेटिंग्स में रिमोट प्रिंटिंग सक्षम करें।"),
|
|
("save-settings-tip", "सेटिंग्स सुरक्षित करें"),
|
|
("dont-show-again-tip", "दोबारा न दिखाएं"),
|
|
("Take screenshot", "स्क्रीनशॉट लें"),
|
|
("Taking screenshot", "स्क्रीनशॉट लिया जा रहा है"),
|
|
("screenshot-merged-screen-not-supported-tip", "मर्ज की गई स्क्रीन के स्क्रीनशॉट समर्थित नहीं हैं।"),
|
|
("screenshot-action-tip", "स्क्रीनशॉट लेने के बाद की कार्रवाई"),
|
|
("Save as", "इस रूप में सहेजें"),
|
|
("Export", "एक्सपोर्ट करें"),
|
|
("Export Logs", "लॉग एक्सपोर्ट करें"),
|
|
("Import Folder", "फ़ोल्डर इंपोर्ट करें"),
|
|
("Copy to clipboard", "क्लिपबोर्ड पर कॉपी करें"),
|
|
("Enable remote printer", "रिमोट प्रिंटर सक्षम करें"),
|
|
("Downloading {}", "{} डाउनलोड हो रहा है"),
|
|
("{} Update", "{} अपडेट"),
|
|
("{}-to-update-tip", "अपडेट करने के लिए {}"),
|
|
("download-new-version-failed-tip", "नया संस्करण डाउनलोड करने में विफल।"),
|
|
("Auto update", "ऑटो अपडेट"),
|
|
("update-failed-check-msi-tip", "अपडेट विफल, कृपया MSI फ़ाइल की जांच करें।"),
|
|
("websocket_tip", "यदि पोर्ट ब्लॉक हैं, तो WebSocket का उपयोग करें।"),
|
|
("Use WebSocket", "WebSocket का उपयोग करें"),
|
|
("Trackpad speed", "ट्रैकपैड गति"),
|
|
("Default trackpad speed", "डिफ़ॉल्ट ट्रैकपैड गति"),
|
|
("Numeric one-time password", "संख्यात्मक वन-टाइम पासवर्ड"),
|
|
("Enable IPv6 P2P connection", "IPv6 P2P कनेक्शन सक्षम करें"),
|
|
("Enable UDP hole punching", "UDP होल पंचिंग सक्षम करें"),
|
|
("View camera", "कैमरा देखें"),
|
|
("Enable camera", "कैमरा सक्षम करें"),
|
|
("No cameras", "कोई कैमरा नहीं मिला"),
|
|
("view_camera_unsupported_tip", "रिमोट कैमरा समर्थित नहीं है।"),
|
|
("Terminal", "टर्मिनल"),
|
|
("Enable terminal", "टर्मिनल सक्षम करें"),
|
|
("New tab", "नया टैब"),
|
|
("Keep terminal sessions on disconnect", "डिस्कनेक्ट होने पर टर्मिनल सत्र चालू रखें"),
|
|
("Terminal (Run as administrator)", "टर्मिनल (प्रशासक के रूप में चलाएं)"),
|
|
("terminal-admin-login-tip", "प्रशासक लॉगिन आवश्यक है।"),
|
|
("Failed to get user token.", "उपयोगकर्ता टोकन प्राप्त करने में विफल।"),
|
|
("Incorrect username or password.", "गलत उपयोगकर्ता नाम या पासवर्ड।"),
|
|
("The user is not an administrator.", "उपयोगकर्ता प्रशासक नहीं है।"),
|
|
("Failed to check if the user is an administrator.", "जांचने में विफल कि क्या उपयोगकर्ता व्यवस्थापक है।"),
|
|
("Supported only in the installed version.", "केवल इंस्टॉल किए गए संस्करण में समर्थित।"),
|
|
("elevation_username_tip", "प्रशासक उपयोगकर्ता नाम दर्ज करें"),
|
|
("Preparing for installation ...", "स्थापना की तैयारी..."),
|
|
("Show my cursor", "मेरा कर्सर दिखाएं"),
|
|
("Scale custom", "कस्टम पैमाना"),
|
|
("Custom scale slider", "कस्टम स्केल स्लाइडर"),
|
|
("Decrease", "घटाएं"),
|
|
("Increase", "बढ़ाएं"),
|
|
("Show virtual mouse", "वर्चुअल माउस दिखाएं"),
|
|
("Virtual mouse size", "वर्चुअल माउस का आकार"),
|
|
("Small", "छोटा"),
|
|
("Large", "बड़ा"),
|
|
("Show virtual joystick", "वर्चुअल जॉयस्टिक दिखाएं"),
|
|
("Edit note", "नोट संपादित करें"),
|
|
("Alias", "उपनाम (Alias)"),
|
|
("ScrollEdge", "किनारे से स्क्रॉल"),
|
|
("Allow insecure TLS fallback", "असुरक्षित TLS फ़ालबैक की अनुमति दें"),
|
|
("allow-insecure-tls-fallback-tip", "पुराने सर्वर कनेक्शन के लिए उपयोग करें।"),
|
|
("Disable UDP", "UDP अक्षम करें"),
|
|
("disable-udp-tip", "कनेक्शन समस्याओं के लिए UDP बंद करें।"),
|
|
("server-oss-not-support-tip", "OSS सर्वर इसका समर्थन नहीं करता।"),
|
|
("input note here", "यहाँ नोट दर्ज करें"),
|
|
("note-at-conn-end-tip", "कनेक्शन के अंत में नोट दिखाएं"),
|
|
("Show terminal extra keys", "टर्मिनल की अतिरिक्त कुंजियाँ दिखाएं"),
|
|
("Relative mouse mode", "सापेक्ष (Relative) माउस मोड"),
|
|
("rel-mouse-not-supported-peer-tip", "रिमोट साइड पर समर्थित नहीं है।"),
|
|
("rel-mouse-not-ready-tip", "तैयार नहीं है।"),
|
|
("rel-mouse-lock-failed-tip", "माउस लॉक विफल।"),
|
|
("rel-mouse-exit-{}-tip", "बाहर निकलने के लिए {} दबाएं"),
|
|
("rel-mouse-permission-lost-tip", "अनुमति खो गई।"),
|
|
("Changelog", "परिवर्तन सूची (Changelog)"),
|
|
("keep-awake-during-outgoing-sessions-label", "आउटगोइंग सत्र के दौरान जागते रहें"),
|
|
("keep-awake-during-incoming-sessions-label", "इनकमिंग सत्र के दौरान जागते रहें"),
|
|
("Continue with {}", "{} के साथ जारी रखें"),
|
|
("Display Name", "प्रदर्शित नाम"),
|
|
("password-hidden-tip", "पासवर्ड सुरक्षा के लिए छिपा हुआ है।"),
|
|
("preset-password-in-use-tip", "पूर्व-निर्धारित पासवर्ड उपयोग में है।"),
|
|
("Enable privacy mode", "गोपनीयता मोड सक्षम करें"),
|
|
("allow-remote-toolbar-docking-any-edge", "रिमोट टूलबार को विंडो के किसी भी किनारे पर डॉक करने की अनुमति दें"),
|
|
("API Token", "API टोकन"),
|
|
("Deploy", "तैनात करें"),
|
|
("Custom ID (optional)", "कस्टम ID (वैकल्पिक)"),
|
|
("server_requires_deployment_tip", "सर्वर के लिए इस डिवाइस को स्पष्ट रूप से तैनात करना आवश्यक है। अभी तैनात करें?"),
|
|
("The server does not require explicit deployment.", "सर्वर के लिए स्पष्ट तैनाती आवश्यक नहीं है।"),
|
|
("Unknown response.", "अज्ञात प्रतिक्रिया।"),
|
|
("wayland-keyboard-input-disabled-tip", "कीबोर्ड इनपुट की अनुमति दें?"),
|
|
("wayland-keyboard-input-consent-tip", "आप इस रिमोट कंप्यूटर पर जो टाइप करते हैं (पासवर्ड सहित) उसे उस पर मौजूद अन्य ऐप्स पढ़ सकते हैं।"),
|
|
("wayland-keyboard-input-applies-to-tip", "यह चयन इस पर लागू होता है:"),
|
|
("wayland-soft-keyboard-input-label", "सॉफ्ट कीबोर्ड इनपुट"),
|
|
("wayland-keyboard-input-reset-choice-tip", "कीबोर्ड इनपुट चयन रीसेट करें"),
|
|
("remember-wayland-keyboard-choice-tip", "इस रिमोट कंप्यूटर के लिए दोबारा न पूछें"),
|
|
("Why this happens", "ऐसा क्यों होता है"),
|
|
("Switch display", "डिस्प्ले बदलें"),
|
|
("Show monitor switch button on the main toolbar", "मुख्य टूलबार पर मॉनिटर स्विच बटन दिखाएं"),
|
|
("Show on the minimized toolbar", "न्यूनतम किए गए टूलबार पर दिखाएं"),
|
|
("All monitors", "सभी मॉनिटर"),
|
|
("#{} monitor", "मॉनिटर {}"),
|
|
("conn-e2ee-unavailable-tip", "एंड-टू-एंड एन्क्रिप्शन सत्यापित नहीं किया जा सका।\nदूरस्थ डिवाइस अभी भी सेट अप हो रहा हो सकता है। बाद में फिर प्रयास करें।\nयदि यह समस्या बनी रहती है, तो सर्वर अविश्वसनीय हो सकता है।\nफिर भी जारी रखें?"),
|
|
("ID whitelisting", "ID श्वेतसूची (Whitelisting)"),
|
|
("Use ID whitelisting", "ID श्वेतसूची का उपयोग करें"),
|
|
("id_whitelist_tip", "केवल श्वेतसूचीबद्ध ID ही मुझ तक पहुंच सकते हैं"),
|
|
("id_whitelist_wildcard_tip", "वाइल्डकार्ड समर्थित हैं: '*' किसी भी संख्या के अक्षरों से मेल खाता है, '?' ठीक एक अक्षर से"),
|
|
("Invalid ID", "अमान्य ID"),
|
|
("Your ID is blocked by the peer", "आपकी ID दूसरे पक्ष द्वारा अवरुद्ध कर दी गई है"),
|
|
("Your ip is blocked by the peer", "आपका IP दूसरे पक्ष द्वारा अवरुद्ध कर दिया गया है"),
|
|
("id_whitelist_caveat_tip", "ID कनेक्ट करने वाले क्लाइंट द्वारा बताई जाती है। श्वेतसूची जोखिम कम करती है और पासवर्ड या 2FA का विकल्प नहीं है"),
|
|
("whitelist_cidr_tip", "CIDR नोटेशन समर्थित है, उदाहरण के लिए 192.168.1.0/24"),
|
|
("Continue", "जारी रखें"),
|
|
("Browser didn't open? Use the url below to sign in.", "ब्राउज़र नहीं खुला? लॉगिन करने के लिए नीचे दिए गए URL का उपयोग करें।"),
|
|
("Lock canvas", "कैनवास लॉक करें"),
|
|
("Sync clipboard between sessions", "सत्रों के बीच क्लिपबोर्ड सिंक करें"),
|
|
("sync-clipboard-between-sessions-tip", "एक रिमोट सत्र में कॉपी किए गए टेक्स्ट या चित्र आपके अन्य जुड़े सत्रों के क्लिपबोर्ड पर भी भेजे जाते हैं।"),
|
|
("terminal-clipboard-write-tip", ""),
|
|
("Allow terminal apps to copy to clipboard", ""),
|
|
("Enable", "सक्षम करें"),
|
|
("Reuse one connection for port forwarding", "पोर्ट फ़ॉरवर्डिंग के लिए एक ही कनेक्शन दोबारा उपयोग करें"),
|
|
("port-forward-mux-tip", "एक पोर्ट फ़ॉरवर्डिंग के सभी कनेक्शन दूसरे कंप्यूटर से बने एक ही कनेक्शन से होकर जाते हैं, हर एक के लिए दोबारा कनेक्ट और लॉगिन करने के बजाय।"),
|
|
].iter().cloned().collect();
|
|
}
|