Files
rustdesk/src/lang/it.rs
T
0740063863 Keyboard shortcuts (#14933)
* 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>
2026-10-13 21:31:44 +08:00

818 lines
55 KiB
Rust

lazy_static::lazy_static! {
pub static ref T: std::collections::HashMap<&'static str, &'static str> =
[
("Status", "Stato"),
("Your Desktop", "Questo desktop"),
("desk_tip", "Puoi accedere a questo desktop usando l'ID e la password indicati qui sotto."),
("Password", "Password"),
("Ready", "Pronto"),
("Established", "Stabilita"),
("connecting_status", "Connessione alla rete RustDesk..."),
("Enable service", "Abilita servizio"),
("Start service", "Avvia servizio"),
("Service is running", "Il servizio è in esecuzione"),
("Service is not running", "Il servizio non è in esecuzione"),
("not_ready_status", "Non pronto. Verifica la connessione"),
("Control Remote Desktop", "Controlla desktop remoto"),
("Transfer file", "Trasferisci file"),
("Connect", "Connetti"),
("Recent sessions", "Sessioni recenti"),
("Address book", "Rubrica"),
("Confirmation", "Conferma"),
("TCP tunneling", "Tunnel TCP"),
("Remove", "Rimuovi"),
("Refresh random password", "Nuova password casuale"),
("Set your own password", "Imposta la password"),
("Enable keyboard/mouse", "Abilita tastiera/mouse"),
("Enable clipboard", "Abilita appunti"),
("Enable file transfer", "Abilita trasferimento file"),
("Enable TCP tunneling", "Abilita tunnel TCP"),
("IP Whitelisting", "IP autorizzati"),
("ID/Relay Server", "Server ID/Relay"),
("Import server config", "Importa configurazione server dagli appunti"),
("Export Server Config", "Esporta configurazione server negli appunti"),
("Import server configuration successfully", "Configurazione server importata con successo"),
("Export server configuration successfully", "Configurazione Server esportata con successo"),
("Invalid server configuration", "Configurazione server non valida"),
("Clipboard is empty", "Gli appunti sono vuoti"),
("Stop service", "Arresta servizio"),
("Change ID", "Cambia ID"),
("Your new ID", "Il nuovo ID"),
("length %min% to %max%", "lunghezza da %min% a %max%"),
("starts with a letter", "inizia con una lettera"),
("allowed characters", "caratteri consentiti"),
("id_change_tip", "Puoi usare solo i caratteri a-z, A-Z, 0-9, - (dash) e _ (sottolineato).\nIl primo carattere deve essere a-z o A-Z.\nLa lunghezza deve essere fra 6 e 16 caratteri."),
("Website", "Sito web programma"),
("About", "Info programma"),
("Slogan_tip", "Realizzato con il cuore in questo mondo caotico!"),
("Privacy Statement", "Informativa sulla privacy"),
("Mute", "Audio disabilitato"),
("Build Date", "Data build"),
("Version", "Versione"),
("Home", "Home"),
("Audio Input", "Ingresso audio"),
("Enhancements", "Miglioramenti"),
("Hardware Codec", "Codec hardware"),
("Adaptive bitrate", "Bitrate adattivo"),
("ID Server", "ID server"),
("Relay Server", "Server relay"),
("API Server", "Server API"),
("invalid_http", "deve iniziare con http:// o https://"),
("Invalid IP", "Indirizzo IP non valido"),
("Invalid format", "Formato non valido"),
("server_not_support", "Non ancora supportato dal server"),
("Not available", "Non disponibile"),
("Too frequent", "Troppo frequente"),
("Cancel", "Annulla"),
("Skip", "Ignora"),
("Close", "Chiudi"),
("Retry", "Riprova"),
("OK", "OK"),
("Password Required", "Richiesta password"),
("Please enter your password", "Inserisci la password"),
("Remember password", "Ricorda password"),
("Wrong Password", "Password errata"),
("Do you want to enter again?", "Vuoi riprovare?"),
("Connection Error", "Errore connessione"),
("Error", "Errore"),
("Reset by the peer", "Reimpostata dal dispositivo remoto"),
("Connecting...", "Connessione..."),
("Connection in progress. Please wait.", "Connessione..."),
("Please try 1 minute later", "Riprova fra 1 minuto"),
("Login Error", "Errore accesso"),
("Successful", "Completato"),
("Connected, waiting for image...", "Connesso, in attesa dell'immagine..."),
("Name", "Nome"),
("Type", "Tipo"),
("Modified", "Modificato"),
("Size", "Dimensione"),
("Show Hidden Files", "Visualizza file nascosti"),
("Receive", "Ricevi"),
("Send", "Invia"),
("Refresh File", "Aggiorna file"),
("Local", "Locale"),
("Remote", "Remoto"),
("Remote Computer", "Computer remoto"),
("Local Computer", "Computer locale"),
("Confirm Delete", "Conferma eliminazione"),
("Delete", "Elimina"),
("Properties", "Proprietà"),
("Multi Select", "Selezione multipla"),
("Select All", "Seleziona tutto"),
("Unselect All", "Deseleziona tutto"),
("Empty Directory", "Cartella vuota"),
("Not an empty directory", "Non è una cartella vuota"),
("Are you sure you want to delete this file?", "Vuoi eliminare questo file?"),
("Are you sure you want to delete this empty directory?", "Vuoi eliminare questa cartella vuota?"),
("Are you sure you want to delete the file of this directory?", "Vuoi eliminare il file di questa cartella?"),
("Do this for all conflicts", "Ricorda questa scelta per tutti i conflitti"),
("This is irreversible!", "Questo è irreversibile!"),
("Deleting", "Eliminazione di"),
("files", "file"),
("Waiting", "In attesa"),
("Finished", "Completato"),
("Speed", "Velocità"),
("Custom Image Quality", "Qualità immagine personalizzata"),
("Privacy mode", "Modalità privacy"),
("Block user input", "Blocca input utente"),
("Unblock user input", "Sblocca input utente"),
("Adjust Window", "Adatta finestra"),
("Original", "Originale"),
("Shrink", "Restringi"),
("Stretch", "Allarga"),
("Scrollbar", "Barra scorrimento"),
("ScrollAuto", "Scorri automaticamente"),
("Good image quality", "Qualità immagine buona"),
("Balanced", "Bilanciata qualità/velocità"),
("Optimize reaction time", "Ottimizza tempo reazione"),
("Custom", "Profilo personalizzato"),
("Show remote cursor", "Visualizza cursore remoto"),
("Show quality monitor", "Visualizza qualità video"),
("Disable clipboard", "Disabilita appunti"),
("Lock after session end", "Blocca al termine della sessione"),
("Insert Ctrl + Alt + Del", "Inserisci Ctrl + Alt + Del"),
("Insert Lock", "Blocco inserimento"),
("Refresh", "Aggiorna"),
("ID does not exist", "L'ID non esiste"),
("Failed to connect to rendezvous server", "Errore connessione al server rendezvous"),
("Please try later", "Riprova più tardi"),
("Remote desktop is offline", "Il desktop remoto è offline"),
("Key mismatch", "La chiave non corrisponde"),
("Timeout", "Timeout"),
("Failed to connect to relay server", "Errore connessione al server relay"),
("Failed to connect via rendezvous server", "Errore connessione tramite il server rendezvous"),
("Failed to connect via relay server", "Errore connessione tramite il server relay"),
("Failed to make direct connection to remote desktop", "Impossibile connettersi direttamente al desktop remoto"),
("Set Password", "Imposta password"),
("OS Password", "Password sistema operativo"),
("install_tip", "A causa del Controllo Account Utente (UAC), RustDesk potrebbe non funzionare correttamente come desktop remoto.\nPer evitare questo problema, fai clic sul tasto qui sotto per installare RustDesk a livello di sistema."),
("Click to upgrade", "Aggiorna"),
("Configure", "Configura"),
("config_acc", "Per controllare il desktop dall'esterno, devi fornire a RustDesk il permesso 'Accessibilità'."),
("config_screen", "Per controllare il desktop dall'esterno, devi fornire a RustDesk il permesso 'Registrazione schermo'."),
("Installing ...", "Installazione ..."),
("Install", "Installa"),
("Installation", "Installazione"),
("Installation Path", "Percorso installazione"),
("Create start menu shortcuts", "Crea i collegamenti nel menu Start"),
("Create desktop icon", "Crea un'icona sul desktop"),
("agreement_tip", "Avviando l'installazione, accetti i termini del contratto di licenza."),
("Accept and Install", "Accetta e installa"),
("End-user license agreement", "Contratto di licenza utente finale"),
("Generating ...", "Generazione ..."),
("Your installation is lower version.", "Questa installazione non è aggiornata."),
("not_close_tcp_tip", "Non chiudere questa finestra mentre stai usando il tunnel"),
("Listening ...", "In ascolto ..."),
("Remote Host", "Host remoto"),
("Remote Port", "Porta remota"),
("Action", "Azione"),
("Add", "Aggiungi"),
("Local Port", "Porta locale"),
("Local Address", "Indirizzo locale"),
("Change Local Port", "Cambia porta locale"),
("setup_server_tip", "Per una connessione più veloce, configura uno specifico server"),
("Too short, at least 6 characters.", "Troppo corta, almeno 6 caratteri"),
("The confirmation is not identical.", "La password di conferma non corrisponde"),
("Permissions", "Permessi"),
("Accept", "Accetta"),
("Dismiss", "Rifiuta"),
("Disconnect", "Disconnetti"),
("Enable file copy and paste", "Consenti copia e incolla di file"),
("Connected", "Connesso"),
("Direct and encrypted connection", "Connessione diretta e cifrata"),
("Relayed and encrypted connection", "Connessione tramite relay e cifrata"),
("Direct and unencrypted connection", "Connessione diretta e non cifrata"),
("Relayed and unencrypted connection", "Connessione tramite relay e non cifrata"),
("Enter Remote ID", "Inserisci ID remoto"),
("Enter your password", "Inserisci la password"),
("Logging in...", "Autenticazione..."),
("Enable RDP session sharing", "Abilita condivisione sessione RDP"),
("Auto Login", "Accesso automatico"),
("Enable direct IP access", "Abilita accesso diretto tramite IP"),
("Rename", "Rinomina"),
("Space", "Spazio"),
("Create desktop shortcut", "Crea collegamento sul desktop"),
("Change Path", "Modifica percorso"),
("Create Folder", "Crea cartella"),
("Please enter the folder name", "Inserisci il nome della cartella"),
("Fix it", "Risolvi"),
("Warning", "Avviso"),
("Login screen using Wayland is not supported", "La schermata di accesso non è supportata usando Wayland"),
("Reboot required", "Riavvio necessario"),
("Unsupported display server", "Display server non supportato"),
("x11 expected", "necessario xll"),
("Port", "Porta"),
("Settings", "Impostazioni"),
("Username", "Nome utente"),
("Invalid port", "Numero porta non valido"),
("Closed manually by the peer", "Chiuso manualmente dal dispositivo remoto"),
("Enable remote configuration modification", "Abilita modifica remota configurazione"),
("Run without install", "Esegui senza installare"),
("Connect via relay", "Collegati tramite relay"),
("Always connect via relay", "Collegati sempre tramite relay"),
("whitelist_tip", "Possono connettersi a questo desktop solo gli indirizzi IP autorizzati"),
("Login", "Accedi"),
("Verify", "Verifica"),
("Remember me", "Ricordami"),
("Trust this device", "Registra questo dispositivo come attendibile"),
("Verification code", "Codice di verifica"),
("verification_tip", "È stato inviato un codice di verifica all'indirizzo email registrato, per accedere inserisci il codice di verifica."),
("Logout", "Esci"),
("Tags", "Etichette"),
("Search ID", "Cerca ID"),
("whitelist_sep", "Separati da virgola, punto e virgola, spazio o a capo"),
("Add ID", "Aggiungi ID"),
("Add Tag", "Aggiungi etichetta"),
("Unselect all tags", "Deseleziona tutte le etichette"),
("Network error", "Errore di rete"),
("Username missed", "Nome utente mancante"),
("Password missed", "Password mancante"),
("Wrong credentials", "Credenziali errate"),
("The verification code is incorrect or has expired", "Il codice di verifica non è corretto o è scaduto"),
("Edit Tag", "Modifica etichetta"),
("Forget Password", "Dimentica password"),
("Favorites", "Preferiti"),
("Add to Favorites", "Aggiungi ai preferiti"),
("Remove from Favorites", "Rimuovi dai preferiti"),
("Empty", "Vuoto"),
("Invalid folder name", "Nome della cartella non valido"),
("Socks5 Proxy", "Proxy Socks5"),
("Socks5/Http(s) Proxy", "Proxy Socks5/Http(s)"),
("Discovered", "Rilevate"),
("install_daemon_tip", "Per avviare il programma all'accensione, è necessario installarlo come servizio di sistema."),
("Remote ID", "ID remoto"),
("Paste", "Incolla"),
("Paste here?", "Incollare qui?"),
("Are you sure to close the connection?", "Vuoi chiudere la connessione?"),
("Download new version", "Scarica nuova versione"),
("Touch mode", "Modalità tocco"),
("Mouse mode", "Modalità mouse"),
("One-Finger Tap", "Tocca con un dito"),
("Left Mouse", "Mouse sinistro"),
("One-Long Tap", "Tocco lungo con un dito"),
("Two-Finger Tap", "Tocca con due dita"),
("Right Mouse", "Mouse destro"),
("One-Finger Move", "Movimento con un dito"),
("Double Tap & Move", "Tocca due volte e sposta"),
("Mouse Drag", "Trascina il mouse"),
("Three-Finger vertically", "Tre dita in verticale"),
("Mouse Wheel", "Rotellina del mouse"),
("Two-Finger Move", "Movimento con due dita"),
("Canvas Move", "Sposta tela"),
("Pinch to Zoom", "Pizzica per zoomare"),
("Canvas Zoom", "Zoom tela"),
("Reset canvas", "Ripristina tela"),
("No permission of file transfer", "Nessun permesso per il trasferimento file"),
("Note", "Nota"),
("Connection", "Connessione"),
("Share screen", "Condividi schermo"),
("Chat", "Chat"),
("Total", "Totale"),
("items", "Oggetti"),
("Selected", "Selezionato"),
("Screen Capture", "Cattura schermo"),
("Input Control", "Controllo input"),
("Audio Capture", "Acquisizione audio"),
("Do you accept?", "Accetti?"),
("Open System Setting", "Apri impostazioni di sistema"),
("How to get Android input permission?", "Come ottenere l'autorizzazione input in Android?"),
("android_input_permission_tip1", "Affinché un dispositivo remoto possa controllare un dispositivo Android tramite mouse o tocco, devi consentire a RustDesk di usare il servizio 'Accessibilità'."),
("android_input_permission_tip2", "Vai nella pagina delle impostazioni di sistema che si aprirà di seguito, trova e accedi a [Servizi installati], attiva il servizio [RustDesk Input]."),
("android_new_connection_tip", "È stata ricevuta una nuova richiesta di controllo per il dispositivo attuale."),
("android_service_will_start_tip", "L'attivazione di Cattura schermo avvierà automaticamente il servizio, consentendo ad altri dispositivi di richiedere una connessione da questo dispositivo."),
("android_stop_service_tip", "La chiusura del servizio chiuderà automaticamente tutte le connessioni stabilite."),
("android_version_audio_tip", "L'attuale versione di Android non supporta l'acquisizione audio, esegui l'aggiornamento ad Android 10 o versioni successive."),
("android_start_service_tip", "Per avviare il servizio di condivisione dello schermo seleziona [Avvia servizio] o abilita l'autorizzazione [Cattura schermo]."),
("android_permission_may_not_change_tip", "Le autorizzazioni per le connessioni stabilite non possono essere modificate istantaneamente fino alla riconnessione."),
("Account", "Account"),
("Overwrite", "Sovrascrivi"),
("This file exists, skip or overwrite this file?", "Questo file esiste, vuoi ignorarlo o sovrascrivere questo file?"),
("Quit", "Esci"),
("Help", "Aiuto"),
("Failed", "Fallito"),
("Succeeded", "Completato"),
("Someone turns on privacy mode, exit", "Qualcuno ha attivato la modalità privacy, uscita"),
("Unsupported", "Non supportato"),
("Peer denied", "Accesso negato al dispositivo remoto"),
("Peer exit", "Uscita dal dispostivo remoto"),
("Failed to turn off", "Impossibile spegnere"),
("Turned off", "Spegni"),
("Language", "Lingua"),
("Keep RustDesk background service", "Mantieni il servizio di RustDesk in background"),
("Ignore Battery Optimizations", "Ignora le ottimizzazioni della batteria"),
("android_open_battery_optimizations_tip", "Se vuoi disabilitare questa funzione, vai nelle impostazioni dell'applicazione RustDesk, apri la sezione 'Batteria' e deseleziona 'Senza restrizioni'."),
("Start on boot", "Avvia all'accensione"),
("Start the screen sharing service on boot, requires special permissions", "L'avvio del servizio di condivisione dello schermo all'accensione richiede autorizzazioni speciali"),
("Connection not allowed", "Connessione non consentita"),
("Legacy mode", "Modalità legacy"),
("Map mode", "Modalità mappa"),
("Translate mode", "Modalità traduzione"),
("Use permanent password", "Usa password permanente"),
("Use both passwords", "Usa password monouso e permanente"),
("Set permanent password", "Imposta password permanente"),
("Enable remote restart", "Abilita riavvio da remoto"),
("Restart remote device", "Riavvia dispositivo remoto"),
("Are you sure you want to restart", "Vuoi riavviare?"),
("Restarting remote device", "Il dispositivo remoto si sta riavviando"),
("remote_restarting_tip", "Riavvia il dispositivo remoto"),
("Copied", "Copiato"),
("Exit Fullscreen", "Esci dalla modalità schermo intero"),
("Fullscreen", "A schermo intero"),
("Mobile Actions", "Azioni mobili"),
("Select Monitor", "Seleziona schermo"),
("Control Actions", "Azioni controllo"),
("Display Settings", "Impostazioni visualizzazione"),
("Ratio", "Rapporto"),
("Image Quality", "Qualità immagine"),
("Scroll Style", "Stile scorrimento"),
("Show Toolbar", "Visualizza barra strumenti"),
("Hide Toolbar", "Nascondi barra strumenti"),
("Direct Connection", "Connessione diretta"),
("Relay Connection", "Connessione relay"),
("Secure Connection", "Connessione sicura"),
("Insecure Connection", "Connessione non sicura"),
("Scale original", "Scala originale"),
("Scale adaptive", "Scala adattiva"),
("General", "Generale"),
("Security", "Sicurezza"),
("Theme", "Tema"),
("Dark Theme", "Tema scuro"),
("Light Theme", "Tema chiaro"),
("Dark", "Scuro"),
("Light", "Chiaro"),
("Follow System", "Sistema"),
("Enable hardware codec", "Abilita codec hardware"),
("Unlock Security Settings", "Sblocca impostazioni sicurezza"),
("Enable audio", "Abilita audio"),
("Unlock Network Settings", "Sblocca impostazioni di rete"),
("Server", "Server"),
("Direct IP Access", "Accesso IP diretto"),
("Proxy", "Proxy"),
("Apply", "Applica"),
("Disconnect all devices?", "Vuoi disconnettere tutti i dispositivi?"),
("Clear", "Azzera"),
("Audio Input Device", "Dispositivo ingresso audio"),
("Use IP Whitelisting", "Usa elenco IP autorizzati"),
("Network", "Rete"),
("Pin Toolbar", "Blocca barra strumenti"),
("Unpin Toolbar", "Sblocca barra strumenti"),
("Recording", "Registrazione"),
("Directory", "Cartella"),
("Automatically record incoming sessions", "Registra automaticamente sessioni in entrata"),
("Automatically record outgoing sessions", "Registra automaticamente sessioni in uscita"),
("Change", "Modifica"),
("Start session recording", "Inizia registrazione sessione"),
("Stop session recording", "Ferma registrazione sessione"),
("Enable recording session", "Abilita registrazione sessione"),
("Enable LAN discovery", "Abilita rilevamento LAN"),
("Deny LAN discovery", "Non effettuare rilevamento LAN"),
("Write a message", "Scrivi un messaggio"),
("Prompt", "Richiedi"),
("Please wait for confirmation of UAC...", "Attendi la conferma dell'UAC..."),
("elevated_foreground_window_tip", "La finestra attuale del desktop remoto richiede per funzionare privilegi più elevati, quindi non è possibile usare temporaneamente il mouse e la tastiera.\nÈ possibile chiedere all'utente remoto di ridurre a icona la finestra attuale o di selezionare il pulsante di elevazione nella finestra di gestione della connessione.\nPer evitare questo problema, ti consigliamo di installare il software nel dispositivo remoto."),
("Disconnected", "Disconnesso"),
("Other", "Altro"),
("Confirm before closing multiple tabs", "Conferma prima di chiudere più schede"),
("Keyboard Settings", "Impostazioni tastiera"),
("Full Access", "Accesso completo"),
("Screen Share", "Condivisione schermo"),
("ubuntu-21-04-required", "Wayland richiede Ubuntu 21.04 o versione successiva."),
("wayland-requires-higher-linux-version", "Wayland richiede una versione superiore della distribuzione Linux.\nProva X11 desktop o cambia il sistema operativo."),
("xdp-portal-unavailable", "Acquisizione dello schermo di Wayland non riuscita. Il portale desktop XDG potrebbe essersi bloccato o non essere disponibile. Prova a riavviarlo con `systemctl --user restart xdg-desktop-portal`."),
("JumpLink", "Vai a"),
("Please Select the screen to be shared(Operate on the peer side).", "Seleziona lo schermo da condividere (opera sul lato dispositivo remoto)."),
("Show RustDesk", "Visualizza RustDesk"),
("This PC", "Questo PC"),
("or", "O"),
("Elevate", "Eleva"),
("Zoom cursor", "Cursore zoom"),
("Accept sessions via password", "Accetta sessioni via password"),
("Accept sessions via click", "Accetta sessioni via clic"),
("Accept sessions via both", "Accetta sessioni con entrambe le password"),
("Please wait for the remote side to accept your session request...", "Attendi che il dispositivo remoto accetti la richiesta di sessione..."),
("One-time Password", "Password monouso"),
("Use one-time password", "Usa password monouso"),
("One-time password length", "Lunghezza password monouso"),
("Request access to your device", "Richiedi accesso al dispositivo"),
("Hide connection management window", "Nascondi la finestra di gestione delle connessioni"),
("hide_cm_tip", "Permetti di nascondere solo se si accettano sessioni con password permanente"),
("wayland_experiment_tip", "Il supporto Wayland è in fase sperimentale, se vuoi un accesso stabile usa X11."),
("Right click to select tabs", "Clic con il tasto destro per selezionare le schede"),
("Skipped", "Saltato"),
("Add to address book", "Aggiungi alla rubrica"),
("Group", "Gruppo"),
("Search", "Cerca"),
("Closed manually by web console", "Chiudi manualmente dalla console web"),
("Local keyboard type", "Tipo tastiera locale"),
("Select local keyboard type", "Seleziona il tipo di tastiera locale"),
("software_render_tip", "Se nel computer con Linux è presente una scheda grafica Nvidia e la finestra remota si chiude immediatamente dopo la connessione, installa il nuovo driver open source e usa il rendering software.\nPotrebbe essere necessario un riavvio del programma."),
("Always use software rendering", "Usa sempre rendering software"),
("config_input", "Per controllare il desktop remoto con la tastiera, è necessario concedere le autorizzazioni a RustDesk 'Monitoraggio input'."),
("config_microphone", "Per poter chiamare, è necessario concedere l'autorizzazione 'Registra audio' a RustDesk."),
("request_elevation_tip", "Se c'è qualcuno nel lato remoto è possibile richiedere l'elevazione."),
("Wait", "Attendi"),
("Elevation Error", "Errore durante elevazione dei diritti"),
("Ask the remote user for authentication", "Chiedi autenticazione all'utente remoto"),
("Choose this if the remote account is administrator", "Scegli questa opzione se l'account remoto è amministratore"),
("Transmit the username and password of administrator", "Trasmetti il nome utente e la password dell'amministratore"),
("still_click_uac_tip", "Richiedi ancora che l'utente remoto selezioni 'OK' nella finestra UAC dell'esecuzione di RustDesk."),
("Request Elevation", "Richiedi elevazione dei diritti"),
("wait_accept_uac_tip", "Attendi che l'utente remoto accetti la finestra di dialogo UAC."),
("Elevate successfully", "Elevazione dei diritti effettuata correttamente"),
("uppercase", "Maiuscola"),
("lowercase", "Minuscola"),
("digit", "Numero"),
("special character", "Carattere speciale"),
("length>=8", "Lunghezza >= 8"),
("Weak", "Debole"),
("Medium", "Media"),
("Strong", "Forte"),
("Switch Sides", "Cambia lato"),
("Please confirm if you want to share your desktop?", "Vuoi condividere il desktop?"),
("Display", "Visualizzazione"),
("Default View Style", "Stile visualizzazione predefinito"),
("Default Scroll Style", "Stile scorrimento predefinito"),
("Default Image Quality", "Qualità immagine predefinita"),
("Default Codec", "Codec predefinito"),
("Bitrate", "Bitrate"),
("FPS", "FPS"),
("Auto", "Automatico"),
("Other Default Options", "Altre opzioni predefinite"),
("Voice call", "Chiamata vocale"),
("Text chat", "Chat testuale"),
("Stop voice call", "Interrompi chiamata vocale"),
("relay_hint_tip", "Se non è possibile connettersi direttamente, puoi provare a farlo tramite relay.\nInoltre, se si vuoi usare il relay al primo tentativo, è possibile aggiungere all'ID il suffisso '/r\' o selezionare nella scheda se esiste l'opzione 'Collegati sempre tramite relay'."),
("Reconnect", "Riconnetti"),
("Codec", "Codec"),
("Resolution", "Risoluzione"),
("No transfers in progress", "Nessun trasferimento in corso"),
("Set one-time password length", "Imposta lunghezza password monouso"),
("RDP Settings", "Impostazioni RDP"),
("Sort by", "Ordina per"),
("New Connection", "Nuova connessione"),
("Restore", "Ripristina"),
("Minimize", "Minimizza"),
("Maximize", "Massimizza"),
("Your Device", "Questo dispositivo"),
("empty_recent_tip", "Non c'è nessuna sessione recente!\nPianificane una."),
("empty_favorite_tip", "Ancora nessuna connessione?\nTrova qualcuno con cui connetterti e aggiungilo ai preferiti!"),
("empty_lan_tip", "Sembra proprio che non sia stata rilevata nessuna connessione."),
("empty_address_book_tip", "Sembra che per ora nella rubrica non ci siano connessioni."),
("Empty Username", "Nome utente vuoto"),
("Empty Password", "Password vuota"),
("Me", "Io"),
("identical_file_tip", "Questo file è identico a quello nel dispositivo remoto."),
("show_monitors_tip", "Visualizza schermi nella barra strumenti"),
("View Mode", "Modalità visualizzazione"),
("verify_rustdesk_password_tip", "Conferma password RustDesk"),
("No need to elevate", "Elevazione dei privilegi non richiesta"),
("System Sound", "Dispositivo audio sistema"),
("Default", "Predefinita"),
("New RDP", "Nuovo RDP"),
("Fingerprint", "Firma digitale"),
("Copy Fingerprint", "Copia firma digitale"),
("no fingerprints", "Nessuna firma digitale"),
("Update", "Aggiorna"),
("resolution_original_tip", "Risoluzione originale"),
("resolution_fit_local_tip", "Adatta risoluzione locale"),
("resolution_custom_tip", "Risoluzione personalizzata"),
("Collapse toolbar", "Comprimi barra strumenti"),
("Accept and Elevate", "Accetta ed eleva"),
("accept_and_elevate_btn_tooltip", "Accetta la connessione ed eleva le autorizzazioni UAC."),
("clipboard_wait_response_timeout_tip", "Timeout attesa risposta della copia."),
("Incoming connection", "Connessioni in entrata"),
("Outgoing connection", "Connessioni in uscita"),
("Exit", "Esci da RustDesk"),
("Open", "Apri RustDesk"),
("logout_tip", "Vuoi disconnetterti?"),
("Service", "Servizio"),
("Start", "Avvia"),
("Stop", "Ferma"),
("exceed_max_devices", "Hai raggiunto il numero massimo di dispositivi gestibili."),
("Sync with recent sessions", "Sincronizza con le sessioni recenti"),
("Sort tags", "Ordina etichette"),
("Open connection in new tab", "Apri connessione in una nuova scheda"),
("Move tab to new window", "Sposta scheda nella finestra successiva"),
("Can not be empty", "Non può essere vuoto"),
("Already exists", "Esiste già"),
("Change Password", "Modifica password"),
("Refresh Password", "Aggiorna password"),
("ID", "ID"),
("Grid View", "Vista griglia"),
("List View", "Vista elenco"),
("Select", "Seleziona"),
("Toggle Tags", "Attiva/disattiva tag"),
("pull_ab_failed_tip", "Impossibile aggiornare la rubrica"),
("push_ab_failed_tip", "Impossibile sincronizzare la rubrica con il server"),
("synced_peer_readded_tip", "I dispositivi presenti nelle sessioni recenti saranno sincronizzati di nuovo nella rubrica."),
("Change Color", "Modifica colore"),
("Primary Color", "Colore primario"),
("HSV Color", "Colore HSV"),
("Installation Successful!", "Installazione completata"),
("Installation failed!", "Installazione fallita"),
("Reverse mouse wheel", "Funzione rotellina mouse inversa"),
("{} sessions", "{} sessioni"),
("scam_title", "Potresti essere stato TRUFFATO!"),
("scam_text1", "Se sei al telefono con qualcuno che NON conosci NON DI TUA FIDUCIA che ti ha chiesto di usare RustDesk e di avviare il servizio, non procedere e riattacca subito."),
("scam_text2", "Probabilmente è un truffatore che cerca di rubare i tuoi soldi o altre informazioni private."),
("Don't show again", "Non visualizzare più"),
("I Agree", "Accetto"),
("Decline", "Non accetto"),
("Timeout in minutes", "Timeout in minuti"),
("auto_disconnect_option_tip", "Chiudi automaticamente sessioni in entrata per inattività utente"),
("Connection failed due to inactivity", "Connessione non riuscita a causa di inattività"),
("Check for software update on startup", "All'avvio verifica presenza aggiornamenti programma"),
("upgrade_rustdesk_server_pro_to_{}_tip", "Aggiorna RustDesk Server Pro alla versione {} o successiva!"),
("pull_group_failed_tip", "Impossibile aggiornare il gruppo"),
("Filter by intersection", "Filtra per incrocio"),
("Remove wallpaper during incoming sessions", "Rimuovi sfondo durante sessioni in entrata"),
("Test", "Test"),
("display_is_plugged_out_msg", "Lo schermo è scollegato, passo al primo schermo."),
("No displays", "Nessuno schermo"),
("Open in new window", "Apri in una nuova finestra"),
("Show displays as individual windows", "Visualizza schermi come finestre individuali"),
("Use all my displays for the remote session", "Nella sessione remota usa tutti gli schermi"),
("selinux_tip", "In questo dispositivo è abilitato SELinux, che potrebbe impedire il corretto funzionamento di RustDesk come lato controllato."),
("Change view", "Modifica vista"),
("Big tiles", "Icone grandi"),
("Small tiles", "Icone piccole"),
("List", "Elenco"),
("Virtual display", "Schermo virtuale"),
("Plug out all", "Scollega tutto"),
("True color (4:4:4)", "Colore reale (4:4:4)"),
("Enable blocking user input", "Abilita blocco input utente"),
("id_input_tip", "Puoi inserire un ID, un IP diretto o un dominio con una porta (<dominio>:<porta>).\nSe vuoi accedere a un dispositivo in un altro server, aggiungi l'indirizzo del server (<id>@<indirizzo_server >?key=<valore_chiave>), ad esempio\n9123456234@192.168.16.1:21117?key=5Qbwsde3unUcJBtrx9ZkvUmwFNoExHzpryHuPUdqlWM=.\nSe vuoi accedere as un dispositivo in un server pubblico, inserisci \"<id>@public\", per il server pubblico la chiave non è necessaria.\n\nSe vuoi forzare l'uso di una connessione di inoltro alla prima connessione, aggiungi \"/r\" alla fine dell'ID, ad esempio \"9123456234/r\"."),
("privacy_mode_impl_mag_tip", "Modo 1"),
("privacy_mode_impl_virtual_display_tip", "Modo 2"),
("Enter privacy mode", "Entra in modalità privacy"),
("Exit privacy mode", "Esci dalla modalità privacy"),
("idd_not_support_under_win10_2004_tip", "Il driver video indiretto non è supportato. È richiesto Windows 10, versione 2004 o successiva."),
("input_source_1_tip", "Sorgente ingresso (1)"),
("input_source_2_tip", "Sorgente ingresso (2)"),
("Swap control-command key", "Scambia tasto controllo-comando"),
("swap-left-right-mouse", "Scambia pulsante sinistro-destro mouse"),
("2FA code", "Codice 2FA"),
("More", "Altro"),
("enable-2fa-title", "Abilita autenticazione a due fattori"),
("enable-2fa-desc", "Configura l'autenticatore.\nPuoi usare un'app di autenticazione come Authy, Microsoft o Google Authenticator sul telefono o desktop.\n\nPer abilitare l'autenticazione a due fattori scansiona il codice QR con l'app e inserisci il codice visualizzato dall'app."),
("wrong-2fa-code", "Impossibile verificare il codice.\nVerifica che le impostazioni del codice e dell'ora locale siano corrette"),
("enter-2fa-title", "Autenticazione a due fattori"),
("Email verification code must be 6 characters.", "Il codice di verifica email deve contenere 6 caratteri."),
("2FA code must be 6 digits.", "Il codice 2FA deve essere composto da 6 cifre."),
("Multiple Windows sessions found", "Rilevate sessioni Windows multiple"),
("Please select the session you want to connect to", "Seleziona la sessione a cui connetterti"),
("powered_by_me", "Alimentato da RustDesk"),
("outgoing_only_desk_tip", "Questa è un'edizione personalizzata.\nPuoi connetterti ad altri dispositivi, ma gli altri dispositivi non possono connettersi a questo dispositivo."),
("preset_password_warning", "Questa è un'edizione personalizzata e viene fornita con una password preimpostata.\nChiunque conosca questa password potrebbe ottenere il pieno controllo del dispositivo.\nSe non te lo aspettavi, disinstalla immediatamente il software."),
("Security Alert", "Avviso sicurezza"),
("My address book", "Rubrica"),
("Personal", "Personale"),
("Owner", "Proprietario"),
("Set shared password", "Imposta password condivisa"),
("Exist in", "Esiste in"),
("Read-only", "Sola lettura"),
("Read/Write", "Lettura/scrittura"),
("Full Control", "Controllo completo"),
("share_warning_tip", "I campi sopra indicati sono condivisi e visibili ad altri."),
("Everyone", "Everyone"),
("ab_web_console_tip", "Altre info sulla console web"),
("allow-only-conn-window-open-tip", "Consenti connessione solo se la finestra RustDesk è aperta"),
("no_need_privacy_mode_no_physical_displays_tip", "Nessun display fisico, nessuna necessità di usare la modalità privacy."),
("Follow remote cursor", "Segui cursore remoto"),
("Follow remote window focus", "Segui focus finestra remota"),
("default_proxy_tip", "Protocollo e porta predefiniti sono Socks5 e 1080"),
("no_audio_input_device_tip", "Nessun dispositivo input audio trovato."),
("Incoming", "In entrata"),
("Outgoing", "In uscita"),
("Clear Wayland screen selection", "Annulla selezione schermata Wayland"),
("clear_Wayland_screen_selection_tip", "Dopo aver annullato la selezione schermo, è possibile selezionare nuovamente lo schermo da condividere."),
("confirm_clear_Wayland_screen_selection_tip", "Vuoi annullare la selezione schermo Wayland?"),
("android_new_voice_call_tip", "È stata ricevuta una nuova richiesta di chiamata vocale. Se accetti, l'audio passerà alla comunicazione vocale."),
("texture_render_tip", "Usa il rendering texture per rendere le immagini più fluide. Se riscontri problemi di rendering prova a disabilitare questa opzione."),
("Use texture rendering", "Usa rendering texture"),
("Floating window", "Finestra galleggiante"),
("floating_window_tip", "Aiuta a mantenere il servizio Rustdesk in background."),
("Keep screen on", "Mantieni schermo acceso"),
("Never", "Mai"),
("During controlled", "Durante il controllo"),
("During service is on", "Quando il servizio è attivo"),
("Capture screen using DirectX", "Cattura schermo usando DirectX"),
("Back", "Indietro"),
("Apps", "App"),
("Volume up", "Volume +"),
("Volume down", "Volume -"),
("Power", "Alimentazione"),
("Telegram bot", "Bot Telegram"),
("enable-bot-tip", "Se abiliti questa funzione, puoi ricevere il codice 2FA dal tuo bot.\nPuò anche funzionare come notifica di connessione."),
("enable-bot-desc", "1. apri una chat con @BotFather.\n2. Invia il comando \"/newbot\", dopo aver completato questo passaggio riceverai un token.\n3. Avvia una chat con il tuo bot appena creato. Per attivarlo Invia un messaggio che inizia con una barra (\"/\") tipo \"/hello\".\n"),
("cancel-2fa-confirm-tip", "Vuoi disabilitare 2FA?"),
("cancel-bot-confirm-tip", "Vuoi disabilitare il bot Telegram?"),
("About RustDesk", "Info su RustDesk"),
("Send clipboard keystrokes", "Invia sequenze tasti appunti"),
("network_error_tip", "Controlla la connessione di rete, quindi seleziona 'Riprova'."),
("Unlock with PIN", "Abilita sblocco con PIN"),
("Requires at least {} characters", "Richiede almeno {} caratteri"),
("Wrong PIN", "PIN errato"),
("Set PIN", "Imposta PIN"),
("Enable trusted devices", "Abilita dispositivi attendibili"),
("Manage trusted devices", "Gestisci dispositivi attendibili"),
("Platform", "Piattaforma"),
("Days remaining", "Giorni rimanenti"),
("enable-trusted-devices-tip", "Salta verifica 2FA nei dispositivi attendibili"),
("Parent directory", "Cartella principale"),
("Resume", "Riprendi"),
("Invalid file name", "Nome file non valido"),
("one-way-file-transfer-tip", "Sul lato controllato è abilitato il trasferimento file unidirezionale."),
("Authentication Required", "Richiesta autenticazione"),
("Authenticate", "Autentica"),
("web_id_input_tip", "È possibile inserire un ID nello stesso server, nel client web non è supportato l'accesso con IP diretto.\nSe vuoi accedere ad un dispositivo in un altro server, aggiungi l'indirizzo del server (<id>@<indirizzo_server>?key=<valore_chiave >), ad esempio,\n9123456234@192.168.16.1:21117?key=5Qbwsde3unUcJBtrx9ZkvUmwFNoExHzpryHuPUdqlWM=.\nSe vuoi accedere ad un dispositivo in un server pubblico, inserisci \"<id>@public\", la chiave non è necessaria per il server pubblico."),
("Download", "Download"),
("Upload folder", "Cartella upload"),
("Upload files", "File upload"),
("Clipboard is synchronized", "Gli appunti sono sincronizzati"),
("Update client clipboard", "Aggiorna appunti client"),
("Untagged", "Senza tag"),
("new-version-of-{}-tip", "È disponibile una nuova versione di {}"),
("Accessible devices", "Dispositivi accessibili"),
("upgrade_remote_rustdesk_client_to_{}_tip", "Aggiorna il client RustDesk remoto alla versione {} o successiva!"),
("d3d_render_tip", "Quando è abilitato il rendering D3D, in alcuni computer la schermata del telecomando potrebbe essere nera."),
("Use D3D rendering", "Usa rendering D3D"),
("Printer", "Stampante"),
("printer-os-requirement-tip", "La funzione della stampante richiede Windows 10 o superiore."),
("printer-requires-installed-{}-client-tip", "Per usare la stampa remota, {} è necessario installare il programma nel dispositivo."),
("printer-{}-not-installed-tip", "La stampante {} non è installata."),
("printer-{}-ready-tip", "La stampante {} è installata e pronta all'uso."),
("Install {} Printer", "Installa la stampante {}"),
("Outgoing Print Jobs", "Lavori di stampa in uscita"),
("Incoming Print Jobs", "Lavori di stampa in entrata"),
("Incoming Print Job", "Lavoro di stampa in entrata"),
("use-the-default-printer-tip", "Usa la stampante predefinita"),
("use-the-selected-printer-tip", "Usa la stampante selezionata"),
("auto-print-tip", "Stampa usando automaticamente la stampante selezionata."),
("print-incoming-job-confirm-tip", "Hai ricevuto un lavoro di stampa da remoto. Vuoi eseguirlo sul desktop?"),
("remote-printing-disallowed-tile-tip", "Stampa remota disabilitata"),
("remote-printing-disallowed-text-tip", "Le impostazioni di autorizzazione del lato controllato negano la stampa remota."),
("save-settings-tip", "Salva impostazioni"),
("dont-show-again-tip", "Non visualizzare più questo messaggio"),
("Take screenshot", "Cattura schermata"),
("Taking screenshot", "Cattura schermata"),
("screenshot-merged-screen-not-supported-tip", "L'unione della cattura di schermate di più display non è attualmente supportata.\nPassa ad un singolo display e riprova."),
("screenshot-action-tip", "Seleziona come continuare con la schermata."),
("Save as", "Salva come"),
("Export", "Esporta"),
("Export Logs", "Esporta registri"),
("Import Folder", "Importa cartella"),
("Copy to clipboard", "Copia negli appunti"),
("Enable remote printer", "Abilita stampante remota"),
("Downloading {}", "Download {}"),
("{} Update", "Aggiorna {}"),
("{}-to-update-tip", "{} si chiuderà e installerà la nuova versione"),
("download-new-version-failed-tip", "Download non riuscito.\nÈ possibile riprovare o selezionare 'Download' per scaricare e aggiornarlo manualmente."),
("Auto update", "Aggiornamento automatico"),
("update-failed-check-msi-tip", "Controllo metodo installazione non riuscito.\nSeleziona 'Download' per scaricare il programma e aggiornarlo manualmente."),
("websocket_tip", "Quando usi WebSocket, sono supportate solo le connessioni relay."),
("Use WebSocket", "Usa WebSocket"),
("Trackpad speed", "Velocità trackpad"),
("Default trackpad speed", "Velocità predefinita trackpad"),
("Numeric one-time password", "Password numerica monouso"),
("Enable IPv6 P2P connection", "Abilita connessione P2P IPv6"),
("Enable UDP hole punching", "Abilita hole punching UDP"),
("View camera", "Visualizza telecamera"),
("Enable camera", "Abilita camera"),
("No cameras", "Nessuna camera"),
("view_camera_unsupported_tip", "Il dispositivo remoto non supporta la visualizzazione della camera."),
("Terminal", "Terminale"),
("Enable terminal", "Abilita terminale"),
("New tab", "Nuova scheda"),
("Keep terminal sessions on disconnect", "Quando disconetti mantieni attiva sessione terminale"),
("Terminal (Run as administrator)", "Terminale (esegui come amministratore)"),
("terminal-admin-login-tip", "Inserisci il nome utente e la password dell'amministratore del lato controllato."),
("Failed to get user token.", "Impossibile ottenere il token utente."),
("Incorrect username or password.", "Nome utente o password non corretti."),
("The user is not an administrator.", "L'utente non è un amministratore."),
("Failed to check if the user is an administrator.", "Impossibile verificare se l'utente è un amministratore."),
("Supported only in the installed version.", "Supportato solo nella versione installata."),
("elevation_username_tip", "Inserisci Nome utente o dominio sorgente\\nome Utente"),
("Preparing for installation ...", "Preparazione installazione..."),
("Show my cursor", "Visualizza il mio cursore"),
("Scale custom", "Scala personalizzata"),
("Custom scale slider", "Cursore scala personalizzata"),
("Decrease", "Diminuisci"),
("Increase", "Aumenta"),
("Show virtual mouse", "Visualizza mouse virtuale"),
("Virtual mouse size", "Dimensione mouse virtuale"),
("Small", "Piccola"),
("Large", "Grande"),
("Show virtual joystick", "Visualizza joystick virtuale"),
("Edit note", "Modifica nota"),
("Alias", "Alias"),
("ScrollEdge", "Bordo scorrimento"),
("Allow insecure TLS fallback", "Consenti fallback TLS non sicuro"),
("allow-insecure-tls-fallback-tip", "Per impostazione predefinita, RustDesk verifica il certificato del server per i protocolli usando TLS.\nCon questa opzione abilitata, RustDesk salterà il passaggio di verifica e procederà in caso di errore di verifica."),
("Disable UDP", "Disabilita UDP"),
("disable-udp-tip", "Controlla se usare solo TCP.\nQuando questa opzione è abilitata, RustDesk non userà più UDP 21116, verrà invece usato TCP 21116."),
("server-oss-not-support-tip", "Nota: il sistema operativo del server RustDesk non include questa funzionalità."),
("input note here", "Inserisci nota qui"),
("note-at-conn-end-tip", "Visualizza nota alla fine della connessione"),
("Show terminal extra keys", "Visualizza tasti aggiuntivi terminale"),
("Relative mouse mode", "Modalità relativa mouse"),
("rel-mouse-not-supported-peer-tip", "La modalità mouse relativa non è supportata dal peer connesso."),
("rel-mouse-not-ready-tip", "La modalità mouse relativa non è ancora pronta. Riprova."),
("rel-mouse-lock-failed-tip", "Impossibile bloccare il cursore. La modalità mouse relativa è stata disabilitata."),
("rel-mouse-exit-{}-tip", "Premi {} per uscire."),
("rel-mouse-permission-lost-tip", "È stata revocato l'accesso alla tastiera. La modalità mouse relativa è stata disabilitata."),
("Changelog", "Novità programma"),
("keep-awake-during-outgoing-sessions-label", "Mantieni lo schermo attivo durante le sessioni in uscita"),
("keep-awake-during-incoming-sessions-label", "Mantieni lo schermo attivo durante le sessioni in ingresso"),
("Continue with {}", "Continua con {}"),
("Display Name", "Visualizza nome"),
("password-hidden-tip", "È impostata una password permanente (nascosta)."),
("preset-password-in-use-tip", "È attualmente in uso la password preimpostata."),
("Enable privacy mode", "Abilita modalità privacy"),
("allow-remote-toolbar-docking-any-edge", "Consenti ancoraggio barra strumenti remota a qualsiasi bordo della finestra"),
("API Token", "Token API"),
("Deploy", "Distribuisci"),
("Custom ID (optional)", "ID personale (opzionale)"),
("server_requires_deployment_tip", "Il server richiede che questo dispositivo venga distribuito in modo esplicito.\nVuoi distribuirlo?"),
("The server does not require explicit deployment.", "Il server non richiede una distribuzione esplicita."),
("Unknown response.", "Risposta sconosciuta"),
("wayland-keyboard-input-disabled-tip", "Vuoi consentire l'input da tastiera?"),
("wayland-keyboard-input-consent-tip", "Ciò che digiti in questo computer remoto (comprese le password) potrebbe essere letto da altre app presenti nel computer remoto."),
("wayland-keyboard-input-applies-to-tip", "Questa scelta si applica a:"),
("wayland-soft-keyboard-input-label", "Inserimento tramite tastiera soft"),
("wayland-keyboard-input-reset-choice-tip", "Ripristina scelta input da tastiera"),
("remember-wayland-keyboard-choice-tip", "Non chiedere più per questo computer remoto"),
("Why this happens", "Perché accade questo"),
("Switch display", "Cambia schermo"),
("Show monitor switch button on the main toolbar", "Visualizza nella barra strumenti principale il pulsante per il cambio schermo"),
("Show on the minimized toolbar", "Visualizza nella barra strumenti ridotta a icona"),
("All monitors", "Tutti gli schermi"),
("#{} monitor", "Schermo {}"),
("conn-e2ee-unavailable-tip", "Impossibile verificare la crittografia end-to-end.\nIl dispositivo remoto potrebbe essere ancora in configurazione. Riprova più tardi.\nSe il problema persiste, il server potrebbe non essere attendibile.\nVuoi continuare?"),
("ID whitelisting", "ID autorizzati"),
("Use ID whitelisting", "Usa elenco ID autorizzati"),
("id_whitelist_tip", "Possono connettersi a questo desktop solo gli ID autorizzati"),
("id_whitelist_wildcard_tip", "Sono supportati i caratteri jolly: '*' corrisponde a un numero qualsiasi di caratteri, '?' a un solo carattere"),
("Invalid ID", "ID non valido"),
("Your ID is blocked by the peer", "Il tuo ID è bloccato dal dispositivo remoto"),
("Your ip is blocked by the peer", "Il tuo IP è bloccato dal dispositivo remoto"),
("id_whitelist_caveat_tip", "L'ID è dichiarato dal client che si connette. Questo elenco riduce l'esposizione e non sostituisce la password o la 2FA"),
("whitelist_cidr_tip", "È supportata la notazione CIDR, ad esempio 192.168.1.0/24"),
("Continue", "Continua"),
("Browser didn't open? Use the url below to sign in.", "Il browser non si è aperto? Usa l'URL qui sotto per accedere."),
("Lock canvas", "Blocca tela"),
("Sync clipboard between sessions", "Sincronizza appunti tra le sessioni"),
("sync-clipboard-between-sessions-tip", "Il testo o le immagini copiati in una sessione remota vengono inviati anche agli appunti delle altre sessioni connesse."),
("terminal-clipboard-write-tip", "Un'app nel terminale vuole copiare il testo negli appunti di questo dispositivo. Se concessa, questa autorizzazione si applica alle app terminali in tutte le connessioni finché non la disattivi in Impostazioni. Le operazioni di copia e incolla manuali non sono interessate."),
("Allow terminal apps to copy to clipboard", "Consenti alle app terminali di copiare negli appunti"),
("Enable", "Abilita"),
("Reuse one connection for port forwarding", "Per l'inoltro delle porte riusa una sola connessione "),
("port-forward-mux-tip", "Fa passare tutte le connessioni di un inoltro porte in un'unica connessione verso il dispositivo remoto, invece di connettersi e autenticarsi di nuovo per ognuna."),
("Enable WebRTC P2P connection", "Abilita connessione P2P WebRTC"),
("Enable TCP hole punching", "Abilita hole punching TCP"),
("The screen sharing request was declined on the remote device", "La richiesta di condivisione dello schermo nel dispositivo remoto è stata rifiutata"),
("The screen sharing request timed out on the remote device", "La richiesta di condivisione dello schermo nel dispositivo remoto è scaduta"),
("RustDesk cannot reach the desktop session on the remote device, check that a desktop session is running and that RustDesk can use it", "RustDesk non riesce a raggiungere la sessione desktop nel dispositivo remoto, controlla che sia in esecuzione una sessione desktop e che RustDesk possa usarla"),
("The desktop portal on the remote device is missing a capability needed for screen sharing or remote control, its backend may not be installed", "Nel portale desktop nel dispositivo remoto manca una funzionalità necessaria per la condivisione dello schermo o il controllo remoto, il relativo backend potrebbe non essere installato"),
("Screen sharing was approved on the remote device, but the PipeWire connection could not be opened", "La condivisione dello schermo è stata approvata nel dispositivo remoto, ma non è stato possibile aprire la connessione PipeWire"),
("The screen sharing request ended without completing on the remote device", "La richiesta di condivisione dello schermo si è chiusa senza essere completata nel dispositivo remoto"),
("RustDesk could not obtain a usable screen from the XDG Desktop Portal, the PipeWire library may be too old", "RustDesk non è riuscito a ottenere una schermata usabile dal portale desktop XDG, la libreria PipeWire potrebbe essere troppo vecchia"),
("RustDesk could not load a GStreamer component needed for screen capture ({})", "RustDesk non è riuscito a caricare un componente GStreamer necessario per l'acquisizione dello schermo ({})"),
("Relay fallback delay in seconds", "Ritardo fallback relay (secondi)"),
("relay-fallback-delay-tip", "Quanto tempo una connessione relay già attiva attende la connessione WebRTC diretta prima di essere usata. Aumentalo per dare a una connessione diretta lenta più tempo per funzionare; diminuiscilo per passare prima al relay sulle reti in cui non è possibile effettuare una connessione diretta. Lascia vuoto per il valore predefinito di 2,5 secondi."),
("To start a voice call, enable \"Audio capture\" on the \"Share screen\" page.", "Per avviare una chiamata vocale, attiva nella pagina 'Condividi schermo' la voce 'Cattura audio'."),
("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();
}