mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-11-04 00:33:12 +00:00
* fix web break introduced in 38f130071 fix(linux): enable mouse side buttons in remote sessions (#14848)
* feat(shortcuts): user-configurable keyboard shortcuts for session actions
Adds a keyboard shortcut feature (Rust matcher + Dart UI + cross-language
parity tests) that lets users bind combinations like Ctrl+Alt+Shift+P to
session actions. Bindings are stored in LocalConfig under
`keyboard-shortcuts`; the matcher gates dispatch on `enabled` and
`pass_through` flags so flipping the master switch off is a hard stop.
Wire-up summary:
- src/keyboard/shortcuts.rs: matcher, default bindings, parity test against
flutter/test/fixtures/default_keyboard_shortcuts.json
- src/keyboard.rs: shortcut intercept in process_event{,_with_session},
feature-gated to `flutter`; runs before key swapping so users bind to
physical keys
- src/flutter_ffi.rs: main_reload_keyboard_shortcuts +
main_get_default_keyboard_shortcuts; reload_from_config seeded in main_init
- flutter/lib/common/widgets/keyboard_shortcuts/: shared config page body,
recording dialog, shortcut display formatter, action group registry
- flutter/lib/desktop/pages/desktop_keyboard_shortcuts_page.dart and
flutter/lib/mobile/pages/mobile_keyboard_shortcuts_page.dart: platform
shells around the shared body
- flutter/lib/models/shortcut_model.dart: per-session ShortcutModel +
registerSessionShortcutActions for actions with no toolbar TToggleMenu /
TRadioMenu (fullscreen, switch display/tab, close tab, voice call, etc.)
- flutter/lib/common/widgets/toolbar.dart: optional `actionId` field on
TToggleMenu / TRadioMenu, plus per-helper auto-register pass that wires
tagged entries' existing onChanged into the ShortcutModel
- flutter/test/keyboard_shortcuts_test.dart + fixtures: cross-language
parity (default bindings, supported key vocabulary)
Design principles applied during review:
1. Additions are fine; modifications to original logic must be deliberate.
Tagging an existing TToggleMenu entry with `actionId:` is an addition.
Rewriting its onChanged to satisfy a new contract is a modification —
and was reverted for every case where the original click behavior was
working. Four closures were touched and then reverted (mobile View
Mode, Privacy mode multi-impl, Relative mouse mode, Reverse mouse
wheel); their shortcuts are wired via standalone closures in
shortcut_model.dart instead.
2. Toolbar auto-register is reserved for entries whose onChanged is
inherently self-flipping — typically `sessionToggleOption(name)` where
the named option is flipped in place and the input bool is unused. The
register pass passes `!menu.value` from registration time, which is
harmless under self-flipping but wrong for closures that consume the
input bool directly. Tagging a non-self-flipping entry forces a closure
rewrite; choose non-toolbar registration in that case.
3. When shortcuts are disabled, toolbar behavior must be bit-for-bit
unchanged. The matcher's `enabled`-gate already guarantees no
dispatch; the auto-register pass is left unconditional (its only effect
is HashMap operations on a separate ShortcutModel) so mid-session
enable works without a reconnect. The trade-off is intentional and
documented at the top of toolbarControls.
4. Comments stay terse. Rationale lives in one place — the doc comment of
the helper or registration site, not duplicated at every call site.
5. Where an existing helper needs a new optional behavior (e.g.
`_OptionCheckBox` gaining a tooltip slot), the new branch must reduce
to byte-identical output for existing callers (`trailing == null`
case → original `Expanded(Text)` layout). Verified.
6. Action IDs and labels stay consistent. Renamed `reset_cursor` →
`reset_canvas` so the action ID matches its user-facing label
("Reset canvas") and capability flag.
Out-of-scope but included:
- AGENTS.md: documents flutter_rust_bridge no-codegen workflow and the
Web target's hand-written TS client, since both are load-bearing for
any new FFI work.
- remote_toolbar.dart: i18n fix for the per-monitor tooltip ("All
monitors" / "Monitor #N"), unrelated to shortcuts but kept here.
* langs
* fix(keyboard): shortcuts, harden config and callback lifecycle
Signed-off-by: fufesou <linlong1266@gmail.com>
* feat(keyboard): shortcuts, color of "Reset to defaults"
Signed-off-by: fufesou <linlong1266@gmail.com>
* feat(keyboard): shortcuts, release keys before shortcut callback
Signed-off-by: fufesou <linlong1266@gmail.com>
* feat(keyboard): shortcuts, debug web
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix(keyboard): iPad, icon
Signed-off-by: fufesou <linlong1266@gmail.com>
* langs: add shortcut keys to az, gl, ur
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra4my61t8q1FN5n59wB16D
* fix(keyboard): shortcuts, keep local modifiers and release keys on the right session
When a chord fired, the shortcut path reused release_remote_keys(), which
replays synthetic releases through process_event(). That cleared the local
MODIFIERS_STATE while the user still held the modifiers, so the next key of
a held chord no longer matched and leaked to the remote, and it sent the
releases to the globally current session instead of the one that typed the
chord.
The shortcut path now releases the remote keys itself: it sends through the
caller's session, and restores the modifiers it released on the remote as
still held locally. The press that fired is remembered until its release,
so its auto repeats and its release are consumed instead of reaching the
remote.
Also state the contract for unavailable actions: a bound chord always
belongs to RustDesk and is a no-op when the session has no handler.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra4my61t8q1FN5n59wB16D
* fix(keyboard): shortcuts, record the physical key
The recording dialog and the Web Flutter matcher named keys by
LogicalKeyboardKey, while the native matcher sees the physical key through
its USB HID usage and the Web JS matcher through KeyboardEvent.code. On
AZERTY, QWERTZ, Dvorak and similar layouts a recorded binding then did not
fire, or fired from another key.
Name keys by their physical position everywhere: physicalKeyName maps the
USB HID usage to the stored name. A new fixture pins every name to its USB
HID usage, checked on the Dart side and against rdev::usb_hid_key_from_code
on the Rust side, and a test covers AZERTY and QWERTZ events.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra4my61t8q1FN5n59wB16D
* fix(keyboard): shortcuts, keep an empty binding list on re-enable
setEnabled seeded the defaults whenever the binding list was empty, so a
user who cleared every binding got all defaults back after disable and
enable. Seed only when the config has never held a bindings list.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra4my61t8q1FN5n59wB16D
* fix(keyboard): shortcuts, track every fired key until its release
FIRED_KEY held a single key, so overlapping shortcut keys broke it: with the
chord held, P then C overwrote P, P's release reached the remote, and a P
repeat could fire the screenshot again. A repeat after the modifiers were
released was also treated as a new press and leaked to the remote.
Keep a set of fired keys instead. Once a press fires, every event of that
key belongs to RustDesk until its release: repeats are consumed without
dispatching, whatever the modifiers do, and the release removes the key.
Entries whose release never arrives are dropped when a session view is
entered or a session is closed, not by guessing from the modifiers.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra4my61t8q1FN5n59wB16D
* fix(keyboard): shortcuts, keep fired keys per session
FIRED_KEYS was process-global while dispatch is per session. Closing or
entering any session cleared the fired keys of all of them, so a key still
held in another session leaked its release to that remote, and a key fired
in one session made the same key in another session look like a repeat.
Key the fired set by session: try_dispatch resolves the session first and
only looks at that session's keys, and session_close clears only the
closing session. Entering a session view no longer clears anything: it is
a pointer enter, and a fired key may still be physically held across it.
A key whose release is missed otherwise heals itself: its next press is
consumed as a repeat and that release removes it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra4my61t8q1FN5n59wB16D
* fix(shortcuts): preserve input state and refresh action availability
* fix(keyboard): shortcuts, keep a fired key owned across session close
Close tab is itself a shortcut, so the session that consumed the key press
is gone before the key is released. Both matchers dropped the key with the
session: the Flutter dispatcher removed its own entries in clear(), and the
Rust set was keyed by session and cleared in session_close. The release,
and the repeats while the key stayed held, then reached the next session's
remote as ordinary input.
Ownership of a fired key is physical, so it is now one set shared by every
session on each side, and closing a session no longer touches it: clear()
only drops the pending action and modifier replay, and the Rust session
state only tracks released modifiers. A key whose release is missed heals
itself on its next press. Entering view-only with the Flutter input source
still clears the Rust set, since that source stops routing key events to it.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra4my61t8q1FN5n59wB16D
* fix(keyboard): shortcuts, drop the Toggle Input Source action
The action switches the key capture backend between key down and key up.
Fired-key ownership lives in whichever matcher saw the press, the Flutter
dispatcher or the Rust set, and there is no handoff between them: after the
switch the repeats and the release of the held key reach the other backend,
which forwards them to the remote and, while the chord is held, matches the
action again and toggles the source back. Remove the shortcut instead of
building a handoff for one action. The toolbar radio menu is unchanged.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra4my61t8q1FN5n59wB16D
* perf(keyboard): shortcuts, parse the config once per stored value
The Flutter matcher read the local config three times and parsed its JSON
three times on every key press in legacy mode, on Web and in view-only.
Keep one parsed snapshot keyed by the raw stored string, so a key press
costs one config read and no parsing while the config is unchanged. The
existing readers are thin views of the same snapshot.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra4my61t8q1FN5n59wB16D
* fix(keyboard): shortcuts, run focus-changing actions on key release
Close tab and tab switching move keyboard focus to another session before
the key that fired them is released. On Linux the Flutter input source
routes map-mode sessions through the Rust matcher and legacy-mode sessions
through the Dart matcher, and neither knows the other's fired keys, so
after such an action the repeats and the release of the held key reached
the next session's remote, and the key stayed recorded as fired in the
matcher that saw the press.
Routing Linux legacy mode through the Rust FFI path instead is not a drop-in
change: the raw key handler builds its event with no unicode, so Rust's
legacy mode would fall back to US key names and lose the layout-aware
characters the Dart path sends today, and it would take modifiers from the
X11 key state instead of Flutter's.
Run these three actions when the fired key is released. The matcher that
consumed the press then also sees the repeats and the release, the remote
modifiers are still released on the press, and a session that closes drops
the action it owed. Both matchers keep the same list of actions.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra4my61t8q1FN5n59wB16D
* test(keyboard): shortcuts, pin the key-up action list on both sides
kShortcutActionsRunOnKeyUp and runs_on_release are two hand-kept lists of
the actions that run on key release. Add a shared fixture and check each
side against it, the way the key vocabulary and the default bindings are
already checked, so adding a focus-changing action on one side breaks a
test until the other side follows. The Dart test also checks that every
listed id is a configurable action.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra4my61t8q1FN5n59wB16D
* fix: prevent lost input after remote session shortcuts
Avoid synthetic Alt presses that activate the Windows system menu
and swallow the next character.
Trigger restart, switch-sides, and chat actions on key release so
focus changes cannot leave subsequent shortcut presses ignored.
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix(mobile): correct Chat keyboard and input helper behavior
- Keep soft keyboard and helper hidden when Chat opens via shortcut
- Restore soft input on touch and remote focus after Chat closes
- Handle modifier releases while Chat owns focus
- Clear hidden virtual modifiers while preserving held keys and Pin behavior
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix(shortcuts): prevent recording non-simultaneous key combinations
Build new captures from currently held keys instead of reusing released
letters. Preserve the last valid chord after release so it can be saved.
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix(shortcuts): isolate window actions and prevent duplicate Alt presses
- Dispatch shortcut actions only to the originating session window.
- Clear local modifier state on focus loss without resending modifiers
already released to Windows peers, preventing lost following input.
- Strengthen the regression assertion against extra Alt keydown events
Signed-off-by: fufesou <linlong1266@gmail.com>
* refact(shortcuts): empty default shortcuts for Cmd+Option+Shift+Del on macOS and iOS
Because Del may be ambiguous for new macOS users.
Cmd+Option+Shift+Backspace is "Empty Trash without confirmation" shortcut on macOS.
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: use session peer platform for Ctrl+Alt+Del events
Fix Android-to-Linux Ctrl+Alt+Del delivery by using the session's peer
platform instead of the desktop global session, which defaults to Windows
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: hide relative mouse mode shortcuts on Wayland
Separate relative mouse mode availability from screenshot support.
Filter unsupported actions and defaults while preserving saved bindings
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: align shortcut availability with platform support
- Hide unsupported mobile and web shortcut actions
- Enable mobile scaling and Android voice call shortcuts
- Use openMonitorInTheSameTab() for display switching
- Preserve cursor position when switching displays on desktop and web
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: prevent held-key shortcut recording bypass
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: preserve keyboard input after shortcut dialogs
Run native clipboard shortcuts on key release and wait for remote modifier releases before dispatching.
Release remote modifiers when mobile local UI takes focus, and document the tested iPad Bluetooth Mute shortcut limitation.
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: preserve remote key state during local shortcuts
Keep unrelated held keys pressed for session actions that retain input. Preserve key release when focus or input handling changes, and avoid synthetic Alt taps during shortcut dispatch.
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: suspend saved relative mouse shortcuts on Wayland
Filter the native active binding cache without changing stored configuration, so the binding becomes available again under X11.
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: exclude unsupported Wayland shortcuts from Flutter matching
Keep saved bindings intact while filtering the active config used by the Flutter matcher. Cover stored bindings and enable/pass-through flags in the existing shortcut tests.
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: retain forwarded key ownership across shortcut repeats
Ignore repeat presses for keys already forwarded to the peer, and release ordinary held keys before Show My Cursor enables view-only. Cover both paths with converter-level regressions.
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: release Flutter-held keys before view-only shortcuts
Track ordinary keys forwarded by the Dart matcher paths and await their releases before View Only or Show My Cursor disables input. Keep Mute key ownership and existing empty-cleanup timing unchanged.
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: filter active Flutter shortcuts by platform capabilities
Reuse the Settings action filter for saved bindings while preserving storage, default-seeding behavior and configurable Apple Ctrl+Alt+Del bindings.
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: filter native shortcut caches for mobile controllers
Suspend saved desktop-only actions on Android and iOS and hide unavailable iOS actions without changing persisted bindings. Keep native cache filtering aligned with Flutter platform capabilities.
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: share filtered shortcut bindings with the Web matcher
Pass the active platform config to JavaScript at startup and after settings changes, preserving unsupported saved bindings in local storage.
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: release Flutter-held keys before focus-changing shortcuts
Drain ordinary keys owned by the original session before run-on-key-up
actions and native clipboard callbacks. Preserve Mute holds, pending-action
cancellation and Web clipboard key-down activation.
Document the required Web matcher counterpart in the bridge:
rustdesk/rustdesk-web-js@94abe431d6
Validation: 61 native Flutter tests, 32 Chrome/HTML tests, targeted analysis
and Windows debug build.
Signed-off-by: fufesou <linlong1266@gmail.com>
* refact: remove the useless comments
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: prevent Windows menu activation from Alt-only shortcuts
Neutralize the forwarded Alt with a balanced temporary Ctrl press when a consumed local shortcut releases its only modifier in Windows Map mode. Keep physical modifier tracking and normal Alt pass-through unchanged.
Add a regression covering both Alt keys, trigger repeats and the eventual physical release. Verified with 36 native shortcut tests and real Windows menu/input checks.
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: prevent Alt menu activation in all keyboard modes
Extend Windows Alt-only shortcut neutralization to Translate and Legacy. Keep the temporary Ctrl packets in Map mode so Legacy modifier synchronization cannot release Alt before Ctrl.
Extend the existing regression across keyboard modes and decode scan, virtual and control-key events. Verify 36 native tests and 34 Windows menu replay cases.
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: initialize outgoing chat before shortcut dispatch
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: guard Windows Alt release in Flutter legacy shortcuts
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: coordinate Web shortcut dispatch and Alt modifier cleanup
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: distinguish AltGraph from ordinary Alt shortcuts
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: dispatch macOS Web shortcuts without waiting for keyup
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: support legacy peers in privacy mode shortcut
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: exclude AltGraph from Flutter shortcut matching
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix: exclude GTK AltGr input from raw shortcut matching
Signed-off-by: fufesou <linlong1266@gmail.com>
* test: trim redundant keyboard shortcut coverage
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix(keyboard): prevent Cmd shortcuts from opening remote Start
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix(shortcuts): guard Windows menu keys after Ctrl/Cmd swapping
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix(shortcuts): align recording and display routing
Reject non-Apple AltGraph captures to match runtime filtering. Honor individual-display windows for next, previous, and all-display shortcuts.
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix(shortcuts): reject GTK AltGr chords in recorder
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix(android): restore keyboard focus for modifier-first input
Focus the existing FlutterView when a modifier is pressed without native view focus. This restores shortcut-first input after returning to RustDesk while preserving focused inputs and normal key dispatch.
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix(shortcuts): release held keys before keyboard mode changes
Drain Flutter-forwarded keys before keyboard-mode shortcut actions so releases use the original encoding. This prevents held keys from remaining down after a Web Input source 2 mode change.
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix(i18n): use sentence case for shortcut labels
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix(mobile): preserve touch modifiers in the input helper
Keep touch-selected modifiers visible after hiding the keyboard. Clear physical modifier releases locally in view-only mode so they do not reopen the helper.
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix(web): preserve modifiers across Legacy-to-Map shortcuts
Signed-off-by: fufesou <linlong1266@gmail.com>
* fix(shortcuts): check support before registering all displays view
Signed-off-by: fufesou <linlong1266@gmail.com>
---------
Signed-off-by: fufesou <linlong1266@gmail.com>
Co-authored-by: fufesou <linlong1266@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
818 lines
51 KiB
Rust
818 lines
51 KiB
Rust
lazy_static::lazy_static! {
|
||
pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||
[
|
||
("Status", "Tila"),
|
||
("Your Desktop", "Oma työpöytä"),
|
||
("desk_tip", "Työpöytääsi voidaan käyttää tällä tunnuksella ja salasanalla."),
|
||
("Password", "Salasana"),
|
||
("Ready", "Valmis"),
|
||
("Established", "Yhdistetty"),
|
||
("connecting_status", "Yhdistetään RustDesk verkkoon..."),
|
||
("Enable service", "Ota palvelu käyttöön"),
|
||
("Start service", "Käynnistä palvelu"),
|
||
("Service is running", "Palvelu on käynnissä"),
|
||
("Service is not running", "Palvelu ei ole käynnissä"),
|
||
("not_ready_status", "Ei valmis tarkista yhteys."),
|
||
("Control Remote Desktop", "Hallitse etätyöpöytää"),
|
||
("Transfer file", "Siirrä tiedosto"),
|
||
("Connect", "Yhdistä"),
|
||
("Recent sessions", "Viimeisimmät istunnot"),
|
||
("Address book", "Osoitekirja"),
|
||
("Confirmation", "Vahvistus"),
|
||
("TCP tunneling", "TCP tunnelointi"),
|
||
("Remove", "Poista"),
|
||
("Refresh random password", "Päivitä satunnainen salasana"),
|
||
("Set your own password", "Aseta oma salasana"),
|
||
("Enable keyboard/mouse", "Salli näppäimistö ja hiiri"),
|
||
("Enable clipboard", "Salli leikepöytä"),
|
||
("Enable file transfer", "Salli tiedostonsiirto"),
|
||
("Enable TCP tunneling", "Salli TCP tunnelointi"),
|
||
("IP Whitelisting", "IP osoitteiden sallintalista"),
|
||
("ID/Relay Server", "ID/Välityspalvelin"),
|
||
("Import server config", "Tuo palvelimen asetukset"),
|
||
("Export Server Config", "Vie palvelimen asetukset"),
|
||
("Import server configuration successfully", "Palvelimen asetukset tuotu onnistuneesti"),
|
||
("Export server configuration successfully", "Palvelimen asetukset viety onnistuneesti"),
|
||
("Invalid server configuration", "Virheellinen palvelimen määritys"),
|
||
("Clipboard is empty", "Leikepöytä on tyhjä"),
|
||
("Stop service", "Pysäytä palvelu"),
|
||
("Change ID", "Vaihda ID"),
|
||
("Your new ID", "Uusi ID"),
|
||
("length %min% to %max%", "pituus %min%–%max%"),
|
||
("starts with a letter", "alkaa kirjaimella"),
|
||
("allowed characters", "sallitut merkit"),
|
||
("id_change_tip", "Sallitut merkit: a–z, A–Z, 0–9, - ja _. Ensimmäisen merkin on oltava kirjain. Pituus 6–16 merkkiä."),
|
||
("Website", "Verkkosivusto"),
|
||
("About", "Tietoa"),
|
||
("Slogan_tip", "Tehty sydämellä tässä kaoottisessa maailmassa!"),
|
||
("Privacy Statement", "Tietosuojaseloste"),
|
||
("Mute", "Mykistä"),
|
||
("Build Date", "Koontipäivä"),
|
||
("Version", "Versio"),
|
||
("Home", "Etusivu"),
|
||
("Audio Input", "Äänitulo"),
|
||
("Enhancements", "Parannukset"),
|
||
("Hardware Codec", "Laitteistokoodekki"),
|
||
("Adaptive bitrate", "Mukautuva bittinopeus"),
|
||
("ID Server", "ID palvelin"),
|
||
("Relay Server", "Välityspalvelin"),
|
||
("API Server", "API palvelin"),
|
||
("invalid_http", "Osoitteen on alettava http:// tai https://"),
|
||
("Invalid IP", "Virheellinen IP osoite"),
|
||
("Invalid format", "Virheellinen muoto"),
|
||
("server_not_support", "Palvelin ei tue tätä ominaisuutta"),
|
||
("Not available", "Ei saatavilla"),
|
||
("Too frequent", "Liian tiheä pyyntö"),
|
||
("Cancel", "Peruuta"),
|
||
("Skip", "Ohita"),
|
||
("Close", "Sulje"),
|
||
("Retry", "Yritä uudelleen"),
|
||
("OK", "OK"),
|
||
("Password Required", "Salasana vaaditaan"),
|
||
("Please enter your password", "Syötä salasanasi"),
|
||
("Remember password", "Muista salasana"),
|
||
("Wrong Password", "Väärä salasana"),
|
||
("Do you want to enter again?", "Haluatko yrittää uudelleen?"),
|
||
("Connection Error", "Yhteysvirhe"),
|
||
("Error", "Virhe"),
|
||
("Reset by the peer", "Yhteys katkaistu vastapuolen toimesta"),
|
||
("Connecting...", "Yhdistetään..."),
|
||
("Connection in progress. Please wait.", "Yhdistetään – odota hetki."),
|
||
("Please try 1 minute later", "Yritä uudelleen minuutin kuluttua"),
|
||
("Login Error", "Kirjautumisvirhe"),
|
||
("Successful", "Onnistui"),
|
||
("Connected, waiting for image...", "Yhdistetty, odotetaan kuvaa..."),
|
||
("Name", "Nimi"),
|
||
("Type", "Tyyppi"),
|
||
("Modified", "Muokattu"),
|
||
("Size", "Koko"),
|
||
("Show Hidden Files", "Näytä piilotetut tiedostot"),
|
||
("Receive", "Vastaanota"),
|
||
("Send", "Lähetä"),
|
||
("Refresh File", "Päivitä tiedosto"),
|
||
("Local", "Paikallinen"),
|
||
("Remote", "Etä"),
|
||
("Remote Computer", "Etätietokone"),
|
||
("Local Computer", "Paikallinen tietokone"),
|
||
("Confirm Delete", "Vahvista poisto"),
|
||
("Delete", "Poista"),
|
||
("Properties", "Ominaisuudet"),
|
||
("Multi Select", "Monivalinta"),
|
||
("Select All", "Valitse kaikki"),
|
||
("Unselect All", "Poista kaikki valinnat"),
|
||
("Empty Directory", "Tyhjä kansio"),
|
||
("Not an empty directory", "Hakemisto ei ole tyhjä"),
|
||
("Are you sure you want to delete this file?", "Haluatko varmasti poistaa tämän tiedoston?"),
|
||
("Are you sure you want to delete this empty directory?", "Haluatko varmasti poistaa tämän tyhjän hakemiston?"),
|
||
("Are you sure you want to delete the file of this directory?", "Haluatko varmasti poistaa tämän hakemiston tiedoston?"),
|
||
("Do this for all conflicts", "Tee sama kaikille ristiriidoille"),
|
||
("This is irreversible!", "Tätä toimintoa ei voi perua!"),
|
||
("Deleting", "Poistetaan"),
|
||
("files", "tiedostoa"),
|
||
("Waiting", "Odotetaan"),
|
||
("Finished", "Valmis"),
|
||
("Speed", "Nopeus"),
|
||
("Custom Image Quality", "Mukautettu kuvanlaatu"),
|
||
("Privacy mode", "Yksityisyystila"),
|
||
("Block user input", "Estä käyttäjän toiminta"),
|
||
("Unblock user input", "Salli käyttäjän toiminta"),
|
||
("Adjust Window", "Sovita ikkuna"),
|
||
("Original", "Alkuperäinen"),
|
||
("Shrink", "Pienennä"),
|
||
("Stretch", "Venytä"),
|
||
("Scrollbar", "Vierityspalkki"),
|
||
("ScrollAuto", "Automaattinen vieritys"),
|
||
("Good image quality", "Hyvä kuvanlaatu"),
|
||
("Balanced", "Tasapainotettu"),
|
||
("Optimize reaction time", "Optimoi vasteaika"),
|
||
("Custom", "Mukautettu"),
|
||
("Show remote cursor", "Näytä etäkursori"),
|
||
("Show quality monitor", "Näytä laadunvalvonta"),
|
||
("Disable clipboard", "Poista leikepöytä käytöstä"),
|
||
("Lock after session end", "Lukitse istunnon päätyttyä"),
|
||
("Insert Ctrl + Alt + Del", "Lähetä Ctrl + Alt + Del"),
|
||
("Insert Lock", "Aseta lukitse"),
|
||
("Refresh", "Päivitä"),
|
||
("ID does not exist", "Tunnusta ei ole olemassa"),
|
||
("Failed to connect to rendezvous server", "Yhteys tapaamispalvelimeen epäonnistui"),
|
||
("Please try later", "Yritä myöhemmin uudelleen"),
|
||
("Remote desktop is offline", "Etätyöpöytä ei ole online tilassa"),
|
||
("Key mismatch", "Avaimet eivät täsmää"),
|
||
("Timeout", "Aikakatkaisu"),
|
||
("Failed to connect to relay server", "Yhteys välityspalvelimeen epäonnistui"),
|
||
("Failed to connect via rendezvous server", "Yhteys tapaamispalvelimen kautta epäonnistui"),
|
||
("Failed to connect via relay server", "Yhteys välityspalvelimen kautta epäonnistui"),
|
||
("Failed to make direct connection to remote desktop", "Suora yhteys etätyöpöytään epäonnistui"),
|
||
("Set Password", "Aseta salasana"),
|
||
("OS Password", "Käyttöjärjestelmän salasana"),
|
||
("install_tip", "Joissain tapauksissa RustDesk ei toimi oikein etäpuolella UAC:n vuoksi. Välttääksesi tämän, napsauta alla olevaa painiketta asentaaksesi RustDeskin järjestelmään."),
|
||
("Click to upgrade", "Päivitä napsauttamalla"),
|
||
("Configure", "Määritä"),
|
||
("config_acc", "Etätyöpöydän hallintaa varten sinun on annettava RustDeskille ”Esteettömyys”-oikeudet."),
|
||
("config_screen", "Etätyöpöydän käyttöä varten sinun on annettava RustDeskille ”Näytön tallennus” oikeudet."),
|
||
("Installing ...", "Asennetaan ..."),
|
||
("Install", "Asenna"),
|
||
("Installation", "Asennus"),
|
||
("Installation Path", "Asennuspolku"),
|
||
("Create start menu shortcuts", "Luo pikakuvakkeet Käynnistä valikkoon"),
|
||
("Create desktop icon", "Luo kuvake työpöydälle"),
|
||
("agreement_tip", "Aloittamalla asennuksen hyväksyt käyttöoikeussopimuksen."),
|
||
("Accept and Install", "Hyväksy ja asenna"),
|
||
("End-user license agreement", "Käyttöoikeussopimus"),
|
||
("Generating ...", "Luodaan ..."),
|
||
("Your installation is lower version.", "Asennettu versio on vanhempi."),
|
||
("not_close_tcp_tip", "Älä sulje tätä ikkunaa tunnelin ollessa käytössä"),
|
||
("Listening ...", "Kuunnellaan ..."),
|
||
("Remote Host", "Etätietokone"),
|
||
("Remote Port", "Etäportti"),
|
||
("Action", "Toiminto"),
|
||
("Add", "Lisää"),
|
||
("Local Port", "Paikallinen portti"),
|
||
("Local Address", "Paikallinen osoite"),
|
||
("Change Local Port", "Vaihda paikallinen porttia"),
|
||
("setup_server_tip", "Nopeampaa yhteyttä varten voit asettaa oman palvelimen"),
|
||
("Too short, at least 6 characters.", "Liian lyhyt, vähintään 6 merkkiä."),
|
||
("The confirmation is not identical.", "Vahvistus ei täsmää."),
|
||
("Permissions", "Oikeudet"),
|
||
("Accept", "Hyväksy"),
|
||
("Dismiss", "Hylkää"),
|
||
("Disconnect", "Katkaise yhteys"),
|
||
("Enable file copy and paste", "Salli tiedostojen kopiointi ja liittäminen"),
|
||
("Connected", "Yhdistetty"),
|
||
("Direct and encrypted connection", "Suora ja salattu yhteys"),
|
||
("Relayed and encrypted connection", "Välitetty ja salattu yhteys"),
|
||
("Direct and unencrypted connection", "Suora ja salaamaton yhteys"),
|
||
("Relayed and unencrypted connection", "Välitetty ja salaamaton yhteys"),
|
||
("Enter Remote ID", "Anna ID"),
|
||
("Enter your password", "Syötä salasanasi"),
|
||
("Logging in...", "Kirjaudutaan sisään..."),
|
||
("Enable RDP session sharing", "Salli RDP istunnon jakaminen"),
|
||
("Auto Login", "Automaattinen kirjautuminen"),
|
||
("Enable direct IP access", "Salli suora IP yhteys"),
|
||
("Rename", "Nimeä uudelleen"),
|
||
("Space", "Välilyönti"),
|
||
("Create desktop shortcut", "Luo työpöydän pikakuvake"),
|
||
("Change Path", "Vaihda polku"),
|
||
("Create Folder", "Luo kansio"),
|
||
("Please enter the folder name", "Anna kansion nimi"),
|
||
("Fix it", "Korjaa"),
|
||
("Warning", "Varoitus"),
|
||
("Login screen using Wayland is not supported", "Kirjautumisnäyttö Waylandilla ei ole tuettu"),
|
||
("Reboot required", "Uudelleenkäynnistys vaaditaan"),
|
||
("Unsupported display server", "Näyttöpalvelin ei ole tuettu"),
|
||
("x11 expected", "X11 odotettu"),
|
||
("Port", "Portti"),
|
||
("Settings", "Asetukset"),
|
||
("Username", "Käyttäjänimi"),
|
||
("Invalid port", "Virheellinen portti"),
|
||
("Closed manually by the peer", "Suljettu vastapuolen toimesta"),
|
||
("Enable remote configuration modification", "Salli etäasetusten muokkaus"),
|
||
("Run without install", "Suorita ilman asennusta"),
|
||
("Connect via relay", "Yhdistä välityspalvelimen kautta"),
|
||
("Always connect via relay", "Yhdistä aina välityspalvelimen kautta"),
|
||
("whitelist_tip", "Vain sallitut IP osoitteet voivat muodostaa yhteyden"),
|
||
("Login", "Kirjaudu sisään"),
|
||
("Verify", "Vahvista"),
|
||
("Remember me", "Muista minut"),
|
||
("Trust this device", "Luota tähän laitteeseen"),
|
||
("Verification code", "Vahvistuskoodi"),
|
||
("verification_tip", "Vahvistuskoodi on lähetetty rekisteröityyn sähköpostiosoitteeseen. Syötä koodi jatkaaksesi kirjautumista."),
|
||
("Logout", "Kirjaudu ulos"),
|
||
("Tags", "Tunnisteet"),
|
||
("Search ID", "Hae ID"),
|
||
("whitelist_sep", "Valkoisen listan erotin"),
|
||
("Add ID", "Lisää ID"),
|
||
("Add Tag", "Lisää tunniste"),
|
||
("Unselect all tags", "Poista kaikki tunnistevalinnat"),
|
||
("Network error", "Verkkovirhe"),
|
||
("Username missed", "Käyttäjänimi puuttuu"),
|
||
("Password missed", "Salasana puuttuu"),
|
||
("Wrong credentials", "Virheelliset kirjautumistiedot"),
|
||
("The verification code is incorrect or has expired", "Vahvistuskoodi on virheellinen tai vanhentunut"),
|
||
("Edit Tag", "Muokkaa tunnistetta"),
|
||
("Forget Password", "Unohditko salasanasi"),
|
||
("Favorites", "Suosikit"),
|
||
("Add to Favorites", "Lisää suosikkeihin"),
|
||
("Remove from Favorites", "Poista suosikeista"),
|
||
("Empty", "Tyhjä"),
|
||
("Invalid folder name", "Virheellinen kansion nimi"),
|
||
("Socks5 Proxy", "Socks5 välityspalvelin"),
|
||
("Socks5/Http(s) Proxy", "Socks5/HTTP(s)-välityspalvelin"),
|
||
("Discovered", "Löydetty"),
|
||
("install_daemon_tip", "Palvelun automaattista käynnistystä varten RustDesk daemon on asennettava järjestelmään."),
|
||
("Remote ID", "Etätunnus"),
|
||
("Paste", "Liitä"),
|
||
("Paste here?", "Liitä tähän?"),
|
||
("Are you sure to close the connection?", "Haluatko varmasti katkaista yhteyden?"),
|
||
("Download new version", "Lataa uusi versio"),
|
||
("Touch mode", "Kosketustila"),
|
||
("Mouse mode", "Hiiritila"),
|
||
("One-Finger Tap", "Yksi sormipainallus"),
|
||
("Left Mouse", "Vasen hiiren painike"),
|
||
("One-Long Tap", "Pitkä painallus yhdellä sormella"),
|
||
("Two-Finger Tap", "Kahden sormen napautus"),
|
||
("Right Mouse", "Oikea hiiren painike"),
|
||
("One-Finger Move", "Yhden sormen liike"),
|
||
("Double Tap & Move", "Kaksoisnapautus ja liike"),
|
||
("Mouse Drag", "Vedä hiirellä"),
|
||
("Three-Finger vertically", "Kolmen sormen pystysuora liike"),
|
||
("Mouse Wheel", "Hiiren rulla"),
|
||
("Two-Finger Move", "Kahden sormen liike"),
|
||
("Canvas Move", "Siirrä näkymää"),
|
||
("Pinch to Zoom", "Lähennä tai loitonna"),
|
||
("Canvas Zoom", "Suurennus"),
|
||
("Reset canvas", "Palauta näkymä"),
|
||
("No permission of file transfer", "Ei oikeutta tiedostonsiirtoon"),
|
||
("Note", "Huomautus"),
|
||
("Connection", "Yhteys"),
|
||
("Share screen", "Jaa näyttö"),
|
||
("Chat", "Keskustelu"),
|
||
("Total", "Yhteensä"),
|
||
("items", "kohdetta"),
|
||
("Selected", "Valittu"),
|
||
("Screen Capture", "Näytön kaappaus"),
|
||
("Input Control", "Tulon hallinta"),
|
||
("Audio Capture", "Äänen tallennus"),
|
||
("Do you accept?", "Hyväksytkö?"),
|
||
("Open System Setting", "Avaa järjestelmäasetukset"),
|
||
("How to get Android input permission?", "Kuinka myöntää Androidin oikeudet?"),
|
||
("android_input_permission_tip1", "Siirry Androidin asetuksiin ja ota RustDeskille käyttöön 'Syötteen ohjaus' oikeus."),
|
||
("android_input_permission_tip2", "Jos et löydä asetusta, etsi 'Esteettömyys' ja salli RustDesk ohjelman käyttö."),
|
||
("android_new_connection_tip", "Uusi yhteyspyyntö vastaanotettu."),
|
||
("android_service_will_start_tip", "RustDesk palvelu käynnistyy taustalla."),
|
||
("android_stop_service_tip", "Pysäytä taustapalvelu tarvittaessa RustDeskin asetuksista."),
|
||
("android_version_audio_tip", "Äänensiirto vaatii Android 10:n tai uudemman."),
|
||
("android_start_service_tip", "RustDesk palvelu käynnistetään..."),
|
||
("android_permission_may_not_change_tip", "Oikeudet eivät ehkä päivity heti. Käynnistä sovellus uudelleen, jos muutokset eivät tule voimaan."),
|
||
("Account", "Tili"),
|
||
("Overwrite", "Korvaa"),
|
||
("This file exists, skip or overwrite this file?", "Tämä tiedosto on jo olemassa, ohitetaanko vai korvataanko se?"),
|
||
("Quit", "Poistu"),
|
||
("Help", "Ohje"),
|
||
("Failed", "Epäonnistui"),
|
||
("Succeeded", "Onnistui"),
|
||
("Someone turns on privacy mode, exit", "Yksityisyystila otettu käyttöön, poistutaan"),
|
||
("Unsupported", "Ei tuettu"),
|
||
("Peer denied", "Vastapuoli hylkäsi pyynnön"),
|
||
("Peer exit", "Vastapuoli sulki yhteyden"),
|
||
("Failed to turn off", "Sammutus epäonnistui"),
|
||
("Turned off", "Sammutettu"),
|
||
("Language", "Kieli"),
|
||
("Keep RustDesk background service", "Pidä RustDeskin taustapalvelu käynnissä"),
|
||
("Ignore Battery Optimizations", "Ohita akun optimoinnit"),
|
||
("android_open_battery_optimizations_tip", "Poista RustDeskin akkuoptimointi, jotta yhteys pysyy vakaana taustalla."),
|
||
("Start on boot", "Käynnistä automaattisesti laitteen käynnistyessä"),
|
||
("Start the screen sharing service on boot, requires special permissions", "Käynnistä näytönjakopalvelu laitteen käynnistyessä (vaatii erityisoikeudet)"),
|
||
("Connection not allowed", "Yhteyttä ei sallita"),
|
||
("Legacy mode", "Perinteinen tila"),
|
||
("Map mode", "Karttatila"),
|
||
("Translate mode", "Käännöstila"),
|
||
("Use permanent password", "Käytä pysyvää salasanaa"),
|
||
("Use both passwords", "Käytä molempia salasanoja"),
|
||
("Set permanent password", "Aseta pysyvä salasana"),
|
||
("Enable remote restart", "Salli etäuudelleenkäynnistys"),
|
||
("Restart remote device", "Käynnistä etälaite uudelleen"),
|
||
("Are you sure you want to restart", "Haluatko varmasti käynnistää laitteen uudelleen?"),
|
||
("Restarting remote device", "Etälaitetta käynnistetään uudelleen"),
|
||
("remote_restarting_tip", "Odota, kunnes etälaite käynnistyy uudelleen ja muodostaa yhteyden."),
|
||
("Copied", "Kopioitu"),
|
||
("Exit Fullscreen", "Poistu koko näytöstä"),
|
||
("Fullscreen", "Koko näyttö"),
|
||
("Mobile Actions", "Puhelin toiminnot"),
|
||
("Select Monitor", "Valitse näyttö"),
|
||
("Control Actions", "Ohjaustoiminnot"),
|
||
("Display Settings", "Näyttöasetukset"),
|
||
("Ratio", "Suhde"),
|
||
("Image Quality", "Kuvanlaatu"),
|
||
("Scroll Style", "Vieritystyyli"),
|
||
("Show Toolbar", "Näytä työkalupalkki"),
|
||
("Hide Toolbar", "Piilota työkalupalkki"),
|
||
("Direct Connection", "Suora yhteys"),
|
||
("Relay Connection", "Välitetty yhteys"),
|
||
("Secure Connection", "Suojattu yhteys"),
|
||
("Insecure Connection", "Suojaamaton yhteys"),
|
||
("Scale original", "Skaalaa alkuperäinen"),
|
||
("Scale adaptive", "Mukautuva skaalaus"),
|
||
("General", "Yleiset"),
|
||
("Security", "Turvallisuus"),
|
||
("Theme", "Teema"),
|
||
("Dark Theme", "Tumma teema"),
|
||
("Light Theme", "Vaalea teema"),
|
||
("Dark", "Tumma"),
|
||
("Light", "Vaalea"),
|
||
("Follow System", "Seuraa järjestelmän teemaa"),
|
||
("Enable hardware codec", "Käytä laitteistokoodausta"),
|
||
("Unlock Security Settings", "Avaa suojausasetukset"),
|
||
("Enable audio", "Ota ääni käyttöön"),
|
||
("Unlock Network Settings", "Avaa verkkoasetukset"),
|
||
("Server", "Palvelin"),
|
||
("Direct IP Access", "Suora IP yhteys"),
|
||
("Proxy", "Välityspalvelin"),
|
||
("Apply", "Käytä"),
|
||
("Disconnect all devices?", "Katkaistaanko yhteys kaikkiin laitteisiin?"),
|
||
("Clear", "Tyhjennä"),
|
||
("Audio Input Device", "Äänitulolaite"),
|
||
("Use IP Whitelisting", "Käytä IP sallitut listaa"),
|
||
("Network", "Verkko"),
|
||
("Pin Toolbar", "Kiinnitä työkalupalkki"),
|
||
("Unpin Toolbar", "Irrota työkalupalkki"),
|
||
("Recording", "Tallennus"),
|
||
("Directory", "Hakemisto"),
|
||
("Automatically record incoming sessions", "Tallenna saapuvat istunnot automaattisesti"),
|
||
("Automatically record outgoing sessions", "Tallenna lähtevät istunnot automaattisesti"),
|
||
("Change", "Vaihda"),
|
||
("Start session recording", "Aloita istunnon tallennus"),
|
||
("Stop session recording", "Lopeta istunnon tallennus"),
|
||
("Enable recording session", "Ota istunnon tallennus käyttöön"),
|
||
("Enable LAN discovery", "Ota LAN havaitseminen käyttöön"),
|
||
("Deny LAN discovery", "Estä LAN havaitseminen"),
|
||
("Write a message", "Kirjoita viesti"),
|
||
("Prompt", "Kehote"),
|
||
("Please wait for confirmation of UAC...", "Odota UAC hyväksyntää..."),
|
||
("elevated_foreground_window_tip", "Käyttäjävalvontaikkuna on etualalla, hyväksy pyyntö etäkäytön jatkamiseksi."),
|
||
("Disconnected", "Yhteys katkaistu"),
|
||
("Other", "Muu"),
|
||
("Confirm before closing multiple tabs", "Vahvista ennen useiden välilehtien sulkemista"),
|
||
("Keyboard Settings", "Näppäimistöasetukset"),
|
||
("Full Access", "Täysi käyttöoikeus"),
|
||
("Screen Share", "Näytönjako"),
|
||
("ubuntu-21-04-required", "Wayland vaatii Ubuntu 21.04:n tai uudemman version."),
|
||
("wayland-requires-higher-linux-version", "Wayland vaatii uudemman Linux jakelun version. Kokeile X11 työpöytää tai vaihda käyttöjärjestelmää."),
|
||
("xdp-portal-unavailable", "Waylandin näytön kaappaus epäonnistui. XDG Desktop Portal on saattanut kaatua tai ei ole käytettävissä. Yritä käynnistää se uudelleen komennolla `systemctl --user restart xdg-desktop-portal`."),
|
||
("JumpLink", "Pikalinkki"),
|
||
("Please Select the screen to be shared(Operate on the peer side).", "Valitse jaettava näyttö (toiminto etäpäässä)."),
|
||
("Show RustDesk", "Näytä RustDesk"),
|
||
("This PC", "Tämä tietokone"),
|
||
("or", "tai"),
|
||
("Elevate", "Korota oikeudet"),
|
||
("Zoom cursor", "Suurennusosoitin"),
|
||
("Accept sessions via password", "Hyväksy istunnot salasanalla"),
|
||
("Accept sessions via click", "Hyväksy istunnot napsauttamalla"),
|
||
("Accept sessions via both", "Hyväksy istunnot kummallakin tavalla"),
|
||
("Please wait for the remote side to accept your session request...", "Odota, että etäpää hyväksyy istuntopyyntösi..."),
|
||
("One-time Password", "Kertakäyttösalasana"),
|
||
("Use one-time password", "Käytä kertakäyttösalasanaa"),
|
||
("One-time password length", "Kertakäyttösalasanan pituus"),
|
||
("Request access to your device", "Pyydä pääsyä laitteeseesi"),
|
||
("Hide connection management window", "Piilota yhteydenhallintaikkuna"),
|
||
("hide_cm_tip", "Yhteydenhallintaikkuna voidaan piilottaa, jotta etäistunto ei keskeydy."),
|
||
("wayland_experiment_tip", "Wayland tuki on kokeellinen ja saattaa aiheuttaa yhteysongelmia."),
|
||
("Right click to select tabs", "Valitse välilehti hiiren oikealla painikkeella"),
|
||
("Skipped", "Ohitettu"),
|
||
("Add to address book", "Lisää osoitekirjaan"),
|
||
("Group", "Ryhmä"),
|
||
("Search", "Haku"),
|
||
("Closed manually by web console", "Suljettu manuaalisesti verkkokonsolista"),
|
||
("Local keyboard type", "Paikallinen näppäimistötyyppi"),
|
||
("Select local keyboard type", "Valitse paikallinen näppäimistötyyppi"),
|
||
("software_render_tip", "Jos laitteistokiihdytys ei toimi oikein, voit käyttää ohjelmistopohjaista renderöintiä."),
|
||
("Always use software rendering", "Käytä aina ohjelmistopohjaista renderöintiä"),
|
||
("config_input", "Syöteasetukset"),
|
||
("config_microphone", "Mikrofoni"),
|
||
("request_elevation_tip", "Etätoiminto vaatii järjestelmänvalvojan oikeudet."),
|
||
("Wait", "Odota"),
|
||
("Elevation Error", "Oikeuksien korotus epäonnistui"),
|
||
("Ask the remote user for authentication", "Pyydä etäkäyttäjää vahvistamaan oikeudet"),
|
||
("Choose this if the remote account is administrator", "Valitse tämä, jos etätili on järjestelmänvalvoja"),
|
||
("Transmit the username and password of administrator", "Lähetä järjestelmänvalvojan käyttäjätunnus ja salasana"),
|
||
("still_click_uac_tip", "Etäkäyttäjän on edelleen hyväksyttävä UAC kehote omalla koneellaan."),
|
||
("Request Elevation", "Pyydä oikeuksien korotusta"),
|
||
("wait_accept_uac_tip", "Odota, että etäkäyttäjä hyväksyy UAC pyynnön..."),
|
||
("Elevate successfully", "Oikeuksien korotus onnistui"),
|
||
("uppercase", "iso kirjain"),
|
||
("lowercase", "pieni kirjain"),
|
||
("digit", "numero"),
|
||
("special character", "erikoismerkki"),
|
||
("length>=8", "vähintään 8 merkkiä"),
|
||
("Weak", "Heikko"),
|
||
("Medium", "Keskitaso"),
|
||
("Strong", "Vahva"),
|
||
("Switch Sides", "Vaihda puolia"),
|
||
("Please confirm if you want to share your desktop?", "Haluatko varmasti jakaa työpöytäsi?"),
|
||
("Display", "Näyttö"),
|
||
("Default View Style", "Oletusnäkymän tyyli"),
|
||
("Default Scroll Style", "Oletusvieritys tyyli"),
|
||
("Default Image Quality", "Oletuskuvanlaatu"),
|
||
("Default Codec", "Oletuskoodekki"),
|
||
("Bitrate", "Bittinopeus"),
|
||
("FPS", "Kuvataajuus (FPS)"),
|
||
("Auto", "Automaattinen"),
|
||
("Other Default Options", "Muut oletusasetukset"),
|
||
("Voice call", "Äänipuhelu"),
|
||
("Text chat", "Tekstikeskustelu"),
|
||
("Stop voice call", "Lopeta äänipuhelu"),
|
||
("relay_hint_tip", "Jos suora yhteys ei toimi, käytetään automaattisesti välityspalvelinta."),
|
||
("Reconnect", "Yhdistä uudelleen"),
|
||
("Codec", "Koodekki"),
|
||
("Resolution", "Resoluutio"),
|
||
("No transfers in progress", "Ei käynnissä olevia siirtoja"),
|
||
("Set one-time password length", "Aseta kertakäyttösalasanan pituus"),
|
||
("RDP Settings", "RDP asetukset"),
|
||
("Sort by", "Järjestä"),
|
||
("New Connection", "Uusi yhteys"),
|
||
("Restore", "Palauta"),
|
||
("Minimize", "Pienennä"),
|
||
("Maximize", "Suurenna"),
|
||
("Your Device", "Sinun laitteesi"),
|
||
("empty_recent_tip", "Ei äskettäisiä istuntoja"),
|
||
("empty_favorite_tip", "Ei suosikkeja"),
|
||
("empty_lan_tip", "LAN laitteita ei löytynyt"),
|
||
("empty_address_book_tip", "Osoitekirja on tyhjä"),
|
||
("Empty Username", "Tyhjä käyttäjänimi"),
|
||
("Empty Password", "Tyhjä salasana"),
|
||
("Me", "Minä"),
|
||
("identical_file_tip", "Saman niminen tiedosto on jo olemassa"),
|
||
("show_monitors_tip", "Näytä kaikki käytettävissä olevat näytöt"),
|
||
("View Mode", "Näkymätila"),
|
||
("verify_rustdesk_password_tip", "Vahvista RustDesk salasanasi kirjautumista varten"),
|
||
("No need to elevate", "Oikeuksien korotusta ei tarvita"),
|
||
("System Sound", "Järjestelmän ääni"),
|
||
("Default", "Oletus"),
|
||
("New RDP", "Uusi RDP yhteys"),
|
||
("Fingerprint", "Sormenjälki"),
|
||
("Copy Fingerprint", "Kopioi sormenjälki"),
|
||
("no fingerprints", "Ei sormenjälkiä"),
|
||
("Update", "Päivitä"),
|
||
("resolution_original_tip", "Näytä alkuperäisessä resoluutiossa ilman skaalausta"),
|
||
("resolution_fit_local_tip", "Sovita etänäyttö paikalliseen näkymään"),
|
||
("resolution_custom_tip", "Käytä mukautettua resoluutiota"),
|
||
("Collapse toolbar", "Tiivistä työkalupalkki"),
|
||
("Accept and Elevate", "Hyväksy ja korota oikeudet"),
|
||
("accept_and_elevate_btn_tooltip", "Hyväksy ja korota oikeudet järjestelmänvalvojaksi"),
|
||
("clipboard_wait_response_timeout_tip", "Leikepöydän pyyntö aikakatkaistiin – ei vastausta etäpäästä."),
|
||
("Incoming connection", "Saapuva yhteys"),
|
||
("Outgoing connection", "Lähtevä yhteys"),
|
||
("Exit", "Poistu"),
|
||
("Open", "Avaa"),
|
||
("logout_tip", "Haluatko varmasti kirjautua ulos?"),
|
||
("Service", "Palvelu"),
|
||
("Start", "Käynnistä"),
|
||
("Stop", "Pysäytä"),
|
||
("exceed_max_devices", "Olet saavuttanut hallittavien laitteiden enimmäismäärän."),
|
||
("Sync with recent sessions", "Synkronoi viimeisimpiin istuntoihin"),
|
||
("Sort tags", "Järjestä tunnisteet"),
|
||
("Open connection in new tab", "Avaa yhteys uuteen välilehteen"),
|
||
("Move tab to new window", "Siirrä välilehti uuteen ikkunaan"),
|
||
("Can not be empty", "Ei voi olla tyhjä"),
|
||
("Already exists", "On jo olemassa"),
|
||
("Change Password", "Vaihda salasana"),
|
||
("Refresh Password", "Päivitä salasana"),
|
||
("ID", "Tunnus"),
|
||
("Grid View", "Ruudukkonäkymä"),
|
||
("List View", "Luettelonäkymä"),
|
||
("Select", "Valitse"),
|
||
("Toggle Tags", "Näytä/piilota tunnisteet"),
|
||
("pull_ab_failed_tip", "Osoitekirjan lataus epäonnistui palvelimelta."),
|
||
("push_ab_failed_tip", "Osoitekirjan lähetys palvelimelle epäonnistui."),
|
||
("synced_peer_readded_tip", "Synkronoitu laite lisättiin uudelleen."),
|
||
("Change Color", "Vaihda väri"),
|
||
("Primary Color", "Pääväri"),
|
||
("HSV Color", "HSV väriarvot"),
|
||
("Installation Successful!", "Asennus onnistui!"),
|
||
("Installation failed!", "Asennus epäonnistui!"),
|
||
("Reverse mouse wheel", "Käänteinen hiiren rullaussuunta"),
|
||
("{} sessions", "{} istuntoa"),
|
||
("scam_title", "Huijausvaroitus"),
|
||
("scam_text1", "Älä anna tuntemattomille henkilöille pääsyä tietokoneeseesi."),
|
||
("scam_text2", "RustDesk ei koskaan pyydä maksua tai etäkäyttöä ilman lupaasi."),
|
||
("Don't show again", "Älä näytä uudelleen"),
|
||
("I Agree", "Hyväksyn"),
|
||
("Decline", "Hylkää"),
|
||
("Timeout in minutes", "Aikakatkaisu minuuteissa"),
|
||
("auto_disconnect_option_tip", "Katkaise yhteys automaattisesti, jos ei aktiivisuutta määräaikaan mennessä."),
|
||
("Connection failed due to inactivity", "Yhteys epäonnistui toimettomuuden vuoksi"),
|
||
("Check for software update on startup", "Tarkista ohjelmistopäivitykset käynnistyksen yhteydessä"),
|
||
("upgrade_rustdesk_server_pro_to_{}_tip", "Päivitä RustDesk Server Pro versioon {} jatkaaksesi."),
|
||
("pull_group_failed_tip", "Ryhmäasetusten nouto epäonnistui."),
|
||
("Filter by intersection", "Suodata leikkausten perusteella"),
|
||
("Remove wallpaper during incoming sessions", "Poista taustakuva saapuvien istuntojen ajaksi"),
|
||
("Test", "Testaa"),
|
||
("display_is_plugged_out_msg", "Näyttö on irrotettu"),
|
||
("No displays", "Ei näyttöjä"),
|
||
("Open in new window", "Avaa uudessa ikkunassa"),
|
||
("Show displays as individual windows", "Näytä näytöt erillisinä ikkunoina"),
|
||
("Use all my displays for the remote session", "Käytä kaikkia näyttöjä etäistunnossa"),
|
||
("selinux_tip", "SELinux saattaa estää etäyhteyden toiminnan. Tarkista asetukset."),
|
||
("Change view", "Vaihda näkymä"),
|
||
("Big tiles", "Suuret ruudut"),
|
||
("Small tiles", "Pienet ruudut"),
|
||
("List", "Lista"),
|
||
("Virtual display", "Virtuaalinäyttö"),
|
||
("Plug out all", "Irrota kaikki"),
|
||
("True color (4:4:4)", "Tarkka väri (4:4:4)"),
|
||
("Enable blocking user input", "Estä käyttäjän syöte etäpäässä"),
|
||
("id_input_tip", "Anna etätunnus muodossa tunnus@palvelin"),
|
||
("privacy_mode_impl_mag_tip", "Yksityisyystila käyttää suurennustekniikkaa piilottaakseen sisällön."),
|
||
("privacy_mode_impl_virtual_display_tip", "Yksityisyystila käyttää virtuaalinäyttöä tietosuojan takaamiseksi."),
|
||
("Enter privacy mode", "Siirry yksityisyystilaan"),
|
||
("Exit privacy mode", "Poistu yksityisyystilasta"),
|
||
("idd_not_support_under_win10_2004_tip", "Virtuaalinäyttöä ei tueta Windows 10 2004 versiota vanhemmissa järjestelmissä."),
|
||
("input_source_1_tip", "Valitse syöte 1: fyysinen näppäimistö tai hiiri"),
|
||
("input_source_2_tip", "Valitse syöte 2: virtuaalinen syöte"),
|
||
("Swap control-command key", "Vaihda Ctrl ja Command näppäinten paikkaa"),
|
||
("swap-left-right-mouse", "Vaihda hiiren vasen ja oikea painike"),
|
||
("2FA code", "2FA koodi"),
|
||
("More", "Lisää"),
|
||
("enable-2fa-title", "Ota kaksivaiheinen todennus käyttöön"),
|
||
("enable-2fa-desc", "Lisää turvallisuutta vahvistamalla kirjautumisesi 2FA koodilla."),
|
||
("wrong-2fa-code", "Väärä 2FA koodi"),
|
||
("enter-2fa-title", "Syötä 2FA koodi"),
|
||
("Email verification code must be 6 characters.", "Sähköpostivarmennuskoodin on oltava 6 merkkiä pitkä."),
|
||
("2FA code must be 6 digits.", "2FA koodin on oltava 6 numeroa."),
|
||
("Multiple Windows sessions found", "Useita Windows istuntoja havaittu"),
|
||
("Please select the session you want to connect to", "Valitse istunto, johon haluat muodostaa yhteyden"),
|
||
("powered_by_me", "Ylpeästi kehitetty omavaraisesti"),
|
||
("outgoing_only_desk_tip", "Tämä asennus tukee vain lähteviä yhteyksiä."),
|
||
("preset_password_warning", "Esiasetettu salasana voi olla turvaton — vaihda se suojataksesi yhteytesi."),
|
||
("Security Alert", "Turvailmoitus"),
|
||
("My address book", "Oma osoitekirja"),
|
||
("Personal", "Henkilökohtainen"),
|
||
("Owner", "Omistaja"),
|
||
("Set shared password", "Aseta jaettu salasana"),
|
||
("Exist in", "Sisältyy kohteeseen"),
|
||
("Read-only", "Vain luku"),
|
||
("Read/Write", "Luku ja kirjoitus"),
|
||
("Full Control", "Täysi hallinta"),
|
||
("share_warning_tip", "Jakaminen antaa muille pääsyn laitteeseesi. Varmista, että luotat käyttäjään."),
|
||
("Everyone", "Kaikki"),
|
||
("ab_web_console_tip", "Osoitekirjaa voidaan hallita myös verkkokonsolin kautta."),
|
||
("allow-only-conn-window-open-tip", "Salli vain yksi yhteyshallintaikkuna kerrallaan."),
|
||
("no_need_privacy_mode_no_physical_displays_tip", "Yksityisyystilaa ei tarvita, koska fyysisiä näyttöjä ei ole."),
|
||
("Follow remote cursor", "Seuraa etäosoitinta"),
|
||
("Follow remote window focus", "Seuraa etäikkunan kohdistusta"),
|
||
("default_proxy_tip", "Käytetään oletusarvoista välityspalvelinta, ellei muuta määritetty."),
|
||
("no_audio_input_device_tip", "Äänitulolaitetta ei löydy."),
|
||
("Incoming", "Saapuva"),
|
||
("Outgoing", "Lähtevä"),
|
||
("Clear Wayland screen selection", "Tyhjennä Wayland näyttövalinta"),
|
||
("clear_Wayland_screen_selection_tip", "Tyhjentää nykyisen Wayland näytön valinnan."),
|
||
("confirm_clear_Wayland_screen_selection_tip", "Haluatko varmasti tyhjentää Wayland näyttövalinnan?"),
|
||
("android_new_voice_call_tip", "Uusi äänipuhelu aloitettu"),
|
||
("texture_render_tip", "Käytä tekstuuripohjaista renderöintiä paremman suorituskyvyn saavuttamiseksi."),
|
||
("Use texture rendering", "Käytä tekstuurirenderöintiä"),
|
||
("Floating window", "Kelluva ikkuna"),
|
||
("floating_window_tip", "Kelluva ikkuna pysyy muiden sovellusten päällä etäistunnon aikana."),
|
||
("Keep screen on", "Pidä näyttö päällä"),
|
||
("Never", "Ei koskaan"),
|
||
("During controlled", "Kun etäohjattuna"),
|
||
("During service is on", "Kun palvelu on käynnissä"),
|
||
("Capture screen using DirectX", "Kaappaa näyttö käyttämällä DirectX"),
|
||
("Back", "Takaisin"),
|
||
("Apps", "Sovellukset"),
|
||
("Volume up", "Lisää äänenvoimakkuutta"),
|
||
("Volume down", "Vähennä äänenvoimakkuutta"),
|
||
("Power", "Virta"),
|
||
("Telegram bot", "Telegram-botti"),
|
||
("enable-bot-tip", "Ota Telegram botti käyttöön etähallintaa varten."),
|
||
("enable-bot-desc", "Mahdollistaa ilmoitukset ja etätoiminnot Telegramin kautta."),
|
||
("cancel-2fa-confirm-tip", "Haluatko varmasti poistaa kaksivaiheisen todennuksen käytöstä?"),
|
||
("cancel-bot-confirm-tip", "Haluatko varmasti poistaa Telegram-botin käytöstä?"),
|
||
("About RustDesk", "Tietoa RustDeskistä"),
|
||
("Send clipboard keystrokes", "Lähetä leikepöydän näppäinsyötteet"),
|
||
("network_error_tip", "Verkkovirhe – tarkista yhteys ja yritä uudelleen."),
|
||
("Unlock with PIN", "Avaa PIN-koodilla"),
|
||
("Requires at least {} characters", "Vaatii vähintään {} merkkiä"),
|
||
("Wrong PIN", "Väärä PIN-koodi"),
|
||
("Set PIN", "Aseta PIN-koodi"),
|
||
("Enable trusted devices", "Ota luotetut laitteet käyttöön"),
|
||
("Manage trusted devices", "Hallitse luotettuja laitteita"),
|
||
("Platform", "Alusta"),
|
||
("Days remaining", "Päiviä jäljellä"),
|
||
("enable-trusted-devices-tip", "Vain luotetut laitteet voivat muodostaa yhteyden ilman lisävahvistusta."),
|
||
("Parent directory", "Ylähakemisto"),
|
||
("Resume", "Jatka"),
|
||
("Invalid file name", "Virheellinen tiedostonimi"),
|
||
("one-way-file-transfer-tip", "Tiedostonsiirto on yksisuuntainen – vain lähetys tai vastaanotto."),
|
||
("Authentication Required", "Tunnistautuminen vaaditaan"),
|
||
("Authenticate", "Tunnistaudu"),
|
||
("web_id_input_tip", "Anna etätunnus verkkoliittymässä muodossa tunnus@palvelin"),
|
||
("Download", "Lataa"),
|
||
("Upload folder", "Lataa kansio"),
|
||
("Upload files", "Lataa tiedostoja"),
|
||
("Clipboard is synchronized", "Leikepöytä on synkronoitu"),
|
||
("Update client clipboard", "Päivitä asiakkaan leikepöytä"),
|
||
("Untagged", "Tunnisteeton"),
|
||
("new-version-of-{}-tip", "Uusi versio sovelluksesta {} on saatavilla"),
|
||
("Accessible devices", "Käytettävissä olevat laitteet"),
|
||
("upgrade_remote_rustdesk_client_to_{}_tip", "Päivitä etä-RustDesk-asiakasversioon {} yhteensopivuuden takaamiseksi"),
|
||
("d3d_render_tip", "Käytä Direct3D-renderöintiä paremman suorituskyvyn saavuttamiseksi"),
|
||
("Use D3D rendering", "Käytä D3D-renderöintiä"),
|
||
("Printer", "Tulostin"),
|
||
("printer-os-requirement-tip", "Tulostustoiminto vaatii yhteensopivan käyttöjärjestelmän"),
|
||
("printer-requires-installed-{}-client-tip", "Tulostus vaatii, että {} asiakas on asennettu"),
|
||
("printer-{}-not-installed-tip", "{} tulostinta ei ole asennettu"),
|
||
("printer-{}-ready-tip", "{}-tulostin on valmis"),
|
||
("Install {} Printer", "Asenna {} tulostin"),
|
||
("Outgoing Print Jobs", "Lähtevät tulostustyöt"),
|
||
("Incoming Print Jobs", "Saapuvat tulostustyöt"),
|
||
("Incoming Print Job", "Saapuva tulostustyö"),
|
||
("use-the-default-printer-tip", "Käytä oletustulostinta"),
|
||
("use-the-selected-printer-tip", "Käytä valittua tulostinta"),
|
||
("auto-print-tip", "Tulosta saapuvat työt automaattisesti"),
|
||
("print-incoming-job-confirm-tip", "Hyväksytäänkö saapuvan tulostustyön tulostus?"),
|
||
("remote-printing-disallowed-tile-tip", "Etätulostus estetty"),
|
||
("remote-printing-disallowed-text-tip", "Etätulostus ei ole sallittu tässä laitteessa tai yhteydessä."),
|
||
("save-settings-tip", "Tallenna asetukset"),
|
||
("dont-show-again-tip", "Älä näytä uudelleen"),
|
||
("Take screenshot", "Ota kuvakaappaus"),
|
||
("Taking screenshot", "Otetaan kuvakaappausta"),
|
||
("screenshot-merged-screen-not-supported-tip", "Yhdistetyn näytön kuvakaappaus ei ole tuettu"),
|
||
("screenshot-action-tip", "Valitse, mitä haluat tehdä kuvakaappaukselle"),
|
||
("Save as", "Tallenna nimellä"),
|
||
("Export", "Vie"),
|
||
("Export Logs", "Vie lokit"),
|
||
("Import Folder", "Tuo kansio"),
|
||
("Copy to clipboard", "Kopioi leikepöydälle"),
|
||
("Enable remote printer", "Ota etätulostin käyttöön"),
|
||
("Downloading {}", "Ladataan {}"),
|
||
("{} Update", "{} päivitys"),
|
||
("{}-to-update-tip", "Päivitä sovellus {} jatkaaksesi"),
|
||
("download-new-version-failed-tip", "Uuden version lataus epäonnistui"),
|
||
("Auto update", "Automaattinen päivitys"),
|
||
("update-failed-check-msi-tip", "Päivitys epäonnistui – tarkista MSI asennuspaketti"),
|
||
("websocket_tip", "Käytä WebSocket protokollaa yhteyden muodostamiseen"),
|
||
("Use WebSocket", "Käytä WebSocketia"),
|
||
("Trackpad speed", "Kosketuslevyn nopeus"),
|
||
("Default trackpad speed", "Oletusnopeus kosketuslevylle"),
|
||
("Numeric one-time password", "Numeerinen kertakäyttösalasana"),
|
||
("Enable IPv6 P2P connection", "Ota IPv6 P2P yhteys käyttöön"),
|
||
("Enable UDP hole punching", "Ota käyttöön UDP hole punching tekniikka"),
|
||
("View camera", "Näytä kamera"),
|
||
("Enable camera", "Ota kamera käyttöön"),
|
||
("No cameras", "Ei kameroita"),
|
||
("view_camera_unsupported_tip", "Kameranäkymä ei ole tuettu tällä alustalla"),
|
||
("Terminal", "Pääte"),
|
||
("Enable terminal", "Ota pääte käyttöön"),
|
||
("New tab", "Uusi välilehti"),
|
||
("Keep terminal sessions on disconnect", "Säilytä pääteistunnot yhteyden katketessa"),
|
||
("Terminal (Run as administrator)", "Pääte (Suorita järjestelmänvalvojana)"),
|
||
("terminal-admin-login-tip", "Kirjaudu järjestelmänvalvojana käyttääksesi tätä päätettä"),
|
||
("Failed to get user token.", "Käyttäjätunnuksen hakeminen epäonnistui."),
|
||
("Incorrect username or password.", "Virheellinen käyttäjätunnus tai salasana."),
|
||
("The user is not an administrator.", "Käyttäjä ei ole järjestelmänvalvoja."),
|
||
("Failed to check if the user is an administrator.", "Järjestelmänvalvojan tarkistus epäonnistui."),
|
||
("Supported only in the installed version.", "Tuettu vain asennetussa versiossa."),
|
||
("elevation_username_tip", "Anna järjestelmänvalvojan käyttäjätunnus oikeuksien korotusta varten"),
|
||
("Preparing for installation ...", "Valmistellaan asennusta..."),
|
||
("Show my cursor", "Näytä osoittimeni"),
|
||
("Scale custom", "Mukautettu skaalaus"),
|
||
("Custom scale slider", "Mukautetun skaalauksen liukusäädin"),
|
||
("Decrease", "Pienennä"),
|
||
("Increase", "Suurenna"),
|
||
("Show virtual mouse", "Näytä virtuaalinen hiiri"),
|
||
("Virtual mouse size", "Virtuaalihiiren koko"),
|
||
("Small", "Pieni"),
|
||
("Large", "Suuri"),
|
||
("Show virtual joystick", "Näytä virtuaalinen ohjain"),
|
||
("Edit note", "Muokkaa muistiinpanoa"),
|
||
("Alias", "Alias"),
|
||
("ScrollEdge", "ScrollEdge"),
|
||
("Allow insecure TLS fallback", "Salli turvaton TLS-varajärjestely"),
|
||
("allow-insecure-tls-fallback-tip", "Oletuksena RustDesk vahvistaa palvelimen varmenteen TLS:ää käyttävissä protokollissa.\nKun tämä asetus on käytössä, RustDesk ohittaa vahvistusvaiheen ja jatkaa toimintaa, jos vahvistus epäonnistuu."),
|
||
("Disable UDP", "Poista UDP käytöstä"),
|
||
("disable-udp-tip", "Määrittää, käytetäänkö vain TCP:tä.\nKun tämä asetus on käytössä, RustDesk ei enää käytä UDP-porttia 21116, vaan sen sijaan käytetään TCP-porttia 21116."),
|
||
("server-oss-not-support-tip", "HUOMAUTUS: RustDesk-palvelimen OSS ei sisällä tätä ominaisuutta."),
|
||
("input note here", "syötä muistiinpano tähän"),
|
||
("note-at-conn-end-tip", "Kysy muistiinpanoa yhteyden päättyessä"),
|
||
("Show terminal extra keys", "Näytä päätteen lisänäppäimet"),
|
||
("Relative mouse mode", "Suhteellinen hiiritila"),
|
||
("rel-mouse-not-supported-peer-tip", "Yhdistetty etäpää ei tue suhteellista hiiritilaa."),
|
||
("rel-mouse-not-ready-tip", "Suhteellinen hiiritila ei ole vielä valmis. Yritä uudelleen."),
|
||
("rel-mouse-lock-failed-tip", "Kursorin lukitseminen epäonnistui. Suhteellinen hiiritila on poistettu käytöstä."),
|
||
("rel-mouse-exit-{}-tip", "Poistu painamalla {}."),
|
||
("rel-mouse-permission-lost-tip", "Näppäimistöoikeus peruutettiin. Suhteellinen hiiritila on poistettu käytöstä."),
|
||
("Changelog", "Muutosloki"),
|
||
("keep-awake-during-outgoing-sessions-label", "Pidä näyttö hereillä lähtevien istuntojen aikana"),
|
||
("keep-awake-during-incoming-sessions-label", "Pidä näyttö hereillä saapuvien istuntojen aikana"),
|
||
("Continue with {}", "Jatka käyttäen {}"),
|
||
("Display Name", "Näyttönimi"),
|
||
("password-hidden-tip", "Pysyvä salasana on asetettu (piilotettu)."),
|
||
("preset-password-in-use-tip", "Esiasetettu salasana on parhaillaan käytössä."),
|
||
("Enable privacy mode", "Ota yksityisyystila käyttöön"),
|
||
("allow-remote-toolbar-docking-any-edge", "Salli etätyökalupalkin kiinnittäminen mihin tahansa ikkunan reunaan"),
|
||
("API Token", "API-tunnus"),
|
||
("Deploy", "Ota käyttöön"),
|
||
("Custom ID (optional)", "Mukautettu tunnus (valinnainen)"),
|
||
("server_requires_deployment_tip", "Palvelin edellyttää, että tämä laite otetaan käyttöön nimenomaisesti. Otetaanko käyttöön nyt?"),
|
||
("The server does not require explicit deployment.", "Palvelin ei edellytä nimenomaista käyttöönottoa."),
|
||
("Unknown response.", "Tuntematon vastaus."),
|
||
("wayland-keyboard-input-disabled-tip", "Sallitaanko näppäimistösyöte?"),
|
||
("wayland-keyboard-input-consent-tip", "Muut tämän etätietokoneen sovellukset voivat lukea sen, mitä kirjoitat (myös salasanat)."),
|
||
("wayland-keyboard-input-applies-to-tip", "Tämä valinta koskee:"),
|
||
("wayland-soft-keyboard-input-label", "Virtuaalinäppäimistön syöte"),
|
||
("wayland-keyboard-input-reset-choice-tip", "Nollaa näppäimistösyötteen valinta"),
|
||
("remember-wayland-keyboard-choice-tip", "Älä kysy uudelleen tältä etätietokoneelta"),
|
||
("Why this happens", "Miksi näin tapahtuu"),
|
||
("Switch display", "Vaihda näyttöä"),
|
||
("Show monitor switch button on the main toolbar", "Näytä näytön vaihtopainike päätyökalurivillä"),
|
||
("Show on the minimized toolbar", "Näytä pienennetyssä työkalurivissä"),
|
||
("All monitors", "Kaikki näytöt"),
|
||
("#{} monitor", "Näyttö {}"),
|
||
("conn-e2ee-unavailable-tip", "Päästä päähän -salausta ei voitu vahvistaa.\nEtälaite voi olla vielä määritettävänä. Yritä myöhemmin uudelleen.\nJos tämä jatkuu, palvelin ei ehkä ole luotettava.\nJatketaanko silti?"),
|
||
("ID whitelisting", "ID sallintalista"),
|
||
("Use ID whitelisting", "Käytä ID sallintalistaa"),
|
||
("id_whitelist_tip", "Vain sallitut ID:t voivat muodostaa yhteyden"),
|
||
("id_whitelist_wildcard_tip", "Jokerimerkit ovat tuettuja: '*' vastaa mitä tahansa määrää merkkejä, '?' täsmälleen yhtä merkkiä"),
|
||
("Invalid ID", "Virheellinen ID"),
|
||
("Your ID is blocked by the peer", "Vastapuoli on estänyt ID:si"),
|
||
("Your ip is blocked by the peer", "Vastapuoli on estänyt IP-osoitteesi"),
|
||
("id_whitelist_caveat_tip", "ID on yhdistävän asiakkaan ilmoittama. Sallintalista pienentää altistusta eikä korvaa salasanaa tai 2FA:ta"),
|
||
("whitelist_cidr_tip", "CIDR-merkintä on tuettu, esimerkiksi 192.168.1.0/24"),
|
||
("Continue", "Jatka"),
|
||
("Browser didn't open? Use the url below to sign in.", "Eikö selain avautunut? Kirjaudu sisään alla olevan osoitteen kautta."),
|
||
("Lock canvas", "Lukitse näkymä"),
|
||
("Sync clipboard between sessions", "Synkronoi leikepöytä istuntojen välillä"),
|
||
("sync-clipboard-between-sessions-tip", "Yhdessä etäistunnossa kopioitu teksti tai kuvat lähetetään myös muiden yhdistettyjen istuntojen leikepöydälle."),
|
||
("terminal-clipboard-write-tip", ""),
|
||
("Allow terminal apps to copy to clipboard", ""),
|
||
("Enable", "Ota käyttöön"),
|
||
("Reuse one connection for port forwarding", "Käytä yhtä yhteyttä portin edelleenohjaukseen"),
|
||
("port-forward-mux-tip", "Välittää kaikki yhden portin edelleenohjauksen yhteydet yhden vastapuoleen avatun yhteyden kautta sen sijaan, että jokaista varten muodostettaisiin yhteys ja kirjauduttaisiin uudelleen."),
|
||
("Enable WebRTC P2P connection", "Ota WebRTC P2P yhteys käyttöön"),
|
||
("Enable TCP hole punching", "Ota käyttöön TCP hole punching tekniikka"),
|
||
("The screen sharing request was declined on the remote device", "Näytön jakamispyyntö hylättiin etälaitteessa"),
|
||
("The screen sharing request timed out on the remote device", "Näytön jakamispyyntö aikakatkaistiin etälaitteessa"),
|
||
("RustDesk cannot reach the desktop session on the remote device, check that a desktop session is running and that RustDesk can use it", "RustDesk ei tavoita etälaitteen työpöytäistuntoa, tarkista että istunto on käynnissä ja että RustDesk voi käyttää sitä"),
|
||
("The desktop portal on the remote device is missing a capability needed for screen sharing or remote control, its backend may not be installed", "Etälaitteen työpöytäportaalista puuttuu näytön jakamiseen tai etäohjaukseen tarvittava ominaisuus, sen taustaosaa ei ehkä ole asennettu"),
|
||
("Screen sharing was approved on the remote device, but the PipeWire connection could not be opened", "Näytön jakaminen hyväksyttiin etälaitteessa, mutta PipeWire-yhteyttä ei voitu avata"),
|
||
("The screen sharing request ended without completing on the remote device", "Näytön jakamispyyntö etälaitteessa päättyi ilman että se saatiin valmiiksi"),
|
||
("RustDesk could not obtain a usable screen from the XDG Desktop Portal, the PipeWire library may be too old", "RustDesk ei saanut XDG Desktop Portalilta käyttökelpoista näyttöä, PipeWire-kirjasto voi olla liian vanha"),
|
||
("RustDesk could not load a GStreamer component needed for screen capture ({})", "RustDesk ei voinut ladata näytön kaappaukseen tarvittavaa GStreamer-osaa ({})"),
|
||
("Relay fallback delay in seconds", "Viive ennen välitykseen siirtymistä sekunteina"),
|
||
("relay-fallback-delay-tip", "Kuinka kauan jo muodostettu välitysyhteys odottaa suoraa WebRTC-yhteyttä ennen kuin sitä käytetään sen sijaan. Kasvata arvoa antaaksesi hitaalle suoralle yhteydelle enemmän aikaa; pienennä sitä siirtyäksesi nopeammin välitykseen verkoissa, joissa suoraa yhteyttä ei voi muodostaa. Jätä tyhjäksi käyttääksesi oletusarvoa 2.5 sekuntia."),
|
||
("To start a voice call, enable \"Audio capture\" on the \"Share screen\" page.", ""),
|
||
("Keyboard shortcuts", ""),
|
||
("Configure shortcuts...", ""),
|
||
("Enable keyboard shortcuts in remote session", ""),
|
||
("shortcut-page-description", ""),
|
||
("shortcut-passthrough-tip", ""),
|
||
("Pass-through to remote", ""),
|
||
("Reset to defaults", ""),
|
||
("shortcut-reset-confirm-tip", ""),
|
||
("Monitor", ""),
|
||
("Keyboard", ""),
|
||
("Toggle fullscreen", ""),
|
||
("Switch to next display", ""),
|
||
("Switch to previous display", ""),
|
||
("Switch to next tab", ""),
|
||
("Switch to previous tab", ""),
|
||
("Toggle session recording", ""),
|
||
("Close tab", ""),
|
||
("Toggle toolbar", ""),
|
||
("Toggle input source", ""),
|
||
("Edit", ""),
|
||
("Save", ""),
|
||
("Set shortcut", ""),
|
||
("shortcut-recording-instruction", ""),
|
||
("shortcut-recording-press-keys-tip", ""),
|
||
("shortcut-must-include-modifiers", ""),
|
||
("shortcut-already-bound-to", ""),
|
||
("Replace", ""),
|
||
("Valid", ""),
|
||
("shortcut-mobile-physical-keyboard-tip", ""),
|
||
("shortcut-key-not-supported", ""),
|
||
("On", ""),
|
||
("Off", ""),
|
||
].iter().cloned().collect();
|
||
}
|