feat: word-wrapped markdown preview toggle in the TUI editor (issue #26)

This commit is contained in:
2026-07-15 19:28:10 +02:00
parent c77686250e
commit 01b90e00a0
10 changed files with 338 additions and 241 deletions

View File

@@ -195,8 +195,9 @@ appears in every open shell.
`↑/↓` or `j/k` navigate · `enter` open · `n` new post · `1-5` switch view `↑/↓` or `j/k` navigate · `enter` open · `n` new post · `1-5` switch view
(posts/media/templates/scripts/tags) · `r` refresh · in the editor: (posts/media/templates/scripts/tags) · `r` refresh · in the editor:
`ctrl+s` save, `ctrl+p` publish, `ctrl+t` title, `ctrl+l` language, `ctrl+s` save, `ctrl+p` publish, `ctrl+e` word-wrapped preview,
`ctrl+g` AI suggestions (airplane-mode gated), `esc` back · `ctrl+q` quit. `ctrl+t` title, `ctrl+l` language, `ctrl+g` AI suggestions
(airplane-mode gated), `esc` back · `ctrl+q` quit.
Images preview inline via the terminal image protocol. The UI language is Images preview inline via the terminal image protocol. The UI language is
the server-side setting shared by every client. the server-side setting shared by every client.

View File

@@ -12,9 +12,10 @@ defmodule BDS.TUI do
Sidebar focus: `↑/↓`/`j/k` navigate, `enter` open, `n` new post, Sidebar focus: `↑/↓`/`j/k` navigate, `enter` open, `n` new post,
`1..5` switch view (posts/media/templates/scripts/tags), `r` refresh. `1..5` switch view (posts/media/templates/scripts/tags), `r` refresh.
Editor focus: text keys edit, `ctrl+s` save, `ctrl+p` publish, Editor focus: text keys edit, `ctrl+s` save, `ctrl+p` publish,
`ctrl+t` edit title, `ctrl+l` cycle language, `ctrl+g` AI suggestions, `ctrl+e` word-wrapped preview, `ctrl+t` edit title, `ctrl+l` cycle
`esc` back to sidebar. `ctrl+q` quits, `esc` also closes a media language, `ctrl+g` AI suggestions, `esc` back to sidebar. `ctrl+q`
preview. The UI locale is the server-side UI language setting. quits, `esc` also closes a media preview. The UI locale is the
server-side UI language setting.
""" """
use ExRatatui.App use ExRatatui.App
@@ -30,7 +31,7 @@ defmodule BDS.TUI do
alias ExRatatui.Layout alias ExRatatui.Layout
alias ExRatatui.Layout.Rect alias ExRatatui.Layout.Rect
alias ExRatatui.Style alias ExRatatui.Style
alias ExRatatui.Widgets.{Block, List, Paragraph, Tabs, Textarea} alias ExRatatui.Widgets.{Block, List, Markdown, Paragraph, Tabs, Textarea}
@views ~w(posts media templates scripts tags) @views ~w(posts media templates scripts tags)
@@ -135,8 +136,14 @@ defmodule BDS.TUI do
defp editor_key(%{code: "esc"}, %{editor: %{editing_title?: true}} = state), defp editor_key(%{code: "esc"}, %{editor: %{editing_title?: true}} = state),
do: {:noreply, put_in(state.editor.editing_title?, false)} do: {:noreply, put_in(state.editor.editing_title?, false)}
defp editor_key(%{code: "esc"}, %{editor: %{preview?: true}} = state),
do: {:noreply, put_in(state.editor.preview?, false)}
defp editor_key(%{code: "esc"}, state), do: {:noreply, %{state | focus: :sidebar}} defp editor_key(%{code: "esc"}, state), do: {:noreply, %{state | focus: :sidebar}}
defp editor_key(%{code: "e", modifiers: ["ctrl"]}, state),
do: {:noreply, update_in(state.editor.preview?, &(not &1))}
defp editor_key(%{code: "s", modifiers: ["ctrl"]}, state), do: {:noreply, persist(state, :save)} defp editor_key(%{code: "s", modifiers: ["ctrl"]}, state), do: {:noreply, persist(state, :save)}
defp editor_key(%{code: "p", modifiers: ["ctrl"]}, state), defp editor_key(%{code: "p", modifiers: ["ctrl"]}, state),
@@ -153,6 +160,9 @@ defmodule BDS.TUI do
defp editor_key(key, %{editor: %{editing_title?: true}} = state), defp editor_key(key, %{editor: %{editing_title?: true}} = state),
do: {:noreply, title_key(key, state)} do: {:noreply, title_key(key, state)}
# While previewing, text keys must not edit the (invisible) textarea.
defp editor_key(_key, %{editor: %{preview?: true}} = state), do: {:noreply, state}
defp editor_key(%{code: code, modifiers: modifiers}, %{editor: editor} = state) do defp editor_key(%{code: code, modifiers: modifiers}, %{editor: editor} = state) do
:ok = ExRatatui.textarea_handle_key(editor.textarea, code, modifiers) :ok = ExRatatui.textarea_handle_key(editor.textarea, code, modifiers)
dirty = editor.dirty or code not in ~w(up down left right home end pageup pagedown) dirty = editor.dirty or code not in ~w(up down left right home end pageup pagedown)
@@ -316,11 +326,29 @@ defmodule BDS.TUI do
if(editor.editing_title?, do: %Style{fg: :yellow}, else: %Style{}) if(editor.editing_title?, do: %Style{fg: :yellow}, else: %Style{})
}, title_rect} }, title_rect}
[title_widget, body_widget(state, editor, body_rect)]
end
# The editing textarea cannot soft-wrap (upstream ratatui-textarea
# limitation), so ctrl+e flips to a word-wrapped read-only Markdown
# preview of the current draft. Wrap moves into the editor itself with
# the planned MarkdownEditor custom widget.
defp body_widget(_state, %{preview?: true} = editor, body_rect) do
preview_title =
"#{dgettext("ui", "Preview (ctrl+e to edit)")} [#{editor.language}]"
{%Markdown{
content: ExRatatui.textarea_get_value(editor.textarea),
wrap: true,
block: %Block{title: preview_title, borders: [:all]}
}, body_rect}
end
defp body_widget(state, editor, body_rect) do
body_title = body_title =
"#{dgettext("ui", "Content")} [#{editor.language}]" <> "#{dgettext("ui", "Content")} [#{editor.language}]" <>
if(editor.dirty, do: "", else: "") if(editor.dirty, do: "", else: "")
body_widget =
{%Textarea{ {%Textarea{
state: editor.textarea, state: editor.textarea,
block: %Block{title: body_title, borders: [:all]}, block: %Block{title: body_title, borders: [:all]},
@@ -330,8 +358,6 @@ defmodule BDS.TUI do
else: %Style{} else: %Style{}
) )
}, body_rect} }, body_rect}
[title_widget, body_widget]
end end
defp status_widgets(state, rect) do defp status_widgets(state, rect) do
@@ -375,7 +401,7 @@ defmodule BDS.TUI do
do: do:
dgettext( dgettext(
"ui", "ui",
"ctrl+s save · ctrl+p publish · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back"
) )
# ── Sidebar data ───────────────────────────────────────────────────────── # ── Sidebar data ─────────────────────────────────────────────────────────
@@ -493,6 +519,7 @@ defmodule BDS.TUI do
title: form["title"] || "", title: form["title"] || "",
textarea: textarea, textarea: textarea,
editing_title?: false, editing_title?: false,
preview?: false,
dirty: false dirty: false
} }
end end

View File

