diff --git a/lib/bds/tui.ex b/lib/bds/tui.ex index 0bfcb36..cbfea67 100644 --- a/lib/bds/tui.ex +++ b/lib/bds/tui.ex @@ -12,7 +12,8 @@ defmodule BDS.TUI do Sidebar focus: `↑/↓`/`j/k` navigate, `enter` open, `n` new post, `1..5` switch view (posts/media/templates/scripts/tags), `r` refresh, `p` projects overlay (switch the active project or open an existing - blog folder by path — opening one queues a full database rebuild), + blog folder by path, with bash-style tab completion — opening one + queues a full database rebuild), `:` vi-style command prompt over the Blog-menu shell commands, `?` command help (commands whose report/apply UI is GUI-only are marked). Editor focus: text keys edit, `ctrl+s` save, `ctrl+p` publish, @@ -152,7 +153,16 @@ defmodule BDS.TUI do selected = Enum.find_index(snapshot.projects, & &1.is_active) || 0 {:noreply, - %{state | projects: %{mode: :list, projects: snapshot.projects, selected: selected, input: ""}}} + %{ + state + | projects: %{ + mode: :list, + projects: snapshot.projects, + selected: selected, + input: "", + matches: [] + } + }} end defp sidebar_key(%{code: "n"}, %{project_id: project_id} = state) @@ -251,20 +261,30 @@ defmodule BDS.TUI do # ── Events: projects overlay (switch / open existing) ──────────────────── defp projects_key(%{code: "esc"}, %{projects: %{mode: :open} = projects} = state), - do: {:noreply, %{state | projects: %{projects | mode: :list, input: ""}}} + do: {:noreply, %{state | projects: %{projects | mode: :list, input: "", matches: []}}} defp projects_key(%{code: "esc"}, state), do: {:noreply, %{state | projects: nil}} defp projects_key(%{code: "enter"}, %{projects: %{mode: :open, input: input}} = state), do: {:noreply, open_existing_project(state, input)} - defp projects_key(%{code: "backspace"}, %{projects: %{mode: :open} = projects} = state), - do: {:noreply, %{state | projects: %{projects | input: String.slice(projects.input, 0..-2//1)}}} + defp projects_key(%{code: "tab"}, %{projects: %{mode: :open} = projects} = state) do + {input, matches} = complete_path(projects.input) + {:noreply, %{state | projects: %{projects | input: input, matches: matches}}} + end + + defp projects_key(%{code: "backspace"}, %{projects: %{mode: :open} = projects} = state) do + {:noreply, + %{ + state + | projects: %{projects | input: String.slice(projects.input, 0..-2//1), matches: []} + }} + end defp projects_key(%{code: code, modifiers: []}, %{projects: %{mode: :open} = projects} = state) when byte_size(code) >= 1 do if String.length(code) == 1 do - {:noreply, %{state | projects: %{projects | input: projects.input <> code}}} + {:noreply, %{state | projects: %{projects | input: projects.input <> code, matches: []}}} else {:noreply, state} end @@ -315,6 +335,65 @@ defmodule BDS.TUI do end end + # Bash-style directory completion for the path prompt: a unique match + # completes fully (plus trailing slash), an ambiguous one completes to + # the longest common prefix and returns the candidates for display. + # Only directories are offered, and dotfolders only when the typed + # prefix itself starts with a dot. + defp complete_path(""), do: {"", []} + + defp complete_path(input) do + input = expand_tilde(input) + {base, prefix} = split_at_last_slash(input) + scan_dir = if base == "", do: ".", else: base + + case completion_candidates(scan_dir, prefix) do + [] -> {input, []} + [single] -> {base <> single <> "/", []} + many -> {base <> longest_common_prefix(many), many} + end + end + + defp expand_tilde("~" <> rest), do: System.user_home!() <> rest + defp expand_tilde(input), do: input + + defp split_at_last_slash(input) do + case :binary.matches(input, "/") do + [] -> + {"", input} + + offsets -> + # List is aliased to the ratatui widget here, so no List.last/1. + {position, _length} = Enum.at(offsets, -1) + String.split_at(input, position + 1) + end + end + + defp completion_candidates(scan_dir, prefix) do + case File.ls(scan_dir) do + {:ok, entries} -> + entries + |> Enum.filter(&String.starts_with?(&1, prefix)) + |> Enum.reject(&(String.starts_with?(&1, ".") and not String.starts_with?(prefix, "."))) + |> Enum.filter(&File.dir?(Path.join(scan_dir, &1))) + |> Enum.sort() + + {:error, _reason} -> + [] + end + end + + defp longest_common_prefix([first | rest]), + do: Enum.reduce(rest, first, &grapheme_common_prefix/2) + + defp grapheme_common_prefix(a, b) do + a + |> String.graphemes() + |> Enum.zip(String.graphemes(b)) + |> Enum.take_while(fn {left, right} -> left == right end) + |> Enum.map_join("", fn {grapheme, _} -> grapheme end) + end + defp open_existing_project(state, input) do path = input |> String.trim() |> Path.expand() @@ -756,16 +835,22 @@ defmodule BDS.TUI do height: 3 } - [ + input_widgets = [ {%Clear{}, overlay}, {%Paragraph{ text: projects.input, block: %Block{ - title: dgettext("ui", "Open Existing Blog — type a folder path · enter open · esc back"), + title: + dgettext( + "ui", + "Open Existing Blog — type a folder path · tab complete · enter open · esc back" + ), borders: [:all] } }, overlay} ] + + input_widgets ++ completion_widgets(projects.matches, rect, overlay) end defp projects_widgets(%{projects: projects}, rect) do @@ -797,6 +882,33 @@ defmodule BDS.TUI do ] end + defp completion_widgets([], _rect, _input_overlay), do: [] + + defp completion_widgets(matches, rect, input_overlay) do + below = input_overlay.y + input_overlay.height + available = rect.y + rect.height - below + + if available < 3 do + [] + else + overlay = %Rect{ + x: input_overlay.x, + y: below, + width: input_overlay.width, + height: min(length(matches) + 2, available) + } + + [ + {%Clear{}, overlay}, + {%List{ + items: matches, + selected: nil, + block: %Block{title: dgettext("ui", "Matching folders"), borders: [:all]} + }, overlay} + ] + end + end + defp report_widgets(%{report: nil}, _rect), do: [] defp report_widgets(%{report: report}, rect) do diff --git a/priv/gettext/de/LC_MESSAGES/ui.po b/priv/gettext/de/LC_MESSAGES/ui.po index 8f94fea..244d9f8 100644 --- a/priv/gettext/de/LC_MESSAGES/ui.po +++ b/priv/gettext/de/LC_MESSAGES/ui.po @@ -81,11 +81,11 @@ msgstr "KI-Einstellungen" #: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: lib/bds/desktop/shell_live/post_editor.ex:920 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 -#: lib/bds/tui.ex:485 -#: lib/bds/tui.ex:488 -#: lib/bds/tui.ex:491 -#: lib/bds/tui.ex:499 -#: lib/bds/tui.ex:1091 +#: lib/bds/tui.ex:564 +#: lib/bds/tui.ex:567 +#: lib/bds/tui.ex:570 +#: lib/bds/tui.ex:578 +#: lib/bds/tui.ex:1203 #, elixir-autogen, elixir-format msgid "AI Suggestions" msgstr "KI-Vorschlaege" @@ -572,7 +572,7 @@ msgid "Collapse unchanged diff hunks" msgstr "Unveränderte Diff-Blöcke einklappen" #: lib/bds/desktop/shell_live/overlay_manager.ex:422 -#: lib/bds/tui.ex:1187 +#: lib/bds/tui.ex:1299 #, elixir-autogen, elixir-format msgid "Command completed" msgstr "Befehl abgeschlossen" @@ -590,7 +590,7 @@ msgstr "Bestaetigen" #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 -#: lib/bds/tui.ex:668 +#: lib/bds/tui.ex:747 #: lib/bds/ui/sidebar.ex:764 #, elixir-autogen, elixir-format msgid "Content" @@ -1030,7 +1030,7 @@ msgid "Filename" msgstr "Dateiname" #: lib/bds/desktop/menu_bar.ex:254 -#: lib/bds/tui.ex:1151 +#: lib/bds/tui.ex:1263 #, elixir-autogen, elixir-format msgid "Fill Missing Translations" msgstr "Fehlende Übersetzungen ergänzen" @@ -1041,7 +1041,7 @@ msgid "Find" msgstr "Suchen" #: lib/bds/desktop/menu_bar.ex:255 -#: lib/bds/tui.ex:1154 +#: lib/bds/tui.ex:1266 #, elixir-autogen, elixir-format msgid "Find Duplicate Posts" msgstr "Doppelte Beiträge finden" @@ -1068,7 +1068,7 @@ msgid "Gallery" msgstr "Galerie" #: lib/bds/desktop/menu_bar.ex:256 -#: lib/bds/tui.ex:1135 +#: lib/bds/tui.ex:1247 #, elixir-autogen, elixir-format msgid "Generate Site" msgstr "Website generieren" @@ -1389,9 +1389,9 @@ msgstr "Maximale Beiträge pro Seite" #: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175 -#: lib/bds/tui.ex:1005 -#: lib/bds/tui.ex:1216 -#: lib/bds/tui.ex:1219 +#: lib/bds/tui.ex:1117 +#: lib/bds/tui.ex:1328 +#: lib/bds/tui.ex:1331 #: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:100 #: lib/bds/ui/sidebar.ex:558 @@ -1434,11 +1434,11 @@ msgstr "Metadaten" #: lib/bds/desktop/shell_live/misc_editor.ex:214 #: lib/bds/desktop/shell_live/misc_editor.ex:226 #: lib/bds/desktop/shell_live/misc_editor.ex:448 -#: lib/bds/tui.ex:208 -#: lib/bds/tui.ex:214 -#: lib/bds/tui.ex:225 -#: lib/bds/tui.ex:823 -#: lib/bds/tui.ex:1132 +#: lib/bds/tui.ex:218 +#: lib/bds/tui.ex:224 +#: lib/bds/tui.ex:235 +#: lib/bds/tui.ex:935 +#: lib/bds/tui.ex:1244 #: lib/bds/ui/registry.ex:111 #, elixir-autogen, elixir-format msgid "Metadata Diff" @@ -1484,7 +1484,7 @@ msgstr "Neue Seite" #: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/shell_live/sidebar_create.ex:41 -#: lib/bds/tui.ex:165 +#: lib/bds/tui.ex:175 #, elixir-autogen, elixir-format msgid "New Post" msgstr "Neuer Beitrag" @@ -1762,8 +1762,8 @@ msgid "Open Data Folder" msgstr "Datenordner öffnen" #: lib/bds/desktop/shell_live/index.html.heex:644 -#: lib/bds/tui.ex:337 -#: lib/bds/tui.ex:342 +#: lib/bds/tui.ex:416 +#: lib/bds/tui.ex:421 #, elixir-autogen, elixir-format msgid "Open Existing Blog" msgstr "Bestehenden Blog öffnen" @@ -1775,7 +1775,7 @@ msgid "Open Settings" msgstr "Einstellungen öffnen" #: lib/bds/desktop/menu_bar.ex:217 -#: lib/bds/tui.ex:1156 +#: lib/bds/tui.ex:1268 #, elixir-autogen, elixir-format msgid "Open in Browser" msgstr "Im Browser öffnen" @@ -1923,8 +1923,8 @@ msgstr "Beitrag gespeichert" #: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:761 -#: lib/bds/tui.ex:1004 -#: lib/bds/tui.ex:1015 +#: lib/bds/tui.ex:1116 +#: lib/bds/tui.ex:1127 #: lib/bds/ui/registry.ex:14 #: lib/bds/ui/sidebar.ex:271 #, elixir-autogen, elixir-format @@ -1983,8 +1983,8 @@ msgstr "Projekt und Veröffentlichung" #: lib/bds/desktop/shell_live/chat_surface.ex:15 #: lib/bds/desktop/shell_live/index.html.heex:623 -#: lib/bds/tui.ex:309 -#: lib/bds/tui.ex:314 +#: lib/bds/tui.ex:329 +#: lib/bds/tui.ex:334 #, elixir-autogen, elixir-format msgid "Projects" msgstr "Projekte" @@ -2050,15 +2050,15 @@ msgid "Ready to import:" msgstr "Bereit zum Import:" #: lib/bds/desktop/menu_bar.ex:248 -#: lib/bds/tui.ex:334 -#: lib/bds/tui.ex:1136 +#: lib/bds/tui.ex:413 +#: lib/bds/tui.ex:1248 #, elixir-autogen, elixir-format msgid "Rebuild Database" msgstr "Datenbank neu aufbauen" #: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 -#: lib/bds/tui.ex:1140 +#: lib/bds/tui.ex:1252 #, elixir-autogen, elixir-format msgid "Rebuild Embedding Index" msgstr "Embedding-Index neu aufbauen" @@ -2116,7 +2116,7 @@ msgid "Refresh Translation" msgstr "Übersetzung aktualisieren" #: lib/bds/desktop/menu_bar.ex:252 -#: lib/bds/tui.ex:1143 +#: lib/bds/tui.ex:1255 #, elixir-autogen, elixir-format msgid "Regenerate Calendar" msgstr "Kalender neu erzeugen" @@ -2127,7 +2127,7 @@ msgid "Regenerate Missing Thumbnails" msgstr "Fehlende Vorschaubilder neu erzeugen" #: lib/bds/desktop/menu_bar.ex:249 -#: lib/bds/tui.ex:1137 +#: lib/bds/tui.ex:1249 #, elixir-autogen, elixir-format msgid "Reindex Text" msgstr "Text neu indizieren" @@ -2313,7 +2313,7 @@ msgstr "Scripting-Funktionen werden in der Neufassung auf Anwendungsebene konfig #: lib/bds/desktop/shell_live/script_editor.ex:216 #: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:234 -#: lib/bds/tui.ex:1007 +#: lib/bds/tui.ex:1119 #: lib/bds/ui/registry.ex:38 #: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:115 @@ -2441,9 +2441,9 @@ msgid "Site" msgstr "Website" #: lib/bds/desktop/shell_live/misc_editor.ex:412 -#: lib/bds/tui.ex:241 -#: lib/bds/tui.ex:243 -#: lib/bds/tui.ex:828 +#: lib/bds/tui.ex:251 +#: lib/bds/tui.ex:253 +#: lib/bds/tui.ex:940 #: lib/bds/ui/registry.ex:125 #, elixir-autogen, elixir-format msgid "Site Validation" @@ -2564,7 +2564,7 @@ msgstr "Schlagwortname" #: lib/bds/desktop/shell_live/tags_editor.ex:222 #: lib/bds/desktop/shell_live/tags_editor.ex:253 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 -#: lib/bds/tui.ex:1008 +#: lib/bds/tui.ex:1120 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 #: lib/bds/ui/sidebar.ex:289 @@ -2576,7 +2576,7 @@ msgstr "Tags" #: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 -#: lib/bds/tui.ex:515 +#: lib/bds/tui.ex:594 #, elixir-autogen, elixir-format msgid "Tasks" msgstr "Aufgaben" @@ -2621,7 +2621,7 @@ msgstr "Template-Syntax ist gültig" #: lib/bds/desktop/shell_live/template_editor.ex:171 #: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:191 -#: lib/bds/tui.ex:1006 +#: lib/bds/tui.ex:1118 #: lib/bds/ui/registry.ex:46 #: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:122 @@ -2844,7 +2844,7 @@ msgid "Updated URLs" msgstr "Aktualisierte URLs" #: lib/bds/desktop/menu_bar.ex:259 -#: lib/bds/tui.ex:1155 +#: lib/bds/tui.ex:1267 #, elixir-autogen, elixir-format msgid "Upload Site" msgstr "Website hochladen" @@ -2872,13 +2872,13 @@ msgid "Validate" msgstr "Validieren" #: lib/bds/desktop/menu_bar.ex:258 -#: lib/bds/tui.ex:1133 +#: lib/bds/tui.ex:1245 #, elixir-autogen, elixir-format msgid "Validate Site" msgstr "Website validieren" #: lib/bds/desktop/menu_bar.ex:253 -#: lib/bds/tui.ex:1146 +#: lib/bds/tui.ex:1258 #, elixir-autogen, elixir-format msgid "Validate Translations" msgstr "Übersetzungen validieren" @@ -3543,7 +3543,7 @@ msgid "Suggested tags" msgstr "Vorgeschlagene Tags" #: lib/bds/desktop/menu_bar.ex:257 -#: lib/bds/tui.ex:1134 +#: lib/bds/tui.ex:1246 #, elixir-autogen, elixir-format msgid "Force Render Site" msgstr "Website vollständig neu generieren" @@ -3640,82 +3640,82 @@ msgstr "OK" msgid "The endpoint returned no models. You can still type a model name manually." msgstr "Der Endpunkt hat keine Modelle zurückgegeben. Sie können einen Modellnamen weiterhin manuell eingeben." -#: lib/bds/tui.ex:1092 +#: lib/bds/tui.ex:1204 #, elixir-autogen, elixir-format msgid "AI is unavailable in airplane mode without a local endpoint." msgstr "KI ist im Flugmodus ohne lokalen Endpunkt nicht verfügbar." -#: lib/bds/tui.ex:1219 +#: lib/bds/tui.ex:1331 #, elixir-autogen, elixir-format msgid "Could not load this file." msgstr "Diese Datei konnte nicht geladen werden." -#: lib/bds/tui.ex:173 +#: lib/bds/tui.ex:183 #, elixir-autogen, elixir-format msgid "Editing this item is not available in the terminal UI yet." msgstr "Die Bearbeitung dieses Eintrags ist in der Terminal-Oberfläche noch nicht verfügbar." -#: lib/bds/tui.ex:488 +#: lib/bds/tui.ex:567 #, elixir-autogen, elixir-format msgid "No suggestions returned." msgstr "Keine Vorschläge erhalten." -#: lib/bds/tui.ex:1216 +#: lib/bds/tui.ex:1328 #, elixir-autogen, elixir-format msgid "Only images can be previewed." msgstr "Nur Bilder können in der Vorschau angezeigt werden." -#: lib/bds/tui.ex:1015 +#: lib/bds/tui.ex:1127 #, elixir-autogen, elixir-format msgid "Post not found." msgstr "Beitrag nicht gefunden." -#: lib/bds/tui.ex:623 +#: lib/bds/tui.ex:702 #, elixir-autogen, elixir-format msgid "Press enter to preview %{name}." msgstr "Drücken Sie Enter, um %{name} in der Vorschau anzuzeigen." -#: lib/bds/tui.ex:1062 +#: lib/bds/tui.ex:1174 #, elixir-autogen, elixir-format msgid "Published." msgstr "Veröffentlicht." -#: lib/bds/tui.ex:1078 +#: lib/bds/tui.ex:1190 #, elixir-autogen, elixir-format msgid "Save before switching languages." msgstr "Speichern Sie vor dem Sprachwechsel." -#: lib/bds/tui.ex:1063 +#: lib/bds/tui.ex:1175 #, elixir-autogen, elixir-format msgid "Saved." msgstr "Gespeichert." -#: lib/bds/tui.ex:626 +#: lib/bds/tui.ex:705 #, elixir-autogen, elixir-format msgid "Select an entry and press enter to open it." msgstr "Wählen Sie einen Eintrag aus und öffnen Sie ihn mit Enter." -#: lib/bds/tui.ex:485 +#: lib/bds/tui.ex:564 #, elixir-autogen, elixir-format msgid "Suggestions applied." msgstr "Vorschläge übernommen." -#: lib/bds/tui.ex:638 +#: lib/bds/tui.ex:717 #, elixir-autogen, elixir-format msgid "Title (ctrl+t to edit)" msgstr "Titel (Strg+T zum Bearbeiten)" -#: lib/bds/tui.ex:637 +#: lib/bds/tui.ex:716 #, elixir-autogen, elixir-format msgid "Title (editing — enter to confirm)" msgstr "Titel (Bearbeitung — Enter zum Bestätigen)" -#: lib/bds/tui.ex:685 +#: lib/bds/tui.ex:764 #, elixir-autogen, elixir-format msgid "Working…" msgstr "Wird bearbeitet…" -#: lib/bds/tui.ex:707 +#: lib/bds/tui.ex:786 #, elixir-autogen, elixir-format msgid "esc to close" msgstr "Esc zum Schließen" @@ -3752,117 +3752,122 @@ msgstr "Serveradresse (user@host oder user@host:port), Public-Key-Authentifizier msgid "Use the form user@host or user@host:port." msgstr "Verwenden Sie das Format user@host oder user@host:port." -#: lib/bds/tui.ex:657 +#: lib/bds/tui.ex:736 #, elixir-autogen, elixir-format msgid "Preview (ctrl+e to edit)" msgstr "Vorschau (ctrl+e zum Bearbeiten)" -#: lib/bds/tui.ex:917 +#: lib/bds/tui.ex:1029 #, elixir-autogen, elixir-format msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" msgstr "Strg+S Speichern · Strg+P Veröffentlichen · Strg+E Vorschau · Strg+T Titel · Strg+L Sprache · Strg+G KI · Esc Zurück" -#: lib/bds/tui.ex:515 +#: lib/bds/tui.ex:594 #, elixir-autogen, elixir-format msgid "All tasks finished." msgstr "Alle Aufgaben abgeschlossen." -#: lib/bds/tui.ex:733 +#: lib/bds/tui.ex:812 #, elixir-autogen, elixir-format msgid "Commands — esc to close" msgstr "Befehle — Esc zum Schließen" -#: lib/bds/tui.ex:359 +#: lib/bds/tui.ex:438 #, elixir-autogen, elixir-format msgid "Unknown command." msgstr "Unbekannter Befehl." -#: lib/bds/tui.ex:723 +#: lib/bds/tui.ex:802 #, elixir-autogen, elixir-format msgid "[report/apply in GUI]" msgstr "[Bericht/Anwenden in der GUI]" -#: lib/bds/tui.ex:839 +#: lib/bds/tui.ex:951 #, elixir-autogen, elixir-format msgid "%{diffs} differences · %{orphans} orphan files" msgstr "%{diffs} Unterschiede · %{orphans} verwaiste Dateien" -#: lib/bds/tui.ex:871 +#: lib/bds/tui.ex:983 #, elixir-autogen, elixir-format msgid "Expected %{expected} · Existing %{existing}" msgstr "Erwartet %{expected} · Vorhanden %{existing}" -#: lib/bds/tui.ex:888 +#: lib/bds/tui.ex:1000 #, elixir-autogen, elixir-format msgid "Extra files (will be removed):" msgstr "Überzählige Dateien (werden entfernt):" -#: lib/bds/tui.ex:884 +#: lib/bds/tui.ex:996 #, elixir-autogen, elixir-format msgid "Missing pages (will be rendered):" msgstr "Fehlende Seiten (werden gerendert):" -#: lib/bds/tui.ex:241 +#: lib/bds/tui.ex:251 #, elixir-autogen, elixir-format msgid "Nothing to apply." msgstr "Nichts anzuwenden." -#: lib/bds/tui.ex:208 +#: lib/bds/tui.ex:218 #, elixir-autogen, elixir-format msgid "Nothing to repair." msgstr "Nichts zu reparieren." -#: lib/bds/tui.ex:862 +#: lib/bds/tui.ex:974 #, elixir-autogen, elixir-format msgid "Orphan files (not in database):" msgstr "Verwaiste Dateien (nicht in der Datenbank):" -#: lib/bds/tui.ex:878 +#: lib/bds/tui.ex:990 #, elixir-autogen, elixir-format msgid "Sitemap changed." msgstr "Sitemap geändert." -#: lib/bds/tui.ex:892 +#: lib/bds/tui.ex:1004 #, elixir-autogen, elixir-format msgid "Updated posts (will be re-rendered):" msgstr "Aktualisierte Beiträge (werden neu gerendert):" -#: lib/bds/tui.ex:829 +#: lib/bds/tui.ex:941 #, elixir-autogen, elixir-format msgid "enter apply changes · esc close" msgstr "Enter Änderungen anwenden · Esc Schließen" -#: lib/bds/tui.ex:824 +#: lib/bds/tui.ex:936 #, elixir-autogen, elixir-format msgid "enter repair all from files · esc close" msgstr "Enter alles aus Dateien reparieren · Esc Schließen" -#: lib/bds/tui.ex:324 +#: lib/bds/tui.ex:403 #, elixir-autogen, elixir-format msgid "Imported Blog" msgstr "Importierter Blog" -#: lib/bds/tui.ex:343 +#: lib/bds/tui.ex:422 #, elixir-autogen, elixir-format msgid "Not a folder: %{path}" msgstr "Kein Ordner: %{path}" -#: lib/bds/tui.ex:764 -#, elixir-autogen, elixir-format -msgid "Open Existing Blog — type a folder path · enter open · esc back" -msgstr "Bestehenden Blog öffnen — Ordnerpfad eingeben · Enter Öffnen · Esc Zurück" - -#: lib/bds/tui.ex:793 +#: lib/bds/tui.ex:878 #, elixir-autogen, elixir-format msgid "Projects — enter switch · o open existing · esc close" msgstr "Projekte — Enter Wechseln · O Bestehenden öffnen · Esc Schließen" -#: lib/bds/tui.ex:310 +#: lib/bds/tui.ex:330 #, elixir-autogen, elixir-format msgid "Switched to %{name}." msgstr "Zu %{name} gewechselt." -#: lib/bds/tui.ex:910 +#: lib/bds/tui.ex:1022 #, elixir-autogen, elixir-format msgid "enter open · n new post · 1-5 views · p projects · : commands (:? help) · r refresh · ctrl+q quit" msgstr "Enter Öffnen · N Neuer Beitrag · 1-5 Ansichten · P Projekte · : Befehle (:? Hilfe) · R Aktualisieren · Strg+Q Beenden" + +#: lib/bds/tui.ex:906 +#, elixir-autogen, elixir-format +msgid "Matching folders" +msgstr "Passende Ordner" + +#: lib/bds/tui.ex:844 +#, elixir-autogen, elixir-format +msgid "Open Existing Blog — type a folder path · tab complete · enter open · esc back" +msgstr "Bestehenden Blog öffnen — Ordnerpfad eingeben · Tab Vervollständigen · Enter Öffnen · Esc Zurück" diff --git a/priv/gettext/en/LC_MESSAGES/ui.po b/priv/gettext/en/LC_MESSAGES/ui.po index b88168b..b43e673 100644 --- a/priv/gettext/en/LC_MESSAGES/ui.po +++ b/priv/gettext/en/LC_MESSAGES/ui.po @@ -81,11 +81,11 @@ msgstr "" #: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: lib/bds/desktop/shell_live/post_editor.ex:920 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 -#: lib/bds/tui.ex:485 -#: lib/bds/tui.ex:488 -#: lib/bds/tui.ex:491 -#: lib/bds/tui.ex:499 -#: lib/bds/tui.ex:1091 +#: lib/bds/tui.ex:564 +#: lib/bds/tui.ex:567 +#: lib/bds/tui.ex:570 +#: lib/bds/tui.ex:578 +#: lib/bds/tui.ex:1203 #, elixir-autogen, elixir-format msgid "AI Suggestions" msgstr "" @@ -572,7 +572,7 @@ msgid "Collapse unchanged diff hunks" msgstr "" #: lib/bds/desktop/shell_live/overlay_manager.ex:422 -#: lib/bds/tui.ex:1187 +#: lib/bds/tui.ex:1299 #, elixir-autogen, elixir-format msgid "Command completed" msgstr "" @@ -590,7 +590,7 @@ msgstr "" #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 -#: lib/bds/tui.ex:668 +#: lib/bds/tui.ex:747 #: lib/bds/ui/sidebar.ex:764 #, elixir-autogen, elixir-format msgid "Content" @@ -1030,7 +1030,7 @@ msgid "Filename" msgstr "" #: lib/bds/desktop/menu_bar.ex:254 -#: lib/bds/tui.ex:1151 +#: lib/bds/tui.ex:1263 #, elixir-autogen, elixir-format msgid "Fill Missing Translations" msgstr "" @@ -1041,7 +1041,7 @@ msgid "Find" msgstr "" #: lib/bds/desktop/menu_bar.ex:255 -#: lib/bds/tui.ex:1154 +#: lib/bds/tui.ex:1266 #, elixir-autogen, elixir-format msgid "Find Duplicate Posts" msgstr "" @@ -1068,7 +1068,7 @@ msgid "Gallery" msgstr "" #: lib/bds/desktop/menu_bar.ex:256 -#: lib/bds/tui.ex:1135 +#: lib/bds/tui.ex:1247 #, elixir-autogen, elixir-format msgid "Generate Site" msgstr "" @@ -1389,9 +1389,9 @@ msgstr "" #: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175 -#: lib/bds/tui.ex:1005 -#: lib/bds/tui.ex:1216 -#: lib/bds/tui.ex:1219 +#: lib/bds/tui.ex:1117 +#: lib/bds/tui.ex:1328 +#: lib/bds/tui.ex:1331 #: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:100 #: lib/bds/ui/sidebar.ex:558 @@ -1434,11 +1434,11 @@ msgstr "" #: lib/bds/desktop/shell_live/misc_editor.ex:214 #: lib/bds/desktop/shell_live/misc_editor.ex:226 #: lib/bds/desktop/shell_live/misc_editor.ex:448 -#: lib/bds/tui.ex:208 -#: lib/bds/tui.ex:214 -#: lib/bds/tui.ex:225 -#: lib/bds/tui.ex:823 -#: lib/bds/tui.ex:1132 +#: lib/bds/tui.ex:218 +#: lib/bds/tui.ex:224 +#: lib/bds/tui.ex:235 +#: lib/bds/tui.ex:935 +#: lib/bds/tui.ex:1244 #: lib/bds/ui/registry.ex:111 #, elixir-autogen, elixir-format msgid "Metadata Diff" @@ -1484,7 +1484,7 @@ msgstr "" #: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/shell_live/sidebar_create.ex:41 -#: lib/bds/tui.ex:165 +#: lib/bds/tui.ex:175 #, elixir-autogen, elixir-format msgid "New Post" msgstr "" @@ -1762,8 +1762,8 @@ msgid "Open Data Folder" msgstr "" #: lib/bds/desktop/shell_live/index.html.heex:644 -#: lib/bds/tui.ex:337 -#: lib/bds/tui.ex:342 +#: lib/bds/tui.ex:416 +#: lib/bds/tui.ex:421 #, elixir-autogen, elixir-format msgid "Open Existing Blog" msgstr "" @@ -1775,7 +1775,7 @@ msgid "Open Settings" msgstr "" #: lib/bds/desktop/menu_bar.ex:217 -#: lib/bds/tui.ex:1156 +#: lib/bds/tui.ex:1268 #, elixir-autogen, elixir-format msgid "Open in Browser" msgstr "" @@ -1923,8 +1923,8 @@ msgstr "" #: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:761 -#: lib/bds/tui.ex:1004 -#: lib/bds/tui.ex:1015 +#: lib/bds/tui.ex:1116 +#: lib/bds/tui.ex:1127 #: lib/bds/ui/registry.ex:14 #: lib/bds/ui/sidebar.ex:271 #, elixir-autogen, elixir-format @@ -1983,8 +1983,8 @@ msgstr "" #: lib/bds/desktop/shell_live/chat_surface.ex:15 #: lib/bds/desktop/shell_live/index.html.heex:623 -#: lib/bds/tui.ex:309 -#: lib/bds/tui.ex:314 +#: lib/bds/tui.ex:329 +#: lib/bds/tui.ex:334 #, elixir-autogen, elixir-format msgid "Projects" msgstr "" @@ -2050,15 +2050,15 @@ msgid "Ready to import:" msgstr "" #: lib/bds/desktop/menu_bar.ex:248 -#: lib/bds/tui.ex:334 -#: lib/bds/tui.ex:1136 +#: lib/bds/tui.ex:413 +#: lib/bds/tui.ex:1248 #, elixir-autogen, elixir-format msgid "Rebuild Database" msgstr "" #: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 -#: lib/bds/tui.ex:1140 +#: lib/bds/tui.ex:1252 #, elixir-autogen, elixir-format msgid "Rebuild Embedding Index" msgstr "" @@ -2116,7 +2116,7 @@ msgid "Refresh Translation" msgstr "" #: lib/bds/desktop/menu_bar.ex:252 -#: lib/bds/tui.ex:1143 +#: lib/bds/tui.ex:1255 #, elixir-autogen, elixir-format msgid "Regenerate Calendar" msgstr "" @@ -2127,7 +2127,7 @@ msgid "Regenerate Missing Thumbnails" msgstr "" #: lib/bds/desktop/menu_bar.ex:249 -#: lib/bds/tui.ex:1137 +#: lib/bds/tui.ex:1249 #, elixir-autogen, elixir-format msgid "Reindex Text" msgstr "" @@ -2313,7 +2313,7 @@ msgstr "" #: lib/bds/desktop/shell_live/script_editor.ex:216 #: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:234 -#: lib/bds/tui.ex:1007 +#: lib/bds/tui.ex:1119 #: lib/bds/ui/registry.ex:38 #: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:115 @@ -2441,9 +2441,9 @@ msgid "Site" msgstr "" #: lib/bds/desktop/shell_live/misc_editor.ex:412 -#: lib/bds/tui.ex:241 -#: lib/bds/tui.ex:243 -#: lib/bds/tui.ex:828 +#: lib/bds/tui.ex:251 +#: lib/bds/tui.ex:253 +#: lib/bds/tui.ex:940 #: lib/bds/ui/registry.ex:125 #, elixir-autogen, elixir-format msgid "Site Validation" @@ -2564,7 +2564,7 @@ msgstr "" #: lib/bds/desktop/shell_live/tags_editor.ex:222 #: lib/bds/desktop/shell_live/tags_editor.ex:253 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 -#: lib/bds/tui.ex:1008 +#: lib/bds/tui.ex:1120 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 #: lib/bds/ui/sidebar.ex:289 @@ -2576,7 +2576,7 @@ msgstr "" #: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 -#: lib/bds/tui.ex:515 +#: lib/bds/tui.ex:594 #, elixir-autogen, elixir-format msgid "Tasks" msgstr "" @@ -2621,7 +2621,7 @@ msgstr "" #: lib/bds/desktop/shell_live/template_editor.ex:171 #: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:191 -#: lib/bds/tui.ex:1006 +#: lib/bds/tui.ex:1118 #: lib/bds/ui/registry.ex:46 #: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:122 @@ -2844,7 +2844,7 @@ msgid "Updated URLs" msgstr "" #: lib/bds/desktop/menu_bar.ex:259 -#: lib/bds/tui.ex:1155 +#: lib/bds/tui.ex:1267 #, elixir-autogen, elixir-format msgid "Upload Site" msgstr "" @@ -2872,13 +2872,13 @@ msgid "Validate" msgstr "" #: lib/bds/desktop/menu_bar.ex:258 -#: lib/bds/tui.ex:1133 +#: lib/bds/tui.ex:1245 #, elixir-autogen, elixir-format msgid "Validate Site" msgstr "" #: lib/bds/desktop/menu_bar.ex:253 -#: lib/bds/tui.ex:1146 +#: lib/bds/tui.ex:1258 #, elixir-autogen, elixir-format msgid "Validate Translations" msgstr "" @@ -3543,7 +3543,7 @@ msgid "Suggested tags" msgstr "" #: lib/bds/desktop/menu_bar.ex:257 -#: lib/bds/tui.ex:1134 +#: lib/bds/tui.ex:1246 #, elixir-autogen, elixir-format msgid "Force Render Site" msgstr "" @@ -3640,82 +3640,82 @@ msgstr "" msgid "The endpoint returned no models. You can still type a model name manually." msgstr "" -#: lib/bds/tui.ex:1092 +#: lib/bds/tui.ex:1204 #, elixir-autogen, elixir-format msgid "AI is unavailable in airplane mode without a local endpoint." msgstr "" -#: lib/bds/tui.ex:1219 +#: lib/bds/tui.ex:1331 #, elixir-autogen, elixir-format, fuzzy msgid "Could not load this file." msgstr "" -#: lib/bds/tui.ex:173 +#: lib/bds/tui.ex:183 #, elixir-autogen, elixir-format msgid "Editing this item is not available in the terminal UI yet." msgstr "" -#: lib/bds/tui.ex:488 +#: lib/bds/tui.ex:567 #, elixir-autogen, elixir-format msgid "No suggestions returned." msgstr "" -#: lib/bds/tui.ex:1216 +#: lib/bds/tui.ex:1328 #, elixir-autogen, elixir-format msgid "Only images can be previewed." msgstr "" -#: lib/bds/tui.ex:1015 +#: lib/bds/tui.ex:1127 #, elixir-autogen, elixir-format msgid "Post not found." msgstr "" -#: lib/bds/tui.ex:623 +#: lib/bds/tui.ex:702 #, elixir-autogen, elixir-format msgid "Press enter to preview %{name}." msgstr "" -#: lib/bds/tui.ex:1062 +#: lib/bds/tui.ex:1174 #, elixir-autogen, elixir-format, fuzzy msgid "Published." msgstr "" -#: lib/bds/tui.ex:1078 +#: lib/bds/tui.ex:1190 #, elixir-autogen, elixir-format msgid "Save before switching languages." msgstr "" -#: lib/bds/tui.ex:1063 +#: lib/bds/tui.ex:1175 #, elixir-autogen, elixir-format, fuzzy msgid "Saved." msgstr "" -#: lib/bds/tui.ex:626 +#: lib/bds/tui.ex:705 #, elixir-autogen, elixir-format msgid "Select an entry and press enter to open it." msgstr "" -#: lib/bds/tui.ex:485 +#: lib/bds/tui.ex:564 #, elixir-autogen, elixir-format msgid "Suggestions applied." msgstr "" -#: lib/bds/tui.ex:638 +#: lib/bds/tui.ex:717 #, elixir-autogen, elixir-format msgid "Title (ctrl+t to edit)" msgstr "" -#: lib/bds/tui.ex:637 +#: lib/bds/tui.ex:716 #, elixir-autogen, elixir-format msgid "Title (editing — enter to confirm)" msgstr "" -#: lib/bds/tui.ex:685 +#: lib/bds/tui.ex:764 #, elixir-autogen, elixir-format, fuzzy msgid "Working…" msgstr "" -#: lib/bds/tui.ex:707 +#: lib/bds/tui.ex:786 #, elixir-autogen, elixir-format msgid "esc to close" msgstr "" @@ -3752,117 +3752,122 @@ msgstr "" msgid "Use the form user@host or user@host:port." msgstr "" -#: lib/bds/tui.ex:657 +#: lib/bds/tui.ex:736 #, elixir-autogen, elixir-format msgid "Preview (ctrl+e to edit)" msgstr "" -#: lib/bds/tui.ex:917 +#: lib/bds/tui.ex:1029 #, elixir-autogen, elixir-format, fuzzy msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" msgstr "" -#: lib/bds/tui.ex:515 +#: lib/bds/tui.ex:594 #, elixir-autogen, elixir-format msgid "All tasks finished." msgstr "" -#: lib/bds/tui.ex:733 +#: lib/bds/tui.ex:812 #, elixir-autogen, elixir-format msgid "Commands — esc to close" msgstr "" -#: lib/bds/tui.ex:359 +#: lib/bds/tui.ex:438 #, elixir-autogen, elixir-format, fuzzy msgid "Unknown command." msgstr "" -#: lib/bds/tui.ex:723 +#: lib/bds/tui.ex:802 #, elixir-autogen, elixir-format msgid "[report/apply in GUI]" msgstr "" -#: lib/bds/tui.ex:839 +#: lib/bds/tui.ex:951 #, elixir-autogen, elixir-format msgid "%{diffs} differences · %{orphans} orphan files" msgstr "" -#: lib/bds/tui.ex:871 +#: lib/bds/tui.ex:983 #, elixir-autogen, elixir-format msgid "Expected %{expected} · Existing %{existing}" msgstr "" -#: lib/bds/tui.ex:888 +#: lib/bds/tui.ex:1000 #, elixir-autogen, elixir-format msgid "Extra files (will be removed):" msgstr "" -#: lib/bds/tui.ex:884 +#: lib/bds/tui.ex:996 #, elixir-autogen, elixir-format msgid "Missing pages (will be rendered):" msgstr "" -#: lib/bds/tui.ex:241 +#: lib/bds/tui.ex:251 #, elixir-autogen, elixir-format, fuzzy msgid "Nothing to apply." msgstr "" -#: lib/bds/tui.ex:208 +#: lib/bds/tui.ex:218 #, elixir-autogen, elixir-format, fuzzy msgid "Nothing to repair." msgstr "" -#: lib/bds/tui.ex:862 +#: lib/bds/tui.ex:974 #, elixir-autogen, elixir-format msgid "Orphan files (not in database):" msgstr "" -#: lib/bds/tui.ex:878 +#: lib/bds/tui.ex:990 #, elixir-autogen, elixir-format msgid "Sitemap changed." msgstr "" -#: lib/bds/tui.ex:892 +#: lib/bds/tui.ex:1004 #, elixir-autogen, elixir-format msgid "Updated posts (will be re-rendered):" msgstr "" -#: lib/bds/tui.ex:829 +#: lib/bds/tui.ex:941 #, elixir-autogen, elixir-format msgid "enter apply changes · esc close" msgstr "" -#: lib/bds/tui.ex:824 +#: lib/bds/tui.ex:936 #, elixir-autogen, elixir-format msgid "enter repair all from files · esc close" msgstr "" -#: lib/bds/tui.ex:324 +#: lib/bds/tui.ex:403 #, elixir-autogen, elixir-format, fuzzy msgid "Imported Blog" msgstr "" -#: lib/bds/tui.ex:343 +#: lib/bds/tui.ex:422 #, elixir-autogen, elixir-format msgid "Not a folder: %{path}" msgstr "" -#: lib/bds/tui.ex:764 -#, elixir-autogen, elixir-format -msgid "Open Existing Blog — type a folder path · enter open · esc back" -msgstr "" - -#: lib/bds/tui.ex:793 +#: lib/bds/tui.ex:878 #, elixir-autogen, elixir-format msgid "Projects — enter switch · o open existing · esc close" msgstr "" -#: lib/bds/tui.ex:310 +#: lib/bds/tui.ex:330 #, elixir-autogen, elixir-format msgid "Switched to %{name}." msgstr "" -#: lib/bds/tui.ex:910 +#: lib/bds/tui.ex:1022 #, elixir-autogen, elixir-format, fuzzy msgid "enter open · n new post · 1-5 views · p projects · : commands (:? help) · r refresh · ctrl+q quit" msgstr "" + +#: lib/bds/tui.ex:906 +#, elixir-autogen, elixir-format +msgid "Matching folders" +msgstr "" + +#: lib/bds/tui.ex:844 +#, elixir-autogen, elixir-format, fuzzy +msgid "Open Existing Blog — type a folder path · tab complete · enter open · esc back" +msgstr "" diff --git a/priv/gettext/es/LC_MESSAGES/ui.po b/priv/gettext/es/LC_MESSAGES/ui.po index e18b5a1..b35d019 100644 --- a/priv/gettext/es/LC_MESSAGES/ui.po +++ b/priv/gettext/es/LC_MESSAGES/ui.po @@ -81,11 +81,11 @@ msgstr "Configuración de IA" #: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: lib/bds/desktop/shell_live/post_editor.ex:920 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 -#: lib/bds/tui.ex:485 -#: lib/bds/tui.ex:488 -#: lib/bds/tui.ex:491 -#: lib/bds/tui.ex:499 -#: lib/bds/tui.ex:1091 +#: lib/bds/tui.ex:564 +#: lib/bds/tui.ex:567 +#: lib/bds/tui.ex:570 +#: lib/bds/tui.ex:578 +#: lib/bds/tui.ex:1203 #, elixir-autogen, elixir-format msgid "AI Suggestions" msgstr "Sugerencias de IA" @@ -572,7 +572,7 @@ msgid "Collapse unchanged diff hunks" msgstr "Contraer bloques de diff sin cambios" #: lib/bds/desktop/shell_live/overlay_manager.ex:422 -#: lib/bds/tui.ex:1187 +#: lib/bds/tui.ex:1299 #, elixir-autogen, elixir-format msgid "Command completed" msgstr "Comando completado" @@ -590,7 +590,7 @@ msgstr "Confirmar" #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 -#: lib/bds/tui.ex:668 +#: lib/bds/tui.ex:747 #: lib/bds/ui/sidebar.ex:764 #, elixir-autogen, elixir-format msgid "Content" @@ -1030,7 +1030,7 @@ msgid "Filename" msgstr "Nombre de archivo" #: lib/bds/desktop/menu_bar.ex:254 -#: lib/bds/tui.ex:1151 +#: lib/bds/tui.ex:1263 #, elixir-autogen, elixir-format msgid "Fill Missing Translations" msgstr "Completar traducciones faltantes" @@ -1041,7 +1041,7 @@ msgid "Find" msgstr "Buscar" #: lib/bds/desktop/menu_bar.ex:255 -#: lib/bds/tui.ex:1154 +#: lib/bds/tui.ex:1266 #, elixir-autogen, elixir-format msgid "Find Duplicate Posts" msgstr "Buscar entradas duplicadas" @@ -1068,7 +1068,7 @@ msgid "Gallery" msgstr "Galeria" #: lib/bds/desktop/menu_bar.ex:256 -#: lib/bds/tui.ex:1135 +#: lib/bds/tui.ex:1247 #, elixir-autogen, elixir-format msgid "Generate Site" msgstr "Generar sitio" @@ -1389,9 +1389,9 @@ msgstr "Máximo de publicaciones por página" #: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175 -#: lib/bds/tui.ex:1005 -#: lib/bds/tui.ex:1216 -#: lib/bds/tui.ex:1219 +#: lib/bds/tui.ex:1117 +#: lib/bds/tui.ex:1328 +#: lib/bds/tui.ex:1331 #: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:100 #: lib/bds/ui/sidebar.ex:558 @@ -1434,11 +1434,11 @@ msgstr "Metadatos" #: lib/bds/desktop/shell_live/misc_editor.ex:214 #: lib/bds/desktop/shell_live/misc_editor.ex:226 #: lib/bds/desktop/shell_live/misc_editor.ex:448 -#: lib/bds/tui.ex:208 -#: lib/bds/tui.ex:214 -#: lib/bds/tui.ex:225 -#: lib/bds/tui.ex:823 -#: lib/bds/tui.ex:1132 +#: lib/bds/tui.ex:218 +#: lib/bds/tui.ex:224 +#: lib/bds/tui.ex:235 +#: lib/bds/tui.ex:935 +#: lib/bds/tui.ex:1244 #: lib/bds/ui/registry.ex:111 #, elixir-autogen, elixir-format msgid "Metadata Diff" @@ -1484,7 +1484,7 @@ msgstr "Nueva página" #: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/shell_live/sidebar_create.ex:41 -#: lib/bds/tui.ex:165 +#: lib/bds/tui.ex:175 #, elixir-autogen, elixir-format msgid "New Post" msgstr "Nueva entrada" @@ -1762,8 +1762,8 @@ msgid "Open Data Folder" msgstr "Abrir carpeta de datos" #: lib/bds/desktop/shell_live/index.html.heex:644 -#: lib/bds/tui.ex:337 -#: lib/bds/tui.ex:342 +#: lib/bds/tui.ex:416 +#: lib/bds/tui.ex:421 #, elixir-autogen, elixir-format msgid "Open Existing Blog" msgstr "Abrir blog existente" @@ -1775,7 +1775,7 @@ msgid "Open Settings" msgstr "Abrir Ajustes" #: lib/bds/desktop/menu_bar.ex:217 -#: lib/bds/tui.ex:1156 +#: lib/bds/tui.ex:1268 #, elixir-autogen, elixir-format msgid "Open in Browser" msgstr "Abrir en el navegador" @@ -1923,8 +1923,8 @@ msgstr "Artículo guardado" #: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:761 -#: lib/bds/tui.ex:1004 -#: lib/bds/tui.ex:1015 +#: lib/bds/tui.ex:1116 +#: lib/bds/tui.ex:1127 #: lib/bds/ui/registry.ex:14 #: lib/bds/ui/sidebar.ex:271 #, elixir-autogen, elixir-format @@ -1983,8 +1983,8 @@ msgstr "Proyecto y publicación" #: lib/bds/desktop/shell_live/chat_surface.ex:15 #: lib/bds/desktop/shell_live/index.html.heex:623 -#: lib/bds/tui.ex:309 -#: lib/bds/tui.ex:314 +#: lib/bds/tui.ex:329 +#: lib/bds/tui.ex:334 #, elixir-autogen, elixir-format msgid "Projects" msgstr "Proyectos" @@ -2050,15 +2050,15 @@ msgid "Ready to import:" msgstr "Listo para importar:" #: lib/bds/desktop/menu_bar.ex:248 -#: lib/bds/tui.ex:334 -#: lib/bds/tui.ex:1136 +#: lib/bds/tui.ex:413 +#: lib/bds/tui.ex:1248 #, elixir-autogen, elixir-format msgid "Rebuild Database" msgstr "Reconstruir base de datos" #: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 -#: lib/bds/tui.ex:1140 +#: lib/bds/tui.ex:1252 #, elixir-autogen, elixir-format msgid "Rebuild Embedding Index" msgstr "Reconstruir índice de embeddings" @@ -2116,7 +2116,7 @@ msgid "Refresh Translation" msgstr "Actualizar traducción" #: lib/bds/desktop/menu_bar.ex:252 -#: lib/bds/tui.ex:1143 +#: lib/bds/tui.ex:1255 #, elixir-autogen, elixir-format msgid "Regenerate Calendar" msgstr "Regenerar calendario" @@ -2127,7 +2127,7 @@ msgid "Regenerate Missing Thumbnails" msgstr "Regenerar miniaturas faltantes" #: lib/bds/desktop/menu_bar.ex:249 -#: lib/bds/tui.ex:1137 +#: lib/bds/tui.ex:1249 #, elixir-autogen, elixir-format msgid "Reindex Text" msgstr "Reindexar texto" @@ -2313,7 +2313,7 @@ msgstr "Las capacidades de scripts se configuran en la capa de aplicación en la #: lib/bds/desktop/shell_live/script_editor.ex:216 #: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:234 -#: lib/bds/tui.ex:1007 +#: lib/bds/tui.ex:1119 #: lib/bds/ui/registry.ex:38 #: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:115 @@ -2441,9 +2441,9 @@ msgid "Site" msgstr "Sitio" #: lib/bds/desktop/shell_live/misc_editor.ex:412 -#: lib/bds/tui.ex:241 -#: lib/bds/tui.ex:243 -#: lib/bds/tui.ex:828 +#: lib/bds/tui.ex:251 +#: lib/bds/tui.ex:253 +#: lib/bds/tui.ex:940 #: lib/bds/ui/registry.ex:125 #, elixir-autogen, elixir-format msgid "Site Validation" @@ -2564,7 +2564,7 @@ msgstr "Nombre de la etiqueta" #: lib/bds/desktop/shell_live/tags_editor.ex:222 #: lib/bds/desktop/shell_live/tags_editor.ex:253 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 -#: lib/bds/tui.ex:1008 +#: lib/bds/tui.ex:1120 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 #: lib/bds/ui/sidebar.ex:289 @@ -2576,7 +2576,7 @@ msgstr "Etiquetas" #: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 -#: lib/bds/tui.ex:515 +#: lib/bds/tui.ex:594 #, elixir-autogen, elixir-format msgid "Tasks" msgstr "Tareas" @@ -2621,7 +2621,7 @@ msgstr "La sintaxis de la plantilla es válida" #: lib/bds/desktop/shell_live/template_editor.ex:171 #: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:191 -#: lib/bds/tui.ex:1006 +#: lib/bds/tui.ex:1118 #: lib/bds/ui/registry.ex:46 #: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:122 @@ -2844,7 +2844,7 @@ msgid "Updated URLs" msgstr "URLs actualizadas" #: lib/bds/desktop/menu_bar.ex:259 -#: lib/bds/tui.ex:1155 +#: lib/bds/tui.ex:1267 #, elixir-autogen, elixir-format msgid "Upload Site" msgstr "Subir sitio" @@ -2872,13 +2872,13 @@ msgid "Validate" msgstr "Validar" #: lib/bds/desktop/menu_bar.ex:258 -#: lib/bds/tui.ex:1133 +#: lib/bds/tui.ex:1245 #, elixir-autogen, elixir-format msgid "Validate Site" msgstr "Validar sitio" #: lib/bds/desktop/menu_bar.ex:253 -#: lib/bds/tui.ex:1146 +#: lib/bds/tui.ex:1258 #, elixir-autogen, elixir-format msgid "Validate Translations" msgstr "Validar traducciones" @@ -3543,7 +3543,7 @@ msgid "Suggested tags" msgstr "Etiquetas sugeridas" #: lib/bds/desktop/menu_bar.ex:257 -#: lib/bds/tui.ex:1134 +#: lib/bds/tui.ex:1246 #, elixir-autogen, elixir-format msgid "Force Render Site" msgstr "Forzar la regeneración del sitio" @@ -3640,82 +3640,82 @@ msgstr "OK" msgid "The endpoint returned no models. You can still type a model name manually." msgstr "El endpoint no devolvió ningún modelo. Aún puedes escribir el nombre de un modelo manualmente." -#: lib/bds/tui.ex:1092 +#: lib/bds/tui.ex:1204 #, elixir-autogen, elixir-format msgid "AI is unavailable in airplane mode without a local endpoint." msgstr "La IA no está disponible en modo avión sin un punto de conexión local." -#: lib/bds/tui.ex:1219 +#: lib/bds/tui.ex:1331 #, elixir-autogen, elixir-format msgid "Could not load this file." msgstr "No se pudo cargar este archivo." -#: lib/bds/tui.ex:173 +#: lib/bds/tui.ex:183 #, elixir-autogen, elixir-format msgid "Editing this item is not available in the terminal UI yet." msgstr "La edición de este elemento aún no está disponible en la interfaz de terminal." -#: lib/bds/tui.ex:488 +#: lib/bds/tui.ex:567 #, elixir-autogen, elixir-format msgid "No suggestions returned." msgstr "No se recibieron sugerencias." -#: lib/bds/tui.ex:1216 +#: lib/bds/tui.ex:1328 #, elixir-autogen, elixir-format msgid "Only images can be previewed." msgstr "Solo se pueden previsualizar imágenes." -#: lib/bds/tui.ex:1015 +#: lib/bds/tui.ex:1127 #, elixir-autogen, elixir-format msgid "Post not found." msgstr "Entrada no encontrada." -#: lib/bds/tui.ex:623 +#: lib/bds/tui.ex:702 #, elixir-autogen, elixir-format msgid "Press enter to preview %{name}." msgstr "Pulsa Intro para previsualizar %{name}." -#: lib/bds/tui.ex:1062 +#: lib/bds/tui.ex:1174 #, elixir-autogen, elixir-format msgid "Published." msgstr "Publicado." -#: lib/bds/tui.ex:1078 +#: lib/bds/tui.ex:1190 #, elixir-autogen, elixir-format msgid "Save before switching languages." msgstr "Guarda antes de cambiar de idioma." -#: lib/bds/tui.ex:1063 +#: lib/bds/tui.ex:1175 #, elixir-autogen, elixir-format msgid "Saved." msgstr "Guardado." -#: lib/bds/tui.ex:626 +#: lib/bds/tui.ex:705 #, elixir-autogen, elixir-format msgid "Select an entry and press enter to open it." msgstr "Selecciona una entrada y pulsa Intro para abrirla." -#: lib/bds/tui.ex:485 +#: lib/bds/tui.ex:564 #, elixir-autogen, elixir-format msgid "Suggestions applied." msgstr "Sugerencias aplicadas." -#: lib/bds/tui.ex:638 +#: lib/bds/tui.ex:717 #, elixir-autogen, elixir-format msgid "Title (ctrl+t to edit)" msgstr "Título (ctrl+t para editar)" -#: lib/bds/tui.ex:637 +#: lib/bds/tui.ex:716 #, elixir-autogen, elixir-format msgid "Title (editing — enter to confirm)" msgstr "Título (edición — Intro para confirmar)" -#: lib/bds/tui.ex:685 +#: lib/bds/tui.ex:764 #, elixir-autogen, elixir-format msgid "Working…" msgstr "Procesando…" -#: lib/bds/tui.ex:707 +#: lib/bds/tui.ex:786 #, elixir-autogen, elixir-format msgid "esc to close" msgstr "esc para cerrar" @@ -3752,117 +3752,122 @@ msgstr "Dirección del servidor (user@host o user@host:port), autenticación de msgid "Use the form user@host or user@host:port." msgstr "Usa el formato user@host o user@host:port." -#: lib/bds/tui.ex:657 +#: lib/bds/tui.ex:736 #, elixir-autogen, elixir-format msgid "Preview (ctrl+e to edit)" msgstr "Vista previa (ctrl+e para editar)" -#: lib/bds/tui.ex:917 +#: lib/bds/tui.ex:1029 #, elixir-autogen, elixir-format msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" msgstr "ctrl+s guardar · ctrl+p publicar · ctrl+e vista previa · ctrl+t título · ctrl+l idioma · ctrl+g IA · esc volver" -#: lib/bds/tui.ex:515 +#: lib/bds/tui.ex:594 #, elixir-autogen, elixir-format msgid "All tasks finished." msgstr "Todas las tareas han terminado." -#: lib/bds/tui.ex:733 +#: lib/bds/tui.ex:812 #, elixir-autogen, elixir-format msgid "Commands — esc to close" msgstr "Comandos — esc para cerrar" -#: lib/bds/tui.ex:359 +#: lib/bds/tui.ex:438 #, elixir-autogen, elixir-format msgid "Unknown command." msgstr "Comando desconocido." -#: lib/bds/tui.ex:723 +#: lib/bds/tui.ex:802 #, elixir-autogen, elixir-format msgid "[report/apply in GUI]" msgstr "[informe/aplicación en la GUI]" -#: lib/bds/tui.ex:839 +#: lib/bds/tui.ex:951 #, elixir-autogen, elixir-format msgid "%{diffs} differences · %{orphans} orphan files" msgstr "%{diffs} diferencias · %{orphans} archivos huérfanos" -#: lib/bds/tui.ex:871 +#: lib/bds/tui.ex:983 #, elixir-autogen, elixir-format msgid "Expected %{expected} · Existing %{existing}" msgstr "Esperados %{expected} · Existentes %{existing}" -#: lib/bds/tui.ex:888 +#: lib/bds/tui.ex:1000 #, elixir-autogen, elixir-format msgid "Extra files (will be removed):" msgstr "Archivos sobrantes (se eliminarán):" -#: lib/bds/tui.ex:884 +#: lib/bds/tui.ex:996 #, elixir-autogen, elixir-format msgid "Missing pages (will be rendered):" msgstr "Páginas faltantes (se generarán):" -#: lib/bds/tui.ex:241 +#: lib/bds/tui.ex:251 #, elixir-autogen, elixir-format msgid "Nothing to apply." msgstr "Nada que aplicar." -#: lib/bds/tui.ex:208 +#: lib/bds/tui.ex:218 #, elixir-autogen, elixir-format msgid "Nothing to repair." msgstr "Nada que reparar." -#: lib/bds/tui.ex:862 +#: lib/bds/tui.ex:974 #, elixir-autogen, elixir-format msgid "Orphan files (not in database):" msgstr "Archivos huérfanos (no están en la base de datos):" -#: lib/bds/tui.ex:878 +#: lib/bds/tui.ex:990 #, elixir-autogen, elixir-format msgid "Sitemap changed." msgstr "Sitemap modificado." -#: lib/bds/tui.ex:892 +#: lib/bds/tui.ex:1004 #, elixir-autogen, elixir-format msgid "Updated posts (will be re-rendered):" msgstr "Entradas actualizadas (se volverán a generar):" -#: lib/bds/tui.ex:829 +#: lib/bds/tui.ex:941 #, elixir-autogen, elixir-format msgid "enter apply changes · esc close" msgstr "intro aplicar cambios · esc cerrar" -#: lib/bds/tui.ex:824 +#: lib/bds/tui.ex:936 #, elixir-autogen, elixir-format msgid "enter repair all from files · esc close" msgstr "intro reparar todo desde archivos · esc cerrar" -#: lib/bds/tui.ex:324 +#: lib/bds/tui.ex:403 #, elixir-autogen, elixir-format msgid "Imported Blog" msgstr "Blog importado" -#: lib/bds/tui.ex:343 +#: lib/bds/tui.ex:422 #, elixir-autogen, elixir-format msgid "Not a folder: %{path}" msgstr "No es una carpeta: %{path}" -#: lib/bds/tui.ex:764 -#, elixir-autogen, elixir-format -msgid "Open Existing Blog — type a folder path · enter open · esc back" -msgstr "Abrir blog existente — escribe la ruta de una carpeta · intro abrir · esc volver" - -#: lib/bds/tui.ex:793 +#: lib/bds/tui.ex:878 #, elixir-autogen, elixir-format msgid "Projects — enter switch · o open existing · esc close" msgstr "Proyectos — intro cambiar · o abrir existente · esc cerrar" -#: lib/bds/tui.ex:310 +#: lib/bds/tui.ex:330 #, elixir-autogen, elixir-format msgid "Switched to %{name}." msgstr "Cambiado a %{name}." -#: lib/bds/tui.ex:910 +#: lib/bds/tui.ex:1022 #, elixir-autogen, elixir-format msgid "enter open · n new post · 1-5 views · p projects · : commands (:? help) · r refresh · ctrl+q quit" msgstr "intro abrir · n nueva entrada · 1-5 vistas · p proyectos · : comandos (:? ayuda) · r actualizar · ctrl+q salir" + +#: lib/bds/tui.ex:906 +#, elixir-autogen, elixir-format +msgid "Matching folders" +msgstr "Carpetas coincidentes" + +#: lib/bds/tui.ex:844 +#, elixir-autogen, elixir-format +msgid "Open Existing Blog — type a folder path · tab complete · enter open · esc back" +msgstr "Abrir blog existente — escribe la ruta de una carpeta · tab completar · intro abrir · esc volver" diff --git a/priv/gettext/fr/LC_MESSAGES/ui.po b/priv/gettext/fr/LC_MESSAGES/ui.po index badfbf0..4d4632b 100644 --- a/priv/gettext/fr/LC_MESSAGES/ui.po +++ b/priv/gettext/fr/LC_MESSAGES/ui.po @@ -81,11 +81,11 @@ msgstr "Paramètres IA" #: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: lib/bds/desktop/shell_live/post_editor.ex:920 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 -#: lib/bds/tui.ex:485 -#: lib/bds/tui.ex:488 -#: lib/bds/tui.ex:491 -#: lib/bds/tui.ex:499 -#: lib/bds/tui.ex:1091 +#: lib/bds/tui.ex:564 +#: lib/bds/tui.ex:567 +#: lib/bds/tui.ex:570 +#: lib/bds/tui.ex:578 +#: lib/bds/tui.ex:1203 #, elixir-autogen, elixir-format msgid "AI Suggestions" msgstr "Suggestions IA" @@ -572,7 +572,7 @@ msgid "Collapse unchanged diff hunks" msgstr "Réduire les blocs de diff inchangés" #: lib/bds/desktop/shell_live/overlay_manager.ex:422 -#: lib/bds/tui.ex:1187 +#: lib/bds/tui.ex:1299 #, elixir-autogen, elixir-format msgid "Command completed" msgstr "Commande terminée" @@ -590,7 +590,7 @@ msgstr "Confirmer" #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 -#: lib/bds/tui.ex:668 +#: lib/bds/tui.ex:747 #: lib/bds/ui/sidebar.ex:764 #, elixir-autogen, elixir-format msgid "Content" @@ -1030,7 +1030,7 @@ msgid "Filename" msgstr "Nom de fichier" #: lib/bds/desktop/menu_bar.ex:254 -#: lib/bds/tui.ex:1151 +#: lib/bds/tui.ex:1263 #, elixir-autogen, elixir-format msgid "Fill Missing Translations" msgstr "Compléter les traductions manquantes" @@ -1041,7 +1041,7 @@ msgid "Find" msgstr "Rechercher" #: lib/bds/desktop/menu_bar.ex:255 -#: lib/bds/tui.ex:1154 +#: lib/bds/tui.ex:1266 #, elixir-autogen, elixir-format msgid "Find Duplicate Posts" msgstr "Trouver les doublons" @@ -1068,7 +1068,7 @@ msgid "Gallery" msgstr "Galerie" #: lib/bds/desktop/menu_bar.ex:256 -#: lib/bds/tui.ex:1135 +#: lib/bds/tui.ex:1247 #, elixir-autogen, elixir-format msgid "Generate Site" msgstr "Générer le site" @@ -1389,9 +1389,9 @@ msgstr "Nombre maximal d’articles par page" #: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175 -#: lib/bds/tui.ex:1005 -#: lib/bds/tui.ex:1216 -#: lib/bds/tui.ex:1219 +#: lib/bds/tui.ex:1117 +#: lib/bds/tui.ex:1328 +#: lib/bds/tui.ex:1331 #: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:100 #: lib/bds/ui/sidebar.ex:558 @@ -1434,11 +1434,11 @@ msgstr "Métadonnées" #: lib/bds/desktop/shell_live/misc_editor.ex:214 #: lib/bds/desktop/shell_live/misc_editor.ex:226 #: lib/bds/desktop/shell_live/misc_editor.ex:448 -#: lib/bds/tui.ex:208 -#: lib/bds/tui.ex:214 -#: lib/bds/tui.ex:225 -#: lib/bds/tui.ex:823 -#: lib/bds/tui.ex:1132 +#: lib/bds/tui.ex:218 +#: lib/bds/tui.ex:224 +#: lib/bds/tui.ex:235 +#: lib/bds/tui.ex:935 +#: lib/bds/tui.ex:1244 #: lib/bds/ui/registry.ex:111 #, elixir-autogen, elixir-format msgid "Metadata Diff" @@ -1484,7 +1484,7 @@ msgstr "Nouvelle page" #: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/shell_live/sidebar_create.ex:41 -#: lib/bds/tui.ex:165 +#: lib/bds/tui.ex:175 #, elixir-autogen, elixir-format msgid "New Post" msgstr "Nouvel article" @@ -1762,8 +1762,8 @@ msgid "Open Data Folder" msgstr "Ouvrir le dossier de données" #: lib/bds/desktop/shell_live/index.html.heex:644 -#: lib/bds/tui.ex:337 -#: lib/bds/tui.ex:342 +#: lib/bds/tui.ex:416 +#: lib/bds/tui.ex:421 #, elixir-autogen, elixir-format msgid "Open Existing Blog" msgstr "Ouvrir un blog existant" @@ -1775,7 +1775,7 @@ msgid "Open Settings" msgstr "Ouvrir les Réglages" #: lib/bds/desktop/menu_bar.ex:217 -#: lib/bds/tui.ex:1156 +#: lib/bds/tui.ex:1268 #, elixir-autogen, elixir-format msgid "Open in Browser" msgstr "Ouvrir dans le navigateur" @@ -1923,8 +1923,8 @@ msgstr "Article enregistré" #: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:761 -#: lib/bds/tui.ex:1004 -#: lib/bds/tui.ex:1015 +#: lib/bds/tui.ex:1116 +#: lib/bds/tui.ex:1127 #: lib/bds/ui/registry.ex:14 #: lib/bds/ui/sidebar.ex:271 #, elixir-autogen, elixir-format @@ -1983,8 +1983,8 @@ msgstr "Projet et publication" #: lib/bds/desktop/shell_live/chat_surface.ex:15 #: lib/bds/desktop/shell_live/index.html.heex:623 -#: lib/bds/tui.ex:309 -#: lib/bds/tui.ex:314 +#: lib/bds/tui.ex:329 +#: lib/bds/tui.ex:334 #, elixir-autogen, elixir-format msgid "Projects" msgstr "Projets" @@ -2050,15 +2050,15 @@ msgid "Ready to import:" msgstr "Prêt à importer :" #: lib/bds/desktop/menu_bar.ex:248 -#: lib/bds/tui.ex:334 -#: lib/bds/tui.ex:1136 +#: lib/bds/tui.ex:413 +#: lib/bds/tui.ex:1248 #, elixir-autogen, elixir-format msgid "Rebuild Database" msgstr "Reconstruire la base de données" #: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 -#: lib/bds/tui.ex:1140 +#: lib/bds/tui.ex:1252 #, elixir-autogen, elixir-format msgid "Rebuild Embedding Index" msgstr "Reconstruire l’index d’embeddings" @@ -2116,7 +2116,7 @@ msgid "Refresh Translation" msgstr "Actualiser la traduction" #: lib/bds/desktop/menu_bar.ex:252 -#: lib/bds/tui.ex:1143 +#: lib/bds/tui.ex:1255 #, elixir-autogen, elixir-format msgid "Regenerate Calendar" msgstr "Régénérer le calendrier" @@ -2127,7 +2127,7 @@ msgid "Regenerate Missing Thumbnails" msgstr "Régénérer les vignettes manquantes" #: lib/bds/desktop/menu_bar.ex:249 -#: lib/bds/tui.ex:1137 +#: lib/bds/tui.ex:1249 #, elixir-autogen, elixir-format msgid "Reindex Text" msgstr "Réindexer le texte" @@ -2313,7 +2313,7 @@ msgstr "Les capacités de script sont configurées au niveau de l’application #: lib/bds/desktop/shell_live/script_editor.ex:216 #: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:234 -#: lib/bds/tui.ex:1007 +#: lib/bds/tui.ex:1119 #: lib/bds/ui/registry.ex:38 #: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:115 @@ -2441,9 +2441,9 @@ msgid "Site" msgstr "Site" #: lib/bds/desktop/shell_live/misc_editor.ex:412 -#: lib/bds/tui.ex:241 -#: lib/bds/tui.ex:243 -#: lib/bds/tui.ex:828 +#: lib/bds/tui.ex:251 +#: lib/bds/tui.ex:253 +#: lib/bds/tui.ex:940 #: lib/bds/ui/registry.ex:125 #, elixir-autogen, elixir-format msgid "Site Validation" @@ -2564,7 +2564,7 @@ msgstr "Nom du mot-clé" #: lib/bds/desktop/shell_live/tags_editor.ex:222 #: lib/bds/desktop/shell_live/tags_editor.ex:253 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 -#: lib/bds/tui.ex:1008 +#: lib/bds/tui.ex:1120 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 #: lib/bds/ui/sidebar.ex:289 @@ -2576,7 +2576,7 @@ msgstr "Tags" #: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 -#: lib/bds/tui.ex:515 +#: lib/bds/tui.ex:594 #, elixir-autogen, elixir-format msgid "Tasks" msgstr "Tâches" @@ -2621,7 +2621,7 @@ msgstr "La syntaxe du template est valide" #: lib/bds/desktop/shell_live/template_editor.ex:171 #: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:191 -#: lib/bds/tui.ex:1006 +#: lib/bds/tui.ex:1118 #: lib/bds/ui/registry.ex:46 #: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:122 @@ -2844,7 +2844,7 @@ msgid "Updated URLs" msgstr "URLs mises à jour" #: lib/bds/desktop/menu_bar.ex:259 -#: lib/bds/tui.ex:1155 +#: lib/bds/tui.ex:1267 #, elixir-autogen, elixir-format msgid "Upload Site" msgstr "Téléverser le site" @@ -2872,13 +2872,13 @@ msgid "Validate" msgstr "Valider" #: lib/bds/desktop/menu_bar.ex:258 -#: lib/bds/tui.ex:1133 +#: lib/bds/tui.ex:1245 #, elixir-autogen, elixir-format msgid "Validate Site" msgstr "Valider le site" #: lib/bds/desktop/menu_bar.ex:253 -#: lib/bds/tui.ex:1146 +#: lib/bds/tui.ex:1258 #, elixir-autogen, elixir-format msgid "Validate Translations" msgstr "Valider les traductions" @@ -3543,7 +3543,7 @@ msgid "Suggested tags" msgstr "Tags suggérés" #: lib/bds/desktop/menu_bar.ex:257 -#: lib/bds/tui.ex:1134 +#: lib/bds/tui.ex:1246 #, elixir-autogen, elixir-format msgid "Force Render Site" msgstr "Forcer la régénération du site" @@ -3640,82 +3640,82 @@ msgstr "OK" msgid "The endpoint returned no models. You can still type a model name manually." msgstr "Le point de terminaison n'a renvoyé aucun modèle. Vous pouvez toujours saisir un nom de modèle manuellement." -#: lib/bds/tui.ex:1092 +#: lib/bds/tui.ex:1204 #, elixir-autogen, elixir-format msgid "AI is unavailable in airplane mode without a local endpoint." msgstr "L'IA n'est pas disponible en mode avion sans point de terminaison local." -#: lib/bds/tui.ex:1219 +#: lib/bds/tui.ex:1331 #, elixir-autogen, elixir-format msgid "Could not load this file." msgstr "Impossible de charger ce fichier." -#: lib/bds/tui.ex:173 +#: lib/bds/tui.ex:183 #, elixir-autogen, elixir-format msgid "Editing this item is not available in the terminal UI yet." msgstr "La modification de cet élément n'est pas encore disponible dans l'interface du terminal." -#: lib/bds/tui.ex:488 +#: lib/bds/tui.ex:567 #, elixir-autogen, elixir-format msgid "No suggestions returned." msgstr "Aucune suggestion reçue." -#: lib/bds/tui.ex:1216 +#: lib/bds/tui.ex:1328 #, elixir-autogen, elixir-format msgid "Only images can be previewed." msgstr "Seules les images peuvent être prévisualisées." -#: lib/bds/tui.ex:1015 +#: lib/bds/tui.ex:1127 #, elixir-autogen, elixir-format msgid "Post not found." msgstr "Article introuvable." -#: lib/bds/tui.ex:623 +#: lib/bds/tui.ex:702 #, elixir-autogen, elixir-format msgid "Press enter to preview %{name}." msgstr "Appuyez sur Entrée pour prévisualiser %{name}." -#: lib/bds/tui.ex:1062 +#: lib/bds/tui.ex:1174 #, elixir-autogen, elixir-format msgid "Published." msgstr "Publié." -#: lib/bds/tui.ex:1078 +#: lib/bds/tui.ex:1190 #, elixir-autogen, elixir-format msgid "Save before switching languages." msgstr "Enregistrez avant de changer de langue." -#: lib/bds/tui.ex:1063 +#: lib/bds/tui.ex:1175 #, elixir-autogen, elixir-format msgid "Saved." msgstr "Enregistré." -#: lib/bds/tui.ex:626 +#: lib/bds/tui.ex:705 #, elixir-autogen, elixir-format msgid "Select an entry and press enter to open it." msgstr "Sélectionnez une entrée et appuyez sur Entrée pour l'ouvrir." -#: lib/bds/tui.ex:485 +#: lib/bds/tui.ex:564 #, elixir-autogen, elixir-format msgid "Suggestions applied." msgstr "Suggestions appliquées." -#: lib/bds/tui.ex:638 +#: lib/bds/tui.ex:717 #, elixir-autogen, elixir-format msgid "Title (ctrl+t to edit)" msgstr "Titre (ctrl+t pour modifier)" -#: lib/bds/tui.ex:637 +#: lib/bds/tui.ex:716 #, elixir-autogen, elixir-format msgid "Title (editing — enter to confirm)" msgstr "Titre (édition — Entrée pour confirmer)" -#: lib/bds/tui.ex:685 +#: lib/bds/tui.ex:764 #, elixir-autogen, elixir-format msgid "Working…" msgstr "Traitement en cours…" -#: lib/bds/tui.ex:707 +#: lib/bds/tui.ex:786 #, elixir-autogen, elixir-format msgid "esc to close" msgstr "échap pour fermer" @@ -3752,117 +3752,122 @@ msgstr "Adresse du serveur (user@host ou user@host:port), authentification par c msgid "Use the form user@host or user@host:port." msgstr "Utilisez le format user@host ou user@host:port." -#: lib/bds/tui.ex:657 +#: lib/bds/tui.ex:736 #, elixir-autogen, elixir-format msgid "Preview (ctrl+e to edit)" msgstr "Aperçu (ctrl+e pour modifier)" -#: lib/bds/tui.ex:917 +#: lib/bds/tui.ex:1029 #, elixir-autogen, elixir-format msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" msgstr "ctrl+s enregistrer · ctrl+p publier · ctrl+e aperçu · ctrl+t titre · ctrl+l langue · ctrl+g IA · échap retour" -#: lib/bds/tui.ex:515 +#: lib/bds/tui.ex:594 #, elixir-autogen, elixir-format msgid "All tasks finished." msgstr "Toutes les tâches sont terminées." -#: lib/bds/tui.ex:733 +#: lib/bds/tui.ex:812 #, elixir-autogen, elixir-format msgid "Commands — esc to close" msgstr "Commandes — échap pour fermer" -#: lib/bds/tui.ex:359 +#: lib/bds/tui.ex:438 #, elixir-autogen, elixir-format msgid "Unknown command." msgstr "Commande inconnue." -#: lib/bds/tui.ex:723 +#: lib/bds/tui.ex:802 #, elixir-autogen, elixir-format msgid "[report/apply in GUI]" msgstr "[rapport/application dans la GUI]" -#: lib/bds/tui.ex:839 +#: lib/bds/tui.ex:951 #, elixir-autogen, elixir-format msgid "%{diffs} differences · %{orphans} orphan files" msgstr "%{diffs} différences · %{orphans} fichiers orphelins" -#: lib/bds/tui.ex:871 +#: lib/bds/tui.ex:983 #, elixir-autogen, elixir-format msgid "Expected %{expected} · Existing %{existing}" msgstr "Attendu %{expected} · Existant %{existing}" -#: lib/bds/tui.ex:888 +#: lib/bds/tui.ex:1000 #, elixir-autogen, elixir-format msgid "Extra files (will be removed):" msgstr "Fichiers en trop (seront supprimés) :" -#: lib/bds/tui.ex:884 +#: lib/bds/tui.ex:996 #, elixir-autogen, elixir-format msgid "Missing pages (will be rendered):" msgstr "Pages manquantes (seront rendues) :" -#: lib/bds/tui.ex:241 +#: lib/bds/tui.ex:251 #, elixir-autogen, elixir-format msgid "Nothing to apply." msgstr "Rien à appliquer." -#: lib/bds/tui.ex:208 +#: lib/bds/tui.ex:218 #, elixir-autogen, elixir-format msgid "Nothing to repair." msgstr "Rien à réparer." -#: lib/bds/tui.ex:862 +#: lib/bds/tui.ex:974 #, elixir-autogen, elixir-format msgid "Orphan files (not in database):" msgstr "Fichiers orphelins (absents de la base de données) :" -#: lib/bds/tui.ex:878 +#: lib/bds/tui.ex:990 #, elixir-autogen, elixir-format msgid "Sitemap changed." msgstr "Sitemap modifié." -#: lib/bds/tui.ex:892 +#: lib/bds/tui.ex:1004 #, elixir-autogen, elixir-format msgid "Updated posts (will be re-rendered):" msgstr "Articles mis à jour (seront rendus à nouveau) :" -#: lib/bds/tui.ex:829 +#: lib/bds/tui.ex:941 #, elixir-autogen, elixir-format msgid "enter apply changes · esc close" msgstr "entrée appliquer les modifications · échap fermer" -#: lib/bds/tui.ex:824 +#: lib/bds/tui.ex:936 #, elixir-autogen, elixir-format msgid "enter repair all from files · esc close" msgstr "entrée tout réparer depuis les fichiers · échap fermer" -#: lib/bds/tui.ex:324 +#: lib/bds/tui.ex:403 #, elixir-autogen, elixir-format msgid "Imported Blog" msgstr "Blog importé" -#: lib/bds/tui.ex:343 +#: lib/bds/tui.ex:422 #, elixir-autogen, elixir-format msgid "Not a folder: %{path}" msgstr "Pas un dossier : %{path}" -#: lib/bds/tui.ex:764 -#, elixir-autogen, elixir-format -msgid "Open Existing Blog — type a folder path · enter open · esc back" -msgstr "Ouvrir un blog existant — saisir le chemin d'un dossier · entrée ouvrir · échap retour" - -#: lib/bds/tui.ex:793 +#: lib/bds/tui.ex:878 #, elixir-autogen, elixir-format msgid "Projects — enter switch · o open existing · esc close" msgstr "Projets — entrée changer · o ouvrir existant · échap fermer" -#: lib/bds/tui.ex:310 +#: lib/bds/tui.ex:330 #, elixir-autogen, elixir-format msgid "Switched to %{name}." msgstr "Passage à %{name}." -#: lib/bds/tui.ex:910 +#: lib/bds/tui.ex:1022 #, elixir-autogen, elixir-format msgid "enter open · n new post · 1-5 views · p projects · : commands (:? help) · r refresh · ctrl+q quit" msgstr "entrée ouvrir · n nouvel article · 1-5 vues · p projets · : commandes (:? aide) · r actualiser · ctrl+q quitter" + +#: lib/bds/tui.ex:906 +#, elixir-autogen, elixir-format +msgid "Matching folders" +msgstr "Dossiers correspondants" + +#: lib/bds/tui.ex:844 +#, elixir-autogen, elixir-format +msgid "Open Existing Blog — type a folder path · tab complete · enter open · esc back" +msgstr "Ouvrir un blog existant — saisir le chemin d'un dossier · tab compléter · entrée ouvrir · échap retour" diff --git a/priv/gettext/it/LC_MESSAGES/ui.po b/priv/gettext/it/LC_MESSAGES/ui.po index c7bc0de..8a2f244 100644 --- a/priv/gettext/it/LC_MESSAGES/ui.po +++ b/priv/gettext/it/LC_MESSAGES/ui.po @@ -81,11 +81,11 @@ msgstr "Impostazioni IA" #: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: lib/bds/desktop/shell_live/post_editor.ex:920 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 -#: lib/bds/tui.ex:485 -#: lib/bds/tui.ex:488 -#: lib/bds/tui.ex:491 -#: lib/bds/tui.ex:499 -#: lib/bds/tui.ex:1091 +#: lib/bds/tui.ex:564 +#: lib/bds/tui.ex:567 +#: lib/bds/tui.ex:570 +#: lib/bds/tui.ex:578 +#: lib/bds/tui.ex:1203 #, elixir-autogen, elixir-format msgid "AI Suggestions" msgstr "Suggerimenti IA" @@ -572,7 +572,7 @@ msgid "Collapse unchanged diff hunks" msgstr "Comprimi i blocchi diff invariati" #: lib/bds/desktop/shell_live/overlay_manager.ex:422 -#: lib/bds/tui.ex:1187 +#: lib/bds/tui.ex:1299 #, elixir-autogen, elixir-format msgid "Command completed" msgstr "Comando completato" @@ -590,7 +590,7 @@ msgstr "Conferma" #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 -#: lib/bds/tui.ex:668 +#: lib/bds/tui.ex:747 #: lib/bds/ui/sidebar.ex:764 #, elixir-autogen, elixir-format msgid "Content" @@ -1030,7 +1030,7 @@ msgid "Filename" msgstr "Nome file" #: lib/bds/desktop/menu_bar.ex:254 -#: lib/bds/tui.ex:1151 +#: lib/bds/tui.ex:1263 #, elixir-autogen, elixir-format msgid "Fill Missing Translations" msgstr "Completa traduzioni mancanti" @@ -1041,7 +1041,7 @@ msgid "Find" msgstr "Trova" #: lib/bds/desktop/menu_bar.ex:255 -#: lib/bds/tui.ex:1154 +#: lib/bds/tui.ex:1266 #, elixir-autogen, elixir-format msgid "Find Duplicate Posts" msgstr "Trova post duplicati" @@ -1068,7 +1068,7 @@ msgid "Gallery" msgstr "Galleria" #: lib/bds/desktop/menu_bar.ex:256 -#: lib/bds/tui.ex:1135 +#: lib/bds/tui.ex:1247 #, elixir-autogen, elixir-format msgid "Generate Site" msgstr "Genera sito" @@ -1389,9 +1389,9 @@ msgstr "Numero massimo di post per pagina" #: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175 -#: lib/bds/tui.ex:1005 -#: lib/bds/tui.ex:1216 -#: lib/bds/tui.ex:1219 +#: lib/bds/tui.ex:1117 +#: lib/bds/tui.ex:1328 +#: lib/bds/tui.ex:1331 #: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:100 #: lib/bds/ui/sidebar.ex:558 @@ -1434,11 +1434,11 @@ msgstr "Metadati" #: lib/bds/desktop/shell_live/misc_editor.ex:214 #: lib/bds/desktop/shell_live/misc_editor.ex:226 #: lib/bds/desktop/shell_live/misc_editor.ex:448 -#: lib/bds/tui.ex:208 -#: lib/bds/tui.ex:214 -#: lib/bds/tui.ex:225 -#: lib/bds/tui.ex:823 -#: lib/bds/tui.ex:1132 +#: lib/bds/tui.ex:218 +#: lib/bds/tui.ex:224 +#: lib/bds/tui.ex:235 +#: lib/bds/tui.ex:935 +#: lib/bds/tui.ex:1244 #: lib/bds/ui/registry.ex:111 #, elixir-autogen, elixir-format msgid "Metadata Diff" @@ -1484,7 +1484,7 @@ msgstr "Nuova pagina" #: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/shell_live/sidebar_create.ex:41 -#: lib/bds/tui.ex:165 +#: lib/bds/tui.ex:175 #, elixir-autogen, elixir-format msgid "New Post" msgstr "Nuovo post" @@ -1762,8 +1762,8 @@ msgid "Open Data Folder" msgstr "Apri cartella dati" #: lib/bds/desktop/shell_live/index.html.heex:644 -#: lib/bds/tui.ex:337 -#: lib/bds/tui.ex:342 +#: lib/bds/tui.ex:416 +#: lib/bds/tui.ex:421 #, elixir-autogen, elixir-format msgid "Open Existing Blog" msgstr "Apri blog esistente" @@ -1775,7 +1775,7 @@ msgid "Open Settings" msgstr "Apri Impostazioni" #: lib/bds/desktop/menu_bar.ex:217 -#: lib/bds/tui.ex:1156 +#: lib/bds/tui.ex:1268 #, elixir-autogen, elixir-format msgid "Open in Browser" msgstr "Apri nel browser" @@ -1923,8 +1923,8 @@ msgstr "Articolo salvato" #: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:761 -#: lib/bds/tui.ex:1004 -#: lib/bds/tui.ex:1015 +#: lib/bds/tui.ex:1116 +#: lib/bds/tui.ex:1127 #: lib/bds/ui/registry.ex:14 #: lib/bds/ui/sidebar.ex:271 #, elixir-autogen, elixir-format @@ -1983,8 +1983,8 @@ msgstr "Progetto e pubblicazione" #: lib/bds/desktop/shell_live/chat_surface.ex:15 #: lib/bds/desktop/shell_live/index.html.heex:623 -#: lib/bds/tui.ex:309 -#: lib/bds/tui.ex:314 +#: lib/bds/tui.ex:329 +#: lib/bds/tui.ex:334 #, elixir-autogen, elixir-format msgid "Projects" msgstr "Progetti" @@ -2050,15 +2050,15 @@ msgid "Ready to import:" msgstr "Pronto per importare:" #: lib/bds/desktop/menu_bar.ex:248 -#: lib/bds/tui.ex:334 -#: lib/bds/tui.ex:1136 +#: lib/bds/tui.ex:413 +#: lib/bds/tui.ex:1248 #, elixir-autogen, elixir-format msgid "Rebuild Database" msgstr "Ricostruisci database" #: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 -#: lib/bds/tui.ex:1140 +#: lib/bds/tui.ex:1252 #, elixir-autogen, elixir-format msgid "Rebuild Embedding Index" msgstr "Ricostruisci indice embeddings" @@ -2116,7 +2116,7 @@ msgid "Refresh Translation" msgstr "Aggiorna traduzione" #: lib/bds/desktop/menu_bar.ex:252 -#: lib/bds/tui.ex:1143 +#: lib/bds/tui.ex:1255 #, elixir-autogen, elixir-format msgid "Regenerate Calendar" msgstr "Rigenera calendario" @@ -2127,7 +2127,7 @@ msgid "Regenerate Missing Thumbnails" msgstr "Rigenera miniature mancanti" #: lib/bds/desktop/menu_bar.ex:249 -#: lib/bds/tui.ex:1137 +#: lib/bds/tui.ex:1249 #, elixir-autogen, elixir-format msgid "Reindex Text" msgstr "Reindicizza testo" @@ -2313,7 +2313,7 @@ msgstr "Le capacità di scripting sono configurate a livello applicativo nella r #: lib/bds/desktop/shell_live/script_editor.ex:216 #: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:234 -#: lib/bds/tui.ex:1007 +#: lib/bds/tui.ex:1119 #: lib/bds/ui/registry.ex:38 #: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:115 @@ -2441,9 +2441,9 @@ msgid "Site" msgstr "Sito" #: lib/bds/desktop/shell_live/misc_editor.ex:412 -#: lib/bds/tui.ex:241 -#: lib/bds/tui.ex:243 -#: lib/bds/tui.ex:828 +#: lib/bds/tui.ex:251 +#: lib/bds/tui.ex:253 +#: lib/bds/tui.ex:940 #: lib/bds/ui/registry.ex:125 #, elixir-autogen, elixir-format msgid "Site Validation" @@ -2564,7 +2564,7 @@ msgstr "Nome del tag" #: lib/bds/desktop/shell_live/tags_editor.ex:222 #: lib/bds/desktop/shell_live/tags_editor.ex:253 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 -#: lib/bds/tui.ex:1008 +#: lib/bds/tui.ex:1120 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 #: lib/bds/ui/sidebar.ex:289 @@ -2576,7 +2576,7 @@ msgstr "Tag" #: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 -#: lib/bds/tui.ex:515 +#: lib/bds/tui.ex:594 #, elixir-autogen, elixir-format msgid "Tasks" msgstr "Attività" @@ -2621,7 +2621,7 @@ msgstr "La sintassi del template è valida" #: lib/bds/desktop/shell_live/template_editor.ex:171 #: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:191 -#: lib/bds/tui.ex:1006 +#: lib/bds/tui.ex:1118 #: lib/bds/ui/registry.ex:46 #: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:122 @@ -2844,7 +2844,7 @@ msgid "Updated URLs" msgstr "URL aggiornati" #: lib/bds/desktop/menu_bar.ex:259 -#: lib/bds/tui.ex:1155 +#: lib/bds/tui.ex:1267 #, elixir-autogen, elixir-format msgid "Upload Site" msgstr "Carica sito" @@ -2872,13 +2872,13 @@ msgid "Validate" msgstr "Valida" #: lib/bds/desktop/menu_bar.ex:258 -#: lib/bds/tui.ex:1133 +#: lib/bds/tui.ex:1245 #, elixir-autogen, elixir-format msgid "Validate Site" msgstr "Valida sito" #: lib/bds/desktop/menu_bar.ex:253 -#: lib/bds/tui.ex:1146 +#: lib/bds/tui.ex:1258 #, elixir-autogen, elixir-format msgid "Validate Translations" msgstr "Valida traduzioni" @@ -3543,7 +3543,7 @@ msgid "Suggested tags" msgstr "Tag suggeriti" #: lib/bds/desktop/menu_bar.ex:257 -#: lib/bds/tui.ex:1134 +#: lib/bds/tui.ex:1246 #, elixir-autogen, elixir-format msgid "Force Render Site" msgstr "Forza la rigenerazione del sito" @@ -3640,82 +3640,82 @@ msgstr "OK" msgid "The endpoint returned no models. You can still type a model name manually." msgstr "L'endpoint non ha restituito alcun modello. Puoi comunque digitare manualmente il nome di un modello." -#: lib/bds/tui.ex:1092 +#: lib/bds/tui.ex:1204 #, elixir-autogen, elixir-format msgid "AI is unavailable in airplane mode without a local endpoint." msgstr "L'IA non è disponibile in modalità aereo senza un endpoint locale." -#: lib/bds/tui.ex:1219 +#: lib/bds/tui.ex:1331 #, elixir-autogen, elixir-format msgid "Could not load this file." msgstr "Impossibile caricare questo file." -#: lib/bds/tui.ex:173 +#: lib/bds/tui.ex:183 #, elixir-autogen, elixir-format msgid "Editing this item is not available in the terminal UI yet." msgstr "La modifica di questo elemento non è ancora disponibile nell'interfaccia del terminale." -#: lib/bds/tui.ex:488 +#: lib/bds/tui.ex:567 #, elixir-autogen, elixir-format msgid "No suggestions returned." msgstr "Nessun suggerimento ricevuto." -#: lib/bds/tui.ex:1216 +#: lib/bds/tui.ex:1328 #, elixir-autogen, elixir-format msgid "Only images can be previewed." msgstr "Solo le immagini possono essere visualizzate in anteprima." -#: lib/bds/tui.ex:1015 +#: lib/bds/tui.ex:1127 #, elixir-autogen, elixir-format msgid "Post not found." msgstr "Post non trovato." -#: lib/bds/tui.ex:623 +#: lib/bds/tui.ex:702 #, elixir-autogen, elixir-format msgid "Press enter to preview %{name}." msgstr "Premi Invio per l'anteprima di %{name}." -#: lib/bds/tui.ex:1062 +#: lib/bds/tui.ex:1174 #, elixir-autogen, elixir-format msgid "Published." msgstr "Pubblicato." -#: lib/bds/tui.ex:1078 +#: lib/bds/tui.ex:1190 #, elixir-autogen, elixir-format msgid "Save before switching languages." msgstr "Salva prima di cambiare lingua." -#: lib/bds/tui.ex:1063 +#: lib/bds/tui.ex:1175 #, elixir-autogen, elixir-format msgid "Saved." msgstr "Salvato." -#: lib/bds/tui.ex:626 +#: lib/bds/tui.ex:705 #, elixir-autogen, elixir-format msgid "Select an entry and press enter to open it." msgstr "Seleziona una voce e premi Invio per aprirla." -#: lib/bds/tui.ex:485 +#: lib/bds/tui.ex:564 #, elixir-autogen, elixir-format msgid "Suggestions applied." msgstr "Suggerimenti applicati." -#: lib/bds/tui.ex:638 +#: lib/bds/tui.ex:717 #, elixir-autogen, elixir-format msgid "Title (ctrl+t to edit)" msgstr "Titolo (ctrl+t per modificare)" -#: lib/bds/tui.ex:637 +#: lib/bds/tui.ex:716 #, elixir-autogen, elixir-format msgid "Title (editing — enter to confirm)" msgstr "Titolo (modifica — Invio per confermare)" -#: lib/bds/tui.ex:685 +#: lib/bds/tui.ex:764 #, elixir-autogen, elixir-format msgid "Working…" msgstr "Elaborazione…" -#: lib/bds/tui.ex:707 +#: lib/bds/tui.ex:786 #, elixir-autogen, elixir-format msgid "esc to close" msgstr "esc per chiudere" @@ -3752,117 +3752,122 @@ msgstr "Indirizzo del server (user@host o user@host:port), autenticazione a chia msgid "Use the form user@host or user@host:port." msgstr "Usa il formato user@host o user@host:port." -#: lib/bds/tui.ex:657 +#: lib/bds/tui.ex:736 #, elixir-autogen, elixir-format msgid "Preview (ctrl+e to edit)" msgstr "Anteprima (ctrl+e per modificare)" -#: lib/bds/tui.ex:917 +#: lib/bds/tui.ex:1029 #, elixir-autogen, elixir-format msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" msgstr "ctrl+s salva · ctrl+p pubblica · ctrl+e anteprima · ctrl+t titolo · ctrl+l lingua · ctrl+g IA · esc indietro" -#: lib/bds/tui.ex:515 +#: lib/bds/tui.ex:594 #, elixir-autogen, elixir-format msgid "All tasks finished." msgstr "Tutte le attività sono terminate." -#: lib/bds/tui.ex:733 +#: lib/bds/tui.ex:812 #, elixir-autogen, elixir-format msgid "Commands — esc to close" msgstr "Comandi — esc per chiudere" -#: lib/bds/tui.ex:359 +#: lib/bds/tui.ex:438 #, elixir-autogen, elixir-format msgid "Unknown command." msgstr "Comando sconosciuto." -#: lib/bds/tui.ex:723 +#: lib/bds/tui.ex:802 #, elixir-autogen, elixir-format msgid "[report/apply in GUI]" msgstr "[report/applicazione nella GUI]" -#: lib/bds/tui.ex:839 +#: lib/bds/tui.ex:951 #, elixir-autogen, elixir-format msgid "%{diffs} differences · %{orphans} orphan files" msgstr "%{diffs} differenze · %{orphans} file orfani" -#: lib/bds/tui.ex:871 +#: lib/bds/tui.ex:983 #, elixir-autogen, elixir-format msgid "Expected %{expected} · Existing %{existing}" msgstr "Attesi %{expected} · Esistenti %{existing}" -#: lib/bds/tui.ex:888 +#: lib/bds/tui.ex:1000 #, elixir-autogen, elixir-format msgid "Extra files (will be removed):" msgstr "File in eccesso (verranno rimossi):" -#: lib/bds/tui.ex:884 +#: lib/bds/tui.ex:996 #, elixir-autogen, elixir-format msgid "Missing pages (will be rendered):" msgstr "Pagine mancanti (verranno generate):" -#: lib/bds/tui.ex:241 +#: lib/bds/tui.ex:251 #, elixir-autogen, elixir-format msgid "Nothing to apply." msgstr "Niente da applicare." -#: lib/bds/tui.ex:208 +#: lib/bds/tui.ex:218 #, elixir-autogen, elixir-format msgid "Nothing to repair." msgstr "Niente da riparare." -#: lib/bds/tui.ex:862 +#: lib/bds/tui.ex:974 #, elixir-autogen, elixir-format msgid "Orphan files (not in database):" msgstr "File orfani (non presenti nel database):" -#: lib/bds/tui.ex:878 +#: lib/bds/tui.ex:990 #, elixir-autogen, elixir-format msgid "Sitemap changed." msgstr "Sitemap modificata." -#: lib/bds/tui.ex:892 +#: lib/bds/tui.ex:1004 #, elixir-autogen, elixir-format msgid "Updated posts (will be re-rendered):" msgstr "Post aggiornati (verranno rigenerati):" -#: lib/bds/tui.ex:829 +#: lib/bds/tui.ex:941 #, elixir-autogen, elixir-format msgid "enter apply changes · esc close" msgstr "invio applica le modifiche · esc chiudi" -#: lib/bds/tui.ex:824 +#: lib/bds/tui.ex:936 #, elixir-autogen, elixir-format msgid "enter repair all from files · esc close" msgstr "invio ripara tutto dai file · esc chiudi" -#: lib/bds/tui.ex:324 +#: lib/bds/tui.ex:403 #, elixir-autogen, elixir-format msgid "Imported Blog" msgstr "Blog importato" -#: lib/bds/tui.ex:343 +#: lib/bds/tui.ex:422 #, elixir-autogen, elixir-format msgid "Not a folder: %{path}" msgstr "Non è una cartella: %{path}" -#: lib/bds/tui.ex:764 -#, elixir-autogen, elixir-format -msgid "Open Existing Blog — type a folder path · enter open · esc back" -msgstr "Apri blog esistente — digita il percorso di una cartella · invio apri · esc indietro" - -#: lib/bds/tui.ex:793 +#: lib/bds/tui.ex:878 #, elixir-autogen, elixir-format msgid "Projects — enter switch · o open existing · esc close" msgstr "Progetti — invio cambia · o apri esistente · esc chiudi" -#: lib/bds/tui.ex:310 +#: lib/bds/tui.ex:330 #, elixir-autogen, elixir-format msgid "Switched to %{name}." msgstr "Passato a %{name}." -#: lib/bds/tui.ex:910 +#: lib/bds/tui.ex:1022 #, elixir-autogen, elixir-format msgid "enter open · n new post · 1-5 views · p projects · : commands (:? help) · r refresh · ctrl+q quit" msgstr "invio apri · n nuovo post · 1-5 viste · p progetti · : comandi (:? aiuto) · r aggiorna · ctrl+q esci" + +#: lib/bds/tui.ex:906 +#, elixir-autogen, elixir-format +msgid "Matching folders" +msgstr "Cartelle corrispondenti" + +#: lib/bds/tui.ex:844 +#, elixir-autogen, elixir-format +msgid "Open Existing Blog — type a folder path · tab complete · enter open · esc back" +msgstr "Apri blog esistente — digita il percorso di una cartella · tab completa · invio apri · esc indietro" diff --git a/priv/gettext/ui.pot b/priv/gettext/ui.pot index 1f43123..5a2563c 100644 --- a/priv/gettext/ui.pot +++ b/priv/gettext/ui.pot @@ -94,11 +94,11 @@ msgstr "" #: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: lib/bds/desktop/shell_live/post_editor.ex:920 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 -#: lib/bds/tui.ex:485 -#: lib/bds/tui.ex:488 -#: lib/bds/tui.ex:491 -#: lib/bds/tui.ex:499 -#: lib/bds/tui.ex:1091 +#: lib/bds/tui.ex:564 +#: lib/bds/tui.ex:567 +#: lib/bds/tui.ex:570 +#: lib/bds/tui.ex:578 +#: lib/bds/tui.ex:1203 #, elixir-autogen, elixir-format msgid "AI Suggestions" msgstr "" @@ -585,7 +585,7 @@ msgid "Collapse unchanged diff hunks" msgstr "" #: lib/bds/desktop/shell_live/overlay_manager.ex:422 -#: lib/bds/tui.ex:1187 +#: lib/bds/tui.ex:1299 #, elixir-autogen, elixir-format msgid "Command completed" msgstr "" @@ -603,7 +603,7 @@ msgstr "" #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 -#: lib/bds/tui.ex:668 +#: lib/bds/tui.ex:747 #: lib/bds/ui/sidebar.ex:764 #, elixir-autogen, elixir-format msgid "Content" @@ -1043,7 +1043,7 @@ msgid "Filename" msgstr "" #: lib/bds/desktop/menu_bar.ex:254 -#: lib/bds/tui.ex:1151 +#: lib/bds/tui.ex:1263 #, elixir-autogen, elixir-format msgid "Fill Missing Translations" msgstr "" @@ -1054,7 +1054,7 @@ msgid "Find" msgstr "" #: lib/bds/desktop/menu_bar.ex:255 -#: lib/bds/tui.ex:1154 +#: lib/bds/tui.ex:1266 #, elixir-autogen, elixir-format msgid "Find Duplicate Posts" msgstr "" @@ -1081,7 +1081,7 @@ msgid "Gallery" msgstr "" #: lib/bds/desktop/menu_bar.ex:256 -#: lib/bds/tui.ex:1135 +#: lib/bds/tui.ex:1247 #, elixir-autogen, elixir-format msgid "Generate Site" msgstr "" @@ -1402,9 +1402,9 @@ msgstr "" #: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175 -#: lib/bds/tui.ex:1005 -#: lib/bds/tui.ex:1216 -#: lib/bds/tui.ex:1219 +#: lib/bds/tui.ex:1117 +#: lib/bds/tui.ex:1328 +#: lib/bds/tui.ex:1331 #: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:100 #: lib/bds/ui/sidebar.ex:558 @@ -1447,11 +1447,11 @@ msgstr "" #: lib/bds/desktop/shell_live/misc_editor.ex:214 #: lib/bds/desktop/shell_live/misc_editor.ex:226 #: lib/bds/desktop/shell_live/misc_editor.ex:448 -#: lib/bds/tui.ex:208 -#: lib/bds/tui.ex:214 -#: lib/bds/tui.ex:225 -#: lib/bds/tui.ex:823 -#: lib/bds/tui.ex:1132 +#: lib/bds/tui.ex:218 +#: lib/bds/tui.ex:224 +#: lib/bds/tui.ex:235 +#: lib/bds/tui.ex:935 +#: lib/bds/tui.ex:1244 #: lib/bds/ui/registry.ex:111 #, elixir-autogen, elixir-format msgid "Metadata Diff" @@ -1497,7 +1497,7 @@ msgstr "" #: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/shell_live/sidebar_create.ex:41 -#: lib/bds/tui.ex:165 +#: lib/bds/tui.ex:175 #, elixir-autogen, elixir-format msgid "New Post" msgstr "" @@ -1775,8 +1775,8 @@ msgid "Open Data Folder" msgstr "" #: lib/bds/desktop/shell_live/index.html.heex:644 -#: lib/bds/tui.ex:337 -#: lib/bds/tui.ex:342 +#: lib/bds/tui.ex:416 +#: lib/bds/tui.ex:421 #, elixir-autogen, elixir-format msgid "Open Existing Blog" msgstr "" @@ -1788,7 +1788,7 @@ msgid "Open Settings" msgstr "" #: lib/bds/desktop/menu_bar.ex:217 -#: lib/bds/tui.ex:1156 +#: lib/bds/tui.ex:1268 #, elixir-autogen, elixir-format msgid "Open in Browser" msgstr "" @@ -1936,8 +1936,8 @@ msgstr "" #: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:761 -#: lib/bds/tui.ex:1004 -#: lib/bds/tui.ex:1015 +#: lib/bds/tui.ex:1116 +#: lib/bds/tui.ex:1127 #: lib/bds/ui/registry.ex:14 #: lib/bds/ui/sidebar.ex:271 #, elixir-autogen, elixir-format @@ -1996,8 +1996,8 @@ msgstr "" #: lib/bds/desktop/shell_live/chat_surface.ex:15 #: lib/bds/desktop/shell_live/index.html.heex:623 -#: lib/bds/tui.ex:309 -#: lib/bds/tui.ex:314 +#: lib/bds/tui.ex:329 +#: lib/bds/tui.ex:334 #, elixir-autogen, elixir-format msgid "Projects" msgstr "" @@ -2063,15 +2063,15 @@ msgid "Ready to import:" msgstr "" #: lib/bds/desktop/menu_bar.ex:248 -#: lib/bds/tui.ex:334 -#: lib/bds/tui.ex:1136 +#: lib/bds/tui.ex:413 +#: lib/bds/tui.ex:1248 #, elixir-autogen, elixir-format msgid "Rebuild Database" msgstr "" #: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 -#: lib/bds/tui.ex:1140 +#: lib/bds/tui.ex:1252 #, elixir-autogen, elixir-format msgid "Rebuild Embedding Index" msgstr "" @@ -2129,7 +2129,7 @@ msgid "Refresh Translation" msgstr "" #: lib/bds/desktop/menu_bar.ex:252 -#: lib/bds/tui.ex:1143 +#: lib/bds/tui.ex:1255 #, elixir-autogen, elixir-format msgid "Regenerate Calendar" msgstr "" @@ -2140,7 +2140,7 @@ msgid "Regenerate Missing Thumbnails" msgstr "" #: lib/bds/desktop/menu_bar.ex:249 -#: lib/bds/tui.ex:1137 +#: lib/bds/tui.ex:1249 #, elixir-autogen, elixir-format msgid "Reindex Text" msgstr "" @@ -2326,7 +2326,7 @@ msgstr "" #: lib/bds/desktop/shell_live/script_editor.ex:216 #: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:234 -#: lib/bds/tui.ex:1007 +#: lib/bds/tui.ex:1119 #: lib/bds/ui/registry.ex:38 #: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:115 @@ -2454,9 +2454,9 @@ msgid "Site" msgstr "" #: lib/bds/desktop/shell_live/misc_editor.ex:412 -#: lib/bds/tui.ex:241 -#: lib/bds/tui.ex:243 -#: lib/bds/tui.ex:828 +#: lib/bds/tui.ex:251 +#: lib/bds/tui.ex:253 +#: lib/bds/tui.ex:940 #: lib/bds/ui/registry.ex:125 #, elixir-autogen, elixir-format msgid "Site Validation" @@ -2577,7 +2577,7 @@ msgstr "" #: lib/bds/desktop/shell_live/tags_editor.ex:222 #: lib/bds/desktop/shell_live/tags_editor.ex:253 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 -#: lib/bds/tui.ex:1008 +#: lib/bds/tui.ex:1120 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 #: lib/bds/ui/sidebar.ex:289 @@ -2589,7 +2589,7 @@ msgstr "" #: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 -#: lib/bds/tui.ex:515 +#: lib/bds/tui.ex:594 #, elixir-autogen, elixir-format msgid "Tasks" msgstr "" @@ -2634,7 +2634,7 @@ msgstr "" #: lib/bds/desktop/shell_live/template_editor.ex:171 #: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:191 -#: lib/bds/tui.ex:1006 +#: lib/bds/tui.ex:1118 #: lib/bds/ui/registry.ex:46 #: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:122 @@ -2857,7 +2857,7 @@ msgid "Updated URLs" msgstr "" #: lib/bds/desktop/menu_bar.ex:259 -#: lib/bds/tui.ex:1155 +#: lib/bds/tui.ex:1267 #, elixir-autogen, elixir-format msgid "Upload Site" msgstr "" @@ -2885,13 +2885,13 @@ msgid "Validate" msgstr "" #: lib/bds/desktop/menu_bar.ex:258 -#: lib/bds/tui.ex:1133 +#: lib/bds/tui.ex:1245 #, elixir-autogen, elixir-format msgid "Validate Site" msgstr "" #: lib/bds/desktop/menu_bar.ex:253 -#: lib/bds/tui.ex:1146 +#: lib/bds/tui.ex:1258 #, elixir-autogen, elixir-format msgid "Validate Translations" msgstr "" @@ -3556,7 +3556,7 @@ msgid "Suggested tags" msgstr "" #: lib/bds/desktop/menu_bar.ex:257 -#: lib/bds/tui.ex:1134 +#: lib/bds/tui.ex:1246 #, elixir-autogen, elixir-format msgid "Force Render Site" msgstr "" @@ -3653,82 +3653,82 @@ msgstr "" msgid "The endpoint returned no models. You can still type a model name manually." msgstr "" -#: lib/bds/tui.ex:1092 +#: lib/bds/tui.ex:1204 #, elixir-autogen, elixir-format msgid "AI is unavailable in airplane mode without a local endpoint." msgstr "" -#: lib/bds/tui.ex:1219 +#: lib/bds/tui.ex:1331 #, elixir-autogen, elixir-format msgid "Could not load this file." msgstr "" -#: lib/bds/tui.ex:173 +#: lib/bds/tui.ex:183 #, elixir-autogen, elixir-format msgid "Editing this item is not available in the terminal UI yet." msgstr "" -#: lib/bds/tui.ex:488 +#: lib/bds/tui.ex:567 #, elixir-autogen, elixir-format msgid "No suggestions returned." msgstr "" -#: lib/bds/tui.ex:1216 +#: lib/bds/tui.ex:1328 #, elixir-autogen, elixir-format msgid "Only images can be previewed." msgstr "" -#: lib/bds/tui.ex:1015 +#: lib/bds/tui.ex:1127 #, elixir-autogen, elixir-format msgid "Post not found." msgstr "" -#: lib/bds/tui.ex:623 +#: lib/bds/tui.ex:702 #, elixir-autogen, elixir-format msgid "Press enter to preview %{name}." msgstr "" -#: lib/bds/tui.ex:1062 +#: lib/bds/tui.ex:1174 #, elixir-autogen, elixir-format msgid "Published." msgstr "" -#: lib/bds/tui.ex:1078 +#: lib/bds/tui.ex:1190 #, elixir-autogen, elixir-format msgid "Save before switching languages." msgstr "" -#: lib/bds/tui.ex:1063 +#: lib/bds/tui.ex:1175 #, elixir-autogen, elixir-format msgid "Saved." msgstr "" -#: lib/bds/tui.ex:626 +#: lib/bds/tui.ex:705 #, elixir-autogen, elixir-format msgid "Select an entry and press enter to open it." msgstr "" -#: lib/bds/tui.ex:485 +#: lib/bds/tui.ex:564 #, elixir-autogen, elixir-format msgid "Suggestions applied." msgstr "" -#: lib/bds/tui.ex:638 +#: lib/bds/tui.ex:717 #, elixir-autogen, elixir-format msgid "Title (ctrl+t to edit)" msgstr "" -#: lib/bds/tui.ex:637 +#: lib/bds/tui.ex:716 #, elixir-autogen, elixir-format msgid "Title (editing — enter to confirm)" msgstr "" -#: lib/bds/tui.ex:685 +#: lib/bds/tui.ex:764 #, elixir-autogen, elixir-format msgid "Working…" msgstr "" -#: lib/bds/tui.ex:707 +#: lib/bds/tui.ex:786 #, elixir-autogen, elixir-format msgid "esc to close" msgstr "" @@ -3765,117 +3765,122 @@ msgstr "" msgid "Use the form user@host or user@host:port." msgstr "" -#: lib/bds/tui.ex:657 +#: lib/bds/tui.ex:736 #, elixir-autogen, elixir-format msgid "Preview (ctrl+e to edit)" msgstr "" -#: lib/bds/tui.ex:917 +#: lib/bds/tui.ex:1029 #, elixir-autogen, elixir-format msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" msgstr "" -#: lib/bds/tui.ex:515 +#: lib/bds/tui.ex:594 #, elixir-autogen, elixir-format msgid "All tasks finished." msgstr "" -#: lib/bds/tui.ex:733 +#: lib/bds/tui.ex:812 #, elixir-autogen, elixir-format msgid "Commands — esc to close" msgstr "" -#: lib/bds/tui.ex:359 +#: lib/bds/tui.ex:438 #, elixir-autogen, elixir-format msgid "Unknown command." msgstr "" -#: lib/bds/tui.ex:723 +#: lib/bds/tui.ex:802 #, elixir-autogen, elixir-format msgid "[report/apply in GUI]" msgstr "" -#: lib/bds/tui.ex:839 +#: lib/bds/tui.ex:951 #, elixir-autogen, elixir-format msgid "%{diffs} differences · %{orphans} orphan files" msgstr "" -#: lib/bds/tui.ex:871 +#: lib/bds/tui.ex:983 #, elixir-autogen, elixir-format msgid "Expected %{expected} · Existing %{existing}" msgstr "" -#: lib/bds/tui.ex:888 +#: lib/bds/tui.ex:1000 #, elixir-autogen, elixir-format msgid "Extra files (will be removed):" msgstr "" -#: lib/bds/tui.ex:884 +#: lib/bds/tui.ex:996 #, elixir-autogen, elixir-format msgid "Missing pages (will be rendered):" msgstr "" -#: lib/bds/tui.ex:241 +#: lib/bds/tui.ex:251 #, elixir-autogen, elixir-format msgid "Nothing to apply." msgstr "" -#: lib/bds/tui.ex:208 +#: lib/bds/tui.ex:218 #, elixir-autogen, elixir-format msgid "Nothing to repair." msgstr "" -#: lib/bds/tui.ex:862 +#: lib/bds/tui.ex:974 #, elixir-autogen, elixir-format msgid "Orphan files (not in database):" msgstr "" -#: lib/bds/tui.ex:878 +#: lib/bds/tui.ex:990 #, elixir-autogen, elixir-format msgid "Sitemap changed." msgstr "" -#: lib/bds/tui.ex:892 +#: lib/bds/tui.ex:1004 #, elixir-autogen, elixir-format msgid "Updated posts (will be re-rendered):" msgstr "" -#: lib/bds/tui.ex:829 +#: lib/bds/tui.ex:941 #, elixir-autogen, elixir-format msgid "enter apply changes · esc close" msgstr "" -#: lib/bds/tui.ex:824 +#: lib/bds/tui.ex:936 #, elixir-autogen, elixir-format msgid "enter repair all from files · esc close" msgstr "" -#: lib/bds/tui.ex:324 +#: lib/bds/tui.ex:403 #, elixir-autogen, elixir-format msgid "Imported Blog" msgstr "" -#: lib/bds/tui.ex:343 +#: lib/bds/tui.ex:422 #, elixir-autogen, elixir-format msgid "Not a folder: %{path}" msgstr "" -#: lib/bds/tui.ex:764 -#, elixir-autogen, elixir-format -msgid "Open Existing Blog — type a folder path · enter open · esc back" -msgstr "" - -#: lib/bds/tui.ex:793 +#: lib/bds/tui.ex:878 #, elixir-autogen, elixir-format msgid "Projects — enter switch · o open existing · esc close" msgstr "" -#: lib/bds/tui.ex:310 +#: lib/bds/tui.ex:330 #, elixir-autogen, elixir-format msgid "Switched to %{name}." msgstr "" -#: lib/bds/tui.ex:910 +#: lib/bds/tui.ex:1022 #, elixir-autogen, elixir-format msgid "enter open · n new post · 1-5 views · p projects · : commands (:? help) · r refresh · ctrl+q quit" msgstr "" + +#: lib/bds/tui.ex:906 +#, elixir-autogen, elixir-format +msgid "Matching folders" +msgstr "" + +#: lib/bds/tui.ex:844 +#, elixir-autogen, elixir-format +msgid "Open Existing Blog — type a folder path · tab complete · enter open · esc back" +msgstr "" diff --git a/specs/tui.allium b/specs/tui.allium index 25aedad..a35f2d5 100644 --- a/specs/tui.allium +++ b/specs/tui.allium @@ -68,7 +68,12 @@ rule ProjectSwitcher { -- "p" opens the projects overlay: all projects from the caching -- database with the active one marked; enter activates the selected -- project (BDS.Projects.set_active_project) and reloads the sidebar. - -- "o" switches to a folder-path prompt — a typed path is validated + -- "o" switches to a folder-path prompt with bash-style tab + -- completion: tab completes a unique directory (trailing slash + -- appended), an ambiguous prefix completes to the longest common + -- prefix and lists the candidate folders; only directories are + -- offered, dotfolders only for a dot-prefixed input, and a leading + -- "~" expands to the home directory. A typed path is validated -- to be an existing directory, then opened as a project -- (BDS.Projects.create_project with data_path, named after the -- folder) and activated; a full database rebuild is queued diff --git a/test/bds/tui_test.exs b/test/bds/tui_test.exs index 501c5d6..d57047b 100644 --- a/test/bds/tui_test.exs +++ b/test/bds/tui_test.exs @@ -524,6 +524,67 @@ defmodule BDS.TUITest do end end + describe "path completion" do + setup do + base = Path.join(System.tmp_dir!(), "bds-tui-tab-#{System.unique_integer([:positive])}") + + for dir <- ["blog-one", "blog-two", "alpha-unique", ".secret"] do + File.mkdir_p!(Path.join(base, dir)) + end + + File.write!(Path.join(base, "blog-notes.txt"), "not a folder") + on_exit(fn -> File.rm_rf(base) end) + {:ok, base: base} + end + + defp prompt!(path) do + mount!() |> press("p") |> press("o") |> type(path) + end + + test "tab completes a unique directory prefix with a trailing slash", %{base: base} do + state = prompt!(Path.join(base, "alph")) |> press("tab") + + assert state.projects.input == Path.join(base, "alpha-unique") <> "/" + assert state.projects.matches == [] + end + + test "tab completes ambiguous prefixes to the longest common prefix and lists candidates", + %{base: base} do + state = prompt!(Path.join(base, "bl")) |> press("tab") + + # Files are not offered — this is a folder picker. + assert state.projects.input == Path.join(base, "blog-") + assert state.projects.matches == ["blog-one", "blog-two"] + assert screen_text(state, 140, 40) =~ "blog-one" + end + + test "candidates are cleared as soon as typing continues", %{base: base} do + state = prompt!(Path.join(base, "bl")) |> press("tab") |> press("o") + assert state.projects.matches == [] + end + + test "hidden folders are not offered unless the prefix starts with a dot", %{base: base} do + state = prompt!(base <> "/") |> press("tab") + refute ".secret" in state.projects.matches + + state = prompt!(Path.join(base, ".se")) |> press("tab") + assert state.projects.input == Path.join(base, ".secret") <> "/" + end + + test "tab with no matches leaves the input unchanged", %{base: base} do + input = Path.join(base, "zzz") + state = prompt!(input) |> press("tab") + + assert state.projects.input == input + assert state.projects.matches == [] + end + + test "a leading ~ expands to the home directory" do + state = prompt!("~/") |> press("tab") + assert String.starts_with?(state.projects.input, System.user_home!() <> "/") + end + end + test "local tui mode stops the VM when the app exits" do parent = self() state = mount!(stop_vm_on_exit: true, stop_fun: fn -> send(parent, :vm_stopped) end)