diff --git a/crates/openlogi-desktop/src/features/mouse/inspector.rs b/crates/openlogi-desktop/src/features/mouse/inspector.rs index f65e5ace9..f4a3f66d4 100644 --- a/crates/openlogi-desktop/src/features/mouse/inspector.rs +++ b/crates/openlogi-desktop/src/features/mouse/inspector.rs @@ -232,6 +232,7 @@ fn button_inspector( "inspector-action", Some(&action), picker.search, + picker.view, &on_pick, pal, cx, @@ -285,6 +286,7 @@ fn inherited_gesture_inspector( "inspector-gesture-override", None, picker.search, + picker.view, &on_pick, pal, cx, @@ -348,6 +350,7 @@ fn gesture_inspector( "inspector-gesture-action", Some(¤t), picker.search, + picker.view, &on_pick, pal, cx, @@ -653,6 +656,9 @@ fn selection_card( search.update(cx, |search, cx| search.set_value("", window, cx)); } toggle.update(cx, |view, cx| { + if opening { + view.clear_custom_action_drafts(window, cx); + } view.toggle_action_picker(); cx.notify(); }); @@ -663,15 +669,41 @@ fn action_library( id_prefix: &'static str, current: Option<&Action>, action_search: &Entity, + view: &Entity, on_pick: &PickFn, pal: Palette, cx: &Context, ) -> impl IntoElement { let query = action_search.read(cx).value(); let rows = action_rows_matching(id_prefix, current, &query, on_pick, pal); + let (shortcut_input, application_input, shortcut_invalid, application_invalid) = { + let view_ref = view.read(cx); + ( + view_ref.custom_shortcut_input.clone(), + view_ref.custom_application_input.clone(), + view_ref.custom_shortcut_invalid, + view_ref.custom_application_invalid, + ) + }; v_flex() .gap_2() .pt_1() + .child(custom_shortcut_editor( + id_prefix, + &shortcut_input, + shortcut_invalid, + view, + on_pick, + pal, + )) + .child(custom_application_editor( + id_prefix, + &application_input, + application_invalid, + view, + on_pick, + pal, + )) .child(editor_section(tr!("actions.actions"), pal)) .child(control_input(action_search).cleanable(true)) .child( @@ -690,6 +722,114 @@ fn action_library( ) } +/// A single-field "Custom Shortcut" editor, matching the Action Ring editor's +/// `shortcut_editor` (`features/action_ring/editor.rs`) so the same custom +/// action is reachable from the plain per-button picker, not just the ring. +fn custom_shortcut_editor( + id_prefix: &'static str, + input: &Entity, + invalid: bool, + view: &Entity, + on_pick: &PickFn, + pal: Palette, +) -> impl IntoElement { + let submit_input = input.clone(); + let on_pick = on_pick.clone(); + let view = view.clone(); + v_flex() + .gap_1() + .child(editor_section(tr!("action_ring.custom_shortcut"), pal)) + .child( + h_flex() + .gap_2() + .child( + div() + .flex_1() + .min_w_0() + .child(control_input(input).cleanable(true)), + ) + .child( + Button::new(format!("{id_prefix}-custom-shortcut-add")) + .compact() + .label(tr!("common.add")) + .on_click(move |_, window, cx| { + let shortcut = submit_input.read(cx).value().to_string(); + match shortcut.parse::() { + Ok(combo) => (on_pick)(Action::CustomShortcut(combo), window, cx), + Err(_) => view.update(cx, |view, cx| { + view.custom_shortcut_invalid = true; + cx.notify(); + }), + } + }), + ), + ) + .when(invalid, |editor| { + editor.child( + div() + .text_caption() + .text_color(rgb(0x00ef_4444)) + .child(tr!("action_ring.custom_action_invalid_input")), + ) + }) +} + +/// A single-field "Open Application or Folder" editor, matching the Action +/// Ring editor's `path_editor`. +fn custom_application_editor( + id_prefix: &'static str, + input: &Entity, + invalid: bool, + view: &Entity, + on_pick: &PickFn, + pal: Palette, +) -> impl IntoElement { + let submit_input = input.clone(); + let on_pick = on_pick.clone(); + let view = view.clone(); + v_flex() + .gap_1() + .child(editor_section( + tr!("action_ring.open_application_or_folder"), + pal, + )) + .child( + h_flex() + .gap_2() + .child( + div() + .flex_1() + .min_w_0() + .child(control_input(input).cleanable(true)), + ) + .child( + Button::new(format!("{id_prefix}-custom-application-add")) + .compact() + .label(tr!("common.add")) + .on_click(move |_, window, cx| { + let path = submit_input.read(cx).value().to_string(); + match openlogi_core::binding::ApplicationTarget::new(path, "") { + Ok(target) => { + (on_pick)(Action::OpenApplication(target), window, cx); + } + Err(_) => view.update(cx, |view, cx| { + view.custom_application_invalid = true; + cx.notify(); + }), + } + }), + ), + ) + .when(invalid, |editor| { + editor.child( + div() + .text_caption() + .text_color(rgb(0x00ef_4444)) + .child(tr!("action_ring.custom_action_invalid_input")), + ) + }) +} + fn gesture_action( gesture_map: &BTreeMap, button: ButtonId, diff --git a/crates/openlogi-desktop/src/features/mouse/view.rs b/crates/openlogi-desktop/src/features/mouse/view.rs index a26eff94c..4deccb344 100644 --- a/crates/openlogi-desktop/src/features/mouse/view.rs +++ b/crates/openlogi-desktop/src/features/mouse/view.rs @@ -132,6 +132,12 @@ pub struct MouseModelView { gesture_active_dir: Option, action_picker_open: bool, action_search: Entity, + pub(super) custom_shortcut_input: Entity, + pub(super) custom_application_input: Entity, + /// Whether the last "Add" attempt on the corresponding custom editor + /// failed to parse, so its caption can show an inline error. + pub(super) custom_shortcut_invalid: bool, + pub(super) custom_application_invalid: bool, _state_obs: Subscription, } @@ -146,6 +152,31 @@ impl MouseModelView { } }) .detach(); + let custom_shortcut_input = cx.new(|cx| { + InputState::new(window, cx) + .placeholder(tr!("action_ring.shortcut_e_g_cmd_plus_shift_plus_p")) + }); + cx.subscribe(&custom_shortcut_input, |view, _, event: &InputEvent, cx| { + if matches!(event, InputEvent::Change) { + view.custom_shortcut_invalid = false; + cx.notify(); + } + }) + .detach(); + let custom_application_input = cx.new(|cx| { + InputState::new(window, cx) + .placeholder(tr!("action_ring.application_folder_path_or_url")) + }); + cx.subscribe( + &custom_application_input, + |view, _, event: &InputEvent, cx| { + if matches!(event, InputEvent::Change) { + view.custom_application_invalid = false; + cx.notify(); + } + }, + ) + .detach(); let state = AppState::global(cx); let state_obs = cx.subscribe(&state, |_view, _, event: &StateEvent, cx| { let relevant = match event { @@ -171,10 +202,30 @@ impl MouseModelView { gesture_active_dir: None, action_picker_open: false, action_search, + custom_shortcut_input, + custom_application_input, + custom_shortcut_invalid: false, + custom_application_invalid: false, _state_obs: state_obs, } } + /// Clear both custom-action drafts (text and any invalid state) — called + /// whenever the picker opens for a new target, so a shortcut or + /// application typed for one button doesn't reappear for another. + pub(super) fn clear_custom_action_drafts( + &mut self, + window: &mut Window, + cx: &mut Context, + ) { + self.custom_shortcut_input + .update(cx, |input, cx| input.set_value("", window, cx)); + self.custom_application_input + .update(cx, |input, cx| input.set_value("", window, cx)); + self.custom_shortcut_invalid = false; + self.custom_application_invalid = false; + } + /// Set (or clear, with `None`) the activated gesture direction. Callers must /// `cx.notify()` to re-render. pub(crate) fn set_gesture_selected_dir(&mut self, dir: Option) { @@ -232,14 +283,34 @@ fn set_control_hovered( }); } -impl Render for MouseModelView { - fn render(&mut self, window: &mut Window, cx: &mut Context) -> impl IntoElement { +impl MouseModelView { + /// Re-stamp every action-picker input's placeholder after a language + /// switch, split out of `render` to keep it under clippy's line budget. + fn localize_action_picker_inputs(&self, window: &mut Window, cx: &mut Context) { crate::ui::components::localize_placeholder( &self.action_search, tr!("actions.search_actions"), window, cx, ); + crate::ui::components::localize_placeholder( + &self.custom_shortcut_input, + tr!("action_ring.shortcut_e_g_cmd_plus_shift_plus_p"), + window, + cx, + ); + crate::ui::components::localize_placeholder( + &self.custom_application_input, + tr!("action_ring.application_folder_path_or_url"), + window, + cx, + ); + } +} + +impl Render for MouseModelView { + fn render(&mut self, window: &mut Window, cx: &mut Context) -> impl IntoElement { + self.localize_action_picker_inputs(window, cx); let (empty_bindings, empty_gesture_maps) = (BTreeMap::new(), BTreeMap::new()); let MouseWorkspaceData { device_key, @@ -1070,6 +1141,37 @@ mod tests { cx.run_until_parked(); } + #[gpui::test] + fn clearing_custom_action_drafts_resets_text_and_invalid_state(cx: &mut TestAppContext) { + cx.update(gpui_component::init); + install_app_state(cx); + let (view, cx) = cx.add_window_view(MouseModelView::new); + cx.run_until_parked(); + + cx.update(|window, cx| { + view.update(cx, |view, cx| { + view.custom_shortcut_input + .update(cx, |input, cx| input.set_value("Cmd+K", window, cx)); + view.custom_application_input + .update(cx, |input, cx| input.set_value("/bin/true", window, cx)); + view.custom_shortcut_invalid = true; + view.custom_application_invalid = true; + + view.clear_custom_action_drafts(window, cx); + }); + }); + + view.update(cx, |view, cx| { + assert_eq!(view.custom_shortcut_input.read(cx).value(), ""); + assert_eq!(view.custom_application_input.read(cx).value(), ""); + assert!(!view.custom_shortcut_invalid); + assert!(!view.custom_application_invalid); + }); + drop(view); + cx.update(|window, _| window.remove_window()); + cx.run_until_parked(); + } + #[test] fn active_thumbwheel_directions_highlight_the_paired_control() { assert_eq!( diff --git a/crates/openlogi-ui/locales/be.toml b/crates/openlogi-ui/locales/be.toml index 7f955b051..4fde91ff5 100644 --- a/crates/openlogi-ui/locales/be.toml +++ b/crates/openlogi-ui/locales/be.toml @@ -538,6 +538,7 @@ custom_shortcut = "Уласнае спалучэнне клавіш" shortcut_e_g_cmd_plus_shift_plus_p = "Спалучэнне, напр. Cmd+Shift+P" application_folder_path_or_url = "Праграма, шлях да папкі або URL" open_application_or_folder = "Адкрыць праграму або папку" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "Рэдактар недаступны" diff --git a/crates/openlogi-ui/locales/da.toml b/crates/openlogi-ui/locales/da.toml index 5036a25d8..70d006928 100644 --- a/crates/openlogi-ui/locales/da.toml +++ b/crates/openlogi-ui/locales/da.toml @@ -538,6 +538,7 @@ custom_shortcut = "Brugerdefineret genvej" shortcut_e_g_cmd_plus_shift_plus_p = "Genvej, f.eks. Cmd+Shift+P" application_folder_path_or_url = "Program, mappesti eller URL" open_application_or_folder = "Åbn program eller mappe" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "Editor ikke tilgængelig" diff --git a/crates/openlogi-ui/locales/de.toml b/crates/openlogi-ui/locales/de.toml index 6b7529841..d9c9801e1 100644 --- a/crates/openlogi-ui/locales/de.toml +++ b/crates/openlogi-ui/locales/de.toml @@ -538,6 +538,7 @@ custom_shortcut = "Benutzerdefinierter Kurzbefehl" shortcut_e_g_cmd_plus_shift_plus_p = "Tastenkürzel, z. B. Cmd+Shift+P" application_folder_path_or_url = "Anwendung, Ordnerpfad oder URL" open_application_or_folder = "Anwendung oder Ordner öffnen" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "Editor nicht verfügbar" diff --git a/crates/openlogi-ui/locales/el.toml b/crates/openlogi-ui/locales/el.toml index fd2ae7524..d9e81bd61 100644 --- a/crates/openlogi-ui/locales/el.toml +++ b/crates/openlogi-ui/locales/el.toml @@ -538,6 +538,7 @@ custom_shortcut = "Προσαρμοσμένη συντόμευση" shortcut_e_g_cmd_plus_shift_plus_p = "Συντόμευση, π.χ. Cmd+Shift+P" application_folder_path_or_url = "Εφαρμογή, διαδρομή φακέλου ή URL" open_application_or_folder = "Άνοιγμα εφαρμογής ή φακέλου" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "Ο επεξεργαστής δεν είναι διαθέσιμος" diff --git a/crates/openlogi-ui/locales/en.toml b/crates/openlogi-ui/locales/en.toml index 90ab3355a..81ebd75b4 100644 --- a/crates/openlogi-ui/locales/en.toml +++ b/crates/openlogi-ui/locales/en.toml @@ -538,6 +538,7 @@ custom_shortcut = "Custom shortcut" shortcut_e_g_cmd_plus_shift_plus_p = "Shortcut, e.g., Cmd+Shift+P" application_folder_path_or_url = "Application or folder path, or URL" open_application_or_folder = "Open application or folder" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "Editor unavailable" diff --git a/crates/openlogi-ui/locales/es.toml b/crates/openlogi-ui/locales/es.toml index 19a724ce1..4d530f4ad 100644 --- a/crates/openlogi-ui/locales/es.toml +++ b/crates/openlogi-ui/locales/es.toml @@ -538,6 +538,7 @@ custom_shortcut = "Atajo personalizado" shortcut_e_g_cmd_plus_shift_plus_p = "Atajo, p. ej. Cmd+Shift+P" application_folder_path_or_url = "Ruta de aplicación o carpeta, o URL" open_application_or_folder = "Abrir aplicación o carpeta" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "Editor no disponible" diff --git a/crates/openlogi-ui/locales/fi.toml b/crates/openlogi-ui/locales/fi.toml index 69eb77e97..ba9061d75 100644 --- a/crates/openlogi-ui/locales/fi.toml +++ b/crates/openlogi-ui/locales/fi.toml @@ -538,6 +538,7 @@ custom_shortcut = "Mukautettu pikanäppäin" shortcut_e_g_cmd_plus_shift_plus_p = "Pikanäppäin, esim. Cmd+Shift+P" application_folder_path_or_url = "Sovellus, kansiopolku tai URL" open_application_or_folder = "Avaa sovellus tai kansio" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "Muokkain ei ole käytettävissä" diff --git a/crates/openlogi-ui/locales/fr.toml b/crates/openlogi-ui/locales/fr.toml index 14cf1be78..426f9a6b7 100644 --- a/crates/openlogi-ui/locales/fr.toml +++ b/crates/openlogi-ui/locales/fr.toml @@ -538,6 +538,7 @@ custom_shortcut = "Raccourci personnalisé" shortcut_e_g_cmd_plus_shift_plus_p = "Raccourci, p. ex. Cmd+Shift+P" application_folder_path_or_url = "Application, chemin de dossier ou URL" open_application_or_folder = "Ouvrir une application ou un dossier" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "Éditeur indisponible" diff --git a/crates/openlogi-ui/locales/it.toml b/crates/openlogi-ui/locales/it.toml index 072eb24c3..29a52b1ae 100644 --- a/crates/openlogi-ui/locales/it.toml +++ b/crates/openlogi-ui/locales/it.toml @@ -538,6 +538,7 @@ custom_shortcut = "Scorciatoia personalizzata" shortcut_e_g_cmd_plus_shift_plus_p = "Scorciatoia, ad es. Cmd+Shift+P" application_folder_path_or_url = "Applicazione, percorso cartella o URL" open_application_or_folder = "Apri applicazione o cartella" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "Editor non disponibile" diff --git a/crates/openlogi-ui/locales/ja.toml b/crates/openlogi-ui/locales/ja.toml index ad7a389d6..08679850f 100644 --- a/crates/openlogi-ui/locales/ja.toml +++ b/crates/openlogi-ui/locales/ja.toml @@ -538,6 +538,7 @@ custom_shortcut = "カスタムショートカット" shortcut_e_g_cmd_plus_shift_plus_p = "ショートカット(例:Cmd+Shift+P)" application_folder_path_or_url = "アプリ、フォルダのパス、またはURL" open_application_or_folder = "アプリまたはフォルダを開く" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "エディターを利用できません" diff --git a/crates/openlogi-ui/locales/ko.toml b/crates/openlogi-ui/locales/ko.toml index bdef40e52..1e8fc3946 100644 --- a/crates/openlogi-ui/locales/ko.toml +++ b/crates/openlogi-ui/locales/ko.toml @@ -538,6 +538,7 @@ custom_shortcut = "사용자 지정 단축키" shortcut_e_g_cmd_plus_shift_plus_p = "단축키(예: Cmd+Shift+P)" application_folder_path_or_url = "앱, 폴더 경로 또는 URL" open_application_or_folder = "앱 또는 폴더 열기" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "편집기를 사용할 수 없음" diff --git a/crates/openlogi-ui/locales/nb.toml b/crates/openlogi-ui/locales/nb.toml index 908dedbac..a8e05b425 100644 --- a/crates/openlogi-ui/locales/nb.toml +++ b/crates/openlogi-ui/locales/nb.toml @@ -538,6 +538,7 @@ custom_shortcut = "Egendefinert snarvei" shortcut_e_g_cmd_plus_shift_plus_p = "Snarvei, f.eks. Cmd+Shift+P" application_folder_path_or_url = "Program, mappebane eller URL" open_application_or_folder = "Åpne program eller mappe" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "Redigering er utilgjengelig" diff --git a/crates/openlogi-ui/locales/nl.toml b/crates/openlogi-ui/locales/nl.toml index 9ba5a24f1..b72712dbb 100644 --- a/crates/openlogi-ui/locales/nl.toml +++ b/crates/openlogi-ui/locales/nl.toml @@ -538,6 +538,7 @@ custom_shortcut = "Aangepaste sneltoets" shortcut_e_g_cmd_plus_shift_plus_p = "Sneltoets, bijv. Cmd+Shift+P" application_folder_path_or_url = "Toepassing, mappad of URL" open_application_or_folder = "Toepassing of map openen" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "Editor niet beschikbaar" diff --git a/crates/openlogi-ui/locales/pl.toml b/crates/openlogi-ui/locales/pl.toml index 68887f1bd..1cf8f7769 100644 --- a/crates/openlogi-ui/locales/pl.toml +++ b/crates/openlogi-ui/locales/pl.toml @@ -538,6 +538,7 @@ custom_shortcut = "Własny skrót" shortcut_e_g_cmd_plus_shift_plus_p = "Skrót, np. Cmd+Shift+P" application_folder_path_or_url = "Aplikacja, ścieżka folderu lub URL" open_application_or_folder = "Otwórz aplikację lub folder" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "Edytor niedostępny" diff --git a/crates/openlogi-ui/locales/pt-BR.toml b/crates/openlogi-ui/locales/pt-BR.toml index 44c6d372d..47fffc090 100644 --- a/crates/openlogi-ui/locales/pt-BR.toml +++ b/crates/openlogi-ui/locales/pt-BR.toml @@ -538,6 +538,7 @@ custom_shortcut = "Atalho personalizado" shortcut_e_g_cmd_plus_shift_plus_p = "Atalho, por exemplo, Cmd+Shift+P" application_folder_path_or_url = "Aplicativo, caminho de pasta ou URL" open_application_or_folder = "Abrir aplicativo ou pasta" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "Editor indisponível" diff --git a/crates/openlogi-ui/locales/pt-PT.toml b/crates/openlogi-ui/locales/pt-PT.toml index 6142fedda..d3ed47599 100644 --- a/crates/openlogi-ui/locales/pt-PT.toml +++ b/crates/openlogi-ui/locales/pt-PT.toml @@ -538,6 +538,7 @@ custom_shortcut = "Atalho personalizado" shortcut_e_g_cmd_plus_shift_plus_p = "Atalho, por exemplo, Cmd+Shift+P" application_folder_path_or_url = "Aplicação, caminho de pasta ou URL" open_application_or_folder = "Abrir aplicação ou pasta" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "Editor indisponível" diff --git a/crates/openlogi-ui/locales/ru.toml b/crates/openlogi-ui/locales/ru.toml index 09098438b..b2252c86d 100644 --- a/crates/openlogi-ui/locales/ru.toml +++ b/crates/openlogi-ui/locales/ru.toml @@ -538,6 +538,7 @@ custom_shortcut = "Пользовательское сочетание клав shortcut_e_g_cmd_plus_shift_plus_p = "Сочетание, например Cmd+Shift+P" application_folder_path_or_url = "Приложение, путь к папке или URL" open_application_or_folder = "Открыть приложение или папку" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "Редактор недоступен" diff --git a/crates/openlogi-ui/locales/sv.toml b/crates/openlogi-ui/locales/sv.toml index 96ee142aa..79a388329 100644 --- a/crates/openlogi-ui/locales/sv.toml +++ b/crates/openlogi-ui/locales/sv.toml @@ -538,6 +538,7 @@ custom_shortcut = "Anpassat kortkommando" shortcut_e_g_cmd_plus_shift_plus_p = "Kortkommando, t.ex. Cmd+Shift+P" application_folder_path_or_url = "Program, mappsökväg eller URL" open_application_or_folder = "Öppna program eller mapp" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "Redigering är inte tillgänglig" diff --git a/crates/openlogi-ui/locales/tr.toml b/crates/openlogi-ui/locales/tr.toml index 841613915..841556216 100644 --- a/crates/openlogi-ui/locales/tr.toml +++ b/crates/openlogi-ui/locales/tr.toml @@ -538,6 +538,7 @@ custom_shortcut = "Özel kısayol" shortcut_e_g_cmd_plus_shift_plus_p = "Kısayol, örn. Cmd+Shift+P" application_folder_path_or_url = "Uygulama, klasör yolu veya URL" open_application_or_folder = "Uygulama veya klasör aç" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "Düzenleyici kullanılamıyor" diff --git a/crates/openlogi-ui/locales/uk.toml b/crates/openlogi-ui/locales/uk.toml index 948aa8be0..04cc636d5 100644 --- a/crates/openlogi-ui/locales/uk.toml +++ b/crates/openlogi-ui/locales/uk.toml @@ -538,6 +538,7 @@ custom_shortcut = "Власне сполучення клавіш" shortcut_e_g_cmd_plus_shift_plus_p = "Сполучення клавіш, напр. Cmd+Shift+P" application_folder_path_or_url = "Програма, шлях до папки або URL" open_application_or_folder = "Відкрити програму або папку" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "Редактор недоступний" diff --git a/crates/openlogi-ui/locales/zh-CN.toml b/crates/openlogi-ui/locales/zh-CN.toml index 5e09567be..eb464079f 100644 --- a/crates/openlogi-ui/locales/zh-CN.toml +++ b/crates/openlogi-ui/locales/zh-CN.toml @@ -538,6 +538,7 @@ custom_shortcut = "自定义快捷键" shortcut_e_g_cmd_plus_shift_plus_p = "快捷键,例如 Cmd+Shift+P" application_folder_path_or_url = "应用、文件夹路径或 URL" open_application_or_folder = "打开应用或文件夹" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "编辑器不可用" diff --git a/crates/openlogi-ui/locales/zh-HK.toml b/crates/openlogi-ui/locales/zh-HK.toml index d7e59914e..ff78c4975 100644 --- a/crates/openlogi-ui/locales/zh-HK.toml +++ b/crates/openlogi-ui/locales/zh-HK.toml @@ -538,6 +538,7 @@ custom_shortcut = "自訂快速鍵" shortcut_e_g_cmd_plus_shift_plus_p = "快速鍵,例如 Cmd+Shift+P" application_folder_path_or_url = "應用程式、資料夾路徑或 URL" open_application_or_folder = "開啟應用程式或資料夾" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "編輯器無法使用" diff --git a/crates/openlogi-ui/locales/zh-TW.toml b/crates/openlogi-ui/locales/zh-TW.toml index 388b40790..a4990f719 100644 --- a/crates/openlogi-ui/locales/zh-TW.toml +++ b/crates/openlogi-ui/locales/zh-TW.toml @@ -538,6 +538,7 @@ custom_shortcut = "自訂快速鍵" shortcut_e_g_cmd_plus_shift_plus_p = "快速鍵,例如 Cmd+Shift+P" application_folder_path_or_url = "應用程式、資料夾路徑或 URL" open_application_or_folder = "開啟應用程式或資料夾" +custom_action_invalid_input = "Couldn't recognize that input." [keyboard] editor_unavailable = "編輯器無法使用"