@@ -81,11 +81,11 @@ msgstr "KI-Einstellungen"
#: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: 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.ex:920
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43
#: lib/bds/tui.ex:203 #: lib/bds/tui.ex:224
#: lib/bds/tui.ex:206 #: lib/bds/tui.ex:227
#: lib/bds/tui.ex:209 #: lib/bds/tui.ex:230
#: lib/bds/tui.ex:217 #: lib/bds/tui.ex:238
#: lib/bds/tui.ex:537 #: lib/bds/tui.ex:575
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI Suggestions" msgid "AI Suggestions"
msgstr "KI-Vorschlaege" msgstr "KI-Vorschlaege"
@@ -589,7 +589,7 @@ msgstr "Bestaetigen"
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: 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/script_editor_html/script_editor.html.heex:34
#: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32
#: lib/bds/tui.ex:308 #: lib/bds/tui.ex:348
#: lib/bds/ui/sidebar.ex:764 #: lib/bds/ui/sidebar.ex:764
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Content" msgid "Content"
@@ -1385,9 +1385,9 @@ msgstr "Maximale Beiträge pro Seite"
#: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/misc_editor.ex:762
#: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_components.ex:654
#: lib/bds/desktop/shell_live/sidebar_delete.ex:175 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175
#: lib/bds/tui.ex:452 #: lib/bds/tui.ex:489
#: lib/bds/tui.ex:581 #: lib/bds/tui.ex:619
#: lib/bds/tui.ex:584 #: lib/bds/tui.ex:622
#: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:30
#: lib/bds/ui/registry.ex:100 #: lib/bds/ui/registry.ex:100
#: lib/bds/ui/sidebar.ex:558 #: lib/bds/ui/sidebar.ex:558
@@ -1475,7 +1475,7 @@ msgstr "Neue Seite"
#: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/shell_live/sidebar_create.ex:41 #: lib/bds/desktop/shell_live/sidebar_create.ex:41
#: lib/bds/tui.ex:103 #: lib/bds/tui.ex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Post" msgid "New Post"
msgstr "Neuer Beitrag" msgstr "Neuer Beitrag"
@@ -1911,8 +1911,8 @@ msgstr "Beitrag gespeichert"
#: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/menu_bar.ex:233
#: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:664
#: lib/bds/desktop/shell_live/misc_editor.ex:761 #: lib/bds/desktop/shell_live/misc_editor.ex:761
#: lib/bds/tui.ex:451 #: lib/bds/tui.ex:488
#: lib/bds/tui.ex:462 #: lib/bds/tui.ex:499
#: lib/bds/ui/registry.ex:14 #: lib/bds/ui/registry.ex:14
#: lib/bds/ui/sidebar.ex:271 #: lib/bds/ui/sidebar.ex:271
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@@ -2294,7 +2294,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:216
#: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:219
#: lib/bds/desktop/shell_live/script_editor.ex:234 #: lib/bds/desktop/shell_live/script_editor.ex:234
#: lib/bds/tui.ex:454 #: lib/bds/tui.ex:491
#: lib/bds/ui/registry.ex:38 #: lib/bds/ui/registry.ex:38
#: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:63
#: lib/bds/ui/sidebar.ex:115 #: lib/bds/ui/sidebar.ex:115
@@ -2542,7 +2542,7 @@ msgstr "Schlagwortname"
#: lib/bds/desktop/shell_live/tags_editor.ex:222 #: 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.ex:253
#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11
#: lib/bds/tui.ex:455 #: lib/bds/tui.ex:492
#: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:54
#: lib/bds/ui/registry.ex:103 #: lib/bds/ui/registry.ex:103
#: lib/bds/ui/sidebar.ex:289 #: lib/bds/ui/sidebar.ex:289
@@ -2598,7 +2598,7 @@ msgstr "Template-Syntax ist gültig"
#: lib/bds/desktop/shell_live/template_editor.ex:171 #: 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:176
#: lib/bds/desktop/shell_live/template_editor.ex:191 #: lib/bds/desktop/shell_live/template_editor.ex:191
#: lib/bds/tui.ex:453 #: lib/bds/tui.ex:490
#: lib/bds/ui/registry.ex:46 #: lib/bds/ui/registry.ex:46
#: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:71
#: lib/bds/ui/sidebar.ex:122 #: lib/bds/ui/sidebar.ex:122
@@ -3613,92 +3613,87 @@ msgstr "OK"
msgid "The endpoint returned no models. You can still type a model name manually." 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." msgstr "Der Endpunkt hat keine Modelle zurückgegeben. Sie können einen Modellnamen weiterhin manuell eingeben."
#: lib/bds/tui.ex:538 #: lib/bds/tui.ex:576
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI is unavailable in airplane mode without a local endpoint." msgid "AI is unavailable in airplane mode without a local endpoint."
msgstr "KI ist im Flugmodus ohne lokalen Endpunkt nicht verfügbar." msgstr "KI ist im Flugmodus ohne lokalen Endpunkt nicht verfügbar."
#: lib/bds/tui.ex:584 #: lib/bds/tui.ex:622
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Could not load this file." msgid "Could not load this file."
msgstr "Diese Datei konnte nicht geladen werden." msgstr "Diese Datei konnte nicht geladen werden."
#: lib/bds/tui.ex:111 #: lib/bds/tui.ex:123
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Editing this item is not available in the terminal UI yet." 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." msgstr "Die Bearbeitung dieses Eintrags ist in der Terminal-Oberfläche noch nicht verfügbar."
#: lib/bds/tui.ex:206 #: lib/bds/tui.ex:227
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No suggestions returned." msgid "No suggestions returned."
msgstr "Keine Vorschläge erhalten." msgstr "Keine Vorschläge erhalten."
#: lib/bds/tui.ex:581 #: lib/bds/tui.ex:619
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only images can be previewed." msgid "Only images can be previewed."
msgstr "Nur Bilder können in der Vorschau angezeigt werden." msgstr "Nur Bilder können in der Vorschau angezeigt werden."
#: lib/bds/tui.ex:462 #: lib/bds/tui.ex:499
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Post not found." msgid "Post not found."
msgstr "Beitrag nicht gefunden." msgstr "Beitrag nicht gefunden."
#: lib/bds/tui.ex:282 #: lib/bds/tui.ex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Press enter to preview %{name}." msgid "Press enter to preview %{name}."
msgstr "Drücken Sie Enter, um %{name} in der Vorschau anzuzeigen." msgstr "Drücken Sie Enter, um %{name} in der Vorschau anzuzeigen."
#: lib/bds/tui.ex:508 #: lib/bds/tui.ex:546
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Published." msgid "Published."
msgstr "Veröffentlicht." msgstr "Veröffentlicht."
#: lib/bds/tui.ex:524 #: lib/bds/tui.ex:562
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save before switching languages." msgid "Save before switching languages."
msgstr "Speichern Sie vor dem Sprachwechsel." msgstr "Speichern Sie vor dem Sprachwechsel."
#: lib/bds/tui.ex:509 #: lib/bds/tui.ex:547
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Saved." msgid "Saved."
msgstr "Gespeichert." msgstr "Gespeichert."
#: lib/bds/tui.ex:285 #: lib/bds/tui.ex:306
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Select an entry and press enter to open it." msgid "Select an entry and press enter to open it."
msgstr "Wählen Sie einen Eintrag aus und öffnen Sie ihn mit Enter." msgstr "Wählen Sie einen Eintrag aus und öffnen Sie ihn mit Enter."
#: lib/bds/tui.ex:203 #: lib/bds/tui.ex:224
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Suggestions applied." msgid "Suggestions applied."
msgstr "Vorschläge übernommen." msgstr "Vorschläge übernommen."
#: lib/bds/tui.ex:297 #: lib/bds/tui.ex:318
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (ctrl+t to edit)" msgid "Title (ctrl+t to edit)"
msgstr "Titel (Strg+T zum Bearbeiten)" msgstr "Titel (Strg+T zum Bearbeiten)"
#: lib/bds/tui.ex:296 #: lib/bds/tui.ex:317
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (editing — enter to confirm)" msgid "Title (editing — enter to confirm)"
msgstr "Titel (Bearbeitung — Enter zum Bestätigen)" msgstr "Titel (Bearbeitung — Enter zum Bestätigen)"
#: lib/bds/tui.ex:328 #: lib/bds/tui.ex:365
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Working…" msgid "Working…"
msgstr "Wird bearbeitet…" msgstr "Wird bearbeitet…"
#: lib/bds/tui.ex:364 #: lib/bds/tui.ex:394
#, elixir-autogen, elixir-format
msgid "ctrl+s save · ctrl+p publish · ctrl+t title · ctrl+l language · ctrl+g AI · esc back"
msgstr "Strg+S Speichern · Strg+P Veröffentlichen · Strg+T Titel · Strg+L Sprache · Strg+G KI · Esc Zurück"
#: lib/bds/tui.ex:357
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "enter open · n new post · 1-5 views · r refresh · ctrl+q quit" msgid "enter open · n new post · 1-5 views · r refresh · ctrl+q quit"
msgstr "Enter Öffnen · N Neuer Beitrag · 1-5 Ansichten · R Aktualisieren · Strg+Q Beenden" msgstr "Enter Öffnen · N Neuer Beitrag · 1-5 Ansichten · R Aktualisieren · Strg+Q Beenden"
#: lib/bds/tui.ex:349 #: lib/bds/tui.ex:386
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "esc to close" msgid "esc to close"
msgstr "Esc zum Schließen" msgstr "Esc zum Schließen"
@@ -3734,3 +3729,13 @@ msgstr "Serveradresse (user@host oder user@host:port), Public-Key-Authentifizier
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Use the form user@host or user@host:port." msgid "Use the form user@host or user@host:port."
msgstr "Verwenden Sie das Format user@host oder user@host:port." msgstr "Verwenden Sie das Format user@host oder user@host:port."
#: lib/bds/tui.ex:337
#, elixir-autogen, elixir-format
msgid "Preview (ctrl+e to edit)"
msgstr "Vorschau (ctrl+e zum Bearbeiten)"
#: lib/bds/tui.ex:401
#, 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"

