feat: desktop connect-to-server over SSH tunnel (issue #26, phase 5)

This commit is contained in:
2026-07-15 18:39:04 +02:00
parent a3ca44640c
commit df2bdc2041
18 changed files with 1094 additions and 479 deletions

View File

@@ -210,8 +210,11 @@ ssh -p 2222 -L 4010:127.0.0.1:4010 -N <server-host> &
open http://127.0.0.1:4010
```
A built-in "Connect to Server…" mode in the desktop app is in progress
(issue #26, phase 5).
Or use the desktop app directly: **File → Connect to Server…** takes
`user@host[:port]`, connects with the client key from the same local
`ssh/` directory (public-key auth, trust-on-first-use `known_hosts`),
tunnels to the server, and points the window at it. **File → Disconnect
from Server** returns to the local workspace.
## Monaco Editor

View File

@@ -29,6 +29,9 @@ config :bds, :server, ssh_port: 2222
config :bds, BDS.Desktop.Endpoint,
url: [host: "127.0.0.1"],
# Any-port loopback origins: the remote-GUI SSH tunnel terminates on an
# ephemeral local port, so the websocket origin port varies per connect.
check_origin: ["//127.0.0.1", "//localhost"],
adapter: Bandit.PhoenixAdapter,
render_errors: [formats: [html: BDS.Desktop.ErrorHTML], layout: false],
pubsub_server: BDS.PubSub,

View File

@@ -90,7 +90,8 @@ defmodule BDS.Application do
[
{Desktop.Window, window_opts},
Supervisor.child_spec({BDS.Desktop.MainWindow, []}, id: BDS.Desktop.MainWindow.Watcher),
{BDS.Desktop.DeepLink, []}
{BDS.Desktop.DeepLink, []},
{BDS.Desktop.RemoteConnection, []}
]
end
end

View File

@@ -0,0 +1,52 @@
defmodule BDS.Desktop.Dialogs do
@moduledoc false
# Native single-line text prompt, same osascript approach as
# BDS.Desktop.FilePicker. Returns {:ok, text} | :cancel | {:error, map}.
def prompt_text(message, default \\ "") when is_binary(message) do
if System.get_env("BDS_DESKTOP_AUTOMATION") == "1" do
:cancel
else
case :os.type() do
{:unix, :darwin} -> prompt_text_macos(message, default)
_other -> {:error, %{message: "Dialogs are only supported on macOS desktop"}}
end
end
end
def alert(title, message) when is_binary(title) and is_binary(message) do
if System.get_env("BDS_DESKTOP_AUTOMATION") == "1" or :os.type() != {:unix, :darwin} do
:ok
else
script = "display alert \"#{escape(title)}\" message \"#{escape(message)}\""
_ = System.cmd("osascript", ["-e", script], stderr_to_stdout: true)
:ok
end
end
defp prompt_text_macos(message, default) do
script =
"text returned of (display dialog \"#{escape(message)}\" default answer \"#{escape(default)}\")"
case System.cmd("osascript", ["-e", script], stderr_to_stdout: true) do
{output, 0} -> {:ok, String.trim(output)}
{output, _status} -> normalize_failure(output)
end
end
defp normalize_failure(output) do
message = String.trim(output)
if message == "" or String.contains?(String.downcase(message), "canceled") do
:cancel
else
{:error, %{message: message}}
end
end
defp escape(value) do
value
|> String.replace("\\", "\\\\")
|> String.replace("\"", "\\\"")
end
end

View File

@@ -23,7 +23,8 @@ defmodule BDS.Desktop.Endpoint do
plug(BDS.Desktop.Router)
defp maybe_require_desktop_auth(conn, _opts) do
if System.get_env("BDS_DESKTOP_AUTOMATION") in ["1", "true", "TRUE"] do
if System.get_env("BDS_DESKTOP_AUTOMATION") in ["1", "true", "TRUE"] or
not BDS.Server.desktop_auth_required?() do
conn
else
Desktop.Auth.call(conn, [])

View File

@@ -67,6 +67,35 @@ defmodule BDS.Desktop.MenuBar do
{:noreply, menu}
end
def handle_event("connect_server", menu) do
prompt =
dgettext("ui", "Server address (user@host or user@host:port), public-key auth:")
with {:ok, target} <- BDS.Desktop.Dialogs.prompt_text(prompt, "user@host"),
{:ok, url} <- BDS.Desktop.RemoteConnection.connect(target) do
Window.show(BDS.Desktop.MainWindow.window_id(), url)
else
:cancel ->
:ok
{:error, reason} ->
BDS.Desktop.Dialogs.alert(
dgettext("ui", "Connect to Server"),
dgettext("ui", "Connection failed: %{reason}",
reason: BDS.Desktop.RemoteConnection.format_reason(reason)
)
)
end
{:noreply, menu}
end
def handle_event("disconnect_server", menu) do
:ok = BDS.Desktop.RemoteConnection.disconnect()
Window.show(BDS.Desktop.MainWindow.window_id(), BDS.Desktop.url())
{:noreply, menu}
end
def handle_event("open_data_folder", menu) do
_ = BDS.Desktop.ShellCommands.execute("open_data_folder")
{:noreply, menu}
@@ -186,6 +215,8 @@ defmodule BDS.Desktop.MenuBar do
defp item_label(:import_media), do: dgettext("ui", "Import Media")
defp item_label(:save), do: dgettext("ui", "Save")
defp item_label(:open_in_browser), do: dgettext("ui", "Open in Browser")
defp item_label(:connect_server), do: dgettext("ui", "Connect to Server…")
defp item_label(:disconnect_server), do: dgettext("ui", "Disconnect from Server")
defp item_label(:open_data_folder), do: dgettext("ui", "Open Data Folder")
defp item_label(:close_tab), do: dgettext("ui", "Close Tab")
defp item_label(:quit), do: dgettext("ui", "Quit")

View File

@@ -0,0 +1,180 @@
defmodule BDS.Desktop.RemoteConnection do
@moduledoc """
GUI remote mode (issue #26, phase 5).
Connects the desktop app to a headless bDS2 server over the same SSH
channel (and the same public keys) the TUI uses: `:ssh.connect` with
public-key auth, then an OTP TCP/IP tunnel to the server's loopback HTTP
endpoint. The webview then loads the local tunnel end — the server never
exposes HTTP.
Client key material lives in the same private `ssh/` directory next to
the database (`BDS.Server.ssh_dir/0`): an `id_ed25519`/`id_rsa` identity
and a `known_hosts` written on first connect.
"""
use GenServer
use Gettext, backend: BDS.Gettext
require Logger
@default_ssh_port 2222
@tunnel_timeout_ms 10_000
def start_link(opts \\ []) do
case Keyword.pop(opts, :name, __MODULE__) do
{nil, init_opts} -> GenServer.start_link(__MODULE__, init_opts)
{name, init_opts} -> GenServer.start_link(__MODULE__, init_opts, name: name)
end
end
@doc """
Parses `user@host[:port]` into connection parameters. The port is the
server's SSH port (default #{@default_ssh_port}).
"""
@spec parse_target(String.t()) ::
{:ok, %{user: String.t(), host: String.t(), port: pos_integer()}}
| {:error, :invalid_target}
def parse_target(target) when is_binary(target) do
with [user, rest] when user != "" <- String.split(String.trim(target), "@", parts: 2),
{:ok, host, port} <- parse_host_port(rest) do
{:ok, %{user: user, host: host, port: port}}
else
_other -> {:error, :invalid_target}
end
end
defp parse_host_port(rest) do
case String.split(rest, ":", parts: 2) do
[host] when host != "" ->
{:ok, host, @default_ssh_port}
[host, port] when host != "" ->
case Integer.parse(port) do
{number, ""} when number > 0 -> {:ok, host, number}
_other -> :error
end
_other ->
:error
end
end
@doc "Connects and tunnels; returns the local URL the webview should load."
@spec connect(GenServer.server(), String.t()) :: {:ok, String.t()} | {:error, term()}
def connect(server \\ __MODULE__, target) do
GenServer.call(server, {:connect, target}, @tunnel_timeout_ms + 5_000)
end
@spec disconnect(GenServer.server()) :: :ok
def disconnect(server \\ __MODULE__) do
GenServer.call(server, :disconnect)
end
@spec status(GenServer.server()) :: :disconnected | {:connected, String.t(), String.t()}
def status(server \\ __MODULE__) do
GenServer.call(server, :status)
end
@doc "Human-readable connection error for menu/shell error reporting."
@spec format_reason(term()) :: String.t()
def format_reason(:invalid_target) do
dgettext("ui", "Use the form user@host or user@host:port.")
end
def format_reason(%{message: message}) when is_binary(message), do: message
def format_reason(reason), do: inspect(reason)
## GenServer callbacks
@impl true
def init(opts) do
overrides = Keyword.get(opts, :test_overrides, [])
{:ok,
%{
conn: nil,
monitor: nil,
target: nil,
url: nil,
connect_fun: Keyword.get(overrides, :connect_fun, &:ssh.connect/3),
tunnel_fun: Keyword.get(overrides, :tunnel_fun, &:ssh.tcpip_tunnel_to_server/6),
close_fun: Keyword.get(overrides, :close_fun, &:ssh.close/1),
ssh_dir_fun: Keyword.get(overrides, :ssh_dir_fun, &BDS.Server.ssh_dir/0)
}}
end
@impl true
def handle_call({:connect, target}, _from, state) do
state = close_current(state)
with {:ok, parsed} <- parse_target(target),
{:ok, conn} <- do_connect(state, parsed),
{:ok, local_port} <- do_tunnel(state, conn) do
url = "http://127.0.0.1:#{local_port}/"
{:reply, {:ok, url},
%{
state
| conn: conn,
monitor: Process.monitor(conn),
target: String.trim(target),
url: url
}}
else
{:error, reason} = error ->
Logger.warning("Remote connection to #{inspect(target)} failed: #{inspect(reason)}")
{:reply, error, state}
end
end
def handle_call(:disconnect, _from, state) do
{:reply, :ok, close_current(state)}
end
def handle_call(:status, _from, %{conn: nil} = state) do
{:reply, :disconnected, state}
end
def handle_call(:status, _from, state) do
{:reply, {:connected, state.target, state.url}, state}
end
@impl true
def handle_info({:DOWN, monitor, :process, _pid, reason}, %{monitor: monitor} = state) do
Logger.warning("Remote SSH connection lost: #{inspect(reason)}")
{:noreply, %{state | conn: nil, monitor: nil, target: nil, url: nil}}
end
def handle_info(_message, state), do: {:noreply, state}
## Internal helpers
defp do_connect(state, %{user: user, host: host, port: port}) do
ssh_dir = BDS.Server.ensure_ssh_dir!(state.ssh_dir_fun.())
state.connect_fun.(String.to_charlist(host), port,
user: String.to_charlist(user),
user_dir: String.to_charlist(ssh_dir),
auth_methods: ~c"publickey",
# First connect records the host key in <ssh_dir>/known_hosts;
# later connects verify against it (trust-on-first-use).
silently_accept_hosts: true,
connect_timeout: @tunnel_timeout_ms
)
end
defp do_tunnel(state, conn) do
remote_port = Application.get_env(:bds, :desktop)[:port] || 4010
state.tunnel_fun.(conn, ~c"127.0.0.1", 0, ~c"127.0.0.1", remote_port, @tunnel_timeout_ms)
end
defp close_current(%{conn: nil} = state), do: state
defp close_current(state) do
if state.monitor, do: Process.demonitor(state.monitor, [:flush])
_ = state.close_fun.(state.conn)
%{state | conn: nil, monitor: nil, target: nil, url: nil}
end
end

View File

@@ -108,7 +108,9 @@ defmodule BDS.Desktop.ShellLive do
:quit,
:view_on_github,
:report_issue,
:about
:about,
:connect_server,
:disconnect_server
])
@runtime_menu_actions MapSet.new([
:undo,
@@ -1091,6 +1093,34 @@ defmodule BDS.Desktop.ShellLive do
socket
end
defp handle_socket_menu_action(socket, :connect_server) do
prompt = dgettext("ui", "Server address (user@host or user@host:port), public-key auth:")
with {:ok, target} <- BDS.Desktop.Dialogs.prompt_text(prompt, "user@host"),
{:ok, url} <- BDS.Desktop.RemoteConnection.connect(target) do
Desktop.Window.show(BDS.Desktop.MainWindow.window_id(), url)
socket
else
:cancel ->
socket
{:error, reason} ->
append_output_entry(
socket,
dgettext("ui", "Connect to Server"),
BDS.Desktop.RemoteConnection.format_reason(reason),
nil,
"error"
)
end
end
defp handle_socket_menu_action(socket, :disconnect_server) do
:ok = BDS.Desktop.RemoteConnection.disconnect()
Desktop.Window.show(BDS.Desktop.MainWindow.window_id(), BDS.Desktop.url())
socket
end
defp handle_socket_menu_action(socket, :about) do
append_output_entry(
socket,

View File

@@ -28,6 +28,17 @@ defmodule BDS.Server do
def mode(nil), do: :desktop
@doc """
Whether the HTTP endpoint requires the desktop webview auth token. Only
desktop mode does: in server/tui mode the endpoint stays loopback-only
and clients arrive through the key-authenticated SSH tunnel, which the
per-boot webview token would otherwise lock out.
"""
@spec desktop_auth_required?(:desktop | :server | :tui) :: boolean()
def desktop_auth_required?(mode \\ mode())
def desktop_auth_required?(:desktop), do: true
def desktop_auth_required?(_mode), do: false
@doc "SSH key-material directory: `<data dir>/ssh` next to the database."
@spec ssh_dir() :: Path.t()
def ssh_dir do

View File

@@ -20,6 +20,9 @@ defmodule BDS.UI.MenuBar do
%{separator: true},
%{id: :open_in_browser},
%{separator: true},
%{id: :connect_server},
%{id: :disconnect_server},
%{separator: true},
%{id: :open_data_folder},
%{separator: true},
%{id: :close_tab},

View File

@@ -110,12 +110,12 @@ msgstr "KI schlägt Zuordnungen von neuen zu vorhandenen Einträgen vor, um Dupl
msgid "API"
msgstr "API"
#: lib/bds/desktop/menu_bar.ex:234
#: lib/bds/desktop/menu_bar.ex:265
#, elixir-autogen, elixir-format
msgid "API Documentation"
msgstr "API-Dokumentation"
#: lib/bds/desktop/menu_bar.ex:232
#: lib/bds/desktop/menu_bar.ex:263
#, elixir-autogen, elixir-format
msgid "About"
msgstr "Über"
@@ -341,7 +341,7 @@ msgstr "Autor"
msgid "Auto"
msgstr "Automatisch"
#: lib/bds/desktop/shell_live.ex:443
#: lib/bds/desktop/shell_live.ex:445
#: lib/bds/desktop/shell_live/chat_editor.ex:234
#: lib/bds/desktop/shell_live/media_editor.ex:171
#: lib/bds/desktop/shell_live/media_editor.ex:364
@@ -372,7 +372,7 @@ msgstr "Verfuegbare Sprachen"
msgid "Backlinks"
msgstr "Rückverweise"
#: lib/bds/desktop/menu_bar.ex:181
#: lib/bds/desktop/menu_bar.ex:210
#, elixir-autogen, elixir-format
msgid "Blog"
msgstr "Blog"
@@ -491,7 +491,7 @@ msgstr "Kategorie-Standards, Render-Flags und Template-Zuordnung"
msgid "Category name is required"
msgstr "Kategoriename ist erforderlich"
#: lib/bds/desktop/shell_live.ex:789
#: lib/bds/desktop/shell_live.ex:791
#: lib/bds/desktop/shell_live/chat_editor.ex:87
#: lib/bds/desktop/shell_live/chat_editor.ex:233
#: lib/bds/desktop/shell_live/chat_editor.ex:323
@@ -549,7 +549,7 @@ msgstr "Tags löschen"
msgid "Click to %{action} mapping"
msgstr "Klicken, um Zuordnung zu %{action}"
#: lib/bds/desktop/menu_bar.ex:190
#: lib/bds/desktop/menu_bar.ex:221
#, elixir-autogen, elixir-format
msgid "Close Tab"
msgstr "Tab schließen"
@@ -600,7 +600,7 @@ msgstr "Inhalte"
msgid "Content Categories"
msgstr "Inhaltskategorien"
#: lib/bds/desktop/menu_bar.ex:195
#: lib/bds/desktop/menu_bar.ex:226
#, elixir-autogen, elixir-format
msgid "Copy"
msgstr "Kopieren"
@@ -653,7 +653,7 @@ msgstr "Schlagwort erstellen"
msgid "Created"
msgstr "Erstellt"
#: lib/bds/desktop/menu_bar.ex:194
#: lib/bds/desktop/menu_bar.ex:225
#, elixir-autogen, elixir-format
msgid "Cut"
msgstr "Ausschneiden"
@@ -719,7 +719,7 @@ msgstr "Standard-Bearbeitungsmodus"
msgid "Default editing mode and diff presentation"
msgstr "Standard-Bearbeitungsmodus und Diff-Darstellung"
#: lib/bds/desktop/menu_bar.ex:197
#: lib/bds/desktop/menu_bar.ex:228
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:98
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:166
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:116
@@ -862,7 +862,7 @@ msgstr "Anzeigetext"
msgid "Do Not Translate"
msgstr "Nicht übersetzen"
#: lib/bds/desktop/menu_bar.ex:233
#: lib/bds/desktop/menu_bar.ex:264
#: lib/bds/help_docs.ex:14
#: lib/bds/ui/registry.ex:118
#, elixir-autogen, elixir-format
@@ -895,12 +895,12 @@ msgstr "Menüeintrag ziehen"
msgid "ETA: %{value}"
msgstr "Verbleibend: %{value}"
#: lib/bds/desktop/menu_bar.ex:179
#: lib/bds/desktop/menu_bar.ex:208
#, elixir-autogen, elixir-format
msgid "Edit"
msgstr "Bearbeiten"
#: lib/bds/desktop/menu_bar.ex:216
#: lib/bds/desktop/menu_bar.ex:247
#, elixir-autogen, elixir-format
msgid "Edit Menu"
msgstr "Menü bearbeiten"
@@ -1006,7 +1006,7 @@ msgstr "Extern"
msgid "Extra URLs"
msgstr "Zusätzliche URLs"
#: lib/bds/desktop/menu_bar.ex:178
#: lib/bds/desktop/menu_bar.ex:207
#: lib/bds/desktop/shell_live/import_editor.ex:882
#: lib/bds/desktop/shell_live/misc_editor_html/misc_editor.html.heex:157
#, elixir-autogen, elixir-format
@@ -1028,17 +1028,17 @@ msgstr "Datei nach DB"
msgid "Filename"
msgstr "Dateiname"
#: lib/bds/desktop/menu_bar.ex:223
#: lib/bds/desktop/menu_bar.ex:254
#, elixir-autogen, elixir-format
msgid "Fill Missing Translations"
msgstr "Fehlende Übersetzungen ergänzen"
#: lib/bds/desktop/menu_bar.ex:199
#: lib/bds/desktop/menu_bar.ex:230
#, elixir-autogen, elixir-format
msgid "Find"
msgstr "Suchen"
#: lib/bds/desktop/menu_bar.ex:224
#: lib/bds/desktop/menu_bar.ex:255
#, elixir-autogen, elixir-format
msgid "Find Duplicate Posts"
msgstr "Doppelte Beiträge finden"
@@ -1053,7 +1053,7 @@ msgstr "Doppelte Beiträge finden"
msgid "Find Duplicates"
msgstr "Duplikate finden"
#: lib/bds/desktop/menu_bar.ex:209
#: lib/bds/desktop/menu_bar.ex:240
#, elixir-autogen, elixir-format
msgid "Force Reload"
msgstr "Erzwungenes Neuladen"
@@ -1064,12 +1064,12 @@ msgstr "Erzwungenes Neuladen"
msgid "Gallery"
msgstr "Galerie"
#: lib/bds/desktop/menu_bar.ex:225
#: lib/bds/desktop/menu_bar.ex:256
#, elixir-autogen, elixir-format
msgid "Generate Site"
msgstr "Website generieren"
#: lib/bds/desktop/shell_live.ex:790
#: lib/bds/desktop/shell_live.ex:792
#: lib/bds/desktop/shell_live/socket_state.ex:109
#: lib/bds/ui/sidebar.ex:789
#, elixir-autogen, elixir-format
@@ -1083,13 +1083,13 @@ msgid "Git Diff"
msgstr "Git-Diff"
#: lib/bds/desktop/shell_data.ex:228
#: lib/bds/desktop/shell_live.ex:786
#: lib/bds/desktop/shell_live.ex:788
#: lib/bds/desktop/shell_live/panel_renderer.ex:171
#, elixir-autogen, elixir-format
msgid "Git Log"
msgstr "Git-Protokoll"
#: lib/bds/desktop/menu_bar.ex:183
#: lib/bds/desktop/menu_bar.ex:212
#, elixir-autogen, elixir-format
msgid "Help"
msgstr "Hilfe"
@@ -1176,7 +1176,7 @@ msgstr "%{count} Elemente importieren"
msgid "Import (new slug)"
msgstr "Importieren (neuer Slug)"
#: lib/bds/desktop/menu_bar.ex:186
#: lib/bds/desktop/menu_bar.ex:215
#, elixir-autogen, elixir-format
msgid "Import Media"
msgstr "Medien importieren"
@@ -1206,9 +1206,9 @@ msgstr "Importdefinitionen"
msgid "Import failed: %{error}"
msgstr "Import fehlgeschlagen: %{error}"
#: lib/bds/desktop/shell_live.ex:606
#: lib/bds/desktop/shell_live.ex:902
#: lib/bds/desktop/shell_live.ex:908
#: lib/bds/desktop/shell_live.ex:608
#: lib/bds/desktop/shell_live.ex:904
#: lib/bds/desktop/shell_live.ex:910
#: lib/bds/desktop/shell_live/sidebar_create.ex:47
#, elixir-autogen, elixir-format
msgid "Import media"
@@ -1378,7 +1378,7 @@ msgstr "Markdown"
msgid "Max Posts Per Page"
msgstr "Maximale Beiträge pro Seite"
#: lib/bds/desktop/menu_bar.ex:203
#: lib/bds/desktop/menu_bar.ex:234
#: lib/bds/desktop/shell_live/media_editor.ex:509
#: lib/bds/desktop/shell_live/media_editor.ex:513
#: lib/bds/desktop/shell_live/misc_editor.ex:735
@@ -1426,7 +1426,7 @@ msgstr "Tags zusammenführen"
msgid "Metadata"
msgstr "Metadaten"
#: lib/bds/desktop/menu_bar.ex:220
#: lib/bds/desktop/menu_bar.ex:251
#: 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
@@ -1473,7 +1473,7 @@ msgstr "Neue Importdefinition"
msgid "New Page"
msgstr "Neue Seite"
#: lib/bds/desktop/menu_bar.ex:185
#: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/shell_live/sidebar_create.ex:41
#: lib/bds/tui.ex:103
#, elixir-autogen, elixir-format
@@ -1746,7 +1746,7 @@ msgstr "Online-Titelmodell"
msgid "Open"
msgstr "Öffnen"
#: lib/bds/desktop/menu_bar.ex:189
#: lib/bds/desktop/menu_bar.ex:220
#: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:382
#, elixir-autogen, elixir-format
msgid "Open Data Folder"
@@ -1763,7 +1763,7 @@ msgstr "Bestehenden Blog öffnen"
msgid "Open Settings"
msgstr "Einstellungen öffnen"
#: lib/bds/desktop/menu_bar.ex:188
#: lib/bds/desktop/menu_bar.ex:217
#, elixir-autogen, elixir-format
msgid "Open in Browser"
msgstr "Im Browser öffnen"
@@ -1794,7 +1794,7 @@ msgstr "Sonstige"
msgid "Other (%{count})"
msgstr "Andere (%{count})"
#: lib/bds/desktop/shell_live.ex:785
#: lib/bds/desktop/shell_live.ex:787
#: lib/bds/desktop/shell_live/panel_renderer.ex:83
#, elixir-autogen, elixir-format
msgid "Output"
@@ -1842,7 +1842,7 @@ msgstr "Paar verworfen"
msgid "Parsing WXR file..."
msgstr "WXR-Datei wird gelesen..."
#: lib/bds/desktop/menu_bar.ex:196
#: lib/bds/desktop/menu_bar.ex:227
#, elixir-autogen, elixir-format
msgid "Paste"
msgstr "Einfügen"
@@ -1908,7 +1908,7 @@ msgstr "Beitrag veröffentlicht"
msgid "Post saved"
msgstr "Beitrag gespeichert"
#: lib/bds/desktop/menu_bar.ex:202
#: 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:451
@@ -1924,7 +1924,7 @@ msgstr "Beiträge"
msgid "Posts (%{count})"
msgstr "Beiträge (%{count})"
#: lib/bds/desktop/menu_bar.ex:201
#: lib/bds/desktop/menu_bar.ex:232
#, elixir-autogen, elixir-format
msgid "Preferences"
msgstr "Einstellungen"
@@ -1940,7 +1940,7 @@ msgstr "Vorschau"
msgid "Preview Mode"
msgstr "Vorschaumodus"
#: lib/bds/desktop/menu_bar.ex:215
#: lib/bds/desktop/menu_bar.ex:246
#, elixir-autogen, elixir-format
msgid "Preview Post"
msgstr "Beitragsvorschau"
@@ -1992,7 +1992,7 @@ msgstr "Öffentliche URL"
msgid "Publish"
msgstr "Veröffentlichen"
#: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/menu_bar.ex:245
#, elixir-autogen, elixir-format
msgid "Publish Selected"
msgstr "Ausgewähltes veröffentlichen"
@@ -2025,7 +2025,7 @@ msgstr "Veröffentlichung"
msgid "Quick Actions"
msgstr "Schnellaktionen"
#: lib/bds/desktop/menu_bar.ex:191
#: lib/bds/desktop/menu_bar.ex:222
#, elixir-autogen, elixir-format
msgid "Quit"
msgstr "Beenden"
@@ -2035,12 +2035,12 @@ msgstr "Beenden"
msgid "Ready to import:"
msgstr "Bereit zum Import:"
#: lib/bds/desktop/menu_bar.ex:217
#: lib/bds/desktop/menu_bar.ex:248
#, elixir-autogen, elixir-format
msgid "Rebuild Database"
msgstr "Datenbank neu aufbauen"
#: lib/bds/desktop/menu_bar.ex:219
#: lib/bds/desktop/menu_bar.ex:250
#: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381
#, elixir-autogen, elixir-format
msgid "Rebuild Embedding Index"
@@ -2071,7 +2071,7 @@ msgstr "Vorlagen aus Dateien neu aufbauen"
msgid "Rebuild filesystem-backed records and thumbnails"
msgstr "Dateisystemgestützte Datensätze und Vorschaubilder neu aufbauen"
#: lib/bds/desktop/menu_bar.ex:193
#: lib/bds/desktop/menu_bar.ex:224
#, elixir-autogen, elixir-format
msgid "Redo"
msgstr "Wiederholen"
@@ -2098,7 +2098,7 @@ msgstr "Online-Modelle aktualisieren"
msgid "Refresh Translation"
msgstr "Übersetzung aktualisieren"
#: lib/bds/desktop/menu_bar.ex:221
#: lib/bds/desktop/menu_bar.ex:252
#, elixir-autogen, elixir-format
msgid "Regenerate Calendar"
msgstr "Kalender neu erzeugen"
@@ -2108,12 +2108,12 @@ msgstr "Kalender neu erzeugen"
msgid "Regenerate Missing Thumbnails"
msgstr "Fehlende Vorschaubilder neu erzeugen"
#: lib/bds/desktop/menu_bar.ex:218
#: lib/bds/desktop/menu_bar.ex:249
#, elixir-autogen, elixir-format
msgid "Reindex Text"
msgstr "Text neu indizieren"
#: lib/bds/desktop/menu_bar.ex:208
#: lib/bds/desktop/menu_bar.ex:239
#, elixir-autogen, elixir-format
msgid "Reload"
msgstr "Neu laden"
@@ -2144,7 +2144,7 @@ msgstr "Schlagwort entfernen"
msgid "Render in Lists"
msgstr "In Listen rendern"
#: lib/bds/desktop/menu_bar.ex:200
#: lib/bds/desktop/menu_bar.ex:231
#, elixir-autogen, elixir-format
msgid "Replace"
msgstr "Ersetzen"
@@ -2161,12 +2161,12 @@ msgstr "Datei ersetzen"
msgid "Replace Media File"
msgstr "Mediendatei ersetzen"
#: lib/bds/desktop/menu_bar.ex:236
#: lib/bds/desktop/menu_bar.ex:267
#, elixir-autogen, elixir-format
msgid "Report Issue"
msgstr "Problem melden"
#: lib/bds/desktop/menu_bar.ex:210
#: lib/bds/desktop/menu_bar.ex:241
#, elixir-autogen, elixir-format
msgid "Reset Zoom"
msgstr "Zoom zurücksetzen"
@@ -2221,7 +2221,7 @@ msgstr "Ausführen"
msgid "SSH Mode"
msgstr "SSH-Modus"
#: lib/bds/desktop/menu_bar.ex:187
#: lib/bds/desktop/menu_bar.ex:216
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:89
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:299
#: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:13
@@ -2340,7 +2340,7 @@ msgstr "Einstellungen durchsuchen"
msgid "Select & Analyze"
msgstr "Auswählen & analysieren"
#: lib/bds/desktop/menu_bar.ex:198
#: lib/bds/desktop/menu_bar.ex:229
#, elixir-autogen, elixir-format
msgid "Select All"
msgstr "Alles auswählen"
@@ -2552,7 +2552,7 @@ msgstr "Schlagwortname"
msgid "Tags"
msgstr "Tags"
#: lib/bds/desktop/shell_live.ex:784
#: lib/bds/desktop/shell_live.ex:786
#: lib/bds/desktop/shell_live/panel_renderer.ex:54
#, elixir-autogen, elixir-format
msgid "Tasks"
@@ -2648,12 +2648,12 @@ msgstr "Dieses Element wird referenziert von:"
msgid "Title"
msgstr "Titel"
#: lib/bds/desktop/menu_bar.ex:206
#: lib/bds/desktop/menu_bar.ex:237
#, elixir-autogen, elixir-format
msgid "Toggle Assistant Sidebar"
msgstr "Assistenten-Seitenleiste umschalten"
#: lib/bds/desktop/menu_bar.ex:207
#: lib/bds/desktop/menu_bar.ex:238
#, elixir-autogen, elixir-format
msgid "Toggle Dev Tools"
msgstr "Entwicklertools umschalten"
@@ -2664,17 +2664,17 @@ msgstr "Entwicklertools umschalten"
msgid "Toggle Filters"
msgstr "Filter umschalten"
#: lib/bds/desktop/menu_bar.ex:213
#: lib/bds/desktop/menu_bar.ex:244
#, elixir-autogen, elixir-format
msgid "Toggle Full Screen"
msgstr "Vollbild umschalten"
#: lib/bds/desktop/menu_bar.ex:205
#: lib/bds/desktop/menu_bar.ex:236
#, elixir-autogen, elixir-format
msgid "Toggle Panel"
msgstr "Panel umschalten"
#: lib/bds/desktop/menu_bar.ex:204
#: lib/bds/desktop/menu_bar.ex:235
#, elixir-autogen, elixir-format
msgid "Toggle Sidebar"
msgstr "Seitenleiste umschalten"
@@ -2770,7 +2770,7 @@ msgstr "UI"
msgid "URL"
msgstr "URL"
#: lib/bds/desktop/menu_bar.ex:192
#: lib/bds/desktop/menu_bar.ex:223
#, elixir-autogen, elixir-format
msgid "Undo"
msgstr "Rückgängig"
@@ -2820,7 +2820,7 @@ msgstr "Aktualisiert"
msgid "Updated URLs"
msgstr "Aktualisierte URLs"
#: lib/bds/desktop/menu_bar.ex:228
#: lib/bds/desktop/menu_bar.ex:259
#, elixir-autogen, elixir-format
msgid "Upload Site"
msgstr "Website hochladen"
@@ -2847,22 +2847,22 @@ msgstr "Benutzername"
msgid "Validate"
msgstr "Validieren"
#: lib/bds/desktop/menu_bar.ex:227
#: lib/bds/desktop/menu_bar.ex:258
#, elixir-autogen, elixir-format
msgid "Validate Site"
msgstr "Website validieren"
#: lib/bds/desktop/menu_bar.ex:222
#: lib/bds/desktop/menu_bar.ex:253
#, elixir-autogen, elixir-format
msgid "Validate Translations"
msgstr "Übersetzungen validieren"
#: lib/bds/desktop/menu_bar.ex:180
#: lib/bds/desktop/menu_bar.ex:209
#, elixir-autogen, elixir-format
msgid "View"
msgstr "Ansicht"
#: lib/bds/desktop/menu_bar.ex:235
#: lib/bds/desktop/menu_bar.ex:266
#, elixir-autogen, elixir-format
msgid "View on GitHub"
msgstr "Auf GitHub ansehen"
@@ -2906,12 +2906,12 @@ msgstr "Lange Zeilen umbrechen"
msgid "You"
msgstr "Du"
#: lib/bds/desktop/menu_bar.ex:211
#: lib/bds/desktop/menu_bar.ex:242
#, elixir-autogen, elixir-format
msgid "Zoom In"
msgstr "Heranzoomen"
#: lib/bds/desktop/menu_bar.ex:212
#: lib/bds/desktop/menu_bar.ex:243
#, elixir-autogen, elixir-format
msgid "Zoom Out"
msgstr "Herauszoomen"
@@ -3233,12 +3233,12 @@ msgstr "Willkommen beim KI-Assistenten"
msgid "Comparing database and filesystem metadata"
msgstr "Vergleicht Datenbank- und Dateisystem-Metadaten"
#: lib/bds/desktop/shell_live.ex:682
#: lib/bds/desktop/shell_live.ex:684
#, elixir-autogen, elixir-format
msgid "Added %{count} images to post"
msgstr "%{count} Bilder zum Beitrag hinzugefügt"
#: lib/bds/desktop/shell_live.ex:650
#: lib/bds/desktop/shell_live.ex:652
#, elixir-autogen, elixir-format
msgid "Added %{title}"
msgstr "%{title} hinzugefügt"
@@ -3258,18 +3258,18 @@ msgstr "Endbenutzer-Anleitung für redaktionelle Arbeitsabläufe, Medien, Vorlag
msgid "Image Import Concurrency"
msgstr "Gleichzeitige Bildimporte"
#: lib/bds/desktop/shell_live.ex:442
#: lib/bds/desktop/shell_live.ex:455
#: lib/bds/desktop/shell_live.ex:649
#: lib/bds/desktop/shell_live.ex:681
#: lib/bds/desktop/shell_live.ex:692
#: lib/bds/desktop/shell_live.ex:703
#: lib/bds/desktop/shell_live.ex:444
#: lib/bds/desktop/shell_live.ex:457
#: lib/bds/desktop/shell_live.ex:651
#: lib/bds/desktop/shell_live.ex:683
#: lib/bds/desktop/shell_live.ex:694
#: lib/bds/desktop/shell_live.ex:705
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:420
#, elixir-autogen, elixir-format
msgid "Add Gallery Images"
msgstr "Galerie-Bilder hinzufügen"
#: lib/bds/desktop/shell_live.ex:704
#: lib/bds/desktop/shell_live.ex:706
#, elixir-autogen, elixir-format
msgid "Failed to process %{path}: %{reason}"
msgstr "%{path} konnte nicht verarbeitet werden: %{reason}"
@@ -3460,12 +3460,12 @@ msgstr "umbenannt"
msgid "untracked"
msgstr "nicht verfolgt"
#: lib/bds/desktop/shell_live.ex:810
#: lib/bds/desktop/shell_live.ex:812
#, elixir-autogen, elixir-format
msgid "Blogmark"
msgstr "Blogmark"
#: lib/bds/desktop/shell_live.ex:853
#: lib/bds/desktop/shell_live.ex:855
#, elixir-autogen, elixir-format
msgid "Open a project before importing a blogmark."
msgstr "Öffnen Sie ein Projekt, bevor Sie ein Blogmark importieren."
@@ -3506,7 +3506,7 @@ msgstr "Tag löschen"
msgid "Failed to copy bookmarklet to clipboard"
msgstr "Bookmarklet konnte nicht in die Zwischenablage kopiert werden"
#: lib/bds/desktop/shell_live.ex:822
#: lib/bds/desktop/shell_live.ex:824
#, elixir-autogen, elixir-format
msgid "The project this blogmark targets does not exist here."
msgstr "Das Projekt, auf das dieses Blogmark verweist, existiert hier nicht."
@@ -3516,7 +3516,7 @@ msgstr "Das Projekt, auf das dieses Blogmark verweist, existiert hier nicht."
msgid "Suggested tags"
msgstr "Vorgeschlagene Tags"
#: lib/bds/desktop/menu_bar.ex:226
#: lib/bds/desktop/menu_bar.ex:257
#, elixir-autogen, elixir-format
msgid "Force Render Site"
msgstr "Website vollständig neu generieren"
@@ -3531,22 +3531,22 @@ msgstr "Medien-Links neu aufbauen"
msgid "Rebuild Post Links"
msgstr "Beitrags-Links neu aufbauen"
#: lib/bds/desktop/menu_bar.ex:231
#: lib/bds/desktop/menu_bar.ex:262
#, elixir-autogen, elixir-format
msgid "Bring All to Front"
msgstr "Alle nach vorne bringen"
#: lib/bds/desktop/menu_bar.ex:229
#: lib/bds/desktop/menu_bar.ex:260
#, elixir-autogen, elixir-format
msgid "Minimize"
msgstr "Minimieren"
#: lib/bds/desktop/menu_bar.ex:182
#: lib/bds/desktop/menu_bar.ex:211
#, elixir-autogen, elixir-format
msgid "Window"
msgstr "Fenster"
#: lib/bds/desktop/menu_bar.ex:230
#: lib/bds/desktop/menu_bar.ex:261
#, elixir-autogen, elixir-format
msgid "Zoom"
msgstr "Zoomen"
@@ -3702,3 +3702,35 @@ msgstr "Enter Öffnen · N Neuer Beitrag · 1-5 Ansichten · R Aktualisieren ·
#, elixir-autogen, elixir-format
msgid "esc to close"
msgstr "Esc zum Schließen"
#: lib/bds/desktop/menu_bar.ex:83
#: lib/bds/desktop/shell_live.ex:1110
#, elixir-autogen, elixir-format
msgid "Connect to Server"
msgstr "Mit Server verbinden"
#: lib/bds/desktop/menu_bar.ex:218
#, elixir-autogen, elixir-format
msgid "Connect to Server…"
msgstr "Mit Server verbinden…"
#: lib/bds/desktop/menu_bar.ex:84
#, elixir-autogen, elixir-format
msgid "Connection failed: %{reason}"
msgstr "Verbindung fehlgeschlagen: %{reason}"
#: lib/bds/desktop/menu_bar.ex:219
#, elixir-autogen, elixir-format
msgid "Disconnect from Server"
msgstr "Verbindung zum Server trennen"
#: lib/bds/desktop/menu_bar.ex:72
#: lib/bds/desktop/shell_live.ex:1097
#, elixir-autogen, elixir-format
msgid "Server address (user@host or user@host:port), public-key auth:"
msgstr "Serveradresse (user@host oder user@host:port), Public-Key-Authentifizierung:"
#: lib/bds/desktop/remote_connection.ex:82
#, elixir-autogen, elixir-format
msgid "Use the form user@host or user@host:port."
msgstr "Verwenden Sie das Format user@host oder user@host:port."

View File

@@ -110,12 +110,12 @@ msgstr ""
msgid "API"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:234
#: lib/bds/desktop/menu_bar.ex:265
#, elixir-autogen, elixir-format
msgid "API Documentation"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:232
#: lib/bds/desktop/menu_bar.ex:263
#, elixir-autogen, elixir-format
msgid "About"
msgstr ""
@@ -341,7 +341,7 @@ msgstr ""
msgid "Auto"
msgstr ""
#: lib/bds/desktop/shell_live.ex:443
#: lib/bds/desktop/shell_live.ex:445
#: lib/bds/desktop/shell_live/chat_editor.ex:234
#: lib/bds/desktop/shell_live/media_editor.ex:171
#: lib/bds/desktop/shell_live/media_editor.ex:364
@@ -372,7 +372,7 @@ msgstr ""
msgid "Backlinks"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:181
#: lib/bds/desktop/menu_bar.ex:210
#, elixir-autogen, elixir-format
msgid "Blog"
msgstr ""
@@ -491,7 +491,7 @@ msgstr ""
msgid "Category name is required"
msgstr ""
#: lib/bds/desktop/shell_live.ex:789
#: lib/bds/desktop/shell_live.ex:791
#: lib/bds/desktop/shell_live/chat_editor.ex:87
#: lib/bds/desktop/shell_live/chat_editor.ex:233
#: lib/bds/desktop/shell_live/chat_editor.ex:323
@@ -549,7 +549,7 @@ msgstr ""
msgid "Click to %{action} mapping"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:190
#: lib/bds/desktop/menu_bar.ex:221
#, elixir-autogen, elixir-format
msgid "Close Tab"
msgstr ""
@@ -600,7 +600,7 @@ msgstr ""
msgid "Content Categories"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:195
#: lib/bds/desktop/menu_bar.ex:226
#, elixir-autogen, elixir-format
msgid "Copy"
msgstr ""
@@ -653,7 +653,7 @@ msgstr ""
msgid "Created"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:194
#: lib/bds/desktop/menu_bar.ex:225
#, elixir-autogen, elixir-format
msgid "Cut"
msgstr ""
@@ -719,7 +719,7 @@ msgstr ""
msgid "Default editing mode and diff presentation"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:197
#: lib/bds/desktop/menu_bar.ex:228
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:98
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:166
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:116
@@ -862,7 +862,7 @@ msgstr ""
msgid "Do Not Translate"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:233
#: lib/bds/desktop/menu_bar.ex:264
#: lib/bds/help_docs.ex:14
#: lib/bds/ui/registry.ex:118
#, elixir-autogen, elixir-format
@@ -895,12 +895,12 @@ msgstr ""
msgid "ETA: %{value}"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:179
#: lib/bds/desktop/menu_bar.ex:208
#, elixir-autogen, elixir-format
msgid "Edit"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:216
#: lib/bds/desktop/menu_bar.ex:247
#, elixir-autogen, elixir-format
msgid "Edit Menu"
msgstr ""
@@ -1006,7 +1006,7 @@ msgstr ""
msgid "Extra URLs"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:178
#: lib/bds/desktop/menu_bar.ex:207
#: lib/bds/desktop/shell_live/import_editor.ex:882
#: lib/bds/desktop/shell_live/misc_editor_html/misc_editor.html.heex:157
#, elixir-autogen, elixir-format
@@ -1028,17 +1028,17 @@ msgstr ""
msgid "Filename"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:223
#: lib/bds/desktop/menu_bar.ex:254
#, elixir-autogen, elixir-format
msgid "Fill Missing Translations"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:199
#: lib/bds/desktop/menu_bar.ex:230
#, elixir-autogen, elixir-format
msgid "Find"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:224
#: lib/bds/desktop/menu_bar.ex:255
#, elixir-autogen, elixir-format
msgid "Find Duplicate Posts"
msgstr ""
@@ -1053,7 +1053,7 @@ msgstr ""
msgid "Find Duplicates"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:209
#: lib/bds/desktop/menu_bar.ex:240
#, elixir-autogen, elixir-format
msgid "Force Reload"
msgstr ""
@@ -1064,12 +1064,12 @@ msgstr ""
msgid "Gallery"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:225
#: lib/bds/desktop/menu_bar.ex:256
#, elixir-autogen, elixir-format
msgid "Generate Site"
msgstr ""
#: lib/bds/desktop/shell_live.ex:790
#: lib/bds/desktop/shell_live.ex:792
#: lib/bds/desktop/shell_live/socket_state.ex:109
#: lib/bds/ui/sidebar.ex:789
#, elixir-autogen, elixir-format
@@ -1083,13 +1083,13 @@ msgid "Git Diff"
msgstr ""
#: lib/bds/desktop/shell_data.ex:228
#: lib/bds/desktop/shell_live.ex:786
#: lib/bds/desktop/shell_live.ex:788
#: lib/bds/desktop/shell_live/panel_renderer.ex:171
#, elixir-autogen, elixir-format
msgid "Git Log"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:183
#: lib/bds/desktop/menu_bar.ex:212
#, elixir-autogen, elixir-format
msgid "Help"
msgstr ""
@@ -1176,7 +1176,7 @@ msgstr ""
msgid "Import (new slug)"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:186
#: lib/bds/desktop/menu_bar.ex:215
#, elixir-autogen, elixir-format
msgid "Import Media"
msgstr ""
@@ -1206,9 +1206,9 @@ msgstr ""
msgid "Import failed: %{error}"
msgstr ""
#: lib/bds/desktop/shell_live.ex:606
#: lib/bds/desktop/shell_live.ex:902
#: lib/bds/desktop/shell_live.ex:908
#: lib/bds/desktop/shell_live.ex:608
#: lib/bds/desktop/shell_live.ex:904
#: lib/bds/desktop/shell_live.ex:910
#: lib/bds/desktop/shell_live/sidebar_create.ex:47
#, elixir-autogen, elixir-format
msgid "Import media"
@@ -1378,7 +1378,7 @@ msgstr ""
msgid "Max Posts Per Page"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:203
#: lib/bds/desktop/menu_bar.ex:234
#: lib/bds/desktop/shell_live/media_editor.ex:509
#: lib/bds/desktop/shell_live/media_editor.ex:513
#: lib/bds/desktop/shell_live/misc_editor.ex:735
@@ -1426,7 +1426,7 @@ msgstr ""
msgid "Metadata"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:220
#: lib/bds/desktop/menu_bar.ex:251
#: 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
@@ -1473,7 +1473,7 @@ msgstr ""
msgid "New Page"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:185
#: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/shell_live/sidebar_create.ex:41
#: lib/bds/tui.ex:103
#, elixir-autogen, elixir-format
@@ -1746,7 +1746,7 @@ msgstr ""
msgid "Open"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:189
#: lib/bds/desktop/menu_bar.ex:220
#: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:382
#, elixir-autogen, elixir-format
msgid "Open Data Folder"
@@ -1763,7 +1763,7 @@ msgstr ""
msgid "Open Settings"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:188
#: lib/bds/desktop/menu_bar.ex:217
#, elixir-autogen, elixir-format
msgid "Open in Browser"
msgstr ""
@@ -1794,7 +1794,7 @@ msgstr ""
msgid "Other (%{count})"
msgstr ""
#: lib/bds/desktop/shell_live.ex:785
#: lib/bds/desktop/shell_live.ex:787
#: lib/bds/desktop/shell_live/panel_renderer.ex:83
#, elixir-autogen, elixir-format
msgid "Output"
@@ -1842,7 +1842,7 @@ msgstr ""
msgid "Parsing WXR file..."
msgstr ""
#: lib/bds/desktop/menu_bar.ex:196
#: lib/bds/desktop/menu_bar.ex:227
#, elixir-autogen, elixir-format
msgid "Paste"
msgstr ""
@@ -1908,7 +1908,7 @@ msgstr ""
msgid "Post saved"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:202
#: 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:451
@@ -1924,7 +1924,7 @@ msgstr ""
msgid "Posts (%{count})"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:201
#: lib/bds/desktop/menu_bar.ex:232
#, elixir-autogen, elixir-format
msgid "Preferences"
msgstr ""
@@ -1940,7 +1940,7 @@ msgstr ""
msgid "Preview Mode"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:215
#: lib/bds/desktop/menu_bar.ex:246
#, elixir-autogen, elixir-format
msgid "Preview Post"
msgstr ""
@@ -1992,7 +1992,7 @@ msgstr ""
msgid "Publish"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/menu_bar.ex:245
#, elixir-autogen, elixir-format
msgid "Publish Selected"
msgstr ""
@@ -2025,7 +2025,7 @@ msgstr ""
msgid "Quick Actions"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:191
#: lib/bds/desktop/menu_bar.ex:222
#, elixir-autogen, elixir-format
msgid "Quit"
msgstr ""
@@ -2035,12 +2035,12 @@ msgstr ""
msgid "Ready to import:"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:217
#: lib/bds/desktop/menu_bar.ex:248
#, elixir-autogen, elixir-format
msgid "Rebuild Database"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:219
#: lib/bds/desktop/menu_bar.ex:250
#: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381
#, elixir-autogen, elixir-format
msgid "Rebuild Embedding Index"
@@ -2071,7 +2071,7 @@ msgstr ""
msgid "Rebuild filesystem-backed records and thumbnails"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:193
#: lib/bds/desktop/menu_bar.ex:224
#, elixir-autogen, elixir-format
msgid "Redo"
msgstr ""
@@ -2098,7 +2098,7 @@ msgstr ""
msgid "Refresh Translation"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:221
#: lib/bds/desktop/menu_bar.ex:252
#, elixir-autogen, elixir-format
msgid "Regenerate Calendar"
msgstr ""
@@ -2108,12 +2108,12 @@ msgstr ""
msgid "Regenerate Missing Thumbnails"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:218
#: lib/bds/desktop/menu_bar.ex:249
#, elixir-autogen, elixir-format
msgid "Reindex Text"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:208
#: lib/bds/desktop/menu_bar.ex:239
#, elixir-autogen, elixir-format
msgid "Reload"
msgstr ""
@@ -2144,7 +2144,7 @@ msgstr ""
msgid "Render in Lists"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:200
#: lib/bds/desktop/menu_bar.ex:231
#, elixir-autogen, elixir-format
msgid "Replace"
msgstr ""
@@ -2161,12 +2161,12 @@ msgstr ""
msgid "Replace Media File"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:236
#: lib/bds/desktop/menu_bar.ex:267
#, elixir-autogen, elixir-format
msgid "Report Issue"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:210
#: lib/bds/desktop/menu_bar.ex:241
#, elixir-autogen, elixir-format
msgid "Reset Zoom"
msgstr ""
@@ -2221,7 +2221,7 @@ msgstr ""
msgid "SSH Mode"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:187
#: lib/bds/desktop/menu_bar.ex:216
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:89
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:299
#: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:13
@@ -2340,7 +2340,7 @@ msgstr ""
msgid "Select & Analyze"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:198
#: lib/bds/desktop/menu_bar.ex:229
#, elixir-autogen, elixir-format
msgid "Select All"
msgstr ""
@@ -2552,7 +2552,7 @@ msgstr ""
msgid "Tags"
msgstr ""
#: lib/bds/desktop/shell_live.ex:784
#: lib/bds/desktop/shell_live.ex:786
#: lib/bds/desktop/shell_live/panel_renderer.ex:54
#, elixir-autogen, elixir-format
msgid "Tasks"
@@ -2648,12 +2648,12 @@ msgstr ""
msgid "Title"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:206
#: lib/bds/desktop/menu_bar.ex:237
#, elixir-autogen, elixir-format
msgid "Toggle Assistant Sidebar"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:207
#: lib/bds/desktop/menu_bar.ex:238
#, elixir-autogen, elixir-format
msgid "Toggle Dev Tools"
msgstr ""
@@ -2664,17 +2664,17 @@ msgstr ""
msgid "Toggle Filters"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:213
#: lib/bds/desktop/menu_bar.ex:244
#, elixir-autogen, elixir-format
msgid "Toggle Full Screen"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:205
#: lib/bds/desktop/menu_bar.ex:236
#, elixir-autogen, elixir-format
msgid "Toggle Panel"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:204
#: lib/bds/desktop/menu_bar.ex:235
#, elixir-autogen, elixir-format
msgid "Toggle Sidebar"
msgstr ""
@@ -2770,7 +2770,7 @@ msgstr ""
msgid "URL"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:192
#: lib/bds/desktop/menu_bar.ex:223
#, elixir-autogen, elixir-format
msgid "Undo"
msgstr ""
@@ -2820,7 +2820,7 @@ msgstr ""
msgid "Updated URLs"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:228
#: lib/bds/desktop/menu_bar.ex:259
#, elixir-autogen, elixir-format
msgid "Upload Site"
msgstr ""
@@ -2847,22 +2847,22 @@ msgstr ""
msgid "Validate"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:227
#: lib/bds/desktop/menu_bar.ex:258
#, elixir-autogen, elixir-format
msgid "Validate Site"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:222
#: lib/bds/desktop/menu_bar.ex:253
#, elixir-autogen, elixir-format
msgid "Validate Translations"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:180
#: lib/bds/desktop/menu_bar.ex:209
#, elixir-autogen, elixir-format
msgid "View"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:235
#: lib/bds/desktop/menu_bar.ex:266
#, elixir-autogen, elixir-format
msgid "View on GitHub"
msgstr ""
@@ -2906,12 +2906,12 @@ msgstr ""
msgid "You"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:211
#: lib/bds/desktop/menu_bar.ex:242
#, elixir-autogen, elixir-format
msgid "Zoom In"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:212
#: lib/bds/desktop/menu_bar.ex:243
#, elixir-autogen, elixir-format
msgid "Zoom Out"
msgstr ""
@@ -3233,12 +3233,12 @@ msgstr ""
msgid "Comparing database and filesystem metadata"
msgstr "Comparing database and filesystem metadata"
#: lib/bds/desktop/shell_live.ex:682
#: lib/bds/desktop/shell_live.ex:684
#, elixir-autogen, elixir-format
msgid "Added %{count} images to post"
msgstr "Added %{count} images to post"
#: lib/bds/desktop/shell_live.ex:650
#: lib/bds/desktop/shell_live.ex:652
#, elixir-autogen, elixir-format
msgid "Added %{title}"
msgstr "Added %{title}"
@@ -3258,18 +3258,18 @@ msgstr ""
msgid "Image Import Concurrency"
msgstr "Image Import Concurrency"
#: lib/bds/desktop/shell_live.ex:442
#: lib/bds/desktop/shell_live.ex:455
#: lib/bds/desktop/shell_live.ex:649
#: lib/bds/desktop/shell_live.ex:681
#: lib/bds/desktop/shell_live.ex:692
#: lib/bds/desktop/shell_live.ex:703
#: lib/bds/desktop/shell_live.ex:444
#: lib/bds/desktop/shell_live.ex:457
#: lib/bds/desktop/shell_live.ex:651
#: lib/bds/desktop/shell_live.ex:683
#: lib/bds/desktop/shell_live.ex:694
#: lib/bds/desktop/shell_live.ex:705
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:420
#, elixir-autogen, elixir-format
msgid "Add Gallery Images"
msgstr "Add Gallery Images"
#: lib/bds/desktop/shell_live.ex:704
#: lib/bds/desktop/shell_live.ex:706
#, elixir-autogen, elixir-format
msgid "Failed to process %{path}: %{reason}"
msgstr "Failed to process %{path}: %{reason}"
@@ -3460,12 +3460,12 @@ msgstr ""
msgid "untracked"
msgstr ""
#: lib/bds/desktop/shell_live.ex:810
#: lib/bds/desktop/shell_live.ex:812
#, elixir-autogen, elixir-format, fuzzy
msgid "Blogmark"
msgstr "Blogmark"
#: lib/bds/desktop/shell_live.ex:853
#: lib/bds/desktop/shell_live.ex:855
#, elixir-autogen, elixir-format
msgid "Open a project before importing a blogmark."
msgstr ""
@@ -3506,7 +3506,7 @@ msgstr ""
msgid "Failed to copy bookmarklet to clipboard"
msgstr ""
#: lib/bds/desktop/shell_live.ex:822
#: lib/bds/desktop/shell_live.ex:824
#, elixir-autogen, elixir-format
msgid "The project this blogmark targets does not exist here."
msgstr ""
@@ -3516,7 +3516,7 @@ msgstr ""
msgid "Suggested tags"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:226
#: lib/bds/desktop/menu_bar.ex:257
#, elixir-autogen, elixir-format
msgid "Force Render Site"
msgstr ""
@@ -3531,22 +3531,22 @@ msgstr ""
msgid "Rebuild Post Links"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:231
#: lib/bds/desktop/menu_bar.ex:262
#, elixir-autogen, elixir-format
msgid "Bring All to Front"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:229
#: lib/bds/desktop/menu_bar.ex:260
#, elixir-autogen, elixir-format
msgid "Minimize"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:182
#: lib/bds/desktop/menu_bar.ex:211
#, elixir-autogen, elixir-format
msgid "Window"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:230
#: lib/bds/desktop/menu_bar.ex:261
#, elixir-autogen, elixir-format, fuzzy
msgid "Zoom"
msgstr ""
@@ -3702,3 +3702,35 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "esc to close"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:83
#: lib/bds/desktop/shell_live.ex:1110
#, elixir-autogen, elixir-format
msgid "Connect to Server"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:218
#, elixir-autogen, elixir-format
msgid "Connect to Server…"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:84
#, elixir-autogen, elixir-format
msgid "Connection failed: %{reason}"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:219
#, elixir-autogen, elixir-format
msgid "Disconnect from Server"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:72
#: lib/bds/desktop/shell_live.ex:1097
#, elixir-autogen, elixir-format
msgid "Server address (user@host or user@host:port), public-key auth:"
msgstr ""
#: lib/bds/desktop/remote_connection.ex:82
#, elixir-autogen, elixir-format
msgid "Use the form user@host or user@host:port."
msgstr ""

View File

@@ -110,12 +110,12 @@ msgstr "La IA sugerirá mapeos de elementos nuevos a existentes para evitar dupl
msgid "API"
msgstr "API"
#: lib/bds/desktop/menu_bar.ex:234
#: lib/bds/desktop/menu_bar.ex:265
#, elixir-autogen, elixir-format
msgid "API Documentation"
msgstr "Documentación de API"
#: lib/bds/desktop/menu_bar.ex:232
#: lib/bds/desktop/menu_bar.ex:263
#, elixir-autogen, elixir-format
msgid "About"
msgstr "Acerca de"
@@ -341,7 +341,7 @@ msgstr "Autor"
msgid "Auto"
msgstr "Automático"
#: lib/bds/desktop/shell_live.ex:443
#: lib/bds/desktop/shell_live.ex:445
#: lib/bds/desktop/shell_live/chat_editor.ex:234
#: lib/bds/desktop/shell_live/media_editor.ex:171
#: lib/bds/desktop/shell_live/media_editor.ex:364
@@ -372,7 +372,7 @@ msgstr "Idiomas disponibles"
msgid "Backlinks"
msgstr "Referencias entrantes"
#: lib/bds/desktop/menu_bar.ex:181
#: lib/bds/desktop/menu_bar.ex:210
#, elixir-autogen, elixir-format
msgid "Blog"
msgstr "Blog"
@@ -491,7 +491,7 @@ msgstr "Valores predeterminados de categoría, opciones de renderizado y conexi
msgid "Category name is required"
msgstr "El nombre de la categoría es obligatorio"
#: lib/bds/desktop/shell_live.ex:789
#: lib/bds/desktop/shell_live.ex:791
#: lib/bds/desktop/shell_live/chat_editor.ex:87
#: lib/bds/desktop/shell_live/chat_editor.ex:233
#: lib/bds/desktop/shell_live/chat_editor.ex:323
@@ -549,7 +549,7 @@ msgstr "Limpiar etiquetas"
msgid "Click to %{action} mapping"
msgstr "Haz clic para %{action} el mapeo"
#: lib/bds/desktop/menu_bar.ex:190
#: lib/bds/desktop/menu_bar.ex:221
#, elixir-autogen, elixir-format
msgid "Close Tab"
msgstr "Cerrar pestaña"
@@ -600,7 +600,7 @@ msgstr "Contenido"
msgid "Content Categories"
msgstr "Categorías de contenido"
#: lib/bds/desktop/menu_bar.ex:195
#: lib/bds/desktop/menu_bar.ex:226
#, elixir-autogen, elixir-format
msgid "Copy"
msgstr "Copiar"
@@ -653,7 +653,7 @@ msgstr "Crear etiqueta"
msgid "Created"
msgstr "Creado"
#: lib/bds/desktop/menu_bar.ex:194
#: lib/bds/desktop/menu_bar.ex:225
#, elixir-autogen, elixir-format
msgid "Cut"
msgstr "Cortar"
@@ -719,7 +719,7 @@ msgstr "Modo de editor predeterminado"
msgid "Default editing mode and diff presentation"
msgstr "Modo de edición predeterminado y presentación de diff"
#: lib/bds/desktop/menu_bar.ex:197
#: lib/bds/desktop/menu_bar.ex:228
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:98
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:166
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:116
@@ -862,7 +862,7 @@ msgstr "Texto mostrado"
msgid "Do Not Translate"
msgstr "No traducir"
#: lib/bds/desktop/menu_bar.ex:233
#: lib/bds/desktop/menu_bar.ex:264
#: lib/bds/help_docs.ex:14
#: lib/bds/ui/registry.ex:118
#, elixir-autogen, elixir-format
@@ -895,12 +895,12 @@ msgstr "Arrastrar elemento del menú"
msgid "ETA: %{value}"
msgstr "Tiempo restante: %{value}"
#: lib/bds/desktop/menu_bar.ex:179
#: lib/bds/desktop/menu_bar.ex:208
#, elixir-autogen, elixir-format
msgid "Edit"
msgstr "Editar"
#: lib/bds/desktop/menu_bar.ex:216
#: lib/bds/desktop/menu_bar.ex:247
#, elixir-autogen, elixir-format
msgid "Edit Menu"
msgstr "Editar menú"
@@ -1006,7 +1006,7 @@ msgstr "Externo"
msgid "Extra URLs"
msgstr "URLs adicionales"
#: lib/bds/desktop/menu_bar.ex:178
#: lib/bds/desktop/menu_bar.ex:207
#: lib/bds/desktop/shell_live/import_editor.ex:882
#: lib/bds/desktop/shell_live/misc_editor_html/misc_editor.html.heex:157
#, elixir-autogen, elixir-format
@@ -1028,17 +1028,17 @@ msgstr "Archivo a BD"
msgid "Filename"
msgstr "Nombre de archivo"
#: lib/bds/desktop/menu_bar.ex:223
#: lib/bds/desktop/menu_bar.ex:254
#, elixir-autogen, elixir-format
msgid "Fill Missing Translations"
msgstr "Completar traducciones faltantes"
#: lib/bds/desktop/menu_bar.ex:199
#: lib/bds/desktop/menu_bar.ex:230
#, elixir-autogen, elixir-format
msgid "Find"
msgstr "Buscar"
#: lib/bds/desktop/menu_bar.ex:224
#: lib/bds/desktop/menu_bar.ex:255
#, elixir-autogen, elixir-format
msgid "Find Duplicate Posts"
msgstr "Buscar entradas duplicadas"
@@ -1053,7 +1053,7 @@ msgstr "Buscar entradas duplicadas"
msgid "Find Duplicates"
msgstr "Buscar duplicados"
#: lib/bds/desktop/menu_bar.ex:209
#: lib/bds/desktop/menu_bar.ex:240
#, elixir-autogen, elixir-format
msgid "Force Reload"
msgstr "Recarga forzada"
@@ -1064,12 +1064,12 @@ msgstr "Recarga forzada"
msgid "Gallery"
msgstr "Galeria"
#: lib/bds/desktop/menu_bar.ex:225
#: lib/bds/desktop/menu_bar.ex:256
#, elixir-autogen, elixir-format
msgid "Generate Site"
msgstr "Generar sitio"
#: lib/bds/desktop/shell_live.ex:790
#: lib/bds/desktop/shell_live.ex:792
#: lib/bds/desktop/shell_live/socket_state.ex:109
#: lib/bds/ui/sidebar.ex:789
#, elixir-autogen, elixir-format
@@ -1083,13 +1083,13 @@ msgid "Git Diff"
msgstr "Diff de Git"
#: lib/bds/desktop/shell_data.ex:228
#: lib/bds/desktop/shell_live.ex:786
#: lib/bds/desktop/shell_live.ex:788
#: lib/bds/desktop/shell_live/panel_renderer.ex:171
#, elixir-autogen, elixir-format
msgid "Git Log"
msgstr "Registro Git"
#: lib/bds/desktop/menu_bar.ex:183
#: lib/bds/desktop/menu_bar.ex:212
#, elixir-autogen, elixir-format
msgid "Help"
msgstr "Ayuda"
@@ -1176,7 +1176,7 @@ msgstr "Importar %{count} elementos"
msgid "Import (new slug)"
msgstr "Importar (nuevo slug)"
#: lib/bds/desktop/menu_bar.ex:186
#: lib/bds/desktop/menu_bar.ex:215
#, elixir-autogen, elixir-format
msgid "Import Media"
msgstr "Importar medios"
@@ -1206,9 +1206,9 @@ msgstr "Definiciones de importación"
msgid "Import failed: %{error}"
msgstr "La importación falló: %{error}"
#: lib/bds/desktop/shell_live.ex:606
#: lib/bds/desktop/shell_live.ex:902
#: lib/bds/desktop/shell_live.ex:908
#: lib/bds/desktop/shell_live.ex:608
#: lib/bds/desktop/shell_live.ex:904
#: lib/bds/desktop/shell_live.ex:910
#: lib/bds/desktop/shell_live/sidebar_create.ex:47
#, elixir-autogen, elixir-format
msgid "Import media"
@@ -1378,7 +1378,7 @@ msgstr "Markdown"
msgid "Max Posts Per Page"
msgstr "Máximo de publicaciones por página"
#: lib/bds/desktop/menu_bar.ex:203
#: lib/bds/desktop/menu_bar.ex:234
#: lib/bds/desktop/shell_live/media_editor.ex:509
#: lib/bds/desktop/shell_live/media_editor.ex:513
#: lib/bds/desktop/shell_live/misc_editor.ex:735
@@ -1426,7 +1426,7 @@ msgstr "Combinar etiquetas"
msgid "Metadata"
msgstr "Metadatos"
#: lib/bds/desktop/menu_bar.ex:220
#: lib/bds/desktop/menu_bar.ex:251
#: 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
@@ -1473,7 +1473,7 @@ msgstr "Nueva definición"
msgid "New Page"
msgstr "Nueva página"
#: lib/bds/desktop/menu_bar.ex:185
#: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/shell_live/sidebar_create.ex:41
#: lib/bds/tui.ex:103
#, elixir-autogen, elixir-format
@@ -1746,7 +1746,7 @@ msgstr "Modelo de títulos en línea"
msgid "Open"
msgstr "Abrir"
#: lib/bds/desktop/menu_bar.ex:189
#: lib/bds/desktop/menu_bar.ex:220
#: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:382
#, elixir-autogen, elixir-format
msgid "Open Data Folder"
@@ -1763,7 +1763,7 @@ msgstr "Abrir blog existente"
msgid "Open Settings"
msgstr "Abrir Ajustes"
#: lib/bds/desktop/menu_bar.ex:188
#: lib/bds/desktop/menu_bar.ex:217
#, elixir-autogen, elixir-format
msgid "Open in Browser"
msgstr "Abrir en el navegador"
@@ -1794,7 +1794,7 @@ msgstr "Otros"
msgid "Other (%{count})"
msgstr "Otros (%{count})"
#: lib/bds/desktop/shell_live.ex:785
#: lib/bds/desktop/shell_live.ex:787
#: lib/bds/desktop/shell_live/panel_renderer.ex:83
#, elixir-autogen, elixir-format
msgid "Output"
@@ -1842,7 +1842,7 @@ msgstr "Par descartado"
msgid "Parsing WXR file..."
msgstr "Analizando archivo WXR..."
#: lib/bds/desktop/menu_bar.ex:196
#: lib/bds/desktop/menu_bar.ex:227
#, elixir-autogen, elixir-format
msgid "Paste"
msgstr "Pegar"
@@ -1908,7 +1908,7 @@ msgstr "Artículo publicado"
msgid "Post saved"
msgstr "Artículo guardado"
#: lib/bds/desktop/menu_bar.ex:202
#: 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:451
@@ -1924,7 +1924,7 @@ msgstr "Publicaciones"
msgid "Posts (%{count})"
msgstr "Publicaciones (%{count})"
#: lib/bds/desktop/menu_bar.ex:201
#: lib/bds/desktop/menu_bar.ex:232
#, elixir-autogen, elixir-format
msgid "Preferences"
msgstr "Preferencias"
@@ -1940,7 +1940,7 @@ msgstr "Vista previa"
msgid "Preview Mode"
msgstr "Modo de vista previa"
#: lib/bds/desktop/menu_bar.ex:215
#: lib/bds/desktop/menu_bar.ex:246
#, elixir-autogen, elixir-format
msgid "Preview Post"
msgstr "Vista previa de entrada"
@@ -1992,7 +1992,7 @@ msgstr "URL pública"
msgid "Publish"
msgstr "Publicar"
#: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/menu_bar.ex:245
#, elixir-autogen, elixir-format
msgid "Publish Selected"
msgstr "Publicar seleccionados"
@@ -2025,7 +2025,7 @@ msgstr "Publicación"
msgid "Quick Actions"
msgstr "Acciones rápidas"
#: lib/bds/desktop/menu_bar.ex:191
#: lib/bds/desktop/menu_bar.ex:222
#, elixir-autogen, elixir-format
msgid "Quit"
msgstr "Salir"
@@ -2035,12 +2035,12 @@ msgstr "Salir"
msgid "Ready to import:"
msgstr "Listo para importar:"
#: lib/bds/desktop/menu_bar.ex:217
#: lib/bds/desktop/menu_bar.ex:248
#, elixir-autogen, elixir-format
msgid "Rebuild Database"
msgstr "Reconstruir base de datos"
#: lib/bds/desktop/menu_bar.ex:219
#: lib/bds/desktop/menu_bar.ex:250
#: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381
#, elixir-autogen, elixir-format
msgid "Rebuild Embedding Index"
@@ -2071,7 +2071,7 @@ msgstr "Reconstruir plantillas desde archivos"
msgid "Rebuild filesystem-backed records and thumbnails"
msgstr "Reconstruir registros respaldados por el sistema de archivos y miniaturas"
#: lib/bds/desktop/menu_bar.ex:193
#: lib/bds/desktop/menu_bar.ex:224
#, elixir-autogen, elixir-format
msgid "Redo"
msgstr "Rehacer"
@@ -2098,7 +2098,7 @@ msgstr "Actualizar modelos en línea"
msgid "Refresh Translation"
msgstr "Actualizar traducción"
#: lib/bds/desktop/menu_bar.ex:221
#: lib/bds/desktop/menu_bar.ex:252
#, elixir-autogen, elixir-format
msgid "Regenerate Calendar"
msgstr "Regenerar calendario"
@@ -2108,12 +2108,12 @@ msgstr "Regenerar calendario"
msgid "Regenerate Missing Thumbnails"
msgstr "Regenerar miniaturas faltantes"
#: lib/bds/desktop/menu_bar.ex:218
#: lib/bds/desktop/menu_bar.ex:249
#, elixir-autogen, elixir-format
msgid "Reindex Text"
msgstr "Reindexar texto"
#: lib/bds/desktop/menu_bar.ex:208
#: lib/bds/desktop/menu_bar.ex:239
#, elixir-autogen, elixir-format
msgid "Reload"
msgstr "Recargar"
@@ -2144,7 +2144,7 @@ msgstr "Eliminar etiqueta"
msgid "Render in Lists"
msgstr "Mostrar en listas"
#: lib/bds/desktop/menu_bar.ex:200
#: lib/bds/desktop/menu_bar.ex:231
#, elixir-autogen, elixir-format
msgid "Replace"
msgstr "Reemplazar"
@@ -2161,12 +2161,12 @@ msgstr "Reemplazar archivo"
msgid "Replace Media File"
msgstr "Reemplazar archivo de medios"
#: lib/bds/desktop/menu_bar.ex:236
#: lib/bds/desktop/menu_bar.ex:267
#, elixir-autogen, elixir-format
msgid "Report Issue"
msgstr "Informar de problema"
#: lib/bds/desktop/menu_bar.ex:210
#: lib/bds/desktop/menu_bar.ex:241
#, elixir-autogen, elixir-format
msgid "Reset Zoom"
msgstr "Restablecer zoom"
@@ -2221,7 +2221,7 @@ msgstr "Ejecutar"
msgid "SSH Mode"
msgstr "Modo SSH"
#: lib/bds/desktop/menu_bar.ex:187
#: lib/bds/desktop/menu_bar.ex:216
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:89
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:299
#: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:13
@@ -2340,7 +2340,7 @@ msgstr "Buscar en la configuración"
msgid "Select & Analyze"
msgstr "Seleccionar y analizar"
#: lib/bds/desktop/menu_bar.ex:198
#: lib/bds/desktop/menu_bar.ex:229
#, elixir-autogen, elixir-format
msgid "Select All"
msgstr "Seleccionar todo"
@@ -2552,7 +2552,7 @@ msgstr "Nombre de la etiqueta"
msgid "Tags"
msgstr "Etiquetas"
#: lib/bds/desktop/shell_live.ex:784
#: lib/bds/desktop/shell_live.ex:786
#: lib/bds/desktop/shell_live/panel_renderer.ex:54
#, elixir-autogen, elixir-format
msgid "Tasks"
@@ -2648,12 +2648,12 @@ msgstr "Este elemento esta referenciado por:"
msgid "Title"
msgstr "Titulo"
#: lib/bds/desktop/menu_bar.ex:206
#: lib/bds/desktop/menu_bar.ex:237
#, elixir-autogen, elixir-format
msgid "Toggle Assistant Sidebar"
msgstr "Alternar asistente"
#: lib/bds/desktop/menu_bar.ex:207
#: lib/bds/desktop/menu_bar.ex:238
#, elixir-autogen, elixir-format
msgid "Toggle Dev Tools"
msgstr "Alternar herramientas de desarrollo"
@@ -2664,17 +2664,17 @@ msgstr "Alternar herramientas de desarrollo"
msgid "Toggle Filters"
msgstr "Alternar filtros"
#: lib/bds/desktop/menu_bar.ex:213
#: lib/bds/desktop/menu_bar.ex:244
#, elixir-autogen, elixir-format
msgid "Toggle Full Screen"
msgstr "Pantalla completa"
#: lib/bds/desktop/menu_bar.ex:205
#: lib/bds/desktop/menu_bar.ex:236
#, elixir-autogen, elixir-format
msgid "Toggle Panel"
msgstr "Alternar panel"
#: lib/bds/desktop/menu_bar.ex:204
#: lib/bds/desktop/menu_bar.ex:235
#, elixir-autogen, elixir-format
msgid "Toggle Sidebar"
msgstr "Alternar barra lateral"
@@ -2770,7 +2770,7 @@ msgstr "UI"
msgid "URL"
msgstr "URL"
#: lib/bds/desktop/menu_bar.ex:192
#: lib/bds/desktop/menu_bar.ex:223
#, elixir-autogen, elixir-format
msgid "Undo"
msgstr "Deshacer"
@@ -2820,7 +2820,7 @@ msgstr "Actualizado"
msgid "Updated URLs"
msgstr "URLs actualizadas"
#: lib/bds/desktop/menu_bar.ex:228
#: lib/bds/desktop/menu_bar.ex:259
#, elixir-autogen, elixir-format
msgid "Upload Site"
msgstr "Subir sitio"
@@ -2847,22 +2847,22 @@ msgstr "Nombre de usuario"
msgid "Validate"
msgstr "Validar"
#: lib/bds/desktop/menu_bar.ex:227
#: lib/bds/desktop/menu_bar.ex:258
#, elixir-autogen, elixir-format
msgid "Validate Site"
msgstr "Validar sitio"
#: lib/bds/desktop/menu_bar.ex:222
#: lib/bds/desktop/menu_bar.ex:253
#, elixir-autogen, elixir-format
msgid "Validate Translations"
msgstr "Validar traducciones"
#: lib/bds/desktop/menu_bar.ex:180
#: lib/bds/desktop/menu_bar.ex:209
#, elixir-autogen, elixir-format
msgid "View"
msgstr "Ver"
#: lib/bds/desktop/menu_bar.ex:235
#: lib/bds/desktop/menu_bar.ex:266
#, elixir-autogen, elixir-format
msgid "View on GitHub"
msgstr "Ver en GitHub"
@@ -2906,12 +2906,12 @@ msgstr "Ajustar líneas largas"
msgid "You"
msgstr "Tú"
#: lib/bds/desktop/menu_bar.ex:211
#: lib/bds/desktop/menu_bar.ex:242
#, elixir-autogen, elixir-format
msgid "Zoom In"
msgstr "Acercar"
#: lib/bds/desktop/menu_bar.ex:212
#: lib/bds/desktop/menu_bar.ex:243
#, elixir-autogen, elixir-format
msgid "Zoom Out"
msgstr "Alejar"
@@ -3233,12 +3233,12 @@ msgstr "Bienvenido al asistente de IA"
msgid "Comparing database and filesystem metadata"
msgstr "Comparando metadatos de la base de datos y del sistema de archivos"
#: lib/bds/desktop/shell_live.ex:682
#: lib/bds/desktop/shell_live.ex:684
#, elixir-autogen, elixir-format
msgid "Added %{count} images to post"
msgstr "%{count} imágenes añadidas a la publicación"
#: lib/bds/desktop/shell_live.ex:650
#: lib/bds/desktop/shell_live.ex:652
#, elixir-autogen, elixir-format
msgid "Added %{title}"
msgstr "%{title} añadido"
@@ -3258,18 +3258,18 @@ msgstr "Guía del usuario para flujos editoriales, medios, plantillas, traducci
msgid "Image Import Concurrency"
msgstr "Importación simultánea de imágenes"
#: lib/bds/desktop/shell_live.ex:442
#: lib/bds/desktop/shell_live.ex:455
#: lib/bds/desktop/shell_live.ex:649
#: lib/bds/desktop/shell_live.ex:681
#: lib/bds/desktop/shell_live.ex:692
#: lib/bds/desktop/shell_live.ex:703
#: lib/bds/desktop/shell_live.ex:444
#: lib/bds/desktop/shell_live.ex:457
#: lib/bds/desktop/shell_live.ex:651
#: lib/bds/desktop/shell_live.ex:683
#: lib/bds/desktop/shell_live.ex:694
#: lib/bds/desktop/shell_live.ex:705
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:420
#, elixir-autogen, elixir-format
msgid "Add Gallery Images"
msgstr "Añadir imágenes a la galería"
#: lib/bds/desktop/shell_live.ex:704
#: lib/bds/desktop/shell_live.ex:706
#, elixir-autogen, elixir-format
msgid "Failed to process %{path}: %{reason}"
msgstr "No se pudo procesar %{path}: %{reason}"
@@ -3460,12 +3460,12 @@ msgstr "renombrado"
msgid "untracked"
msgstr "sin seguimiento"
#: lib/bds/desktop/shell_live.ex:810
#: lib/bds/desktop/shell_live.ex:812
#, elixir-autogen, elixir-format
msgid "Blogmark"
msgstr "Blogmark"
#: lib/bds/desktop/shell_live.ex:853
#: lib/bds/desktop/shell_live.ex:855
#, elixir-autogen, elixir-format
msgid "Open a project before importing a blogmark."
msgstr "Abre un proyecto antes de importar un blogmark."
@@ -3506,7 +3506,7 @@ msgstr "Eliminar etiqueta"
msgid "Failed to copy bookmarklet to clipboard"
msgstr "Error al copiar el bookmarklet al portapapeles"
#: lib/bds/desktop/shell_live.ex:822
#: lib/bds/desktop/shell_live.ex:824
#, elixir-autogen, elixir-format
msgid "The project this blogmark targets does not exist here."
msgstr "El proyecto al que apunta este blogmark no existe aquí."
@@ -3516,7 +3516,7 @@ msgstr "El proyecto al que apunta este blogmark no existe aquí."
msgid "Suggested tags"
msgstr "Etiquetas sugeridas"
#: lib/bds/desktop/menu_bar.ex:226
#: lib/bds/desktop/menu_bar.ex:257
#, elixir-autogen, elixir-format
msgid "Force Render Site"
msgstr "Forzar la regeneración del sitio"
@@ -3531,22 +3531,22 @@ msgstr "Reconstruir enlaces de medios"
msgid "Rebuild Post Links"
msgstr "Reconstruir enlaces de entradas"
#: lib/bds/desktop/menu_bar.ex:231
#: lib/bds/desktop/menu_bar.ex:262
#, elixir-autogen, elixir-format
msgid "Bring All to Front"
msgstr "Traer todo al frente"
#: lib/bds/desktop/menu_bar.ex:229
#: lib/bds/desktop/menu_bar.ex:260
#, elixir-autogen, elixir-format
msgid "Minimize"
msgstr "Minimizar"
#: lib/bds/desktop/menu_bar.ex:182
#: lib/bds/desktop/menu_bar.ex:211
#, elixir-autogen, elixir-format
msgid "Window"
msgstr "Ventana"
#: lib/bds/desktop/menu_bar.ex:230
#: lib/bds/desktop/menu_bar.ex:261
#, elixir-autogen, elixir-format
msgid "Zoom"
msgstr "Ampliar/reducir"
@@ -3702,3 +3702,35 @@ msgstr "intro abrir · n nueva entrada · 1-5 vistas · r actualizar · ctrl+q s
#, elixir-autogen, elixir-format
msgid "esc to close"
msgstr "esc para cerrar"
#: lib/bds/desktop/menu_bar.ex:83
#: lib/bds/desktop/shell_live.ex:1110
#, elixir-autogen, elixir-format
msgid "Connect to Server"
msgstr "Conectar al servidor"
#: lib/bds/desktop/menu_bar.ex:218
#, elixir-autogen, elixir-format
msgid "Connect to Server…"
msgstr "Conectar al servidor…"
#: lib/bds/desktop/menu_bar.ex:84
#, elixir-autogen, elixir-format
msgid "Connection failed: %{reason}"
msgstr "Error de conexión: %{reason}"
#: lib/bds/desktop/menu_bar.ex:219
#, elixir-autogen, elixir-format
msgid "Disconnect from Server"
msgstr "Desconectar del servidor"
#: lib/bds/desktop/menu_bar.ex:72
#: lib/bds/desktop/shell_live.ex:1097
#, elixir-autogen, elixir-format
msgid "Server address (user@host or user@host:port), public-key auth:"
msgstr "Dirección del servidor (user@host o user@host:port), autenticación de clave pública:"
#: lib/bds/desktop/remote_connection.ex:82
#, elixir-autogen, elixir-format
msgid "Use the form user@host or user@host:port."
msgstr "Usa el formato user@host o user@host:port."

View File

@@ -110,12 +110,12 @@ msgstr "LIA suggère des correspondances entre nouveaux éléments et éléme
msgid "API"
msgstr "API"
#: lib/bds/desktop/menu_bar.ex:234
#: lib/bds/desktop/menu_bar.ex:265
#, elixir-autogen, elixir-format
msgid "API Documentation"
msgstr "Documentation API"
#: lib/bds/desktop/menu_bar.ex:232
#: lib/bds/desktop/menu_bar.ex:263
#, elixir-autogen, elixir-format
msgid "About"
msgstr "À propos"
@@ -341,7 +341,7 @@ msgstr "Auteur"
msgid "Auto"
msgstr "Automatique"
#: lib/bds/desktop/shell_live.ex:443
#: lib/bds/desktop/shell_live.ex:445
#: lib/bds/desktop/shell_live/chat_editor.ex:234
#: lib/bds/desktop/shell_live/media_editor.ex:171
#: lib/bds/desktop/shell_live/media_editor.ex:364
@@ -372,7 +372,7 @@ msgstr "Langues disponibles"
msgid "Backlinks"
msgstr "Rétroliens"
#: lib/bds/desktop/menu_bar.ex:181
#: lib/bds/desktop/menu_bar.ex:210
#, elixir-autogen, elixir-format
msgid "Blog"
msgstr "Blog"
@@ -491,7 +491,7 @@ msgstr "Valeurs par défaut des catégories, options de rendu et liaison des mod
msgid "Category name is required"
msgstr "Le nom de la catégorie est requis"
#: lib/bds/desktop/shell_live.ex:789
#: lib/bds/desktop/shell_live.ex:791
#: lib/bds/desktop/shell_live/chat_editor.ex:87
#: lib/bds/desktop/shell_live/chat_editor.ex:233
#: lib/bds/desktop/shell_live/chat_editor.ex:323
@@ -549,7 +549,7 @@ msgstr "Effacer les étiquettes"
msgid "Click to %{action} mapping"
msgstr "Cliquer pour %{action} le mapping"
#: lib/bds/desktop/menu_bar.ex:190
#: lib/bds/desktop/menu_bar.ex:221
#, elixir-autogen, elixir-format
msgid "Close Tab"
msgstr "Fermer longlet"
@@ -600,7 +600,7 @@ msgstr "Contenu"
msgid "Content Categories"
msgstr "Catégories de contenu"
#: lib/bds/desktop/menu_bar.ex:195
#: lib/bds/desktop/menu_bar.ex:226
#, elixir-autogen, elixir-format
msgid "Copy"
msgstr "Copier"
@@ -653,7 +653,7 @@ msgstr "Créer un mot-clé"
msgid "Created"
msgstr "Créé"
#: lib/bds/desktop/menu_bar.ex:194
#: lib/bds/desktop/menu_bar.ex:225
#, elixir-autogen, elixir-format
msgid "Cut"
msgstr "Couper"
@@ -719,7 +719,7 @@ msgstr "Mode dédition par défaut"
msgid "Default editing mode and diff presentation"
msgstr "Mode dédition par défaut et présentation des diffs"
#: lib/bds/desktop/menu_bar.ex:197
#: lib/bds/desktop/menu_bar.ex:228
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:98
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:166
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:116
@@ -862,7 +862,7 @@ msgstr "Texte affiche"
msgid "Do Not Translate"
msgstr "Ne pas traduire"
#: lib/bds/desktop/menu_bar.ex:233
#: lib/bds/desktop/menu_bar.ex:264
#: lib/bds/help_docs.ex:14
#: lib/bds/ui/registry.ex:118
#, elixir-autogen, elixir-format
@@ -895,12 +895,12 @@ msgstr "Faire glisser lentrée du menu"
msgid "ETA: %{value}"
msgstr "Temps restant : %{value}"
#: lib/bds/desktop/menu_bar.ex:179
#: lib/bds/desktop/menu_bar.ex:208
#, elixir-autogen, elixir-format
msgid "Edit"
msgstr "Édition"
#: lib/bds/desktop/menu_bar.ex:216
#: lib/bds/desktop/menu_bar.ex:247
#, elixir-autogen, elixir-format
msgid "Edit Menu"
msgstr "Modifier le menu"
@@ -1006,7 +1006,7 @@ msgstr "Externe"
msgid "Extra URLs"
msgstr "URLs supplémentaires"
#: lib/bds/desktop/menu_bar.ex:178
#: lib/bds/desktop/menu_bar.ex:207
#: lib/bds/desktop/shell_live/import_editor.ex:882
#: lib/bds/desktop/shell_live/misc_editor_html/misc_editor.html.heex:157
#, elixir-autogen, elixir-format
@@ -1028,17 +1028,17 @@ msgstr "Fichier vers BD"
msgid "Filename"
msgstr "Nom de fichier"
#: lib/bds/desktop/menu_bar.ex:223
#: lib/bds/desktop/menu_bar.ex:254
#, elixir-autogen, elixir-format
msgid "Fill Missing Translations"
msgstr "Compléter les traductions manquantes"
#: lib/bds/desktop/menu_bar.ex:199
#: lib/bds/desktop/menu_bar.ex:230
#, elixir-autogen, elixir-format
msgid "Find"
msgstr "Rechercher"
#: lib/bds/desktop/menu_bar.ex:224
#: lib/bds/desktop/menu_bar.ex:255
#, elixir-autogen, elixir-format
msgid "Find Duplicate Posts"
msgstr "Trouver les doublons"
@@ -1053,7 +1053,7 @@ msgstr "Trouver les doublons"
msgid "Find Duplicates"
msgstr "Trouver les doublons"
#: lib/bds/desktop/menu_bar.ex:209
#: lib/bds/desktop/menu_bar.ex:240
#, elixir-autogen, elixir-format
msgid "Force Reload"
msgstr "Recharger de force"
@@ -1064,12 +1064,12 @@ msgstr "Recharger de force"
msgid "Gallery"
msgstr "Galerie"
#: lib/bds/desktop/menu_bar.ex:225
#: lib/bds/desktop/menu_bar.ex:256
#, elixir-autogen, elixir-format
msgid "Generate Site"
msgstr "Générer le site"
#: lib/bds/desktop/shell_live.ex:790
#: lib/bds/desktop/shell_live.ex:792
#: lib/bds/desktop/shell_live/socket_state.ex:109
#: lib/bds/ui/sidebar.ex:789
#, elixir-autogen, elixir-format
@@ -1083,13 +1083,13 @@ msgid "Git Diff"
msgstr "Diff Git"
#: lib/bds/desktop/shell_data.ex:228
#: lib/bds/desktop/shell_live.ex:786
#: lib/bds/desktop/shell_live.ex:788
#: lib/bds/desktop/shell_live/panel_renderer.ex:171
#, elixir-autogen, elixir-format
msgid "Git Log"
msgstr "Journal Git"
#: lib/bds/desktop/menu_bar.ex:183
#: lib/bds/desktop/menu_bar.ex:212
#, elixir-autogen, elixir-format
msgid "Help"
msgstr "Aide"
@@ -1176,7 +1176,7 @@ msgstr "Importer %{count} éléments"
msgid "Import (new slug)"
msgstr "Importer (nouveau slug)"
#: lib/bds/desktop/menu_bar.ex:186
#: lib/bds/desktop/menu_bar.ex:215
#, elixir-autogen, elixir-format
msgid "Import Media"
msgstr "Importer des médias"
@@ -1206,9 +1206,9 @@ msgstr "Définitions dimport"
msgid "Import failed: %{error}"
msgstr "Échec de limport : %{error}"
#: lib/bds/desktop/shell_live.ex:606
#: lib/bds/desktop/shell_live.ex:902
#: lib/bds/desktop/shell_live.ex:908
#: lib/bds/desktop/shell_live.ex:608
#: lib/bds/desktop/shell_live.ex:904
#: lib/bds/desktop/shell_live.ex:910
#: lib/bds/desktop/shell_live/sidebar_create.ex:47
#, elixir-autogen, elixir-format
msgid "Import media"
@@ -1378,7 +1378,7 @@ msgstr "Markdown"
msgid "Max Posts Per Page"
msgstr "Nombre maximal darticles par page"
#: lib/bds/desktop/menu_bar.ex:203
#: lib/bds/desktop/menu_bar.ex:234
#: lib/bds/desktop/shell_live/media_editor.ex:509
#: lib/bds/desktop/shell_live/media_editor.ex:513
#: lib/bds/desktop/shell_live/misc_editor.ex:735
@@ -1426,7 +1426,7 @@ msgstr "Fusionner les tags"
msgid "Metadata"
msgstr "Métadonnées"
#: lib/bds/desktop/menu_bar.ex:220
#: lib/bds/desktop/menu_bar.ex:251
#: 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
@@ -1473,7 +1473,7 @@ msgstr "Nouvelle définition"
msgid "New Page"
msgstr "Nouvelle page"
#: lib/bds/desktop/menu_bar.ex:185
#: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/shell_live/sidebar_create.ex:41
#: lib/bds/tui.ex:103
#, elixir-autogen, elixir-format
@@ -1746,7 +1746,7 @@ msgstr "Modèle de titres en ligne"
msgid "Open"
msgstr "Ouvrir"
#: lib/bds/desktop/menu_bar.ex:189
#: lib/bds/desktop/menu_bar.ex:220
#: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:382
#, elixir-autogen, elixir-format
msgid "Open Data Folder"
@@ -1763,7 +1763,7 @@ msgstr "Ouvrir un blog existant"
msgid "Open Settings"
msgstr "Ouvrir les Réglages"
#: lib/bds/desktop/menu_bar.ex:188
#: lib/bds/desktop/menu_bar.ex:217
#, elixir-autogen, elixir-format
msgid "Open in Browser"
msgstr "Ouvrir dans le navigateur"
@@ -1794,7 +1794,7 @@ msgstr "Autre"
msgid "Other (%{count})"
msgstr "Autres (%{count})"
#: lib/bds/desktop/shell_live.ex:785
#: lib/bds/desktop/shell_live.ex:787
#: lib/bds/desktop/shell_live/panel_renderer.ex:83
#, elixir-autogen, elixir-format
msgid "Output"
@@ -1842,7 +1842,7 @@ msgstr "Paire ignorée"
msgid "Parsing WXR file..."
msgstr "Analyse du fichier WXR..."
#: lib/bds/desktop/menu_bar.ex:196
#: lib/bds/desktop/menu_bar.ex:227
#, elixir-autogen, elixir-format
msgid "Paste"
msgstr "Coller"
@@ -1908,7 +1908,7 @@ msgstr "Article publié"
msgid "Post saved"
msgstr "Article enregistré"
#: lib/bds/desktop/menu_bar.ex:202
#: 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:451
@@ -1924,7 +1924,7 @@ msgstr "Articles"
msgid "Posts (%{count})"
msgstr "Articles (%{count})"
#: lib/bds/desktop/menu_bar.ex:201
#: lib/bds/desktop/menu_bar.ex:232
#, elixir-autogen, elixir-format
msgid "Preferences"
msgstr "Préférences"
@@ -1940,7 +1940,7 @@ msgstr "Aperçu"
msgid "Preview Mode"
msgstr "Mode aperçu"
#: lib/bds/desktop/menu_bar.ex:215
#: lib/bds/desktop/menu_bar.ex:246
#, elixir-autogen, elixir-format
msgid "Preview Post"
msgstr "Aperçu de larticle"
@@ -1992,7 +1992,7 @@ msgstr "URL publique"
msgid "Publish"
msgstr "Publier"
#: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/menu_bar.ex:245
#, elixir-autogen, elixir-format
msgid "Publish Selected"
msgstr "Publier la sélection"
@@ -2025,7 +2025,7 @@ msgstr "Publication"
msgid "Quick Actions"
msgstr "Actions rapides"
#: lib/bds/desktop/menu_bar.ex:191
#: lib/bds/desktop/menu_bar.ex:222
#, elixir-autogen, elixir-format
msgid "Quit"
msgstr "Quitter"
@@ -2035,12 +2035,12 @@ msgstr "Quitter"
msgid "Ready to import:"
msgstr "Prêt à importer :"
#: lib/bds/desktop/menu_bar.ex:217
#: lib/bds/desktop/menu_bar.ex:248
#, elixir-autogen, elixir-format
msgid "Rebuild Database"
msgstr "Reconstruire la base de données"
#: lib/bds/desktop/menu_bar.ex:219
#: lib/bds/desktop/menu_bar.ex:250
#: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381
#, elixir-autogen, elixir-format
msgid "Rebuild Embedding Index"
@@ -2071,7 +2071,7 @@ msgstr "Reconstruire les modèles depuis les fichiers"
msgid "Rebuild filesystem-backed records and thumbnails"
msgstr "Reconstruire les enregistrements basés sur le système de fichiers et les vignettes"
#: lib/bds/desktop/menu_bar.ex:193
#: lib/bds/desktop/menu_bar.ex:224
#, elixir-autogen, elixir-format
msgid "Redo"
msgstr "Rétablir"
@@ -2098,7 +2098,7 @@ msgstr "Actualiser les modèles en ligne"
msgid "Refresh Translation"
msgstr "Actualiser la traduction"
#: lib/bds/desktop/menu_bar.ex:221
#: lib/bds/desktop/menu_bar.ex:252
#, elixir-autogen, elixir-format
msgid "Regenerate Calendar"
msgstr "Régénérer le calendrier"
@@ -2108,12 +2108,12 @@ msgstr "Régénérer le calendrier"
msgid "Regenerate Missing Thumbnails"
msgstr "Régénérer les vignettes manquantes"
#: lib/bds/desktop/menu_bar.ex:218
#: lib/bds/desktop/menu_bar.ex:249
#, elixir-autogen, elixir-format
msgid "Reindex Text"
msgstr "Réindexer le texte"
#: lib/bds/desktop/menu_bar.ex:208
#: lib/bds/desktop/menu_bar.ex:239
#, elixir-autogen, elixir-format
msgid "Reload"
msgstr "Recharger"
@@ -2144,7 +2144,7 @@ msgstr "Supprimer le mot-clé"
msgid "Render in Lists"
msgstr "Afficher dans les listes"
#: lib/bds/desktop/menu_bar.ex:200
#: lib/bds/desktop/menu_bar.ex:231
#, elixir-autogen, elixir-format
msgid "Replace"
msgstr "Remplacer"
@@ -2161,12 +2161,12 @@ msgstr "Remplacer le fichier"
msgid "Replace Media File"
msgstr "Remplacer le fichier média"
#: lib/bds/desktop/menu_bar.ex:236
#: lib/bds/desktop/menu_bar.ex:267
#, elixir-autogen, elixir-format
msgid "Report Issue"
msgstr "Signaler un problème"
#: lib/bds/desktop/menu_bar.ex:210
#: lib/bds/desktop/menu_bar.ex:241
#, elixir-autogen, elixir-format
msgid "Reset Zoom"
msgstr "Réinitialiser le zoom"
@@ -2221,7 +2221,7 @@ msgstr "Exécuter"
msgid "SSH Mode"
msgstr "Mode SSH"
#: lib/bds/desktop/menu_bar.ex:187
#: lib/bds/desktop/menu_bar.ex:216
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:89
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:299
#: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:13
@@ -2340,7 +2340,7 @@ msgstr "Rechercher dans les paramètres"
msgid "Select & Analyze"
msgstr "Sélectionner et analyser"
#: lib/bds/desktop/menu_bar.ex:198
#: lib/bds/desktop/menu_bar.ex:229
#, elixir-autogen, elixir-format
msgid "Select All"
msgstr "Tout sélectionner"
@@ -2552,7 +2552,7 @@ msgstr "Nom du mot-clé"
msgid "Tags"
msgstr "Tags"
#: lib/bds/desktop/shell_live.ex:784
#: lib/bds/desktop/shell_live.ex:786
#: lib/bds/desktop/shell_live/panel_renderer.ex:54
#, elixir-autogen, elixir-format
msgid "Tasks"
@@ -2648,12 +2648,12 @@ msgstr "Cet element est reference par :"
msgid "Title"
msgstr "Titre"
#: lib/bds/desktop/menu_bar.ex:206
#: lib/bds/desktop/menu_bar.ex:237
#, elixir-autogen, elixir-format
msgid "Toggle Assistant Sidebar"
msgstr "Afficher/masquer lassistant"
#: lib/bds/desktop/menu_bar.ex:207
#: lib/bds/desktop/menu_bar.ex:238
#, elixir-autogen, elixir-format
msgid "Toggle Dev Tools"
msgstr "Afficher/masquer les outils de développement"
@@ -2664,17 +2664,17 @@ msgstr "Afficher/masquer les outils de développement"
msgid "Toggle Filters"
msgstr "Afficher/masquer les filtres"
#: lib/bds/desktop/menu_bar.ex:213
#: lib/bds/desktop/menu_bar.ex:244
#, elixir-autogen, elixir-format
msgid "Toggle Full Screen"
msgstr "Plein écran"
#: lib/bds/desktop/menu_bar.ex:205
#: lib/bds/desktop/menu_bar.ex:236
#, elixir-autogen, elixir-format
msgid "Toggle Panel"
msgstr "Afficher/masquer le panneau"
#: lib/bds/desktop/menu_bar.ex:204
#: lib/bds/desktop/menu_bar.ex:235
#, elixir-autogen, elixir-format
msgid "Toggle Sidebar"
msgstr "Afficher/masquer la barre latérale"
@@ -2770,7 +2770,7 @@ msgstr "UI"
msgid "URL"
msgstr "URL"
#: lib/bds/desktop/menu_bar.ex:192
#: lib/bds/desktop/menu_bar.ex:223
#, elixir-autogen, elixir-format
msgid "Undo"
msgstr "Annuler"
@@ -2820,7 +2820,7 @@ msgstr "Mis à jour"
msgid "Updated URLs"
msgstr "URLs mises à jour"
#: lib/bds/desktop/menu_bar.ex:228
#: lib/bds/desktop/menu_bar.ex:259
#, elixir-autogen, elixir-format
msgid "Upload Site"
msgstr "Téléverser le site"
@@ -2847,22 +2847,22 @@ msgstr "Nom dutilisateur"
msgid "Validate"
msgstr "Valider"
#: lib/bds/desktop/menu_bar.ex:227
#: lib/bds/desktop/menu_bar.ex:258
#, elixir-autogen, elixir-format
msgid "Validate Site"
msgstr "Valider le site"
#: lib/bds/desktop/menu_bar.ex:222
#: lib/bds/desktop/menu_bar.ex:253
#, elixir-autogen, elixir-format
msgid "Validate Translations"
msgstr "Valider les traductions"
#: lib/bds/desktop/menu_bar.ex:180
#: lib/bds/desktop/menu_bar.ex:209
#, elixir-autogen, elixir-format
msgid "View"
msgstr "Affichage"
#: lib/bds/desktop/menu_bar.ex:235
#: lib/bds/desktop/menu_bar.ex:266
#, elixir-autogen, elixir-format
msgid "View on GitHub"
msgstr "Voir sur GitHub"
@@ -2906,12 +2906,12 @@ msgstr "Renvoyer les longues lignes"
msgid "You"
msgstr "Vous"
#: lib/bds/desktop/menu_bar.ex:211
#: lib/bds/desktop/menu_bar.ex:242
#, elixir-autogen, elixir-format
msgid "Zoom In"
msgstr "Zoom avant"
#: lib/bds/desktop/menu_bar.ex:212
#: lib/bds/desktop/menu_bar.ex:243
#, elixir-autogen, elixir-format
msgid "Zoom Out"
msgstr "Zoom arrière"
@@ -3233,12 +3233,12 @@ msgstr "Bienvenue dans lassistant IA"
msgid "Comparing database and filesystem metadata"
msgstr "Comparaison des métadonnées entre la base et le système de fichiers"
#: lib/bds/desktop/shell_live.ex:682
#: lib/bds/desktop/shell_live.ex:684
#, elixir-autogen, elixir-format
msgid "Added %{count} images to post"
msgstr "%{count} images ajoutées à l'article"
#: lib/bds/desktop/shell_live.ex:650
#: lib/bds/desktop/shell_live.ex:652
#, elixir-autogen, elixir-format
msgid "Added %{title}"
msgstr "%{title} ajouté"
@@ -3258,18 +3258,18 @@ msgstr "Guide utilisateur pour les flux éditoriaux, médias, modèles, traducti
msgid "Image Import Concurrency"
msgstr "Importation simultanée d'images"
#: lib/bds/desktop/shell_live.ex:442
#: lib/bds/desktop/shell_live.ex:455
#: lib/bds/desktop/shell_live.ex:649
#: lib/bds/desktop/shell_live.ex:681
#: lib/bds/desktop/shell_live.ex:692
#: lib/bds/desktop/shell_live.ex:703
#: lib/bds/desktop/shell_live.ex:444
#: lib/bds/desktop/shell_live.ex:457
#: lib/bds/desktop/shell_live.ex:651
#: lib/bds/desktop/shell_live.ex:683
#: lib/bds/desktop/shell_live.ex:694
#: lib/bds/desktop/shell_live.ex:705
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:420
#, elixir-autogen, elixir-format
msgid "Add Gallery Images"
msgstr "Ajouter des images à la galerie"
#: lib/bds/desktop/shell_live.ex:704
#: lib/bds/desktop/shell_live.ex:706
#, elixir-autogen, elixir-format
msgid "Failed to process %{path}: %{reason}"
msgstr "Impossible de traiter %{path} : %{reason}"
@@ -3460,12 +3460,12 @@ msgstr "renommé"
msgid "untracked"
msgstr "non suivi"
#: lib/bds/desktop/shell_live.ex:810
#: lib/bds/desktop/shell_live.ex:812
#, elixir-autogen, elixir-format
msgid "Blogmark"
msgstr "Blogmark"
#: lib/bds/desktop/shell_live.ex:853
#: lib/bds/desktop/shell_live.ex:855
#, elixir-autogen, elixir-format
msgid "Open a project before importing a blogmark."
msgstr "Ouvrez un projet avant dimporter un blogmark."
@@ -3506,7 +3506,7 @@ msgstr "Supprimer le tag"
msgid "Failed to copy bookmarklet to clipboard"
msgstr "Échec de la copie du bookmarklet dans le presse-papiers"
#: lib/bds/desktop/shell_live.ex:822
#: lib/bds/desktop/shell_live.ex:824
#, elixir-autogen, elixir-format
msgid "The project this blogmark targets does not exist here."
msgstr "Le projet ciblé par ce blogmark n'existe pas ici."
@@ -3516,7 +3516,7 @@ msgstr "Le projet ciblé par ce blogmark n'existe pas ici."
msgid "Suggested tags"
msgstr "Tags suggérés"
#: lib/bds/desktop/menu_bar.ex:226
#: lib/bds/desktop/menu_bar.ex:257
#, elixir-autogen, elixir-format
msgid "Force Render Site"
msgstr "Forcer la régénération du site"
@@ -3531,22 +3531,22 @@ msgstr "Reconstruire les liens des médias"
msgid "Rebuild Post Links"
msgstr "Reconstruire les liens des articles"
#: lib/bds/desktop/menu_bar.ex:231
#: lib/bds/desktop/menu_bar.ex:262
#, elixir-autogen, elixir-format
msgid "Bring All to Front"
msgstr "Tout ramener au premier plan"
#: lib/bds/desktop/menu_bar.ex:229
#: lib/bds/desktop/menu_bar.ex:260
#, elixir-autogen, elixir-format
msgid "Minimize"
msgstr "Réduire"
#: lib/bds/desktop/menu_bar.ex:182
#: lib/bds/desktop/menu_bar.ex:211
#, elixir-autogen, elixir-format
msgid "Window"
msgstr "Fenêtre"
#: lib/bds/desktop/menu_bar.ex:230
#: lib/bds/desktop/menu_bar.ex:261
#, elixir-autogen, elixir-format
msgid "Zoom"
msgstr "Réduire/agrandir"
@@ -3702,3 +3702,35 @@ msgstr "entrée ouvrir · n nouvel article · 1-5 vues · r actualiser · ctrl+q
#, elixir-autogen, elixir-format
msgid "esc to close"
msgstr "échap pour fermer"
#: lib/bds/desktop/menu_bar.ex:83
#: lib/bds/desktop/shell_live.ex:1110
#, elixir-autogen, elixir-format
msgid "Connect to Server"
msgstr "Se connecter au serveur"
#: lib/bds/desktop/menu_bar.ex:218
#, elixir-autogen, elixir-format
msgid "Connect to Server…"
msgstr "Se connecter au serveur…"
#: lib/bds/desktop/menu_bar.ex:84
#, elixir-autogen, elixir-format
msgid "Connection failed: %{reason}"
msgstr "Échec de la connexion : %{reason}"
#: lib/bds/desktop/menu_bar.ex:219
#, elixir-autogen, elixir-format
msgid "Disconnect from Server"
msgstr "Se déconnecter du serveur"
#: lib/bds/desktop/menu_bar.ex:72
#: lib/bds/desktop/shell_live.ex:1097
#, elixir-autogen, elixir-format
msgid "Server address (user@host or user@host:port), public-key auth:"
msgstr "Adresse du serveur (user@host ou user@host:port), authentification par clé publique :"
#: lib/bds/desktop/remote_connection.ex:82
#, elixir-autogen, elixir-format
msgid "Use the form user@host or user@host:port."
msgstr "Utilisez le format user@host ou user@host:port."

View File

@@ -110,12 +110,12 @@ msgstr "LIA suggerirà mappature da elementi nuovi a quelli esistenti per evi
msgid "API"
msgstr "API"
#: lib/bds/desktop/menu_bar.ex:234
#: lib/bds/desktop/menu_bar.ex:265
#, elixir-autogen, elixir-format
msgid "API Documentation"
msgstr "Documentazione API"
#: lib/bds/desktop/menu_bar.ex:232
#: lib/bds/desktop/menu_bar.ex:263
#, elixir-autogen, elixir-format
msgid "About"
msgstr "Informazioni"
@@ -341,7 +341,7 @@ msgstr "Autore"
msgid "Auto"
msgstr "Automatico"
#: lib/bds/desktop/shell_live.ex:443
#: lib/bds/desktop/shell_live.ex:445
#: lib/bds/desktop/shell_live/chat_editor.ex:234
#: lib/bds/desktop/shell_live/media_editor.ex:171
#: lib/bds/desktop/shell_live/media_editor.ex:364
@@ -372,7 +372,7 @@ msgstr "Lingue disponibili"
msgid "Backlinks"
msgstr "Riferimenti in entrata"
#: lib/bds/desktop/menu_bar.ex:181
#: lib/bds/desktop/menu_bar.ex:210
#, elixir-autogen, elixir-format
msgid "Blog"
msgstr "Blog"
@@ -491,7 +491,7 @@ msgstr "Valori predefiniti delle categorie, opzioni di rendering e collegamento
msgid "Category name is required"
msgstr "Il nome della categoria è obbligatorio"
#: lib/bds/desktop/shell_live.ex:789
#: lib/bds/desktop/shell_live.ex:791
#: lib/bds/desktop/shell_live/chat_editor.ex:87
#: lib/bds/desktop/shell_live/chat_editor.ex:233
#: lib/bds/desktop/shell_live/chat_editor.ex:323
@@ -549,7 +549,7 @@ msgstr "Cancella tag"
msgid "Click to %{action} mapping"
msgstr "Clicca per %{action} la mappatura"
#: lib/bds/desktop/menu_bar.ex:190
#: lib/bds/desktop/menu_bar.ex:221
#, elixir-autogen, elixir-format
msgid "Close Tab"
msgstr "Chiudi scheda"
@@ -600,7 +600,7 @@ msgstr "Contenuti"
msgid "Content Categories"
msgstr "Categorie di contenuto"
#: lib/bds/desktop/menu_bar.ex:195
#: lib/bds/desktop/menu_bar.ex:226
#, elixir-autogen, elixir-format
msgid "Copy"
msgstr "Copia"
@@ -653,7 +653,7 @@ msgstr "Crea tag"
msgid "Created"
msgstr "Creato"
#: lib/bds/desktop/menu_bar.ex:194
#: lib/bds/desktop/menu_bar.ex:225
#, elixir-autogen, elixir-format
msgid "Cut"
msgstr "Taglia"
@@ -719,7 +719,7 @@ msgstr "Modalità editor predefinita"
msgid "Default editing mode and diff presentation"
msgstr "Modalità di modifica predefinita e presentazione dei diff"
#: lib/bds/desktop/menu_bar.ex:197
#: lib/bds/desktop/menu_bar.ex:228
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:98
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:166
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:116
@@ -862,7 +862,7 @@ msgstr "Testo visualizzato"
msgid "Do Not Translate"
msgstr "Non tradurre"
#: lib/bds/desktop/menu_bar.ex:233
#: lib/bds/desktop/menu_bar.ex:264
#: lib/bds/help_docs.ex:14
#: lib/bds/ui/registry.ex:118
#, elixir-autogen, elixir-format
@@ -895,12 +895,12 @@ msgstr "Trascina voce di menu"
msgid "ETA: %{value}"
msgstr "Tempo rimanente: %{value}"
#: lib/bds/desktop/menu_bar.ex:179
#: lib/bds/desktop/menu_bar.ex:208
#, elixir-autogen, elixir-format
msgid "Edit"
msgstr "Modifica"
#: lib/bds/desktop/menu_bar.ex:216
#: lib/bds/desktop/menu_bar.ex:247
#, elixir-autogen, elixir-format
msgid "Edit Menu"
msgstr "Modifica menu"
@@ -1006,7 +1006,7 @@ msgstr "Esterno"
msgid "Extra URLs"
msgstr "URL aggiuntivi"
#: lib/bds/desktop/menu_bar.ex:178
#: lib/bds/desktop/menu_bar.ex:207
#: lib/bds/desktop/shell_live/import_editor.ex:882
#: lib/bds/desktop/shell_live/misc_editor_html/misc_editor.html.heex:157
#, elixir-autogen, elixir-format
@@ -1028,17 +1028,17 @@ msgstr "File su DB"
msgid "Filename"
msgstr "Nome file"
#: lib/bds/desktop/menu_bar.ex:223
#: lib/bds/desktop/menu_bar.ex:254
#, elixir-autogen, elixir-format
msgid "Fill Missing Translations"
msgstr "Completa traduzioni mancanti"
#: lib/bds/desktop/menu_bar.ex:199
#: lib/bds/desktop/menu_bar.ex:230
#, elixir-autogen, elixir-format
msgid "Find"
msgstr "Trova"
#: lib/bds/desktop/menu_bar.ex:224
#: lib/bds/desktop/menu_bar.ex:255
#, elixir-autogen, elixir-format
msgid "Find Duplicate Posts"
msgstr "Trova post duplicati"
@@ -1053,7 +1053,7 @@ msgstr "Trova post duplicati"
msgid "Find Duplicates"
msgstr "Trova duplicati"
#: lib/bds/desktop/menu_bar.ex:209
#: lib/bds/desktop/menu_bar.ex:240
#, elixir-autogen, elixir-format
msgid "Force Reload"
msgstr "Ricarica forzata"
@@ -1064,12 +1064,12 @@ msgstr "Ricarica forzata"
msgid "Gallery"
msgstr "Galleria"
#: lib/bds/desktop/menu_bar.ex:225
#: lib/bds/desktop/menu_bar.ex:256
#, elixir-autogen, elixir-format
msgid "Generate Site"
msgstr "Genera sito"
#: lib/bds/desktop/shell_live.ex:790
#: lib/bds/desktop/shell_live.ex:792
#: lib/bds/desktop/shell_live/socket_state.ex:109
#: lib/bds/ui/sidebar.ex:789
#, elixir-autogen, elixir-format
@@ -1083,13 +1083,13 @@ msgid "Git Diff"
msgstr "Diff Git"
#: lib/bds/desktop/shell_data.ex:228
#: lib/bds/desktop/shell_live.ex:786
#: lib/bds/desktop/shell_live.ex:788
#: lib/bds/desktop/shell_live/panel_renderer.ex:171
#, elixir-autogen, elixir-format
msgid "Git Log"
msgstr "Log Git"
#: lib/bds/desktop/menu_bar.ex:183
#: lib/bds/desktop/menu_bar.ex:212
#, elixir-autogen, elixir-format
msgid "Help"
msgstr "Aiuto"
@@ -1176,7 +1176,7 @@ msgstr "Importa %{count} elementi"
msgid "Import (new slug)"
msgstr "Importa (nuovo slug)"
#: lib/bds/desktop/menu_bar.ex:186
#: lib/bds/desktop/menu_bar.ex:215
#, elixir-autogen, elixir-format
msgid "Import Media"
msgstr "Importa media"
@@ -1206,9 +1206,9 @@ msgstr "Definizioni di importazione"
msgid "Import failed: %{error}"
msgstr "Importazione non riuscita: %{error}"
#: lib/bds/desktop/shell_live.ex:606
#: lib/bds/desktop/shell_live.ex:902
#: lib/bds/desktop/shell_live.ex:908
#: lib/bds/desktop/shell_live.ex:608
#: lib/bds/desktop/shell_live.ex:904
#: lib/bds/desktop/shell_live.ex:910
#: lib/bds/desktop/shell_live/sidebar_create.ex:47
#, elixir-autogen, elixir-format
msgid "Import media"
@@ -1378,7 +1378,7 @@ msgstr "Markdown"
msgid "Max Posts Per Page"
msgstr "Numero massimo di post per pagina"
#: lib/bds/desktop/menu_bar.ex:203
#: lib/bds/desktop/menu_bar.ex:234
#: lib/bds/desktop/shell_live/media_editor.ex:509
#: lib/bds/desktop/shell_live/media_editor.ex:513
#: lib/bds/desktop/shell_live/misc_editor.ex:735
@@ -1426,7 +1426,7 @@ msgstr "Unisci tag"
msgid "Metadata"
msgstr "Metadati"
#: lib/bds/desktop/menu_bar.ex:220
#: lib/bds/desktop/menu_bar.ex:251
#: 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
@@ -1473,7 +1473,7 @@ msgstr "Nuova definizione"
msgid "New Page"
msgstr "Nuova pagina"
#: lib/bds/desktop/menu_bar.ex:185
#: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/shell_live/sidebar_create.ex:41
#: lib/bds/tui.ex:103
#, elixir-autogen, elixir-format
@@ -1746,7 +1746,7 @@ msgstr "Modello titoli online"
msgid "Open"
msgstr "Apri"
#: lib/bds/desktop/menu_bar.ex:189
#: lib/bds/desktop/menu_bar.ex:220
#: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:382
#, elixir-autogen, elixir-format
msgid "Open Data Folder"
@@ -1763,7 +1763,7 @@ msgstr "Apri blog esistente"
msgid "Open Settings"
msgstr "Apri Impostazioni"
#: lib/bds/desktop/menu_bar.ex:188
#: lib/bds/desktop/menu_bar.ex:217
#, elixir-autogen, elixir-format
msgid "Open in Browser"
msgstr "Apri nel browser"
@@ -1794,7 +1794,7 @@ msgstr "Altro"
msgid "Other (%{count})"
msgstr "Altro (%{count})"
#: lib/bds/desktop/shell_live.ex:785
#: lib/bds/desktop/shell_live.ex:787
#: lib/bds/desktop/shell_live/panel_renderer.ex:83
#, elixir-autogen, elixir-format
msgid "Output"
@@ -1842,7 +1842,7 @@ msgstr "Coppia ignorata"
msgid "Parsing WXR file..."
msgstr "Analisi del file WXR..."
#: lib/bds/desktop/menu_bar.ex:196
#: lib/bds/desktop/menu_bar.ex:227
#, elixir-autogen, elixir-format
msgid "Paste"
msgstr "Incolla"
@@ -1908,7 +1908,7 @@ msgstr "Articolo pubblicato"
msgid "Post saved"
msgstr "Articolo salvato"
#: lib/bds/desktop/menu_bar.ex:202
#: 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:451
@@ -1924,7 +1924,7 @@ msgstr "Post"
msgid "Posts (%{count})"
msgstr "Articoli (%{count})"
#: lib/bds/desktop/menu_bar.ex:201
#: lib/bds/desktop/menu_bar.ex:232
#, elixir-autogen, elixir-format
msgid "Preferences"
msgstr "Preferenze"
@@ -1940,7 +1940,7 @@ msgstr "Anteprima"
msgid "Preview Mode"
msgstr "Modalità anteprima"
#: lib/bds/desktop/menu_bar.ex:215
#: lib/bds/desktop/menu_bar.ex:246
#, elixir-autogen, elixir-format
msgid "Preview Post"
msgstr "Anteprima post"
@@ -1992,7 +1992,7 @@ msgstr "URL pubblica"
msgid "Publish"
msgstr "Pubblica"
#: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/menu_bar.ex:245
#, elixir-autogen, elixir-format
msgid "Publish Selected"
msgstr "Pubblica selezionati"
@@ -2025,7 +2025,7 @@ msgstr "Pubblicazione"
msgid "Quick Actions"
msgstr "Azioni rapide"
#: lib/bds/desktop/menu_bar.ex:191
#: lib/bds/desktop/menu_bar.ex:222
#, elixir-autogen, elixir-format
msgid "Quit"
msgstr "Esci"
@@ -2035,12 +2035,12 @@ msgstr "Esci"
msgid "Ready to import:"
msgstr "Pronto per importare:"
#: lib/bds/desktop/menu_bar.ex:217
#: lib/bds/desktop/menu_bar.ex:248
#, elixir-autogen, elixir-format
msgid "Rebuild Database"
msgstr "Ricostruisci database"
#: lib/bds/desktop/menu_bar.ex:219
#: lib/bds/desktop/menu_bar.ex:250
#: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381
#, elixir-autogen, elixir-format
msgid "Rebuild Embedding Index"
@@ -2071,7 +2071,7 @@ msgstr "Ricostruisci i template dai file"
msgid "Rebuild filesystem-backed records and thumbnails"
msgstr "Ricostruisci record basati su filesystem e miniature"
#: lib/bds/desktop/menu_bar.ex:193
#: lib/bds/desktop/menu_bar.ex:224
#, elixir-autogen, elixir-format
msgid "Redo"
msgstr "Ripeti"
@@ -2098,7 +2098,7 @@ msgstr "Aggiorna modelli online"
msgid "Refresh Translation"
msgstr "Aggiorna traduzione"
#: lib/bds/desktop/menu_bar.ex:221
#: lib/bds/desktop/menu_bar.ex:252
#, elixir-autogen, elixir-format
msgid "Regenerate Calendar"
msgstr "Rigenera calendario"
@@ -2108,12 +2108,12 @@ msgstr "Rigenera calendario"
msgid "Regenerate Missing Thumbnails"
msgstr "Rigenera miniature mancanti"
#: lib/bds/desktop/menu_bar.ex:218
#: lib/bds/desktop/menu_bar.ex:249
#, elixir-autogen, elixir-format
msgid "Reindex Text"
msgstr "Reindicizza testo"
#: lib/bds/desktop/menu_bar.ex:208
#: lib/bds/desktop/menu_bar.ex:239
#, elixir-autogen, elixir-format
msgid "Reload"
msgstr "Ricarica"
@@ -2144,7 +2144,7 @@ msgstr "Rimuovi tag"
msgid "Render in Lists"
msgstr "Mostra nelle liste"
#: lib/bds/desktop/menu_bar.ex:200
#: lib/bds/desktop/menu_bar.ex:231
#, elixir-autogen, elixir-format
msgid "Replace"
msgstr "Sostituisci"
@@ -2161,12 +2161,12 @@ msgstr "Sostituisci file"
msgid "Replace Media File"
msgstr "Sostituisci file media"
#: lib/bds/desktop/menu_bar.ex:236
#: lib/bds/desktop/menu_bar.ex:267
#, elixir-autogen, elixir-format
msgid "Report Issue"
msgstr "Segnala problema"
#: lib/bds/desktop/menu_bar.ex:210
#: lib/bds/desktop/menu_bar.ex:241
#, elixir-autogen, elixir-format
msgid "Reset Zoom"
msgstr "Reimposta zoom"
@@ -2221,7 +2221,7 @@ msgstr "Esegui"
msgid "SSH Mode"
msgstr "Modalità SSH"
#: lib/bds/desktop/menu_bar.ex:187
#: lib/bds/desktop/menu_bar.ex:216
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:89
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:299
#: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:13
@@ -2340,7 +2340,7 @@ msgstr "Cerca nelle impostazioni"
msgid "Select & Analyze"
msgstr "Seleziona e analizza"
#: lib/bds/desktop/menu_bar.ex:198
#: lib/bds/desktop/menu_bar.ex:229
#, elixir-autogen, elixir-format
msgid "Select All"
msgstr "Seleziona tutto"
@@ -2552,7 +2552,7 @@ msgstr "Nome del tag"
msgid "Tags"
msgstr "Tag"
#: lib/bds/desktop/shell_live.ex:784
#: lib/bds/desktop/shell_live.ex:786
#: lib/bds/desktop/shell_live/panel_renderer.ex:54
#, elixir-autogen, elixir-format
msgid "Tasks"
@@ -2648,12 +2648,12 @@ msgstr "Questo elemento e referenziato da:"
msgid "Title"
msgstr "Titolo"
#: lib/bds/desktop/menu_bar.ex:206
#: lib/bds/desktop/menu_bar.ex:237
#, elixir-autogen, elixir-format
msgid "Toggle Assistant Sidebar"
msgstr "Attiva/disattiva assistente"
#: lib/bds/desktop/menu_bar.ex:207
#: lib/bds/desktop/menu_bar.ex:238
#, elixir-autogen, elixir-format
msgid "Toggle Dev Tools"
msgstr "Attiva/disattiva strumenti sviluppo"
@@ -2664,17 +2664,17 @@ msgstr "Attiva/disattiva strumenti sviluppo"
msgid "Toggle Filters"
msgstr "Mostra/nascondi filtri"
#: lib/bds/desktop/menu_bar.ex:213
#: lib/bds/desktop/menu_bar.ex:244
#, elixir-autogen, elixir-format
msgid "Toggle Full Screen"
msgstr "Schermo intero"
#: lib/bds/desktop/menu_bar.ex:205
#: lib/bds/desktop/menu_bar.ex:236
#, elixir-autogen, elixir-format
msgid "Toggle Panel"
msgstr "Attiva/disattiva pannello"
#: lib/bds/desktop/menu_bar.ex:204
#: lib/bds/desktop/menu_bar.ex:235
#, elixir-autogen, elixir-format
msgid "Toggle Sidebar"
msgstr "Attiva/disattiva barra laterale"
@@ -2770,7 +2770,7 @@ msgstr "UI"
msgid "URL"
msgstr "URL"
#: lib/bds/desktop/menu_bar.ex:192
#: lib/bds/desktop/menu_bar.ex:223
#, elixir-autogen, elixir-format
msgid "Undo"
msgstr "Annulla"
@@ -2820,7 +2820,7 @@ msgstr "Aggiornato"
msgid "Updated URLs"
msgstr "URL aggiornati"
#: lib/bds/desktop/menu_bar.ex:228
#: lib/bds/desktop/menu_bar.ex:259
#, elixir-autogen, elixir-format
msgid "Upload Site"
msgstr "Carica sito"
@@ -2847,22 +2847,22 @@ msgstr "Nome utente"
msgid "Validate"
msgstr "Valida"
#: lib/bds/desktop/menu_bar.ex:227
#: lib/bds/desktop/menu_bar.ex:258
#, elixir-autogen, elixir-format
msgid "Validate Site"
msgstr "Valida sito"
#: lib/bds/desktop/menu_bar.ex:222
#: lib/bds/desktop/menu_bar.ex:253
#, elixir-autogen, elixir-format
msgid "Validate Translations"
msgstr "Valida traduzioni"
#: lib/bds/desktop/menu_bar.ex:180
#: lib/bds/desktop/menu_bar.ex:209
#, elixir-autogen, elixir-format
msgid "View"
msgstr "Vista"
#: lib/bds/desktop/menu_bar.ex:235
#: lib/bds/desktop/menu_bar.ex:266
#, elixir-autogen, elixir-format
msgid "View on GitHub"
msgstr "Visualizza su GitHub"
@@ -2906,12 +2906,12 @@ msgstr "A capo per linee lunghe"
msgid "You"
msgstr "Tu"
#: lib/bds/desktop/menu_bar.ex:211
#: lib/bds/desktop/menu_bar.ex:242
#, elixir-autogen, elixir-format
msgid "Zoom In"
msgstr "Aumenta zoom"
#: lib/bds/desktop/menu_bar.ex:212
#: lib/bds/desktop/menu_bar.ex:243
#, elixir-autogen, elixir-format
msgid "Zoom Out"
msgstr "Riduci zoom"
@@ -3233,12 +3233,12 @@ msgstr "Benvenuto nellassistente IA"
msgid "Comparing database and filesystem metadata"
msgstr "Confronto tra i metadati del database e del filesystem"
#: lib/bds/desktop/shell_live.ex:682
#: lib/bds/desktop/shell_live.ex:684
#, elixir-autogen, elixir-format
msgid "Added %{count} images to post"
msgstr "%{count} immagini aggiunte al post"
#: lib/bds/desktop/shell_live.ex:650
#: lib/bds/desktop/shell_live.ex:652
#, elixir-autogen, elixir-format
msgid "Added %{title}"
msgstr "%{title} aggiunto"
@@ -3258,18 +3258,18 @@ msgstr "Guida per l'utente finale per flussi editoriali, media, modelli, traduzi
msgid "Image Import Concurrency"
msgstr "Importazione simultanea immagini"
#: lib/bds/desktop/shell_live.ex:442
#: lib/bds/desktop/shell_live.ex:455
#: lib/bds/desktop/shell_live.ex:649
#: lib/bds/desktop/shell_live.ex:681
#: lib/bds/desktop/shell_live.ex:692
#: lib/bds/desktop/shell_live.ex:703
#: lib/bds/desktop/shell_live.ex:444
#: lib/bds/desktop/shell_live.ex:457
#: lib/bds/desktop/shell_live.ex:651
#: lib/bds/desktop/shell_live.ex:683
#: lib/bds/desktop/shell_live.ex:694
#: lib/bds/desktop/shell_live.ex:705
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:420
#, elixir-autogen, elixir-format
msgid "Add Gallery Images"
msgstr "Aggiungi immagini alla galleria"
#: lib/bds/desktop/shell_live.ex:704
#: lib/bds/desktop/shell_live.ex:706
#, elixir-autogen, elixir-format
msgid "Failed to process %{path}: %{reason}"
msgstr "Impossibile elaborare %{path}: %{reason}"
@@ -3460,12 +3460,12 @@ msgstr "rinominato"
msgid "untracked"
msgstr "non tracciato"
#: lib/bds/desktop/shell_live.ex:810
#: lib/bds/desktop/shell_live.ex:812
#, elixir-autogen, elixir-format
msgid "Blogmark"
msgstr "Blogmark"
#: lib/bds/desktop/shell_live.ex:853
#: lib/bds/desktop/shell_live.ex:855
#, elixir-autogen, elixir-format
msgid "Open a project before importing a blogmark."
msgstr "Apri un progetto prima di importare un blogmark."
@@ -3506,7 +3506,7 @@ msgstr "Elimina tag"
msgid "Failed to copy bookmarklet to clipboard"
msgstr "Impossibile copiare il bookmarklet negli appunti"
#: lib/bds/desktop/shell_live.ex:822
#: lib/bds/desktop/shell_live.ex:824
#, elixir-autogen, elixir-format
msgid "The project this blogmark targets does not exist here."
msgstr "Il progetto a cui punta questo blogmark non esiste qui."
@@ -3516,7 +3516,7 @@ msgstr "Il progetto a cui punta questo blogmark non esiste qui."
msgid "Suggested tags"
msgstr "Tag suggeriti"
#: lib/bds/desktop/menu_bar.ex:226
#: lib/bds/desktop/menu_bar.ex:257
#, elixir-autogen, elixir-format
msgid "Force Render Site"
msgstr "Forza la rigenerazione del sito"
@@ -3531,22 +3531,22 @@ msgstr "Ricostruisci i link dei media"
msgid "Rebuild Post Links"
msgstr "Ricostruisci i link degli articoli"
#: lib/bds/desktop/menu_bar.ex:231
#: lib/bds/desktop/menu_bar.ex:262
#, elixir-autogen, elixir-format
msgid "Bring All to Front"
msgstr "Porta tutto in primo piano"
#: lib/bds/desktop/menu_bar.ex:229
#: lib/bds/desktop/menu_bar.ex:260
#, elixir-autogen, elixir-format
msgid "Minimize"
msgstr "Riduci"
#: lib/bds/desktop/menu_bar.ex:182
#: lib/bds/desktop/menu_bar.ex:211
#, elixir-autogen, elixir-format
msgid "Window"
msgstr "Finestra"
#: lib/bds/desktop/menu_bar.ex:230
#: lib/bds/desktop/menu_bar.ex:261
#, elixir-autogen, elixir-format
msgid "Zoom"
msgstr "Riduci/ingrandisci"
@@ -3702,3 +3702,35 @@ msgstr "invio apri · n nuovo post · 1-5 viste · r aggiorna · ctrl+q esci"
#, elixir-autogen, elixir-format
msgid "esc to close"
msgstr "esc per chiudere"
#: lib/bds/desktop/menu_bar.ex:83
#: lib/bds/desktop/shell_live.ex:1110
#, elixir-autogen, elixir-format
msgid "Connect to Server"
msgstr "Connetti al server"
#: lib/bds/desktop/menu_bar.ex:218
#, elixir-autogen, elixir-format
msgid "Connect to Server…"
msgstr "Connetti al server…"
#: lib/bds/desktop/menu_bar.ex:84
#, elixir-autogen, elixir-format
msgid "Connection failed: %{reason}"
msgstr "Connessione non riuscita: %{reason}"
#: lib/bds/desktop/menu_bar.ex:219
#, elixir-autogen, elixir-format
msgid "Disconnect from Server"
msgstr "Disconnetti dal server"
#: lib/bds/desktop/menu_bar.ex:72
#: lib/bds/desktop/shell_live.ex:1097
#, elixir-autogen, elixir-format
msgid "Server address (user@host or user@host:port), public-key auth:"
msgstr "Indirizzo del server (user@host o user@host:port), autenticazione a chiave pubblica:"
#: lib/bds/desktop/remote_connection.ex:82
#, elixir-autogen, elixir-format
msgid "Use the form user@host or user@host:port."
msgstr "Usa il formato user@host o user@host:port."

View File

@@ -123,12 +123,12 @@ msgstr ""
msgid "API"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:234
#: lib/bds/desktop/menu_bar.ex:265
#, elixir-autogen, elixir-format
msgid "API Documentation"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:232
#: lib/bds/desktop/menu_bar.ex:263
#, elixir-autogen, elixir-format
msgid "About"
msgstr ""
@@ -354,7 +354,7 @@ msgstr ""
msgid "Auto"
msgstr ""
#: lib/bds/desktop/shell_live.ex:443
#: lib/bds/desktop/shell_live.ex:445
#: lib/bds/desktop/shell_live/chat_editor.ex:234
#: lib/bds/desktop/shell_live/media_editor.ex:171
#: lib/bds/desktop/shell_live/media_editor.ex:364
@@ -385,7 +385,7 @@ msgstr ""
msgid "Backlinks"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:181
#: lib/bds/desktop/menu_bar.ex:210
#, elixir-autogen, elixir-format
msgid "Blog"
msgstr ""
@@ -504,7 +504,7 @@ msgstr ""
msgid "Category name is required"
msgstr ""
#: lib/bds/desktop/shell_live.ex:789
#: lib/bds/desktop/shell_live.ex:791
#: lib/bds/desktop/shell_live/chat_editor.ex:87
#: lib/bds/desktop/shell_live/chat_editor.ex:233
#: lib/bds/desktop/shell_live/chat_editor.ex:323
@@ -562,7 +562,7 @@ msgstr ""
msgid "Click to %{action} mapping"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:190
#: lib/bds/desktop/menu_bar.ex:221
#, elixir-autogen, elixir-format
msgid "Close Tab"
msgstr ""
@@ -613,7 +613,7 @@ msgstr ""
msgid "Content Categories"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:195
#: lib/bds/desktop/menu_bar.ex:226
#, elixir-autogen, elixir-format
msgid "Copy"
msgstr ""
@@ -666,7 +666,7 @@ msgstr ""
msgid "Created"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:194
#: lib/bds/desktop/menu_bar.ex:225
#, elixir-autogen, elixir-format
msgid "Cut"
msgstr ""
@@ -732,7 +732,7 @@ msgstr ""
msgid "Default editing mode and diff presentation"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:197
#: lib/bds/desktop/menu_bar.ex:228
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:98
#: lib/bds/desktop/shell_live/overlay_html/shell_overlay.html.heex:166
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:116
@@ -875,7 +875,7 @@ msgstr ""
msgid "Do Not Translate"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:233
#: lib/bds/desktop/menu_bar.ex:264
#: lib/bds/help_docs.ex:14
#: lib/bds/ui/registry.ex:118
#, elixir-autogen, elixir-format
@@ -908,12 +908,12 @@ msgstr ""
msgid "ETA: %{value}"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:179
#: lib/bds/desktop/menu_bar.ex:208
#, elixir-autogen, elixir-format
msgid "Edit"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:216
#: lib/bds/desktop/menu_bar.ex:247
#, elixir-autogen, elixir-format
msgid "Edit Menu"
msgstr ""
@@ -1019,7 +1019,7 @@ msgstr ""
msgid "Extra URLs"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:178
#: lib/bds/desktop/menu_bar.ex:207
#: lib/bds/desktop/shell_live/import_editor.ex:882
#: lib/bds/desktop/shell_live/misc_editor_html/misc_editor.html.heex:157
#, elixir-autogen, elixir-format
@@ -1041,17 +1041,17 @@ msgstr ""
msgid "Filename"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:223
#: lib/bds/desktop/menu_bar.ex:254
#, elixir-autogen, elixir-format
msgid "Fill Missing Translations"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:199
#: lib/bds/desktop/menu_bar.ex:230
#, elixir-autogen, elixir-format
msgid "Find"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:224
#: lib/bds/desktop/menu_bar.ex:255
#, elixir-autogen, elixir-format
msgid "Find Duplicate Posts"
msgstr ""
@@ -1066,7 +1066,7 @@ msgstr ""
msgid "Find Duplicates"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:209
#: lib/bds/desktop/menu_bar.ex:240
#, elixir-autogen, elixir-format
msgid "Force Reload"
msgstr ""
@@ -1077,12 +1077,12 @@ msgstr ""
msgid "Gallery"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:225
#: lib/bds/desktop/menu_bar.ex:256
#, elixir-autogen, elixir-format
msgid "Generate Site"
msgstr ""
#: lib/bds/desktop/shell_live.ex:790
#: lib/bds/desktop/shell_live.ex:792
#: lib/bds/desktop/shell_live/socket_state.ex:109
#: lib/bds/ui/sidebar.ex:789
#, elixir-autogen, elixir-format
@@ -1096,13 +1096,13 @@ msgid "Git Diff"
msgstr ""
#: lib/bds/desktop/shell_data.ex:228
#: lib/bds/desktop/shell_live.ex:786
#: lib/bds/desktop/shell_live.ex:788
#: lib/bds/desktop/shell_live/panel_renderer.ex:171
#, elixir-autogen, elixir-format
msgid "Git Log"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:183
#: lib/bds/desktop/menu_bar.ex:212
#, elixir-autogen, elixir-format
msgid "Help"
msgstr ""
@@ -1189,7 +1189,7 @@ msgstr ""
msgid "Import (new slug)"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:186
#: lib/bds/desktop/menu_bar.ex:215
#, elixir-autogen, elixir-format
msgid "Import Media"
msgstr ""
@@ -1219,9 +1219,9 @@ msgstr ""
msgid "Import failed: %{error}"
msgstr ""
#: lib/bds/desktop/shell_live.ex:606
#: lib/bds/desktop/shell_live.ex:902
#: lib/bds/desktop/shell_live.ex:908
#: lib/bds/desktop/shell_live.ex:608
#: lib/bds/desktop/shell_live.ex:904
#: lib/bds/desktop/shell_live.ex:910
#: lib/bds/desktop/shell_live/sidebar_create.ex:47
#, elixir-autogen, elixir-format
msgid "Import media"
@@ -1391,7 +1391,7 @@ msgstr ""
msgid "Max Posts Per Page"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:203
#: lib/bds/desktop/menu_bar.ex:234
#: lib/bds/desktop/shell_live/media_editor.ex:509
#: lib/bds/desktop/shell_live/media_editor.ex:513
#: lib/bds/desktop/shell_live/misc_editor.ex:735
@@ -1439,7 +1439,7 @@ msgstr ""
msgid "Metadata"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:220
#: lib/bds/desktop/menu_bar.ex:251
#: 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
@@ -1486,7 +1486,7 @@ msgstr ""
msgid "New Page"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:185
#: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/shell_live/sidebar_create.ex:41
#: lib/bds/tui.ex:103
#, elixir-autogen, elixir-format
@@ -1759,7 +1759,7 @@ msgstr ""
msgid "Open"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:189
#: lib/bds/desktop/menu_bar.ex:220
#: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:382
#, elixir-autogen, elixir-format
msgid "Open Data Folder"
@@ -1776,7 +1776,7 @@ msgstr ""
msgid "Open Settings"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:188
#: lib/bds/desktop/menu_bar.ex:217
#, elixir-autogen, elixir-format
msgid "Open in Browser"
msgstr ""
@@ -1807,7 +1807,7 @@ msgstr ""
msgid "Other (%{count})"
msgstr ""
#: lib/bds/desktop/shell_live.ex:785
#: lib/bds/desktop/shell_live.ex:787
#: lib/bds/desktop/shell_live/panel_renderer.ex:83
#, elixir-autogen, elixir-format
msgid "Output"
@@ -1855,7 +1855,7 @@ msgstr ""
msgid "Parsing WXR file..."
msgstr ""
#: lib/bds/desktop/menu_bar.ex:196
#: lib/bds/desktop/menu_bar.ex:227
#, elixir-autogen, elixir-format
msgid "Paste"
msgstr ""
@@ -1921,7 +1921,7 @@ msgstr ""
msgid "Post saved"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:202
#: 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:451
@@ -1937,7 +1937,7 @@ msgstr ""
msgid "Posts (%{count})"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:201
#: lib/bds/desktop/menu_bar.ex:232
#, elixir-autogen, elixir-format
msgid "Preferences"
msgstr ""
@@ -1953,7 +1953,7 @@ msgstr ""
msgid "Preview Mode"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:215
#: lib/bds/desktop/menu_bar.ex:246
#, elixir-autogen, elixir-format
msgid "Preview Post"
msgstr ""
@@ -2005,7 +2005,7 @@ msgstr ""
msgid "Publish"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:214
#: lib/bds/desktop/menu_bar.ex:245
#, elixir-autogen, elixir-format
msgid "Publish Selected"
msgstr ""
@@ -2038,7 +2038,7 @@ msgstr ""
msgid "Quick Actions"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:191
#: lib/bds/desktop/menu_bar.ex:222
#, elixir-autogen, elixir-format
msgid "Quit"
msgstr ""
@@ -2048,12 +2048,12 @@ msgstr ""
msgid "Ready to import:"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:217
#: lib/bds/desktop/menu_bar.ex:248
#, elixir-autogen, elixir-format
msgid "Rebuild Database"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:219
#: lib/bds/desktop/menu_bar.ex:250
#: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381
#, elixir-autogen, elixir-format
msgid "Rebuild Embedding Index"
@@ -2084,7 +2084,7 @@ msgstr ""
msgid "Rebuild filesystem-backed records and thumbnails"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:193
#: lib/bds/desktop/menu_bar.ex:224
#, elixir-autogen, elixir-format
msgid "Redo"
msgstr ""
@@ -2111,7 +2111,7 @@ msgstr ""
msgid "Refresh Translation"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:221
#: lib/bds/desktop/menu_bar.ex:252
#, elixir-autogen, elixir-format
msgid "Regenerate Calendar"
msgstr ""
@@ -2121,12 +2121,12 @@ msgstr ""
msgid "Regenerate Missing Thumbnails"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:218
#: lib/bds/desktop/menu_bar.ex:249
#, elixir-autogen, elixir-format
msgid "Reindex Text"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:208
#: lib/bds/desktop/menu_bar.ex:239
#, elixir-autogen, elixir-format
msgid "Reload"
msgstr ""
@@ -2157,7 +2157,7 @@ msgstr ""
msgid "Render in Lists"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:200
#: lib/bds/desktop/menu_bar.ex:231
#, elixir-autogen, elixir-format
msgid "Replace"
msgstr ""
@@ -2174,12 +2174,12 @@ msgstr ""
msgid "Replace Media File"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:236
#: lib/bds/desktop/menu_bar.ex:267
#, elixir-autogen, elixir-format
msgid "Report Issue"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:210
#: lib/bds/desktop/menu_bar.ex:241
#, elixir-autogen, elixir-format
msgid "Reset Zoom"
msgstr ""
@@ -2234,7 +2234,7 @@ msgstr ""
msgid "SSH Mode"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:187
#: lib/bds/desktop/menu_bar.ex:216
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:89
#: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:299
#: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:13
@@ -2353,7 +2353,7 @@ msgstr ""
msgid "Select & Analyze"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:198
#: lib/bds/desktop/menu_bar.ex:229
#, elixir-autogen, elixir-format
msgid "Select All"
msgstr ""
@@ -2565,7 +2565,7 @@ msgstr ""
msgid "Tags"
msgstr ""
#: lib/bds/desktop/shell_live.ex:784
#: lib/bds/desktop/shell_live.ex:786
#: lib/bds/desktop/shell_live/panel_renderer.ex:54
#, elixir-autogen, elixir-format
msgid "Tasks"
@@ -2661,12 +2661,12 @@ msgstr ""
msgid "Title"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:206
#: lib/bds/desktop/menu_bar.ex:237
#, elixir-autogen, elixir-format
msgid "Toggle Assistant Sidebar"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:207
#: lib/bds/desktop/menu_bar.ex:238
#, elixir-autogen, elixir-format
msgid "Toggle Dev Tools"
msgstr ""
@@ -2677,17 +2677,17 @@ msgstr ""
msgid "Toggle Filters"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:213
#: lib/bds/desktop/menu_bar.ex:244
#, elixir-autogen, elixir-format
msgid "Toggle Full Screen"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:205
#: lib/bds/desktop/menu_bar.ex:236
#, elixir-autogen, elixir-format
msgid "Toggle Panel"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:204
#: lib/bds/desktop/menu_bar.ex:235
#, elixir-autogen, elixir-format
msgid "Toggle Sidebar"
msgstr ""
@@ -2783,7 +2783,7 @@ msgstr ""
msgid "URL"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:192
#: lib/bds/desktop/menu_bar.ex:223
#, elixir-autogen, elixir-format
msgid "Undo"
msgstr ""
@@ -2833,7 +2833,7 @@ msgstr ""
msgid "Updated URLs"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:228
#: lib/bds/desktop/menu_bar.ex:259
#, elixir-autogen, elixir-format
msgid "Upload Site"
msgstr ""
@@ -2860,22 +2860,22 @@ msgstr ""
msgid "Validate"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:227
#: lib/bds/desktop/menu_bar.ex:258
#, elixir-autogen, elixir-format
msgid "Validate Site"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:222
#: lib/bds/desktop/menu_bar.ex:253
#, elixir-autogen, elixir-format
msgid "Validate Translations"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:180
#: lib/bds/desktop/menu_bar.ex:209
#, elixir-autogen, elixir-format
msgid "View"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:235
#: lib/bds/desktop/menu_bar.ex:266
#, elixir-autogen, elixir-format
msgid "View on GitHub"
msgstr ""
@@ -2919,12 +2919,12 @@ msgstr ""
msgid "You"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:211
#: lib/bds/desktop/menu_bar.ex:242
#, elixir-autogen, elixir-format
msgid "Zoom In"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:212
#: lib/bds/desktop/menu_bar.ex:243
#, elixir-autogen, elixir-format
msgid "Zoom Out"
msgstr ""
@@ -3246,12 +3246,12 @@ msgstr ""
msgid "Comparing database and filesystem metadata"
msgstr ""
#: lib/bds/desktop/shell_live.ex:682
#: lib/bds/desktop/shell_live.ex:684
#, elixir-autogen, elixir-format
msgid "Added %{count} images to post"
msgstr ""
#: lib/bds/desktop/shell_live.ex:650
#: lib/bds/desktop/shell_live.ex:652
#, elixir-autogen, elixir-format
msgid "Added %{title}"
msgstr ""
@@ -3271,18 +3271,18 @@ msgstr ""
msgid "Image Import Concurrency"
msgstr ""
#: lib/bds/desktop/shell_live.ex:442
#: lib/bds/desktop/shell_live.ex:455
#: lib/bds/desktop/shell_live.ex:649
#: lib/bds/desktop/shell_live.ex:681
#: lib/bds/desktop/shell_live.ex:692
#: lib/bds/desktop/shell_live.ex:703
#: lib/bds/desktop/shell_live.ex:444
#: lib/bds/desktop/shell_live.ex:457
#: lib/bds/desktop/shell_live.ex:651
#: lib/bds/desktop/shell_live.ex:683
#: lib/bds/desktop/shell_live.ex:694
#: lib/bds/desktop/shell_live.ex:705
#: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:420
#, elixir-autogen, elixir-format
msgid "Add Gallery Images"
msgstr ""
#: lib/bds/desktop/shell_live.ex:704
#: lib/bds/desktop/shell_live.ex:706
#, elixir-autogen, elixir-format
msgid "Failed to process %{path}: %{reason}"
msgstr ""
@@ -3473,12 +3473,12 @@ msgstr ""
msgid "untracked"
msgstr ""
#: lib/bds/desktop/shell_live.ex:810
#: lib/bds/desktop/shell_live.ex:812
#, elixir-autogen, elixir-format
msgid "Blogmark"
msgstr ""
#: lib/bds/desktop/shell_live.ex:853
#: lib/bds/desktop/shell_live.ex:855
#, elixir-autogen, elixir-format
msgid "Open a project before importing a blogmark."
msgstr ""
@@ -3519,7 +3519,7 @@ msgstr ""
msgid "Failed to copy bookmarklet to clipboard"
msgstr ""
#: lib/bds/desktop/shell_live.ex:822
#: lib/bds/desktop/shell_live.ex:824
#, elixir-autogen, elixir-format
msgid "The project this blogmark targets does not exist here."
msgstr ""
@@ -3529,7 +3529,7 @@ msgstr ""
msgid "Suggested tags"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:226
#: lib/bds/desktop/menu_bar.ex:257
#, elixir-autogen, elixir-format
msgid "Force Render Site"
msgstr ""
@@ -3544,22 +3544,22 @@ msgstr ""
msgid "Rebuild Post Links"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:231
#: lib/bds/desktop/menu_bar.ex:262
#, elixir-autogen, elixir-format
msgid "Bring All to Front"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:229
#: lib/bds/desktop/menu_bar.ex:260
#, elixir-autogen, elixir-format
msgid "Minimize"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:182
#: lib/bds/desktop/menu_bar.ex:211
#, elixir-autogen, elixir-format
msgid "Window"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:230
#: lib/bds/desktop/menu_bar.ex:261
#, elixir-autogen, elixir-format
msgid "Zoom"
msgstr ""
@@ -3715,3 +3715,35 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "esc to close"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:83
#: lib/bds/desktop/shell_live.ex:1110
#, elixir-autogen, elixir-format
msgid "Connect to Server"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:218
#, elixir-autogen, elixir-format
msgid "Connect to Server…"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:84
#, elixir-autogen, elixir-format
msgid "Connection failed: %{reason}"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:219
#, elixir-autogen, elixir-format
msgid "Disconnect from Server"
msgstr ""
#: lib/bds/desktop/menu_bar.ex:72
#: lib/bds/desktop/shell_live.ex:1097
#, elixir-autogen, elixir-format
msgid "Server address (user@host or user@host:port), public-key auth:"
msgstr ""
#: lib/bds/desktop/remote_connection.ex:82
#, elixir-autogen, elixir-format
msgid "Use the form user@host or user@host:port."
msgstr ""

View File

@@ -25,6 +25,7 @@ surface ServerRuntimeSurface {
provides:
ApplicationStarted(mode)
SshClientConnected()
GuiConnectRequested()
}
rule ModeResolution {
@@ -53,6 +54,15 @@ rule ServerBoot {
-- host key generated and authorized_keys touched on first boot only
}
rule GuiRemoteConnection {
when: GuiConnectRequested()
-- Desktop "Connect to Server…": ssh connect with the same public keys
-- (client identity + known_hosts in the private ssh dir), then an OTP
-- TCP/IP tunnel to the server's loopback endpoint; the webview loads
-- the local tunnel end. Disconnect returns to the local shell URL.
ensures: WebviewTunneledToServer()
}
rule TuiSession {
when: SshClientConnected()
-- Each SSH client gets its own TUI app instance on the server;

View File

@@ -0,0 +1,98 @@
defmodule BDS.Desktop.RemoteConnectionTest do
use ExUnit.Case, async: false
alias BDS.Desktop.RemoteConnection
describe "parse_target/1" do
test "parses user@host with default SSH port" do
assert {:ok, %{user: "gb", host: "blog.example.com", port: 2222}} =
RemoteConnection.parse_target("gb@blog.example.com")
end
test "parses an explicit SSH port" do
assert {:ok, %{user: "gb", host: "10.0.0.5", port: 2022}} =
RemoteConnection.parse_target("gb@10.0.0.5:2022")
end
test "trims whitespace" do
assert {:ok, %{host: "h", user: "u"}} = RemoteConnection.parse_target(" u@h \n")
end
test "rejects targets without a user or host" do
assert {:error, :invalid_target} = RemoteConnection.parse_target("justahost")
assert {:error, :invalid_target} = RemoteConnection.parse_target("@host")
assert {:error, :invalid_target} = RemoteConnection.parse_target("user@")
assert {:error, :invalid_target} = RemoteConnection.parse_target("user@host:notaport")
end
end
describe "connect/2 and disconnect/1 (fake ssh)" do
setup do
parent = self()
ssh_dir =
Path.join(System.tmp_dir!(), "bds-remote-ssh-#{System.unique_integer([:positive])}")
on_exit(fn -> File.rm_rf!(ssh_dir) end)
fake = [
ssh_dir_fun: fn -> ssh_dir end,
connect_fun: fn host, port, opts ->
send(parent, {:ssh_connect, host, port, opts})
{:ok, spawn(fn -> Process.sleep(:infinity) end)}
end,
tunnel_fun: fn conn, _lhost, _lport, _rhost, rport, _timeout ->
send(parent, {:tunnel, conn, rport})
{:ok, 54_321}
end,
close_fun: fn conn -> send(parent, {:ssh_close, conn}) end
]
start_supervised!({RemoteConnection, name: nil, test_overrides: fake})
|> then(&{:ok, server: &1})
end
test "connects with public-key auth and returns the tunneled URL", %{server: server} do
assert {:ok, url} = RemoteConnection.connect(server, "gb@blog.example.com")
assert url == "http://127.0.0.1:54321/"
assert_receive {:ssh_connect, ~c"blog.example.com", 2222, opts}
assert opts[:user] == ~c"gb"
assert opts[:auth_methods] == ~c"publickey"
refute Keyword.has_key?(opts, :password)
assert_receive {:tunnel, _conn, 4010}
assert {:connected, "gb@blog.example.com", "http://127.0.0.1:54321/"} =
RemoteConnection.status(server)
end
test "disconnect closes the SSH connection", %{server: server} do
{:ok, _url} = RemoteConnection.connect(server, "gb@blog.example.com")
assert :ok = RemoteConnection.disconnect(server)
assert_receive {:ssh_close, _conn}
assert :disconnected = RemoteConnection.status(server)
end
test "connect errors surface as {:error, reason}", %{server: server} do
assert {:error, :invalid_target} = RemoteConnection.connect(server, "nonsense")
end
end
describe "menu integration" do
test "the File menu offers connect and disconnect" do
file_group = Enum.find(BDS.UI.MenuBar.default_groups(), &(&1.id == :file))
ids = Enum.map(file_group.items, &Map.get(&1, :id))
assert :connect_server in ids
assert :disconnect_server in ids
end
end
describe "desktop auth" do
test "required in desktop mode, skipped in server and tui modes" do
assert BDS.Server.desktop_auth_required?(:desktop) == true
assert BDS.Server.desktop_auth_required?(:server) == false
assert BDS.Server.desktop_auth_required?(:tui) == false
end
end
end