Files
rustdesk/src/lang/kz.rs
RustDesk 3fc11c0f81 port forward shared conn (#16062)
* 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>
2026-09-05 14:59:51 +08:00

773 lines
69 KiB
Rust
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
lazy_static::lazy_static! {
pub static ref T: std::collections::HashMap<&'static str, &'static str> =
[
("Status", "Күй"),
("Your Desktop", "Сіздің Жұмыс үстеліңіз"),
("desk_tip", "Сіздің Жұмыс үстеліңіз осы ID мен құпия сөз арқылы қолжетімді"),
("Password", "Құпия сөз"),
("Ready", "Дайын"),
("Established", "Қосылды"),
("connecting_status", "RustDesk желісіне қосылуда..."),
("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", "Кездейсоқ құпия сөзді жаңарту"),
("Set your own password", "Өз құпия сөзіңізді орнатыңыз"),
("Enable keyboard/mouse", "Пернетақта/Тінтуірді қосу"),
("Enable clipboard", "Көшіру-тақтасын қосу"),
("Enable file transfer", "Файыл Тасымалдауды қосу"),
("Enable TCP tunneling", "TCP тунелдеуді қосу"),
("IP Whitelisting", "IP Ақ-тізімі"),
("ID/Relay Server", "ID/Relay сербері"),
("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", "Тек a-z, A-Z, 0-9, - (dash) және _ (астынғы-сызық) таңбалары рұқсат етілген. Бірінші таңба a-z, A-Z болуы қажет. Ұзындығы 6 мен 16 арасы."),
("Website", "Web-сайт"),
("About", "Туралы"),
("Slogan_tip", "Осы бей-берекет әлемде жүрекпен жасалған!"),
("Privacy Statement", "Құпиялылық туралы мәлімдеме"),
("Mute", "Дыбыссыздандыру"),
("Build Date", "Құрастырылған күні"),
("Version", "Нұсқа"),
("Home", "Басты бет"),
("Audio Input", "Аудио Еңгізу"),
("Enhancements", "Жақсартулар"),
("Hardware Codec", "Hardware Codec"),
("Adaptive bitrate", "Adaptive bitrate"),
("ID Server", "ID Сербері"),
("Relay Server", "Relay Сербері"),
("API Server", "API Сербері"),
("invalid_http", "http:// немесе https://'пен басталуы қажет"),
("Invalid IP", "Бұрыс IP-Мекенжай"),
("Invalid format", "Бұрыс формат"),
("server_not_support", "Сербер әзірше қолдамайды"),
("Not available", "Қолжетімсіз"),
("Too frequent", "Тым жиі"),
("Cancel", "Болдырмау"),
("Skip", "Өткізіп жіберу"),
("Close", "Жабу"),
("Retry", "Қайтадан көру"),
("OK", "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", "Лақал"),
("Remote", "Қашықтағы"),
("Remote Computer", "Қашықтағы Қампұтыр"),
("Local Computer", "Лақал Қампұтыр"),
("Confirm Delete", "Жоюды Растау"),
("Delete", "Жою"),
("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", "Түпнұсқа"),
("Shrink", "Қысу"),
("Stretch", "Созу"),
("Scrollbar", "Scrollbar"),
("ScrollAuto", "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", "Кілт сәйкессіздігі"),
("Timeout", "Үзіліс"),
("Failed to connect to relay server", "Relay серберіне қосылу сәтсіз"),
("Failed to connect via rendezvous server", "Rendezvous сербері арқылы қосылу сәтсіз"),
("Failed to connect via relay server", "Relay сербері арқылы қосылу сәтсіз"),
("Failed to make direct connection to remote desktop", "Қашықтағы жұмыс үстеліне тікелей қосылым жасау сәтсіз"),
("Set Password", "Құпия сөзді Орнату"),
("OS Password", "OS Құпия сөзі"),
("install_tip", "UAC кесірінен, RustDesk кейбірде қашықтағы жақ ретінде дұрыс жұмыс істей алмайды. UAC'пен қиындықты болдырмау үшін, төмендегі батырманы басып RustDesk'ті жүйеге орнатыңыз."),
("Click to upgrade", "Жаңғырту үшін басыңыз"),
("Configure", "Қалыптау"),
("config_acc", "Сіздің Жұмыс үстеліңізді қашықтан басқару үшін, RustDesk'ке \"Қолжетімділік\" рұқсаттарын беруіңіз керек."),
("config_screen", "Сіздің Жұмыс үстеліңізге қашықтан қол жеткізу үшін, RustDesk'ке \"Екіренді Жазу\" рұқсаттарын беруіңіз керек."),
("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 ...", "Тыңдау ..."),
("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", "Орын"),
("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 Proxy"),
("Socks5/Http(s) Proxy", "Socks5/Http(s) Proxy"),
("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 құрылғыңызды тінтуір немесе түрту арқылы басқару үшін, RustDesk'ке \"Қолжетімділік\" сербесін қолдануға рұқсат беруініз керек."),
("android_input_permission_tip2", "Келесі Жүйе Орнатпалары бетіне барып, [Орнатылған Сербестер]'ді тауып кіріңіз, сосын [RustDesk Еңгізу] сербесін іске қосыңыз."),
("android_new_connection_tip", "Сіздің ағымдағы құрылғыңызды басқаруды қалайтын жаңа басқару сұранысы түсті."),
("android_service_will_start_tip", "\"Екіренді Тұсіру\" қосылған кезде сербес аутыматты іске қосылып, басқа құрылғыларға сіздің құрылғыға қосылым сұраныстауға мүмкіндің береді."),
("android_stop_service_tip", "Сербесті жабу аутыматты түрде барлық орнатылған қосылымдарды жабады."),
("android_version_audio_tip", "Ағымдағы Android нұсқасы аудионы түсіруді қолдамайды, Android 10 не жоғарғысына жаңғыртуды өтінеміз."),
("android_start_service_tip", "Экранды бөлісу сербесін іске қосу үшін [Сербесті іске қосу]'ды түртіңіз немесе [Екіренді Түсіру] рұқсатын қосыңыз."),
("android_permission_may_not_change_tip", "Орнатылған қосылымдар үшін рұқсаттар қайта қосылғанша бірден өзгермеуі мүмкін."),
("Account", "Есепкі"),
("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", "Егер де бұл ерекшелікті өшіруді қаласаңыз, келесі RustDesk апылқат орнатпалары бетіне барып, [Бәтері]'ні тауып кіріңіз де [Шектеусіз]'ден құсбелгіні алып тастауды өтінеміз"),
("Start on boot", "Бут кезінде іске қосу"),
("Start the screen sharing service on boot, requires special permissions", "Экранды бөлісу сербесін бут кезінде іске қосу, арнайы рұқсаттарды қажет етеді"),
("Connection not allowed", "Қосылу рұқсат етілмеген"),
("Legacy mode", "Ескі мода"),
("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", "Арақатынас"),
("Image Quality", "Сурет Сапасы"),
("Scroll Style", "Scroll Теңшетұрі"),
("Show Toolbar", "Құралдар тақтасын көрсету"),
("Hide Toolbar", "Құралдар тақтасын жасыру"),
("Direct Connection", "Тікелей Қосылым"),
("Relay Connection", "Релай Қосылым"),
("Secure Connection", "Қауіпсіз Қосылым"),
("Insecure Connection", "Қатерлі Қосылым"),
("Scale original", "Scale original"),
("Scale adaptive", "Scale adaptive"),
("General", "Жалпы"),
("Security", "Қауіпсіздік"),
("Theme", "Тақырып"),
("Dark Theme", "Қараңғы тақырып"),
("Light Theme", "Ашық тақырып"),
("Dark", "Қараңғы"),
("Light", "Ашық"),
("Follow System", "Жүйеге еру"),
("Enable hardware codec", "Hardware codec'ті қосу"),
("Unlock Security Settings", "Қауіпсіздік орнатпаларын құлыптан шығару"),
("Enable audio", "Аудионы қосу"),
("Unlock Network Settings", "Желі орнатпаларын құлыптан шығару"),
("Server", "Сербер"),
("Direct IP Access", "Тікелей IP қолжетімділік"),
("Proxy", "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", "Толық қолжетімділік"),
("Screen Share", "Екіренді бөлісу"),
("ubuntu-21-04-required", "Wayland Ubuntu 21.04 немесе одан жоғары нұсқасын қажет етеді."),
("wayland-requires-higher-linux-version", "Wayland linux дистрибутивінің жоғарырақ нұсқасын қажет етеді. X11 жұмыс үстелін қолданып көріңіз немесе операциялық жүйеңізді өзгертіңіз."),
("xdp-portal-unavailable", "Wayland экранды түсіру сәтсіз болды. XDG Desktop Portal құлаған немесе қолжетімсіз болуы мүмкін. Оны `systemctl --user restart xdg-desktop-portal` арқылы қайта қосып көріңіз."),
("JumpLink", "View"),
("Please Select the screen to be shared(Operate on the peer side).", "Бөлісетін экранды таңдаңыз (бірдей жағынан жұмыс жасаңыз)."),
("Show RustDesk", "RustDesk'ті көрсету"),
("This PC", "Бұл ДК"),
("or", "немесе"),
("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 қолдауы эксперименттік сатыда, қадағалаусыз қолжетімділік қажет болса X11 қолданыңыз."),
("Right click to select tabs", "Бөлімшелерді таңдау үшін оң жақ батырмамен шертіңіз"),
("Skipped", "Өткізіп жіберілді"),
("Add to address book", "Мекенжай кітабына қосу"),
("Group", "Топ"),
("Search", "Іздеу"),
("Closed manually by web console", "Web консоль арқылы қолмен жабылды"),
("Local keyboard type", "Лақал пернетақта түрі"),
("Select local keyboard type", "Лақал пернетақта түрін таңдау"),
("software_render_tip", "Егер Linux астында Nvidia видеокартасын қолдансаңыз және қосылғаннан кейін қашықтағы терезе бірден жабылса, ашық бастапқы кодты Nouveau драйверіне ауысып, программалық рендерингті қолдануды таңдау көмектесуі мүмкін. Программаны қайта қосу қажет."),
("Always use software rendering", "Әрқашан программалық рендерингті қолдану"),
("config_input", "Қашықтағы жұмыс үстелін пернетақтамен басқару үшін, RustDesk'ке \"Еңгізуді Қадағалау\" рұқсаттарын беруіңіз керек."),
("config_microphone", "Қашықтан сөйлесу үшін, RustDesk'ке \"Аудио Жазу\" рұқсаттарын беруіңіз керек."),
("request_elevation_tip", "Қашықтағы жақта біреу болса, артықшылықты көтеруді де сұрауыңызға болады."),
("Wait", "Күту"),
("Elevation Error", "Артықшылықты көтеру қатесі"),
("Ask the remote user for authentication", "Қашықтағы қолданушыдан аутентификация сұрау"),
("Choose this if the remote account is administrator", "Қашықтағы есепкі әкімші болса, мұны таңдаңыз"),
("Transmit the username and password of administrator", "Әкімшінің қолданушы аты мен құпия сөзін жіберу"),
("still_click_uac_tip", "Қашықтағы қолданушыдан RustDesk іске қосылған UAC терезесінде OK басуды әлі де талап етеді."),
("Request Elevation", "Артықшылықты көтеруді сұрау"),
("wait_accept_uac_tip", "Қашықтағы қолданушының UAC диалогын қабылдауын күтуді өтінеміз."),
("Elevate successfully", "Артықшылық сәтті көтерілді"),
("uppercase", "бас әріп"),
("lowercase", "кіші әріп"),
("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", "Әдепкі scroll теңшетұрі"),
("Default Image Quality", "Әдепкі сурет сапасы"),
("Default Codec", "Әдепкі codec"),
("Bitrate", "Bitrate"),
("FPS", "FPS"),
("Auto", "Ауты"),
("Other Default Options", "Басқа әдепкі опциялар"),
("Voice call", "Дауыстық қоңырау"),
("Text chat", "Мәтіндік чат"),
("Stop voice call", "Дауыстық қоңырауды тоқтату"),
("relay_hint_tip", "Тікелей қосылу мүмкін болмауы мүмкін; релай арқылы қосылып көруіңізге болады. Сонымен қатар, бірінші әрекетте релайды қолданғыңыз келсе, ID-ге \"/r\" жұрнағын қосуыңызға немесе соңғы сештер картасында бар болса \"Әрқашан да релай арқылы қосылу\" опциясын таңдауыңызға болады."),
("Reconnect", "Қайта қосылу"),
("Codec", "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", "Ой, соңғы сештер жоқ!\nЖаңасын жоспарлайтын кез."),
("empty_favorite_tip", "Әлі таңдаулы пирлер жоқ па?\nҚосылатын біреуді тауып, оны таңдаулыларыңызға қосайық!"),
("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 Server Pro'ны {} немесе одан жаңа нұсқаға жаңартуды өтінеміз!"),
("pull_group_failed_tip", "Топты жаңарту сәтсіз болды"),
("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 қосылған, бұл RustDesk'тің басқарылатын жақ ретінде дұрыс жұмыс істеуіне кедергі келтіруі мүмкін."),
("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, тікелей IP немесе портпен домен (<domain>:<port>) еңгізуіңізге болады.\nБасқа сербердегі құрылғыға қол жеткізгіңіз келсе, сербер мекенжайын қосыңыз (<id>@<server_address>?key=<key_value>), мысалы,\n9123456234@192.168.16.1:21117?key=5Qbwsde3unUcJBtrx9ZkvUmwFNoExHzpryHuPUdqlWM=.\nЖария сербердегі құрылғыға қол жеткізгіңіз келсе, \"<id>@public\" еңгізіңіз, жария сербер үшін кілт қажет емес.\n\nБірінші қосылымда релай қосылымын мәжбүрлеп қолданғыңыз келсе, ID соңына \"/r\" қосыңыз, мысалы, \"9123456234/r\"."),
("privacy_mode_impl_mag_tip", "1-мода"),
("privacy_mode_impl_virtual_display_tip", "2-мода"),
("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", "Екі-факторлы аутентификацияны іске қосу"),
("enable-2fa-desc", "Аутентификаторды қазір орнатуды өтінеміз. Телефоныңызда немесе жұмыс үстеліңізде Authy, Microsoft немесе Google Authenticator сияқты аутентификатор апылқатын қолдануыңызға болады.\n\nQR кодты апылқатыңызбен сканерлеп, екі-факторлы аутентификацияны іске қосу үшін апылқат көрсететін кодты еңгізіңіз."),
("wrong-2fa-code", "Кодты тексеру мүмкін болмады. Код пен жергілікті уақыт орнатпаларының дұрыстығын тексеріңіз"),
("enter-2fa-title", "Екі-факторлы аутентификация"),
("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", "RustDesk негізінде"),
("outgoing_only_desk_tip", "Бұл теңшелген басылым.\nСіз басқа құрылғыларға қосыла аласыз, бірақ басқа құрылғылар сіздің құрылғыңызға қосыла алмайды."),
("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", "Web консольде көбірек"),
("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", "Әдепкі протокол мен порт Socks5 және 1080"),
("no_audio_input_device_tip", "Аудио еңгізу құрылғысы табылмады."),
("Incoming", "Кіріс"),
("Outgoing", "Шығыс"),
("Clear Wayland screen selection", "Wayland экран таңдауын тазалау"),
("clear_Wayland_screen_selection_tip", "Экран таңдауын тазалағаннан кейін, бөлісетін экранды қайта таңдай аласыз."),
("confirm_clear_Wayland_screen_selection_tip", "Wayland экран таңдауын тазалауға сенімдісіз бе?"),
("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 bot"),
("enable-bot-tip", "Бұл ерекшелікті іске қоссаңыз, 2FA кодын ботыңыздан ала аласыз. Ол сондай-ақ қосылым хабарландыруы ретінде жұмыс істей алады."),
("enable-bot-desc", "1. @BotFather'мен чатты ашыңыз.\n2. \"/newbot\" командасын жіберіңіз. Бұл қадамды аяқтағаннан кейін токен аласыз.\n3. Жаңадан құрылған ботыңызбен чатты бастаңыз. Оны белсендіру үшін \"/hello\" сияқты алға қарай қиғаш сызықтан (\"/\") басталатын хабарлама жіберіңіз.\n"),
("cancel-2fa-confirm-tip", "2FA-ны бас тартуға сенімдісіз бе?"),
("cancel-bot-confirm-tip", "Telegram bot-ты бас тартуға сенімдісіз бе?"),
("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", "Сенімді құрылғыларда 2FA тексеруін өткізіп жіберу"),
("Parent directory", "Аталық бума"),
("Resume", "Жалғастыру"),
("Invalid file name", "Бұрыс файыл атауы"),
("one-way-file-transfer-tip", "Басқарылатын жақта бір-бағытты файыл тасымалдау іске қосылған."),
("Authentication Required", "Аутентификация қажет"),
("Authenticate", "Аутентификациялау"),
("web_id_input_tip", "Сіз бір сербердегі ID еңгізуіңізге болады, web клиентінде тікелей IP қолжетімділікке қолдау көрсетілмейді.\nБасқа сербердегі құрылғыға қол жеткізгіңіз келсе, сербер мекенжайын қосыңыз (<id>@<server_address>?key=<key_value>), мысалы,\n9123456234@192.168.16.1:21117?key=5Qbwsde3unUcJBtrx9ZkvUmwFNoExHzpryHuPUdqlWM=.\nЖария сербердегі құрылғыға қол жеткізгіңіз келсе, \"<id>@public\" еңгізіңіз, жария сербер үшін кілт қажет емес."),
("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 10 немесе одан жоғарысын қажет етеді."),
("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", "Орнату әдісін тексеру сәтсіз болды. \"Жүктеу\" батырмасын басып, шығарылым бетінен жүктеп, қолмен жаңартуды өтінеміз."),
("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 hole punching'ті іске қосу"),
("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", "Қолданушы аты немесе domain\\username еңгізіңіз"),
("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", "Бүркеншік ат"),
("ScrollEdge", "ScrollEdge"),
("Allow insecure TLS fallback", "Қатерлі TLS қайтуына рұқсат ету"),
("allow-insecure-tls-fallback-tip", "Әдепкіде RustDesk TLS қолданатын протоколдар үшін сербер сертификатын тексереді.\nБұл опция қосылғанда, RustDesk тексеру сәтсіз болған жағдайда тексеру қадамын өткізіп жіберуге қайтып, жалғастырады."),
("Disable UDP", "UDP-ні өшіру"),
("disable-udp-tip", "Тек TCP қолданатынын-қолданбайтынын басқарады.\nБұл опция қосылғанда, RustDesk енді UDP 21116 қолданбайды, оның орнына TCP 21116 қолданылады."),
("server-oss-not-support-tip", "ЕСКЕРТПЕ: RustDesk server OSS бұл ерекшелікті қамтымайды."),
("input note here", "осында нота еңгізіңіз"),
("note-at-conn-end-tip", "Қосылым соңында нота сұрау"),
("Show terminal extra keys", "Терминалдың қосымша пернелерін көрсету"),
("Relative mouse mode", "Салыстырмалы тінтуір модасы"),
("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", "Өзгерістер журналы"),
("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 Token"),
("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 Ақ-тізімі"),
("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.", "Браузер ашылмады ма? Кіру үшін төмендегі сілтемені пайдаланыңыз."),
("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();
}