View File

@@ -81,11 +81,11 @@ msgstr ""
#: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: 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.ex:920
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43
#: lib/bds/tui.ex:203 #: lib/bds/tui.ex:224
#: lib/bds/tui.ex:206 #: lib/bds/tui.ex:227
#: lib/bds/tui.ex:209 #: lib/bds/tui.ex:230
#: lib/bds/tui.ex:217 #: lib/bds/tui.ex:238
#: lib/bds/tui.ex:537 #: lib/bds/tui.ex:575
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI Suggestions" msgid "AI Suggestions"
msgstr "" msgstr ""
@@ -589,7 +589,7 @@ msgstr ""
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: 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/script_editor_html/script_editor.html.heex:34
#: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32
#: lib/bds/tui.ex:308 #: lib/bds/tui.ex:348
#: lib/bds/ui/sidebar.ex:764 #: lib/bds/ui/sidebar.ex:764
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Content" msgid "Content"
@@ -1385,9 +1385,9 @@ msgstr ""
#: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/misc_editor.ex:762
#: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_components.ex:654
#: lib/bds/desktop/shell_live/sidebar_delete.ex:175 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175
#: lib/bds/tui.ex:452 #: lib/bds/tui.ex:489
#: lib/bds/tui.ex:581 #: lib/bds/tui.ex:619
#: lib/bds/tui.ex:584 #: lib/bds/tui.ex:622
#: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:30
#: lib/bds/ui/registry.ex:100 #: lib/bds/ui/registry.ex:100
#: lib/bds/ui/sidebar.ex:558 #: lib/bds/ui/sidebar.ex:558
@@ -1475,7 +1475,7 @@ msgstr ""
#: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/shell_live/sidebar_create.ex:41 #: lib/bds/desktop/shell_live/sidebar_create.ex:41
#: lib/bds/tui.ex:103 #: lib/bds/tui.ex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Post" msgid "New Post"
msgstr "" msgstr ""
@@ -1911,8 +1911,8 @@ msgstr ""
#: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/menu_bar.ex:233
#: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:664
#: lib/bds/desktop/shell_live/misc_editor.ex:761 #: lib/bds/desktop/shell_live/misc_editor.ex:761
#: lib/bds/tui.ex:451 #: lib/bds/tui.ex:488
#: lib/bds/tui.ex:462 #: lib/bds/tui.ex:499
#: lib/bds/ui/registry.ex:14 #: lib/bds/ui/registry.ex:14
#: lib/bds/ui/sidebar.ex:271 #: lib/bds/ui/sidebar.ex:271
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@@ -2294,7 +2294,7 @@ msgstr ""
#: lib/bds/desktop/shell_live/script_editor.ex:216 #: 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:219
#: lib/bds/desktop/shell_live/script_editor.ex:234 #: lib/bds/desktop/shell_live/script_editor.ex:234
#: lib/bds/tui.ex:454 #: lib/bds/tui.ex:491
#: lib/bds/ui/registry.ex:38 #: lib/bds/ui/registry.ex:38
#: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:63
#: lib/bds/ui/sidebar.ex:115 #: lib/bds/ui/sidebar.ex:115
@@ -2542,7 +2542,7 @@ msgstr ""
#: lib/bds/desktop/shell_live/tags_editor.ex:222 #: 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.ex:253
#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11
#: lib/bds/tui.ex:455 #: lib/bds/tui.ex:492
#: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:54
#: lib/bds/ui/registry.ex:103 #: lib/bds/ui/registry.ex:103
#: lib/bds/ui/sidebar.ex:289 #: lib/bds/ui/sidebar.ex:289
@@ -2598,7 +2598,7 @@ msgstr ""
#: lib/bds/desktop/shell_live/template_editor.ex:171 #: 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:176
#: lib/bds/desktop/shell_live/template_editor.ex:191 #: lib/bds/desktop/shell_live/template_editor.ex:191
#: lib/bds/tui.ex:453 #: lib/bds/tui.ex:490
#: lib/bds/ui/registry.ex:46 #: lib/bds/ui/registry.ex:46
#: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:71
#: lib/bds/ui/sidebar.ex:122 #: lib/bds/ui/sidebar.ex:122
@@ -3613,92 +3613,87 @@ msgstr ""
msgid "The endpoint returned no models. You can still type a model name manually." msgid "The endpoint returned no models. You can still type a model name manually."
msgstr "" msgstr ""
#: lib/bds/tui.ex:538 #: lib/bds/tui.ex:576
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI is unavailable in airplane mode without a local endpoint." msgid "AI is unavailable in airplane mode without a local endpoint."
msgstr "" msgstr ""
#: lib/bds/tui.ex:584 #: lib/bds/tui.ex:622
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Could not load this file." msgid "Could not load this file."
msgstr "" msgstr ""
#: lib/bds/tui.ex:111 #: lib/bds/tui.ex:123
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Editing this item is not available in the terminal UI yet." msgid "Editing this item is not available in the terminal UI yet."
msgstr "" msgstr ""
#: lib/bds/tui.ex:206 #: lib/bds/tui.ex:227
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No suggestions returned." msgid "No suggestions returned."
msgstr "" msgstr ""
#: lib/bds/tui.ex:581 #: lib/bds/tui.ex:619
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only images can be previewed." msgid "Only images can be previewed."
msgstr "" msgstr ""
#: lib/bds/tui.ex:462 #: lib/bds/tui.ex:499
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Post not found." msgid "Post not found."
msgstr "" msgstr ""
#: lib/bds/tui.ex:282 #: lib/bds/tui.ex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Press enter to preview %{name}." msgid "Press enter to preview %{name}."
msgstr "" msgstr ""
#: lib/bds/tui.ex:508 #: lib/bds/tui.ex:546
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Published." msgid "Published."
msgstr "" msgstr ""
#: lib/bds/tui.ex:524 #: lib/bds/tui.ex:562
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save before switching languages." msgid "Save before switching languages."
msgstr "" msgstr ""
#: lib/bds/tui.ex:509 #: lib/bds/tui.ex:547
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Saved." msgid "Saved."
msgstr "" msgstr ""
#: lib/bds/tui.ex:285 #: lib/bds/tui.ex:306
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Select an entry and press enter to open it." msgid "Select an entry and press enter to open it."
msgstr "" msgstr ""
#: lib/bds/tui.ex:203 #: lib/bds/tui.ex:224
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Suggestions applied." msgid "Suggestions applied."
msgstr "" msgstr ""
#: lib/bds/tui.ex:297 #: lib/bds/tui.ex:318
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (ctrl+t to edit)" msgid "Title (ctrl+t to edit)"
msgstr "" msgstr ""
#: lib/bds/tui.ex:296 #: lib/bds/tui.ex:317
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (editing — enter to confirm)" msgid "Title (editing — enter to confirm)"
msgstr "" msgstr ""
#: lib/bds/tui.ex:328 #: lib/bds/tui.ex:365
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Working…" msgid "Working…"
msgstr "" msgstr ""
#: lib/bds/tui.ex:364 #: lib/bds/tui.ex:394
#, elixir-autogen, elixir-format
msgid "ctrl+s save · ctrl+p publish · ctrl+t title · ctrl+l language · ctrl+g AI · esc back"
msgstr ""
#: lib/bds/tui.ex:357
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "enter open · n new post · 1-5 views · r refresh · ctrl+q quit" msgid "enter open · n new post · 1-5 views · r refresh · ctrl+q quit"
msgstr "" msgstr ""
#: lib/bds/tui.ex:349 #: lib/bds/tui.ex:386
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "esc to close" msgid "esc to close"
msgstr "" msgstr ""
@@ -3734,3 +3729,13 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Use the form user@host or user@host:port." msgid "Use the form user@host or user@host:port."
msgstr "" msgstr ""
#: lib/bds/tui.ex:337
#, elixir-autogen, elixir-format
msgid "Preview (ctrl+e to edit)"
msgstr ""
#: lib/bds/tui.ex:401
#, 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 ""

View File

@@ -81,11 +81,11 @@ msgstr "Configuración de IA"
#: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: 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.ex:920
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43
#: lib/bds/tui.ex:203 #: lib/bds/tui.ex:224
#: lib/bds/tui.ex:206 #: lib/bds/tui.ex:227
#: lib/bds/tui.ex:209 #: lib/bds/tui.ex:230
#: lib/bds/tui.ex:217 #: lib/bds/tui.ex:238
#: lib/bds/tui.ex:537 #: lib/bds/tui.ex:575
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI Suggestions" msgid "AI Suggestions"
msgstr "Sugerencias de IA" msgstr "Sugerencias de IA"
@@ -589,7 +589,7 @@ msgstr "Confirmar"
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: 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/script_editor_html/script_editor.html.heex:34
#: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32
#: lib/bds/tui.ex:308 #: lib/bds/tui.ex:348
#: lib/bds/ui/sidebar.ex:764 #: lib/bds/ui/sidebar.ex:764
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Content" msgid "Content"
@@ -1385,9 +1385,9 @@ msgstr "Máximo de publicaciones por página"
#: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/misc_editor.ex:762
#: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_components.ex:654
#: lib/bds/desktop/shell_live/sidebar_delete.ex:175 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175
#: lib/bds/tui.ex:452 #: lib/bds/tui.ex:489
#: lib/bds/tui.ex:581 #: lib/bds/tui.ex:619
#: lib/bds/tui.ex:584 #: lib/bds/tui.ex:622
#: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:30
#: lib/bds/ui/registry.ex:100 #: lib/bds/ui/registry.ex:100
#: lib/bds/ui/sidebar.ex:558 #: lib/bds/ui/sidebar.ex:558
@@ -1475,7 +1475,7 @@ msgstr "Nueva página"
#: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/shell_live/sidebar_create.ex:41 #: lib/bds/desktop/shell_live/sidebar_create.ex:41
#: lib/bds/tui.ex:103 #: lib/bds/tui.ex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Post" msgid "New Post"
msgstr "Nueva entrada" msgstr "Nueva entrada"
@@ -1911,8 +1911,8 @@ msgstr "Artículo guardado"
#: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/menu_bar.ex:233
#: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:664
#: lib/bds/desktop/shell_live/misc_editor.ex:761 #: lib/bds/desktop/shell_live/misc_editor.ex:761
#: lib/bds/tui.ex:451 #: lib/bds/tui.ex:488
#: lib/bds/tui.ex:462 #: lib/bds/tui.ex:499
#: lib/bds/ui/registry.ex:14 #: lib/bds/ui/registry.ex:14
#: lib/bds/ui/sidebar.ex:271 #: lib/bds/ui/sidebar.ex:271
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@@ -2294,7 +2294,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:216
#: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:219
#: lib/bds/desktop/shell_live/script_editor.ex:234 #: lib/bds/desktop/shell_live/script_editor.ex:234
#: lib/bds/tui.ex:454 #: lib/bds/tui.ex:491
#: lib/bds/ui/registry.ex:38 #: lib/bds/ui/registry.ex:38
#: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:63
#: lib/bds/ui/sidebar.ex:115 #: lib/bds/ui/sidebar.ex:115
@@ -2542,7 +2542,7 @@ msgstr "Nombre de la etiqueta"
#: lib/bds/desktop/shell_live/tags_editor.ex:222 #: 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.ex:253
#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11
#: lib/bds/tui.ex:455 #: lib/bds/tui.ex:492
#: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:54
#: lib/bds/ui/registry.ex:103 #: lib/bds/ui/registry.ex:103
#: lib/bds/ui/sidebar.ex:289 #: lib/bds/ui/sidebar.ex:289
@@ -2598,7 +2598,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:171
#: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:176
#: lib/bds/desktop/shell_live/template_editor.ex:191 #: lib/bds/desktop/shell_live/template_editor.ex:191
#: lib/bds/tui.ex:453 #: lib/bds/tui.ex:490
#: lib/bds/ui/registry.ex:46 #: lib/bds/ui/registry.ex:46
#: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:71
#: lib/bds/ui/sidebar.ex:122 #: lib/bds/ui/sidebar.ex:122
@@ -3613,92 +3613,87 @@ msgstr "OK"
msgid "The endpoint returned no models. You can still type a model name manually." 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." msgstr "El endpoint no devolvió ningún modelo. Aún puedes escribir el nombre de un modelo manualmente."
#: lib/bds/tui.ex:538 #: lib/bds/tui.ex:576
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI is unavailable in airplane mode without a local endpoint." 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." msgstr "La IA no está disponible en modo avión sin un punto de conexión local."
#: lib/bds/tui.ex:584 #: lib/bds/tui.ex:622
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Could not load this file." msgid "Could not load this file."
msgstr "No se pudo cargar este archivo." msgstr "No se pudo cargar este archivo."
#: lib/bds/tui.ex:111 #: lib/bds/tui.ex:123
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Editing this item is not available in the terminal UI yet." 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." msgstr "La edición de este elemento aún no está disponible en la interfaz de terminal."
#: lib/bds/tui.ex:206 #: lib/bds/tui.ex:227
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No suggestions returned." msgid "No suggestions returned."
msgstr "No se recibieron sugerencias." msgstr "No se recibieron sugerencias."
#: lib/bds/tui.ex:581 #: lib/bds/tui.ex:619
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only images can be previewed." msgid "Only images can be previewed."
msgstr "Solo se pueden previsualizar imágenes." msgstr "Solo se pueden previsualizar imágenes."
#: lib/bds/tui.ex:462 #: lib/bds/tui.ex:499
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Post not found." msgid "Post not found."
msgstr "Entrada no encontrada." msgstr "Entrada no encontrada."
#: lib/bds/tui.ex:282 #: lib/bds/tui.ex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Press enter to preview %{name}." msgid "Press enter to preview %{name}."
msgstr "Pulsa Intro para previsualizar %{name}." msgstr "Pulsa Intro para previsualizar %{name}."
#: lib/bds/tui.ex:508 #: lib/bds/tui.ex:546
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Published." msgid "Published."
msgstr "Publicado." msgstr "Publicado."
#: lib/bds/tui.ex:524 #: lib/bds/tui.ex:562
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save before switching languages." msgid "Save before switching languages."
msgstr "Guarda antes de cambiar de idioma." msgstr "Guarda antes de cambiar de idioma."
#: lib/bds/tui.ex:509 #: lib/bds/tui.ex:547
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Saved." msgid "Saved."
msgstr "Guardado." msgstr "Guardado."
#: lib/bds/tui.ex:285 #: lib/bds/tui.ex:306
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Select an entry and press enter to open it." msgid "Select an entry and press enter to open it."
msgstr "Selecciona una entrada y pulsa Intro para abrirla." msgstr "Selecciona una entrada y pulsa Intro para abrirla."
#: lib/bds/tui.ex:203 #: lib/bds/tui.ex:224
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Suggestions applied." msgid "Suggestions applied."
msgstr "Sugerencias aplicadas." msgstr "Sugerencias aplicadas."
#: lib/bds/tui.ex:297 #: lib/bds/tui.ex:318
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (ctrl+t to edit)" msgid "Title (ctrl+t to edit)"
msgstr "Título (ctrl+t para editar)" msgstr "Título (ctrl+t para editar)"
#: lib/bds/tui.ex:296 #: lib/bds/tui.ex:317
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (editing — enter to confirm)" msgid "Title (editing — enter to confirm)"
msgstr "Título (edición — Intro para confirmar)" msgstr "Título (edición — Intro para confirmar)"
#: lib/bds/tui.ex:328 #: lib/bds/tui.ex:365
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Working…" msgid "Working…"
msgstr "Procesando…" msgstr "Procesando…"
#: lib/bds/tui.ex:364 #: lib/bds/tui.ex:394
#, elixir-autogen, elixir-format
msgid "ctrl+s save · ctrl+p publish · ctrl+t title · ctrl+l language · ctrl+g AI · esc back"
msgstr "ctrl+s guardar · ctrl+p publicar · ctrl+t título · ctrl+l idioma · ctrl+g IA · esc volver"
#: lib/bds/tui.ex:357
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "enter open · n new post · 1-5 views · r refresh · ctrl+q quit" msgid "enter open · n new post · 1-5 views · r refresh · ctrl+q quit"
msgstr "intro abrir · n nueva entrada · 1-5 vistas · r actualizar · ctrl+q salir" msgstr "intro abrir · n nueva entrada · 1-5 vistas · r actualizar · ctrl+q salir"
#: lib/bds/tui.ex:349 #: lib/bds/tui.ex:386
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "esc to close" msgid "esc to close"
msgstr "esc para cerrar" msgstr "esc para cerrar"
@@ -3734,3 +3729,13 @@ msgstr "Dirección del servidor (user@host o user@host:port), autenticación de
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Use the form user@host or user@host:port." msgid "Use the form user@host or user@host:port."
msgstr "Usa el formato user@host o user@host:port." msgstr "Usa el formato user@host o user@host:port."
#: lib/bds/tui.ex:337
#, elixir-autogen, elixir-format
msgid "Preview (ctrl+e to edit)"
msgstr "Vista previa (ctrl+e para editar)"
#: lib/bds/tui.ex:401
#, 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"

View File

@@ -81,11 +81,11 @@ msgstr "Paramètres IA"
#: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: 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.ex:920
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43
#: lib/bds/tui.ex:203 #: lib/bds/tui.ex:224
#: lib/bds/tui.ex:206 #: lib/bds/tui.ex:227
#: lib/bds/tui.ex:209 #: lib/bds/tui.ex:230
#: lib/bds/tui.ex:217 #: lib/bds/tui.ex:238
#: lib/bds/tui.ex:537 #: lib/bds/tui.ex:575
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI Suggestions" msgid "AI Suggestions"
msgstr "Suggestions IA" msgstr "Suggestions IA"
@@ -589,7 +589,7 @@ msgstr "Confirmer"
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: 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/script_editor_html/script_editor.html.heex:34
#: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32
#: lib/bds/tui.ex:308 #: lib/bds/tui.ex:348
#: lib/bds/ui/sidebar.ex:764 #: lib/bds/ui/sidebar.ex:764
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Content" msgid "Content"
@@ -1385,9 +1385,9 @@ msgstr "Nombre maximal darticles par page"
#: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/misc_editor.ex:762
#: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_components.ex:654
#: lib/bds/desktop/shell_live/sidebar_delete.ex:175 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175
#: lib/bds/tui.ex:452 #: lib/bds/tui.ex:489
#: lib/bds/tui.ex:581 #: lib/bds/tui.ex:619
#: lib/bds/tui.ex:584 #: lib/bds/tui.ex:622
#: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:30
#: lib/bds/ui/registry.ex:100 #: lib/bds/ui/registry.ex:100
#: lib/bds/ui/sidebar.ex:558 #: lib/bds/ui/sidebar.ex:558
@@ -1475,7 +1475,7 @@ msgstr "Nouvelle page"
#: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/shell_live/sidebar_create.ex:41 #: lib/bds/desktop/shell_live/sidebar_create.ex:41
#: lib/bds/tui.ex:103 #: lib/bds/tui.ex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Post" msgid "New Post"
msgstr "Nouvel article" msgstr "Nouvel article"
@@ -1911,8 +1911,8 @@ msgstr "Article enregistré"
#: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/menu_bar.ex:233
#: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:664
#: lib/bds/desktop/shell_live/misc_editor.ex:761 #: lib/bds/desktop/shell_live/misc_editor.ex:761
#: lib/bds/tui.ex:451 #: lib/bds/tui.ex:488
#: lib/bds/tui.ex:462 #: lib/bds/tui.ex:499
#: lib/bds/ui/registry.ex:14 #: lib/bds/ui/registry.ex:14
#: lib/bds/ui/sidebar.ex:271 #: lib/bds/ui/sidebar.ex:271
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@@ -2294,7 +2294,7 @@ msgstr "Les capacités de script sont configurées au niveau de lapplication
#: lib/bds/desktop/shell_live/script_editor.ex:216 #: 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:219
#: lib/bds/desktop/shell_live/script_editor.ex:234 #: lib/bds/desktop/shell_live/script_editor.ex:234
#: lib/bds/tui.ex:454 #: lib/bds/tui.ex:491
#: lib/bds/ui/registry.ex:38 #: lib/bds/ui/registry.ex:38
#: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:63
#: lib/bds/ui/sidebar.ex:115 #: lib/bds/ui/sidebar.ex:115
@@ -2542,7 +2542,7 @@ msgstr "Nom du mot-clé"
#: lib/bds/desktop/shell_live/tags_editor.ex:222 #: 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.ex:253
#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11
#: lib/bds/tui.ex:455 #: lib/bds/tui.ex:492
#: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:54
#: lib/bds/ui/registry.ex:103 #: lib/bds/ui/registry.ex:103
#: lib/bds/ui/sidebar.ex:289 #: lib/bds/ui/sidebar.ex:289
@@ -2598,7 +2598,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:171
#: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:176
#: lib/bds/desktop/shell_live/template_editor.ex:191 #: lib/bds/desktop/shell_live/template_editor.ex:191
#: lib/bds/tui.ex:453 #: lib/bds/tui.ex:490
#: lib/bds/ui/registry.ex:46 #: lib/bds/ui/registry.ex:46
#: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:71
#: lib/bds/ui/sidebar.ex:122 #: lib/bds/ui/sidebar.ex:122
@@ -3613,92 +3613,87 @@ msgstr "OK"
msgid "The endpoint returned no models. You can still type a model name manually." 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." 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:538 #: lib/bds/tui.ex:576
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI is unavailable in airplane mode without a local endpoint." 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." msgstr "L'IA n'est pas disponible en mode avion sans point de terminaison local."
#: lib/bds/tui.ex:584 #: lib/bds/tui.ex:622
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Could not load this file." msgid "Could not load this file."
msgstr "Impossible de charger ce fichier." msgstr "Impossible de charger ce fichier."
#: lib/bds/tui.ex:111 #: lib/bds/tui.ex:123
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Editing this item is not available in the terminal UI yet." 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." msgstr "La modification de cet élément n'est pas encore disponible dans l'interface du terminal."
#: lib/bds/tui.ex:206 #: lib/bds/tui.ex:227
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No suggestions returned." msgid "No suggestions returned."
msgstr "Aucune suggestion reçue." msgstr "Aucune suggestion reçue."
#: lib/bds/tui.ex:581 #: lib/bds/tui.ex:619
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only images can be previewed." msgid "Only images can be previewed."
msgstr "Seules les images peuvent être prévisualisées." msgstr "Seules les images peuvent être prévisualisées."
#: lib/bds/tui.ex:462 #: lib/bds/tui.ex:499
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Post not found." msgid "Post not found."
msgstr "Article introuvable." msgstr "Article introuvable."
#: lib/bds/tui.ex:282 #: lib/bds/tui.ex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Press enter to preview %{name}." msgid "Press enter to preview %{name}."
msgstr "Appuyez sur Entrée pour prévisualiser %{name}." msgstr "Appuyez sur Entrée pour prévisualiser %{name}."
#: lib/bds/tui.ex:508 #: lib/bds/tui.ex:546
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Published." msgid "Published."
msgstr "Publié." msgstr "Publié."
#: lib/bds/tui.ex:524 #: lib/bds/tui.ex:562
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save before switching languages." msgid "Save before switching languages."
msgstr "Enregistrez avant de changer de langue." msgstr "Enregistrez avant de changer de langue."
#: lib/bds/tui.ex:509 #: lib/bds/tui.ex:547
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Saved." msgid "Saved."
msgstr "Enregistré." msgstr "Enregistré."
#: lib/bds/tui.ex:285 #: lib/bds/tui.ex:306
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Select an entry and press enter to open it." msgid "Select an entry and press enter to open it."
msgstr "Sélectionnez une entrée et appuyez sur Entrée pour l'ouvrir." msgstr "Sélectionnez une entrée et appuyez sur Entrée pour l'ouvrir."
#: lib/bds/tui.ex:203 #: lib/bds/tui.ex:224
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Suggestions applied." msgid "Suggestions applied."
msgstr "Suggestions appliquées." msgstr "Suggestions appliquées."
#: lib/bds/tui.ex:297 #: lib/bds/tui.ex:318
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (ctrl+t to edit)" msgid "Title (ctrl+t to edit)"
msgstr "Titre (ctrl+t pour modifier)" msgstr "Titre (ctrl+t pour modifier)"
#: lib/bds/tui.ex:296 #: lib/bds/tui.ex:317
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (editing — enter to confirm)" msgid "Title (editing — enter to confirm)"
msgstr "Titre (édition — Entrée pour confirmer)" msgstr "Titre (édition — Entrée pour confirmer)"
#: lib/bds/tui.ex:328 #: lib/bds/tui.ex:365
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Working…" msgid "Working…"
msgstr "Traitement en cours…" msgstr "Traitement en cours…"
#: lib/bds/tui.ex:364 #: lib/bds/tui.ex:394
#, elixir-autogen, elixir-format
msgid "ctrl+s save · ctrl+p publish · ctrl+t title · ctrl+l language · ctrl+g AI · esc back"
msgstr "ctrl+s enregistrer · ctrl+p publier · ctrl+t titre · ctrl+l langue · ctrl+g IA · échap retour"
#: lib/bds/tui.ex:357
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "enter open · n new post · 1-5 views · r refresh · ctrl+q quit" msgid "enter open · n new post · 1-5 views · r refresh · ctrl+q quit"
msgstr "entrée ouvrir · n nouvel article · 1-5 vues · r actualiser · ctrl+q quitter" msgstr "entrée ouvrir · n nouvel article · 1-5 vues · r actualiser · ctrl+q quitter"
#: lib/bds/tui.ex:349 #: lib/bds/tui.ex:386
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "esc to close" msgid "esc to close"
msgstr "échap pour fermer" msgstr "échap pour fermer"
@@ -3734,3 +3729,13 @@ msgstr "Adresse du serveur (user@host ou user@host:port), authentification par c
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Use the form user@host or user@host:port." msgid "Use the form user@host or user@host:port."
msgstr "Utilisez le format user@host ou user@host:port." msgstr "Utilisez le format user@host ou user@host:port."
#: lib/bds/tui.ex:337
#, elixir-autogen, elixir-format
msgid "Preview (ctrl+e to edit)"
msgstr "Aperçu (ctrl+e pour modifier)"
#: lib/bds/tui.ex:401
#, 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"

View File

@@ -81,11 +81,11 @@ msgstr "Impostazioni IA"
#: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: 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.ex:920
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43
#: lib/bds/tui.ex:203 #: lib/bds/tui.ex:224
#: lib/bds/tui.ex:206 #: lib/bds/tui.ex:227
#: lib/bds/tui.ex:209 #: lib/bds/tui.ex:230
#: lib/bds/tui.ex:217 #: lib/bds/tui.ex:238
#: lib/bds/tui.ex:537 #: lib/bds/tui.ex:575
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI Suggestions" msgid "AI Suggestions"
msgstr "Suggerimenti IA" msgstr "Suggerimenti IA"
@@ -589,7 +589,7 @@ msgstr "Conferma"
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: 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/script_editor_html/script_editor.html.heex:34
#: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32
#: lib/bds/tui.ex:308 #: lib/bds/tui.ex:348
#: lib/bds/ui/sidebar.ex:764 #: lib/bds/ui/sidebar.ex:764
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Content" msgid "Content"
@@ -1385,9 +1385,9 @@ msgstr "Numero massimo di post per pagina"
#: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/misc_editor.ex:762
#: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_components.ex:654
#: lib/bds/desktop/shell_live/sidebar_delete.ex:175 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175
#: lib/bds/tui.ex:452 #: lib/bds/tui.ex:489
#: lib/bds/tui.ex:581 #: lib/bds/tui.ex:619
#: lib/bds/tui.ex:584 #: lib/bds/tui.ex:622
#: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:30
#: lib/bds/ui/registry.ex:100 #: lib/bds/ui/registry.ex:100
#: lib/bds/ui/sidebar.ex:558 #: lib/bds/ui/sidebar.ex:558
@@ -1475,7 +1475,7 @@ msgstr "Nuova pagina"
#: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/shell_live/sidebar_create.ex:41 #: lib/bds/desktop/shell_live/sidebar_create.ex:41
#: lib/bds/tui.ex:103 #: lib/bds/tui.ex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Post" msgid "New Post"
msgstr "Nuovo post" msgstr "Nuovo post"
@@ -1911,8 +1911,8 @@ msgstr "Articolo salvato"
#: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/menu_bar.ex:233
#: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:664
#: lib/bds/desktop/shell_live/misc_editor.ex:761 #: lib/bds/desktop/shell_live/misc_editor.ex:761
#: lib/bds/tui.ex:451 #: lib/bds/tui.ex:488
#: lib/bds/tui.ex:462 #: lib/bds/tui.ex:499
#: lib/bds/ui/registry.ex:14 #: lib/bds/ui/registry.ex:14
#: lib/bds/ui/sidebar.ex:271 #: lib/bds/ui/sidebar.ex:271
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@@ -2294,7 +2294,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:216
#: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:219
#: lib/bds/desktop/shell_live/script_editor.ex:234 #: lib/bds/desktop/shell_live/script_editor.ex:234
#: lib/bds/tui.ex:454 #: lib/bds/tui.ex:491
#: lib/bds/ui/registry.ex:38 #: lib/bds/ui/registry.ex:38
#: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:63
#: lib/bds/ui/sidebar.ex:115 #: lib/bds/ui/sidebar.ex:115
@@ -2542,7 +2542,7 @@ msgstr "Nome del tag"
#: lib/bds/desktop/shell_live/tags_editor.ex:222 #: 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.ex:253
#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11
#: lib/bds/tui.ex:455 #: lib/bds/tui.ex:492
#: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:54
#: lib/bds/ui/registry.ex:103 #: lib/bds/ui/registry.ex:103
#: lib/bds/ui/sidebar.ex:289 #: lib/bds/ui/sidebar.ex:289
@@ -2598,7 +2598,7 @@ msgstr "La sintassi del template è valida"
#: lib/bds/desktop/shell_live/template_editor.ex:171 #: 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:176
#: lib/bds/desktop/shell_live/template_editor.ex:191 #: lib/bds/desktop/shell_live/template_editor.ex:191
#: lib/bds/tui.ex:453 #: lib/bds/tui.ex:490
#: lib/bds/ui/registry.ex:46 #: lib/bds/ui/registry.ex:46
#: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:71
#: lib/bds/ui/sidebar.ex:122 #: lib/bds/ui/sidebar.ex:122
@@ -3613,92 +3613,87 @@ msgstr "OK"
msgid "The endpoint returned no models. You can still type a model name manually." 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." msgstr "L'endpoint non ha restituito alcun modello. Puoi comunque digitare manualmente il nome di un modello."
#: lib/bds/tui.ex:538 #: lib/bds/tui.ex:576
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI is unavailable in airplane mode without a local endpoint." msgid "AI is unavailable in airplane mode without a local endpoint."
msgstr "L'IA non è disponibile in modalità aereo senza un endpoint locale." msgstr "L'IA non è disponibile in modalità aereo senza un endpoint locale."
#: lib/bds/tui.ex:584 #: lib/bds/tui.ex:622
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Could not load this file." msgid "Could not load this file."
msgstr "Impossibile caricare questo file." msgstr "Impossibile caricare questo file."
#: lib/bds/tui.ex:111 #: lib/bds/tui.ex:123
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Editing this item is not available in the terminal UI yet." 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." msgstr "La modifica di questo elemento non è ancora disponibile nell'interfaccia del terminale."
#: lib/bds/tui.ex:206 #: lib/bds/tui.ex:227
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No suggestions returned." msgid "No suggestions returned."
msgstr "Nessun suggerimento ricevuto." msgstr "Nessun suggerimento ricevuto."
#: lib/bds/tui.ex:581 #: lib/bds/tui.ex:619
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only images can be previewed." msgid "Only images can be previewed."
msgstr "Solo le immagini possono essere visualizzate in anteprima." msgstr "Solo le immagini possono essere visualizzate in anteprima."
#: lib/bds/tui.ex:462 #: lib/bds/tui.ex:499
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Post not found." msgid "Post not found."
msgstr "Post non trovato." msgstr "Post non trovato."
#: lib/bds/tui.ex:282 #: lib/bds/tui.ex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Press enter to preview %{name}." msgid "Press enter to preview %{name}."
msgstr "Premi Invio per l'anteprima di %{name}." msgstr "Premi Invio per l'anteprima di %{name}."
#: lib/bds/tui.ex:508 #: lib/bds/tui.ex:546
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Published." msgid "Published."
msgstr "Pubblicato." msgstr "Pubblicato."
#: lib/bds/tui.ex:524 #: lib/bds/tui.ex:562
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save before switching languages." msgid "Save before switching languages."
msgstr "Salva prima di cambiare lingua." msgstr "Salva prima di cambiare lingua."
#: lib/bds/tui.ex:509 #: lib/bds/tui.ex:547
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Saved." msgid "Saved."
msgstr "Salvato." msgstr "Salvato."
#: lib/bds/tui.ex:285 #: lib/bds/tui.ex:306
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Select an entry and press enter to open it." msgid "Select an entry and press enter to open it."
msgstr "Seleziona una voce e premi Invio per aprirla." msgstr "Seleziona una voce e premi Invio per aprirla."
#: lib/bds/tui.ex:203 #: lib/bds/tui.ex:224
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Suggestions applied." msgid "Suggestions applied."
msgstr "Suggerimenti applicati." msgstr "Suggerimenti applicati."
#: lib/bds/tui.ex:297 #: lib/bds/tui.ex:318
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (ctrl+t to edit)" msgid "Title (ctrl+t to edit)"
msgstr "Titolo (ctrl+t per modificare)" msgstr "Titolo (ctrl+t per modificare)"
#: lib/bds/tui.ex:296 #: lib/bds/tui.ex:317
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (editing — enter to confirm)" msgid "Title (editing — enter to confirm)"
msgstr "Titolo (modifica — Invio per confermare)" msgstr "Titolo (modifica — Invio per confermare)"
#: lib/bds/tui.ex:328 #: lib/bds/tui.ex:365
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Working…" msgid "Working…"
msgstr "Elaborazione…" msgstr "Elaborazione…"
#: lib/bds/tui.ex:364 #: lib/bds/tui.ex:394
#, elixir-autogen, elixir-format
msgid "ctrl+s save · ctrl+p publish · ctrl+t title · ctrl+l language · ctrl+g AI · esc back"
msgstr "ctrl+s salva · ctrl+p pubblica · ctrl+t titolo · ctrl+l lingua · ctrl+g IA · esc indietro"
#: lib/bds/tui.ex:357
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "enter open · n new post · 1-5 views · r refresh · ctrl+q quit" msgid "enter open · n new post · 1-5 views · r refresh · ctrl+q quit"
msgstr "invio apri · n nuovo post · 1-5 viste · r aggiorna · ctrl+q esci" msgstr "invio apri · n nuovo post · 1-5 viste · r aggiorna · ctrl+q esci"
#: lib/bds/tui.ex:349 #: lib/bds/tui.ex:386
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "esc to close" msgid "esc to close"
msgstr "esc per chiudere" msgstr "esc per chiudere"
@@ -3734,3 +3729,13 @@ msgstr "Indirizzo del server (user@host o user@host:port), autenticazione a chia
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Use the form user@host or user@host:port." msgid "Use the form user@host or user@host:port."
msgstr "Usa il formato user@host o user@host:port." msgstr "Usa il formato user@host o user@host:port."
#: lib/bds/tui.ex:337
#, elixir-autogen, elixir-format
msgid "Preview (ctrl+e to edit)"
msgstr "Anteprima (ctrl+e per modificare)"
#: lib/bds/tui.ex:401
#, 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"

View File

@@ -94,11 +94,11 @@ msgstr ""
#: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: 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.ex:920
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43
#: lib/bds/tui.ex:203 #: lib/bds/tui.ex:224
#: lib/bds/tui.ex:206 #: lib/bds/tui.ex:227
#: lib/bds/tui.ex:209 #: lib/bds/tui.ex:230
#: lib/bds/tui.ex:217 #: lib/bds/tui.ex:238
#: lib/bds/tui.ex:537 #: lib/bds/tui.ex:575
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI Suggestions" msgid "AI Suggestions"
msgstr "" msgstr ""
@@ -602,7 +602,7 @@ msgstr ""
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: 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/script_editor_html/script_editor.html.heex:34
#: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32
#: lib/bds/tui.ex:308 #: lib/bds/tui.ex:348
#: lib/bds/ui/sidebar.ex:764 #: lib/bds/ui/sidebar.ex:764
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Content" msgid "Content"
@@ -1398,9 +1398,9 @@ msgstr ""
#: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/misc_editor.ex:762
#: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_components.ex:654
#: lib/bds/desktop/shell_live/sidebar_delete.ex:175 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175
#: lib/bds/tui.ex:452 #: lib/bds/tui.ex:489
#: lib/bds/tui.ex:581 #: lib/bds/tui.ex:619
#: lib/bds/tui.ex:584 #: lib/bds/tui.ex:622
#: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:30
#: lib/bds/ui/registry.ex:100 #: lib/bds/ui/registry.ex:100
#: lib/bds/ui/sidebar.ex:558 #: lib/bds/ui/sidebar.ex:558
@@ -1488,7 +1488,7 @@ msgstr ""
#: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/shell_live/sidebar_create.ex:41 #: lib/bds/desktop/shell_live/sidebar_create.ex:41
#: lib/bds/tui.ex:103 #: lib/bds/tui.ex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Post" msgid "New Post"
msgstr "" msgstr ""
@@ -1924,8 +1924,8 @@ msgstr ""
#: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/menu_bar.ex:233
#: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:664
#: lib/bds/desktop/shell_live/misc_editor.ex:761 #: lib/bds/desktop/shell_live/misc_editor.ex:761
#: lib/bds/tui.ex:451 #: lib/bds/tui.ex:488
#: lib/bds/tui.ex:462 #: lib/bds/tui.ex:499
#: lib/bds/ui/registry.ex:14 #: lib/bds/ui/registry.ex:14
#: lib/bds/ui/sidebar.ex:271 #: lib/bds/ui/sidebar.ex:271
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@@ -2307,7 +2307,7 @@ msgstr ""
#: lib/bds/desktop/shell_live/script_editor.ex:216 #: 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:219
#: lib/bds/desktop/shell_live/script_editor.ex:234 #: lib/bds/desktop/shell_live/script_editor.ex:234
#: lib/bds/tui.ex:454 #: lib/bds/tui.ex:491
#: lib/bds/ui/registry.ex:38 #: lib/bds/ui/registry.ex:38
#: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:63
#: lib/bds/ui/sidebar.ex:115 #: lib/bds/ui/sidebar.ex:115
@@ -2555,7 +2555,7 @@ msgstr ""
#: lib/bds/desktop/shell_live/tags_editor.ex:222 #: 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.ex:253
#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11
#: lib/bds/tui.ex:455 #: lib/bds/tui.ex:492
#: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:54
#: lib/bds/ui/registry.ex:103 #: lib/bds/ui/registry.ex:103
#: lib/bds/ui/sidebar.ex:289 #: lib/bds/ui/sidebar.ex:289
@@ -2611,7 +2611,7 @@ msgstr ""
#: lib/bds/desktop/shell_live/template_editor.ex:171 #: 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:176
#: lib/bds/desktop/shell_live/template_editor.ex:191 #: lib/bds/desktop/shell_live/template_editor.ex:191
#: lib/bds/tui.ex:453 #: lib/bds/tui.ex:490
#: lib/bds/ui/registry.ex:46 #: lib/bds/ui/registry.ex:46
#: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:71
#: lib/bds/ui/sidebar.ex:122 #: lib/bds/ui/sidebar.ex:122
@@ -3626,92 +3626,87 @@ msgstr ""
msgid "The endpoint returned no models. You can still type a model name manually." msgid "The endpoint returned no models. You can still type a model name manually."
msgstr "" msgstr ""
#: lib/bds/tui.ex:538 #: lib/bds/tui.ex:576
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "AI is unavailable in airplane mode without a local endpoint." msgid "AI is unavailable in airplane mode without a local endpoint."
msgstr "" msgstr ""
#: lib/bds/tui.ex:584 #: lib/bds/tui.ex:622
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Could not load this file." msgid "Could not load this file."
msgstr "" msgstr ""
#: lib/bds/tui.ex:111 #: lib/bds/tui.ex:123
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Editing this item is not available in the terminal UI yet." msgid "Editing this item is not available in the terminal UI yet."
msgstr "" msgstr ""
#: lib/bds/tui.ex:206 #: lib/bds/tui.ex:227
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No suggestions returned." msgid "No suggestions returned."
msgstr "" msgstr ""
#: lib/bds/tui.ex:581 #: lib/bds/tui.ex:619
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only images can be previewed." msgid "Only images can be previewed."
msgstr "" msgstr ""
#: lib/bds/tui.ex:462 #: lib/bds/tui.ex:499
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Post not found." msgid "Post not found."
msgstr "" msgstr ""
#: lib/bds/tui.ex:282 #: lib/bds/tui.ex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Press enter to preview %{name}." msgid "Press enter to preview %{name}."
msgstr "" msgstr ""
#: lib/bds/tui.ex:508 #: lib/bds/tui.ex:546
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Published." msgid "Published."
msgstr "" msgstr ""
#: lib/bds/tui.ex:524 #: lib/bds/tui.ex:562
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save before switching languages." msgid "Save before switching languages."
msgstr "" msgstr ""
#: lib/bds/tui.ex:509 #: lib/bds/tui.ex:547
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Saved." msgid "Saved."
msgstr "" msgstr ""
#: lib/bds/tui.ex:285 #: lib/bds/tui.ex:306
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Select an entry and press enter to open it." msgid "Select an entry and press enter to open it."
msgstr "" msgstr ""
#: lib/bds/tui.ex:203 #: lib/bds/tui.ex:224
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Suggestions applied." msgid "Suggestions applied."
msgstr "" msgstr ""
#: lib/bds/tui.ex:297 #: lib/bds/tui.ex:318
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (ctrl+t to edit)" msgid "Title (ctrl+t to edit)"
msgstr "" msgstr ""
#: lib/bds/tui.ex:296 #: lib/bds/tui.ex:317
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Title (editing — enter to confirm)" msgid "Title (editing — enter to confirm)"
msgstr "" msgstr ""
#: lib/bds/tui.ex:328 #: lib/bds/tui.ex:365
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Working…" msgid "Working…"
msgstr "" msgstr ""
#: lib/bds/tui.ex:364 #: lib/bds/tui.ex:394
#, elixir-autogen, elixir-format
msgid "ctrl+s save · ctrl+p publish · ctrl+t title · ctrl+l language · ctrl+g AI · esc back"
msgstr ""
#: lib/bds/tui.ex:357
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "enter open · n new post · 1-5 views · r refresh · ctrl+q quit" msgid "enter open · n new post · 1-5 views · r refresh · ctrl+q quit"
msgstr "" msgstr ""
#: lib/bds/tui.ex:349 #: lib/bds/tui.ex:386
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "esc to close" msgid "esc to close"
msgstr "" msgstr ""
@@ -3747,3 +3742,13 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Use the form user@host or user@host:port." msgid "Use the form user@host or user@host:port."
msgstr "" msgstr ""
#: lib/bds/tui.ex:337
#, elixir-autogen, elixir-format
msgid "Preview (ctrl+e to edit)"
msgstr ""
#: lib/bds/tui.ex:401
#, 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 ""

View File

@@ -46,6 +46,14 @@ rule SaveAndPublish {
ensures: PostPersisted() ensures: PostPersisted()
} }
rule WrappedPreview {
when: TuiKeyPressed(code: "e", modifiers: "ctrl")
-- The editing textarea cannot soft-wrap (upstream ratatui-textarea
-- limitation), so ctrl+e toggles a read-only word-wrapped Markdown
-- preview of the current draft; keys in preview never edit content.
ensures: PreviewToggled()
}
rule AiQuickAction { rule AiQuickAction {
when: TuiKeyPressed(code: "g", modifiers: "ctrl") when: TuiKeyPressed(code: "g", modifiers: "ctrl")
-- One-shot AI post analysis (title/excerpt suggestions). Gated by -- One-shot AI post analysis (title/excerpt suggestions). Gated by

View File

@@ -109,6 +109,37 @@ defmodule BDS.TUITest do
assert state.focus == :sidebar assert state.focus == :sidebar
end end
test "ctrl+e toggles a word-wrapped preview of the draft", %{post: post} do
long_line = String.duplicate("lorem ipsum dolor sit amet ", 8) <> "FINALWORD"
{:ok, _} = BDS.Posts.update_post(post.id, %{content: long_line})
state = mount!() |> press("enter") |> press("e", ["ctrl"])
assert state.editor.preview?
# The textarea cannot soft-wrap, so the tail of a long line is off-screen
# there; the preview renders through the Markdown widget, which wraps.
assert screen_text(state, 80, 32) =~ "FINALWORD"
state = press(state, "e", ["ctrl"])
refute state.editor.preview?
end
test "keys in preview mode do not edit the content" do
state = mount!() |> press("enter") |> press("e", ["ctrl"])
before = ExRatatui.textarea_get_value(state.editor.textarea)
state = press(state, "x")
assert ExRatatui.textarea_get_value(state.editor.textarea) == before
refute state.editor.dirty
end
test "esc in preview returns to editing, not to the sidebar" do
state = mount!() |> press("enter") |> press("e", ["ctrl"]) |> press("esc")
refute state.editor.preview?
assert state.focus == :editor
end
test "entity_changed refreshes the sidebar", %{project: project} do test "entity_changed refreshes the sidebar", %{project: project} do
state = mount!() state = mount!()