diff --git a/SPECGAPS.md b/SPECGAPS.md index 6a5191b..f116e99 100644 --- a/SPECGAPS.md +++ b/SPECGAPS.md @@ -21,7 +21,7 @@ Gap categories: **SC** = spec correct, fix code | **CS** = code correct, update | A1-9 | ~~17 preset colors + custom hex in tag picker~~ | editor_tags.allium | `ColourPicker` hook + popover with 17 preset swatches grid and custom hex input, wired to both create and edit forms | **Resolved:** replaced native `` with `ColourPickerPopover` component (17 presets, custom hex #RRGGBB, immediate selection), JS hook for click-away dismiss, 1 test added | | A1-10 | ~~Template file written on create~~ | engine_side_effects.allium:151-153 | `create_template` now computes `file_path` and writes template file with YAML frontmatter on create | **Resolved:** `create_template/1` writes `templates/{slug}.liquid` on create, `next_template_file_path` always computes path, 1 test added | | A1-11 | ~~Graceful shutdown with inflight request tracking~~ | preview.allium:47-48 | `stop_preview` now closes the listener, parks the reply, and drains monitored inflight request tasks before reporting stopped | **Resolved:** acceptor transfers socket ownership to each request task; GenServer monitors inflight tasks, `begin_graceful_stop` stops accepting and finalizes via `:DOWN`/`:drain_timeout` (5s force-kill cap), 1 test added | -| A1-12 | Real Pagefind integration for search | generation.allium:208 | Stub only: `pagefind-ui.js` is one-liner, `PagefindUI` never defined, search-runtime.js silently bails, client-side search non-functional | Fix code: bundle real Pagefind, build proper fragment index, wire PagefindUI | +| A1-12 | ~~Real Pagefind integration for search~~ | generation.allium:208 | Functional client-side search: `PagefindUI` defined in bundled `pagefind-ui.js`, fragment index records url/title/body-scoped text per page, search-runtime wires it up | **Resolved:** bundled real `PagefindUI` (fetch index, ranked full-text match, highlighted excerpts) + `pagefind-ui.css` as local assets read into `Pagefind`; index scoped to `data-pagefind-body` (unmarked pages excluded per PagefindHtmlMarking), title from ``/`<h1>`; localized "No results found" label via `data-search-no-results` (de/fr/it/es); 3 unit tests added | | A1-13 | Git sidebar shows only "Working tree" placeholder | sidebar_views.allium:651-770 | `sidebar.ex:782-798` returns single entity_list item; `BDS.Git` has full status/diff/commit/history/fetch/pull/push/prune_lfs but sidebar doesn't use it | Fix code: wire sidebar `git_view/0` to `BDS.Git` — render branch, ahead/behind, status file list, commit input, history entries, action buttons per spec | | A1-14 | Embedding uses TF-IDF hash projection instead of real neural model | embedding.allium:44-53, invariants ModelCaching/VectorCacheInDb | `backends/in_app.ex` hashes terms into sparse vectors via `:erlang.phash2`; no ONNX model, no `"query: "` prefix, no mean pooling, vectors stored as JSON text not Float32Array BLOB, snapshot-based neighbor lookup instead of USearch HNSW index | Fix code: (1) add Bumblebee + ONNX runtime deps to run `Xenova/multilingual-e5-small`, (2) implement lazy model download + cache in app data dir, (3) `"query: "` prefix + mean pooling + L2 norm in backend, (4) store vectors as binary BLOB (1536 bytes), (5) replace JSON snapshot with USearch HNSW index (cosine, M=16, ef=128/64, 5s debounce), (6) cross-language semantic similarity must work | | A1-15 | ~~Preview vs generation content source strategy undocumented~~ | preview.allium (no invariant), generation.allium (no invariant) | Generation uses only published .md file content (`Generation.Data` snapshots set `content: nil`); preview includes published+draft posts and prefers DB content over file (`Preview.Router` queries `:published`/`:draft`, uses `editor_body`) | **Resolved:** added `PreviewDraftOverlay` invariant to preview.allium and `GenerationPublishedOnly` invariant to generation.allium; both cross-reference each other; code already correct, 3 tests added for draft-in-preview behavior | diff --git a/lib/bds/generation/pagefind.ex b/lib/bds/generation/pagefind.ex index b385fb5..43ca565 100644 --- a/lib/bds/generation/pagefind.ex +++ b/lib/bds/generation/pagefind.ex @@ -7,10 +7,25 @@ defmodule BDS.Generation.Pagefind do @typedoc "A (relative_path, content) generated file tuple." @type generated_file :: {String.t(), String.t()} + @assets_dir Application.app_dir(:bds, "priv/preview_assets/assets") + @ui_js_path Path.join(@assets_dir, "pagefind-ui.js") + @ui_css_path Path.join(@assets_dir, "pagefind-ui.css") + + @external_resource @ui_js_path + @external_resource @ui_css_path + + @ui_js File.read!(@ui_js_path) + @ui_css File.read!(@ui_css_path) + @doc """ Build the per-language Pagefind index outputs (`pagefind/index.json`, `pagefind/pagefind-ui.js`, `pagefind/pagefind-ui.css`) for every blog language declared on the plan. + + The fragment index records one entry per indexable page, where indexable + means the page carries a `data-pagefind-body` region. Each entry stores the + page URL, its title, and the body text scoped to that region — mirroring + Pagefind's behaviour of ignoring content outside `data-pagefind-body`. """ @spec build_outputs(map(), [html_output()]) :: [generated_file()] def build_outputs(plan, html_outputs) do @@ -31,8 +46,8 @@ defmodule BDS.Generation.Pagefind do [ {Path.join(prefix ++ ["index.json"]), Jason.encode!(%{"language" => language, "pages" => pages})}, - {Path.join(prefix ++ ["pagefind-ui.js"]), ui_js(language)}, - {Path.join(prefix ++ ["pagefind-ui.css"]), ui_css()} + {Path.join(prefix ++ ["pagefind-ui.js"]), @ui_js}, + {Path.join(prefix ++ ["pagefind-ui.css"]), @ui_css} ] end) end @@ -43,11 +58,14 @@ defmodule BDS.Generation.Pagefind do String.ends_with?(relative_path, ".html") and language_match?(relative_path, route_language, other_prefixes) end) - |> Enum.map(fn {relative_path, content} -> - %{ - "url" => "/" <> relative_path, - "text" => text(content) - } + |> Enum.flat_map(fn {relative_path, content} -> + case body_text(content) do + nil -> + [] + + text -> + [%{"url" => "/" <> relative_path, "title" => title(content), "text" => text}] + end end) end @@ -60,19 +78,94 @@ defmodule BDS.Generation.Pagefind do defp language_match?(relative_path, route_language, _other_prefixes), do: String.starts_with?(relative_path, route_language <> "/") - defp text(content) do - content + # Extract the indexable body text scoped to the data-pagefind-body element. + # Returns nil when the page is not marked, so unmarked pages are excluded + # from the index entirely (matching Pagefind semantics). + defp body_text(content) do + case Regex.run(~r/<([a-zA-Z0-9]+)[^>]*\bdata-pagefind-body\b[^>]*>/, content, + return: :index + ) do + [{open_start, open_len}, {tag_start, tag_len}] -> + tag = binary_part(content, tag_start, tag_len) + region = scoped_region(content, tag, open_start + open_len) + plain_text(region) + + _no_match -> + nil + end + end + + # Capture the inner HTML of the marked element by balancing same-tag + # open/close pairs from the opening tag onward. + defp scoped_region(content, tag, body_start) do + rest = binary_part(content, body_start, byte_size(content) - body_start) + open_re = Regex.compile!("<#{tag}\\b", "i") + close_re = Regex.compile!("</#{tag}\\s*>", "i") + + events = + (Regex.scan(open_re, rest, return: :index) ++ Regex.scan(close_re, rest, return: :index)) + |> Enum.map(fn [{pos, _len}] -> pos end) + |> Enum.map(fn pos -> {pos, event_kind(rest, pos, tag)} end) + |> Enum.sort_by(&elem(&1, 0)) + + close_at = balanced_close(events, 0) + + case close_at do + nil -> rest + pos -> binary_part(rest, 0, pos) + end + end + + defp event_kind(rest, pos, tag) do + if String.starts_with?(binary_part(rest, pos, min(2 + byte_size(tag), byte_size(rest) - pos)), "</") do + :close + else + :open + end + end + + defp balanced_close([], _depth), do: nil + + defp balanced_close([{pos, :close} | _rest], 0), do: pos + + defp balanced_close([{_pos, :close} | rest], depth), + do: balanced_close(rest, depth - 1) + + defp balanced_close([{_pos, :open} | rest], depth), + do: balanced_close(rest, depth + 1) + + defp title(content) do + tag_text(content, ~r/<title[^>]*>(.*?)<\/title>/si) || + tag_text(content, ~r/<h1[^>]*>(.*?)<\/h1>/si) || + "" + end + + defp tag_text(content, regex) do + case Regex.run(regex, content) do + [_full, raw] -> raw |> plain_text() |> nil_if_blank() + _no_match -> nil + end + end + + defp nil_if_blank(""), do: nil + defp nil_if_blank(value), do: value + + defp plain_text(html) do + html |> String.replace(~r/<[^>]+>/, " ") + |> decode_entities() |> String.replace(~r/\s+/u, " ") |> String.trim() end - defp ui_js(language) do - "window.bDSPagefind = { language: #{Jason.encode!(language)} };\n" - end - - defp ui_css do - ".pagefind-ui{display:block;}\n" + defp decode_entities(text) do + text + |> String.replace("&", "&") + |> String.replace("<", "<") + |> String.replace(">", ">") + |> String.replace(""", "\"") + |> String.replace("'", "'") + |> String.replace(" ", " ") end defp route_language(main_language, language) when main_language == language, do: nil diff --git a/lib/bds/rendering/labels.ex b/lib/bds/rendering/labels.ex index 4e2ab2e..3e665e6 100644 --- a/lib/bds/rendering/labels.ex +++ b/lib/bds/rendering/labels.ex @@ -27,6 +27,7 @@ defmodule BDS.Rendering.Labels do language_switcher_label: dgettext("render", "Language"), site_search_label: dgettext("render", "Site search"), search_placeholder: dgettext("render", "Search..."), + search_no_results: dgettext("render", "No results found"), not_found_message: dgettext("render", "The requested preview page could not be found."), not_found_back_label: dgettext("render", "Back to preview home"), youtube_video: dgettext("render", "YouTube video"), diff --git a/priv/data/projects/default/templates/partials/language-switcher.liquid b/priv/data/projects/default/templates/partials/language-switcher.liquid index 71ee921..eb79c2f 100644 --- a/priv/data/projects/default/templates/partials/language-switcher.liquid +++ b/priv/data/projects/default/templates/partials/language-switcher.liquid @@ -15,7 +15,7 @@ </svg> </button> <div class="blog-search-panel" data-blog-search-panel hidden> - <div id="blog-search" data-blog-search-root data-search-placeholder="{{ labels.search_placeholder }}"></div> + <div id="blog-search" data-blog-search-root data-search-placeholder="{{ labels.search_placeholder }}" data-search-no-results="{{ labels.search_no_results }}"></div> </div> </div> </nav> @@ -35,7 +35,7 @@ </svg> </button> <div class="blog-search-panel" data-blog-search-panel hidden> - <div id="blog-search" data-blog-search-root data-search-placeholder="{{ labels.search_placeholder }}"></div> + <div id="blog-search" data-blog-search-root data-search-placeholder="{{ labels.search_placeholder }}" data-search-no-results="{{ labels.search_no_results }}"></div> </div> </div> {% endif %} diff --git a/priv/gettext/de/LC_MESSAGES/render.po b/priv/gettext/de/LC_MESSAGES/render.po index 3b786c5..671216f 100644 --- a/priv/gettext/de/LC_MESSAGES/render.po +++ b/priv/gettext/de/LC_MESSAGES/render.po @@ -5,7 +5,7 @@ msgid "Archive" msgstr "Archiv" -#: lib/bds/rendering/labels.ex:54 +#: lib/bds/rendering/labels.ex:55 #, elixir-autogen, elixir-format msgid "April" msgstr "Apr." @@ -15,7 +15,7 @@ msgstr "Apr." msgid "Archive calendar" msgstr "Archiv" -#: lib/bds/rendering/labels.ex:70 +#: lib/bds/rendering/labels.ex:71 #, elixir-autogen, elixir-format msgid "August" msgstr "Aug." @@ -35,27 +35,27 @@ msgstr "Kalenderdaten konnten nicht geladen werden." msgid "Close calendar" msgstr "Kalender schließen" -#: lib/bds/rendering/labels.ex:86 +#: lib/bds/rendering/labels.ex:87 #, elixir-autogen, elixir-format msgid "December" msgstr "Dezember" -#: lib/bds/rendering/labels.ex:46 +#: lib/bds/rendering/labels.ex:47 #, elixir-autogen, elixir-format msgid "February" msgstr "Februar" -#: lib/bds/rendering/labels.ex:42 +#: lib/bds/rendering/labels.ex:43 #, elixir-autogen, elixir-format msgid "January" msgstr "Januar" -#: lib/bds/rendering/labels.ex:66 +#: lib/bds/rendering/labels.ex:67 #, elixir-autogen, elixir-format msgid "July" msgstr "Juli" -#: lib/bds/rendering/labels.ex:62 +#: lib/bds/rendering/labels.ex:63 #, elixir-autogen, elixir-format msgid "June" msgstr "Juni" @@ -75,22 +75,22 @@ msgstr "Verlinkt von" msgid "Loading calendar…" msgstr "Kalender wird geladen …" -#: lib/bds/rendering/labels.ex:50 +#: lib/bds/rendering/labels.ex:51 #, elixir-autogen, elixir-format msgid "March" msgstr "März" -#: lib/bds/rendering/labels.ex:58 +#: lib/bds/rendering/labels.ex:59 #, elixir-autogen, elixir-format msgid "May" msgstr "Mai" -#: lib/bds/rendering/labels.ex:82 +#: lib/bds/rendering/labels.ex:83 #, elixir-autogen, elixir-format msgid "November" msgstr "Nov." -#: lib/bds/rendering/labels.ex:78 +#: lib/bds/rendering/labels.ex:79 #, elixir-autogen, elixir-format msgid "October" msgstr "Oktober" @@ -110,7 +110,7 @@ msgstr "Seitennummerierung" msgid "Search..." msgstr "Suchen..." -#: lib/bds/rendering/labels.ex:74 +#: lib/bds/rendering/labels.ex:75 #, elixir-autogen, elixir-format msgid "September" msgstr "Sept." @@ -135,22 +135,27 @@ msgstr "neuer" msgid "older" msgstr "älter" -#: lib/bds/rendering/labels.ex:31 +#: lib/bds/rendering/labels.ex:32 #, elixir-autogen, elixir-format msgid "Back to preview home" msgstr "Zurück zur Vorschau-Startseite" -#: lib/bds/rendering/labels.ex:30 +#: lib/bds/rendering/labels.ex:31 #, elixir-autogen, elixir-format msgid "The requested preview page could not be found." msgstr "Die angeforderte Vorschauseite konnte nicht gefunden werden." -#: lib/bds/rendering/labels.ex:33 +#: lib/bds/rendering/labels.ex:34 #, elixir-autogen, elixir-format msgid "Vimeo video" msgstr "Vimeo-Video" -#: lib/bds/rendering/labels.ex:32 +#: lib/bds/rendering/labels.ex:33 #, elixir-autogen, elixir-format msgid "YouTube video" msgstr "YouTube-Video" + +#: lib/bds/rendering/labels.ex:30 +#, elixir-autogen, elixir-format +msgid "No results found" +msgstr "Keine Ergebnisse gefunden" diff --git a/priv/gettext/de/LC_MESSAGES/ui.po b/priv/gettext/de/LC_MESSAGES/ui.po index 3889b61..11923af 100644 --- a/priv/gettext/de/LC_MESSAGES/ui.po +++ b/priv/gettext/de/LC_MESSAGES/ui.po @@ -79,7 +79,7 @@ msgstr "KI-Einstellungen" #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:42 #: lib/bds/desktop/shell_live/overlay_manager.ex:72 -#: lib/bds/desktop/shell_live/post_editor.ex:776 +#: lib/bds/desktop/shell_live/post_editor.ex:781 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 #, elixir-autogen, elixir-format msgid "AI Suggestions" @@ -257,14 +257,14 @@ msgid "Auto" msgstr "Automatisch" #: lib/bds/desktop/shell_data.ex:98 -#: lib/bds/desktop/shell_live.ex:409 +#: lib/bds/desktop/shell_live.ex:414 #: lib/bds/desktop/shell_live/chat_editor.ex:231 #: lib/bds/desktop/shell_live/media_editor.ex:156 #: lib/bds/desktop/shell_live/media_editor.ex:349 #: lib/bds/desktop/shell_live/media_editor.ex:538 #: lib/bds/desktop/shell_live/overlay_manager.ex:73 -#: lib/bds/desktop/shell_live/post_editor.ex:643 -#: lib/bds/desktop/shell_live/post_editor.ex:692 +#: lib/bds/desktop/shell_live/post_editor.ex:648 +#: lib/bds/desktop/shell_live/post_editor.ex:697 #, elixir-autogen, elixir-format msgid "Automatic AI actions stay gated by airplane mode." msgstr "Automatische KI-Aktionen bleiben durch den Flugmodus gesperrt." @@ -404,7 +404,7 @@ msgstr "Kategorie-Standards, Render-Flags und Template-Zuordnung" msgid "Category name is required" msgstr "Kategoriename ist erforderlich" -#: lib/bds/desktop/shell_live.ex:932 +#: lib/bds/desktop/shell_live.ex:937 #: lib/bds/desktop/shell_live/chat_editor.ex:87 #: lib/bds/desktop/shell_live/chat_editor.ex:230 #: lib/bds/desktop/shell_live/chat_editor.ex:318 @@ -537,7 +537,7 @@ msgstr "MCP-Konfiguration %{path} konnte nicht gelesen werden: %{reason}" msgid "Could not write MCP config %{path}: %{reason}" msgstr "MCP-Konfiguration %{path} konnte nicht geschrieben werden: %{reason}" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:42 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:48 #, elixir-autogen, elixir-format msgid "Create" msgstr "Erstellen" @@ -649,7 +649,7 @@ msgstr "Standard-Bearbeitungsmodus und Diff-Darstellung" #: lib/bds/desktop/shell_live/sidebar_delete.ex:179 #: lib/bds/desktop/shell_live/sidebar_delete.ex:181 #: lib/bds/desktop/shell_live/sidebar_delete.ex:182 -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:58 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:70 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:15 #, elixir-autogen, elixir-format msgid "Delete" @@ -706,9 +706,9 @@ msgstr "Erkennen" #: lib/bds/desktop/shell_live/media_editor.ex:199 #: lib/bds/desktop/shell_live/media_editor.ex:205 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:59 -#: lib/bds/desktop/shell_live/post_editor.ex:642 -#: lib/bds/desktop/shell_live/post_editor.ex:671 -#: lib/bds/desktop/shell_live/post_editor.ex:677 +#: lib/bds/desktop/shell_live/post_editor.ex:647 +#: lib/bds/desktop/shell_live/post_editor.ex:676 +#: lib/bds/desktop/shell_live/post_editor.ex:682 #, elixir-autogen, elixir-format msgid "Detect Language" msgstr "Sprache erkennen" @@ -749,7 +749,7 @@ msgid "Discard changes and restore the published version" msgstr "Änderungen verwerfen und veröffentlichte Version wiederherstellen" #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:21 -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:84 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:96 #, elixir-autogen, elixir-format msgid "Discover" msgstr "Entdecken" @@ -991,7 +991,7 @@ msgstr "Galerie" msgid "Generate Site" msgstr "Website generieren" -#: lib/bds/desktop/shell_live.ex:933 +#: lib/bds/desktop/shell_live.ex:938 #: lib/bds/ui/sidebar.ex:784 #, elixir-autogen, elixir-format msgid "Git" @@ -1004,7 +1004,7 @@ msgid "Git Diff" msgstr "Git-Diff" #: lib/bds/desktop/shell_data.ex:244 -#: lib/bds/desktop/shell_live.ex:929 +#: lib/bds/desktop/shell_live.ex:934 #: lib/bds/desktop/shell_live/panel_renderer.ex:171 #, elixir-autogen, elixir-format msgid "Git Log" @@ -1033,7 +1033,7 @@ msgstr "Host" #: lib/bds/desktop/shell_data.ex:116 #: lib/bds/desktop/shell_live/index.html.heex:666 #: lib/bds/desktop/shell_live/media_editor.ex:703 -#: lib/bds/desktop/shell_live/post_editor.ex:894 +#: lib/bds/desktop/shell_live/post_editor.ex:899 #, elixir-autogen, elixir-format msgid "Idle" msgstr "Leerlauf" @@ -1127,9 +1127,9 @@ msgstr "Importdefinitionen" msgid "Import failed: %{error}" msgstr "Import fehlgeschlagen: %{error}" -#: lib/bds/desktop/shell_live.ex:580 -#: lib/bds/desktop/shell_live.ex:970 -#: lib/bds/desktop/shell_live.ex:976 +#: lib/bds/desktop/shell_live.ex:585 +#: lib/bds/desktop/shell_live.ex:975 +#: lib/bds/desktop/shell_live.ex:981 #: lib/bds/desktop/shell_live/sidebar_create.ex:47 #, elixir-autogen, elixir-format msgid "Import media" @@ -1204,7 +1204,7 @@ msgid "Language" msgstr "Sprache" #: lib/bds/desktop/shell_live/media_editor.ex:206 -#: lib/bds/desktop/shell_live/post_editor.ex:678 +#: lib/bds/desktop/shell_live/post_editor.ex:683 #, elixir-autogen, elixir-format msgid "Language detection failed." msgstr "Spracherkennung fehlgeschlagen." @@ -1288,7 +1288,7 @@ msgstr "Zuordnen zu..." msgid "Mapped" msgstr "Zugeordnet" -#: lib/bds/desktop/shell_live/post_editor.ex:897 +#: lib/bds/desktop/shell_live/post_editor.ex:902 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:120 #, elixir-autogen, elixir-format msgid "Markdown" @@ -1328,12 +1328,12 @@ msgstr "Medium gespeichert" msgid "Menu" msgstr "Menü" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:75 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:87 #, elixir-autogen, elixir-format msgid "Merge" msgstr "Zusammenführen" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:66 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:78 #: lib/bds/ui/sidebar.ex:747 #, elixir-autogen, elixir-format msgid "Merge Tags" @@ -1424,7 +1424,7 @@ msgstr "Neues Untermenü" msgid "New Template" msgstr "Neue Vorlage" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:52 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:64 #, elixir-autogen, elixir-format msgid "No Template" msgstr "Kein Template" @@ -1721,7 +1721,7 @@ msgstr "Sonstige" msgid "Other (%{count})" msgstr "Andere (%{count})" -#: lib/bds/desktop/shell_live.ex:928 +#: lib/bds/desktop/shell_live.ex:933 #: lib/bds/desktop/shell_live/panel_renderer.ex:83 #, elixir-autogen, elixir-format msgid "Output" @@ -1786,16 +1786,16 @@ msgid "Persist the detected language for this media item" msgstr "Die erkannte Sprache für dieses Medium speichern" #: lib/bds/desktop/shell_live/misc_editor.ex:742 -#: lib/bds/desktop/shell_live/post_editor.ex:474 -#: lib/bds/desktop/shell_live/post_editor.ex:478 -#: lib/bds/desktop/shell_live/post_editor.ex:513 -#: lib/bds/desktop/shell_live/post_editor.ex:517 -#: lib/bds/desktop/shell_live/post_editor.ex:552 -#: lib/bds/desktop/shell_live/post_editor.ex:567 -#: lib/bds/desktop/shell_live/post_editor.ex:596 -#: lib/bds/desktop/shell_live/post_editor.ex:599 -#: lib/bds/desktop/shell_live/post_editor.ex:629 -#: lib/bds/desktop/shell_live/post_editor.ex:632 +#: lib/bds/desktop/shell_live/post_editor.ex:479 +#: lib/bds/desktop/shell_live/post_editor.ex:483 +#: lib/bds/desktop/shell_live/post_editor.ex:518 +#: lib/bds/desktop/shell_live/post_editor.ex:522 +#: lib/bds/desktop/shell_live/post_editor.ex:557 +#: lib/bds/desktop/shell_live/post_editor.ex:572 +#: lib/bds/desktop/shell_live/post_editor.ex:601 +#: lib/bds/desktop/shell_live/post_editor.ex:604 +#: lib/bds/desktop/shell_live/post_editor.ex:634 +#: lib/bds/desktop/shell_live/post_editor.ex:637 #: lib/bds/desktop/shell_live/sidebar_components.ex:515 #: lib/bds/desktop/shell_live/sidebar_delete.ex:174 #: lib/bds/ui/registry.ex:99 @@ -1825,12 +1825,12 @@ msgstr "Beitragsvorlage" msgid "Post is marked as do-not-translate but has translations" msgstr "Beitrag ist als nicht-übersetzen markiert, hat aber Übersetzungen" -#: lib/bds/desktop/shell_live/post_editor.ex:513 +#: lib/bds/desktop/shell_live/post_editor.ex:518 #, elixir-autogen, elixir-format msgid "Post published" msgstr "Beitrag veröffentlicht" -#: lib/bds/desktop/shell_live/post_editor.ex:474 +#: lib/bds/desktop/shell_live/post_editor.ex:479 #, elixir-autogen, elixir-format msgid "Post saved" msgstr "Beitrag gespeichert" @@ -1854,7 +1854,7 @@ msgstr "Beiträge (%{count})" msgid "Preferences" msgstr "Einstellungen" -#: lib/bds/desktop/shell_live/post_editor.ex:898 +#: lib/bds/desktop/shell_live/post_editor.ex:903 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:121 #, elixir-autogen, elixir-format msgid "Preview" @@ -1923,7 +1923,7 @@ msgid "Publish Selected" msgstr "Ausgewähltes veröffentlichen" #: lib/bds/desktop/shell_data.ex:181 -#: lib/bds/desktop/shell_live/post_editor.ex:892 +#: lib/bds/desktop/shell_live/post_editor.ex:897 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:456 #: lib/bds/ui/sidebar.ex:320 #, elixir-autogen, elixir-format @@ -2121,7 +2121,7 @@ msgstr "Lösung" msgid "Result" msgstr "Ergebnis" -#: lib/bds/desktop/shell_live/post_editor.ex:893 +#: lib/bds/desktop/shell_live/post_editor.ex:898 #, elixir-autogen, elixir-format msgid "Reverted" msgstr "Zurückgesetzt" @@ -2161,7 +2161,7 @@ msgstr "SSH-Modus" #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:312 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:329 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:342 -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:57 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:69 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:13 #, elixir-autogen, elixir-format msgid "Save" @@ -2173,7 +2173,7 @@ msgid "Save Translation" msgstr "Übersetzung speichern" #: lib/bds/desktop/shell_live/media_editor.ex:702 -#: lib/bds/desktop/shell_live/post_editor.ex:891 +#: lib/bds/desktop/shell_live/post_editor.ex:896 #, elixir-autogen, elixir-format msgid "Saved" msgstr "Gespeichert" @@ -2431,7 +2431,7 @@ msgstr "Untermenü" msgid "Switch project" msgstr "Projekt wechseln" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:82 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:94 #, elixir-autogen, elixir-format msgid "Sync" msgstr "Synchronisieren" @@ -2468,11 +2468,11 @@ msgstr "Schlagwortname" #: lib/bds/desktop/shell_live/index.html.heex:325 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:161 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:158 -#: lib/bds/desktop/shell_live/tags_editor.ex:94 -#: lib/bds/desktop/shell_live/tags_editor.ex:136 -#: lib/bds/desktop/shell_live/tags_editor.ex:189 -#: lib/bds/desktop/shell_live/tags_editor.ex:203 -#: lib/bds/desktop/shell_live/tags_editor.ex:234 +#: lib/bds/desktop/shell_live/tags_editor.ex:104 +#: lib/bds/desktop/shell_live/tags_editor.ex:166 +#: lib/bds/desktop/shell_live/tags_editor.ex:219 +#: lib/bds/desktop/shell_live/tags_editor.ex:233 +#: lib/bds/desktop/shell_live/tags_editor.ex:264 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 @@ -2483,7 +2483,7 @@ msgstr "Schlagwortname" msgid "Tags" msgstr "Tags" -#: lib/bds/desktop/shell_live.ex:927 +#: lib/bds/desktop/shell_live.ex:932 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 #, elixir-autogen, elixir-format msgid "Tasks" @@ -2648,9 +2648,9 @@ msgstr "Seitenleiste umschalten" #: lib/bds/desktop/shell_live/media_editor.ex:558 #: lib/bds/desktop/shell_live/media_editor.ex:563 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:76 -#: lib/bds/desktop/shell_live/post_editor.ex:691 -#: lib/bds/desktop/shell_live/post_editor.ex:720 +#: lib/bds/desktop/shell_live/post_editor.ex:696 #: lib/bds/desktop/shell_live/post_editor.ex:725 +#: lib/bds/desktop/shell_live/post_editor.ex:730 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:60 #, elixir-autogen, elixir-format msgid "Translate" @@ -2727,7 +2727,7 @@ msgstr "Verknüpfung mit Beitrag aufheben" #: lib/bds/desktop/shell_live/media_editor.ex:701 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:10 -#: lib/bds/desktop/shell_live/post_editor.ex:890 +#: lib/bds/desktop/shell_live/post_editor.ex:895 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:7 #, elixir-autogen, elixir-format msgid "Unsaved" @@ -3179,12 +3179,12 @@ msgstr "Willkommen beim KI-Assistenten" msgid "Comparing database and filesystem metadata" msgstr "Vergleicht Datenbank- und Dateisystem-Metadaten" -#: lib/bds/desktop/shell_live.ex:650 +#: lib/bds/desktop/shell_live.ex:655 #, elixir-autogen, elixir-format msgid "Added %{count} images to post" msgstr "%{count} Bilder zum Beitrag hinzugefügt" -#: lib/bds/desktop/shell_live.ex:621 +#: lib/bds/desktop/shell_live.ex:626 #, elixir-autogen, elixir-format msgid "Added %{title}" msgstr "%{title} hinzugefügt" @@ -3204,18 +3204,18 @@ msgstr "Endbenutzer-Anleitung für redaktionelle Arbeitsabläufe, Medien, Vorlag msgid "Image Import Concurrency" msgstr "Gleichzeitige Bildimporte" -#: lib/bds/desktop/shell_live.ex:408 -#: lib/bds/desktop/shell_live.ex:421 -#: lib/bds/desktop/shell_live.ex:621 -#: lib/bds/desktop/shell_live.ex:649 -#: lib/bds/desktop/shell_live.ex:658 -#: lib/bds/desktop/shell_live.ex:665 +#: lib/bds/desktop/shell_live.ex:413 +#: lib/bds/desktop/shell_live.ex:426 +#: lib/bds/desktop/shell_live.ex:626 +#: lib/bds/desktop/shell_live.ex:654 +#: lib/bds/desktop/shell_live.ex:663 +#: lib/bds/desktop/shell_live.ex:670 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:407 #, elixir-autogen, elixir-format msgid "Add Gallery Images" msgstr "Galerie-Bilder hinzufügen" -#: lib/bds/desktop/shell_live.ex:666 +#: lib/bds/desktop/shell_live.ex:671 #, elixir-autogen, elixir-format msgid "Failed to process %{path}: %{reason}" msgstr "%{path} konnte nicht verarbeitet werden: %{reason}" @@ -3230,12 +3230,12 @@ msgstr "Archivieren" msgid "Move this post to the archive" msgstr "Diesen Beitrag ins Archiv verschieben" -#: lib/bds/desktop/shell_live/post_editor.ex:596 +#: lib/bds/desktop/shell_live/post_editor.ex:601 #, elixir-autogen, elixir-format msgid "Post archived" msgstr "Beitrag archiviert" -#: lib/bds/desktop/shell_live/post_editor.ex:629 +#: lib/bds/desktop/shell_live/post_editor.ex:634 #, elixir-autogen, elixir-format msgid "Post unarchived" msgstr "Beitrag wiederhergestellt" diff --git a/priv/gettext/en/LC_MESSAGES/render.po b/priv/gettext/en/LC_MESSAGES/render.po index e392b72..49ff141 100644 --- a/priv/gettext/en/LC_MESSAGES/render.po +++ b/priv/gettext/en/LC_MESSAGES/render.po @@ -5,7 +5,7 @@ msgid "Archive" msgstr "" -#: lib/bds/rendering/labels.ex:54 +#: lib/bds/rendering/labels.ex:55 #, elixir-autogen, elixir-format msgid "April" msgstr "" @@ -15,7 +15,7 @@ msgstr "" msgid "Archive calendar" msgstr "" -#: lib/bds/rendering/labels.ex:70 +#: lib/bds/rendering/labels.ex:71 #, elixir-autogen, elixir-format msgid "August" msgstr "" @@ -35,27 +35,27 @@ msgstr "" msgid "Close calendar" msgstr "" -#: lib/bds/rendering/labels.ex:86 +#: lib/bds/rendering/labels.ex:87 #, elixir-autogen, elixir-format msgid "December" msgstr "" -#: lib/bds/rendering/labels.ex:46 +#: lib/bds/rendering/labels.ex:47 #, elixir-autogen, elixir-format msgid "February" msgstr "" -#: lib/bds/rendering/labels.ex:42 +#: lib/bds/rendering/labels.ex:43 #, elixir-autogen, elixir-format msgid "January" msgstr "" -#: lib/bds/rendering/labels.ex:66 +#: lib/bds/rendering/labels.ex:67 #, elixir-autogen, elixir-format msgid "July" msgstr "" -#: lib/bds/rendering/labels.ex:62 +#: lib/bds/rendering/labels.ex:63 #, elixir-autogen, elixir-format msgid "June" msgstr "" @@ -75,22 +75,22 @@ msgstr "" msgid "Loading calendar…" msgstr "" -#: lib/bds/rendering/labels.ex:50 +#: lib/bds/rendering/labels.ex:51 #, elixir-autogen, elixir-format msgid "March" msgstr "" -#: lib/bds/rendering/labels.ex:58 +#: lib/bds/rendering/labels.ex:59 #, elixir-autogen, elixir-format msgid "May" msgstr "" -#: lib/bds/rendering/labels.ex:82 +#: lib/bds/rendering/labels.ex:83 #, elixir-autogen, elixir-format msgid "November" msgstr "" -#: lib/bds/rendering/labels.ex:78 +#: lib/bds/rendering/labels.ex:79 #, elixir-autogen, elixir-format msgid "October" msgstr "" @@ -110,7 +110,7 @@ msgstr "" msgid "Search..." msgstr "" -#: lib/bds/rendering/labels.ex:74 +#: lib/bds/rendering/labels.ex:75 #, elixir-autogen, elixir-format msgid "September" msgstr "" @@ -135,22 +135,27 @@ msgstr "" msgid "older" msgstr "" -#: lib/bds/rendering/labels.ex:31 +#: lib/bds/rendering/labels.ex:32 #, elixir-autogen, elixir-format msgid "Back to preview home" msgstr "" -#: lib/bds/rendering/labels.ex:30 +#: lib/bds/rendering/labels.ex:31 #, elixir-autogen, elixir-format msgid "The requested preview page could not be found." msgstr "" -#: lib/bds/rendering/labels.ex:33 +#: lib/bds/rendering/labels.ex:34 #, elixir-autogen, elixir-format msgid "Vimeo video" msgstr "" -#: lib/bds/rendering/labels.ex:32 +#: lib/bds/rendering/labels.ex:33 #, elixir-autogen, elixir-format msgid "YouTube video" msgstr "" + +#: lib/bds/rendering/labels.ex:30 +#, elixir-autogen, elixir-format +msgid "No results found" +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/ui.po b/priv/gettext/en/LC_MESSAGES/ui.po index 6e13ad3..87e8288 100644 --- a/priv/gettext/en/LC_MESSAGES/ui.po +++ b/priv/gettext/en/LC_MESSAGES/ui.po @@ -79,7 +79,7 @@ msgstr "" #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:42 #: lib/bds/desktop/shell_live/overlay_manager.ex:72 -#: lib/bds/desktop/shell_live/post_editor.ex:776 +#: lib/bds/desktop/shell_live/post_editor.ex:781 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 #, elixir-autogen, elixir-format msgid "AI Suggestions" @@ -257,14 +257,14 @@ msgid "Auto" msgstr "" #: lib/bds/desktop/shell_data.ex:98 -#: lib/bds/desktop/shell_live.ex:409 +#: lib/bds/desktop/shell_live.ex:414 #: lib/bds/desktop/shell_live/chat_editor.ex:231 #: lib/bds/desktop/shell_live/media_editor.ex:156 #: lib/bds/desktop/shell_live/media_editor.ex:349 #: lib/bds/desktop/shell_live/media_editor.ex:538 #: lib/bds/desktop/shell_live/overlay_manager.ex:73 -#: lib/bds/desktop/shell_live/post_editor.ex:643 -#: lib/bds/desktop/shell_live/post_editor.ex:692 +#: lib/bds/desktop/shell_live/post_editor.ex:648 +#: lib/bds/desktop/shell_live/post_editor.ex:697 #, elixir-autogen, elixir-format msgid "Automatic AI actions stay gated by airplane mode." msgstr "" @@ -404,7 +404,7 @@ msgstr "" msgid "Category name is required" msgstr "" -#: lib/bds/desktop/shell_live.ex:932 +#: lib/bds/desktop/shell_live.ex:937 #: lib/bds/desktop/shell_live/chat_editor.ex:87 #: lib/bds/desktop/shell_live/chat_editor.ex:230 #: lib/bds/desktop/shell_live/chat_editor.ex:318 @@ -537,7 +537,7 @@ msgstr "" msgid "Could not write MCP config %{path}: %{reason}" msgstr "" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:42 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:48 #, elixir-autogen, elixir-format msgid "Create" msgstr "" @@ -649,7 +649,7 @@ msgstr "" #: lib/bds/desktop/shell_live/sidebar_delete.ex:179 #: lib/bds/desktop/shell_live/sidebar_delete.ex:181 #: lib/bds/desktop/shell_live/sidebar_delete.ex:182 -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:58 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:70 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:15 #, elixir-autogen, elixir-format msgid "Delete" @@ -706,9 +706,9 @@ msgstr "" #: lib/bds/desktop/shell_live/media_editor.ex:199 #: lib/bds/desktop/shell_live/media_editor.ex:205 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:59 -#: lib/bds/desktop/shell_live/post_editor.ex:642 -#: lib/bds/desktop/shell_live/post_editor.ex:671 -#: lib/bds/desktop/shell_live/post_editor.ex:677 +#: lib/bds/desktop/shell_live/post_editor.ex:647 +#: lib/bds/desktop/shell_live/post_editor.ex:676 +#: lib/bds/desktop/shell_live/post_editor.ex:682 #, elixir-autogen, elixir-format msgid "Detect Language" msgstr "" @@ -749,7 +749,7 @@ msgid "Discard changes and restore the published version" msgstr "" #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:21 -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:84 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:96 #, elixir-autogen, elixir-format msgid "Discover" msgstr "" @@ -991,7 +991,7 @@ msgstr "" msgid "Generate Site" msgstr "" -#: lib/bds/desktop/shell_live.ex:933 +#: lib/bds/desktop/shell_live.ex:938 #: lib/bds/ui/sidebar.ex:784 #, elixir-autogen, elixir-format msgid "Git" @@ -1004,7 +1004,7 @@ msgid "Git Diff" msgstr "" #: lib/bds/desktop/shell_data.ex:244 -#: lib/bds/desktop/shell_live.ex:929 +#: lib/bds/desktop/shell_live.ex:934 #: lib/bds/desktop/shell_live/panel_renderer.ex:171 #, elixir-autogen, elixir-format msgid "Git Log" @@ -1033,7 +1033,7 @@ msgstr "" #: lib/bds/desktop/shell_data.ex:116 #: lib/bds/desktop/shell_live/index.html.heex:666 #: lib/bds/desktop/shell_live/media_editor.ex:703 -#: lib/bds/desktop/shell_live/post_editor.ex:894 +#: lib/bds/desktop/shell_live/post_editor.ex:899 #, elixir-autogen, elixir-format msgid "Idle" msgstr "" @@ -1127,9 +1127,9 @@ msgstr "" msgid "Import failed: %{error}" msgstr "" -#: lib/bds/desktop/shell_live.ex:580 -#: lib/bds/desktop/shell_live.ex:970 -#: lib/bds/desktop/shell_live.ex:976 +#: lib/bds/desktop/shell_live.ex:585 +#: lib/bds/desktop/shell_live.ex:975 +#: lib/bds/desktop/shell_live.ex:981 #: lib/bds/desktop/shell_live/sidebar_create.ex:47 #, elixir-autogen, elixir-format msgid "Import media" @@ -1204,7 +1204,7 @@ msgid "Language" msgstr "" #: lib/bds/desktop/shell_live/media_editor.ex:206 -#: lib/bds/desktop/shell_live/post_editor.ex:678 +#: lib/bds/desktop/shell_live/post_editor.ex:683 #, elixir-autogen, elixir-format msgid "Language detection failed." msgstr "" @@ -1288,7 +1288,7 @@ msgstr "" msgid "Mapped" msgstr "" -#: lib/bds/desktop/shell_live/post_editor.ex:897 +#: lib/bds/desktop/shell_live/post_editor.ex:902 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:120 #, elixir-autogen, elixir-format msgid "Markdown" @@ -1328,12 +1328,12 @@ msgstr "" msgid "Menu" msgstr "" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:75 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:87 #, elixir-autogen, elixir-format msgid "Merge" msgstr "" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:66 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:78 #: lib/bds/ui/sidebar.ex:747 #, elixir-autogen, elixir-format msgid "Merge Tags" @@ -1424,7 +1424,7 @@ msgstr "" msgid "New Template" msgstr "" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:52 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:64 #, elixir-autogen, elixir-format msgid "No Template" msgstr "" @@ -1721,7 +1721,7 @@ msgstr "" msgid "Other (%{count})" msgstr "" -#: lib/bds/desktop/shell_live.ex:928 +#: lib/bds/desktop/shell_live.ex:933 #: lib/bds/desktop/shell_live/panel_renderer.ex:83 #, elixir-autogen, elixir-format msgid "Output" @@ -1786,16 +1786,16 @@ msgid "Persist the detected language for this media item" msgstr "" #: lib/bds/desktop/shell_live/misc_editor.ex:742 -#: lib/bds/desktop/shell_live/post_editor.ex:474 -#: lib/bds/desktop/shell_live/post_editor.ex:478 -#: lib/bds/desktop/shell_live/post_editor.ex:513 -#: lib/bds/desktop/shell_live/post_editor.ex:517 -#: lib/bds/desktop/shell_live/post_editor.ex:552 -#: lib/bds/desktop/shell_live/post_editor.ex:567 -#: lib/bds/desktop/shell_live/post_editor.ex:596 -#: lib/bds/desktop/shell_live/post_editor.ex:599 -#: lib/bds/desktop/shell_live/post_editor.ex:629 -#: lib/bds/desktop/shell_live/post_editor.ex:632 +#: lib/bds/desktop/shell_live/post_editor.ex:479 +#: lib/bds/desktop/shell_live/post_editor.ex:483 +#: lib/bds/desktop/shell_live/post_editor.ex:518 +#: lib/bds/desktop/shell_live/post_editor.ex:522 +#: lib/bds/desktop/shell_live/post_editor.ex:557 +#: lib/bds/desktop/shell_live/post_editor.ex:572 +#: lib/bds/desktop/shell_live/post_editor.ex:601 +#: lib/bds/desktop/shell_live/post_editor.ex:604 +#: lib/bds/desktop/shell_live/post_editor.ex:634 +#: lib/bds/desktop/shell_live/post_editor.ex:637 #: lib/bds/desktop/shell_live/sidebar_components.ex:515 #: lib/bds/desktop/shell_live/sidebar_delete.ex:174 #: lib/bds/ui/registry.ex:99 @@ -1825,12 +1825,12 @@ msgstr "" msgid "Post is marked as do-not-translate but has translations" msgstr "" -#: lib/bds/desktop/shell_live/post_editor.ex:513 +#: lib/bds/desktop/shell_live/post_editor.ex:518 #, elixir-autogen, elixir-format msgid "Post published" msgstr "" -#: lib/bds/desktop/shell_live/post_editor.ex:474 +#: lib/bds/desktop/shell_live/post_editor.ex:479 #, elixir-autogen, elixir-format msgid "Post saved" msgstr "" @@ -1854,7 +1854,7 @@ msgstr "" msgid "Preferences" msgstr "" -#: lib/bds/desktop/shell_live/post_editor.ex:898 +#: lib/bds/desktop/shell_live/post_editor.ex:903 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:121 #, elixir-autogen, elixir-format msgid "Preview" @@ -1923,7 +1923,7 @@ msgid "Publish Selected" msgstr "" #: lib/bds/desktop/shell_data.ex:181 -#: lib/bds/desktop/shell_live/post_editor.ex:892 +#: lib/bds/desktop/shell_live/post_editor.ex:897 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:456 #: lib/bds/ui/sidebar.ex:320 #, elixir-autogen, elixir-format @@ -2121,7 +2121,7 @@ msgstr "" msgid "Result" msgstr "" -#: lib/bds/desktop/shell_live/post_editor.ex:893 +#: lib/bds/desktop/shell_live/post_editor.ex:898 #, elixir-autogen, elixir-format msgid "Reverted" msgstr "" @@ -2161,7 +2161,7 @@ msgstr "" #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:312 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:329 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:342 -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:57 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:69 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:13 #, elixir-autogen, elixir-format msgid "Save" @@ -2173,7 +2173,7 @@ msgid "Save Translation" msgstr "" #: lib/bds/desktop/shell_live/media_editor.ex:702 -#: lib/bds/desktop/shell_live/post_editor.ex:891 +#: lib/bds/desktop/shell_live/post_editor.ex:896 #, elixir-autogen, elixir-format msgid "Saved" msgstr "" @@ -2431,7 +2431,7 @@ msgstr "" msgid "Switch project" msgstr "" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:82 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:94 #, elixir-autogen, elixir-format msgid "Sync" msgstr "" @@ -2468,11 +2468,11 @@ msgstr "" #: lib/bds/desktop/shell_live/index.html.heex:325 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:161 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:158 -#: lib/bds/desktop/shell_live/tags_editor.ex:94 -#: lib/bds/desktop/shell_live/tags_editor.ex:136 -#: lib/bds/desktop/shell_live/tags_editor.ex:189 -#: lib/bds/desktop/shell_live/tags_editor.ex:203 -#: lib/bds/desktop/shell_live/tags_editor.ex:234 +#: lib/bds/desktop/shell_live/tags_editor.ex:104 +#: lib/bds/desktop/shell_live/tags_editor.ex:166 +#: lib/bds/desktop/shell_live/tags_editor.ex:219 +#: lib/bds/desktop/shell_live/tags_editor.ex:233 +#: lib/bds/desktop/shell_live/tags_editor.ex:264 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 @@ -2483,7 +2483,7 @@ msgstr "" msgid "Tags" msgstr "" -#: lib/bds/desktop/shell_live.ex:927 +#: lib/bds/desktop/shell_live.ex:932 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 #, elixir-autogen, elixir-format msgid "Tasks" @@ -2648,9 +2648,9 @@ msgstr "" #: lib/bds/desktop/shell_live/media_editor.ex:558 #: lib/bds/desktop/shell_live/media_editor.ex:563 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:76 -#: lib/bds/desktop/shell_live/post_editor.ex:691 -#: lib/bds/desktop/shell_live/post_editor.ex:720 +#: lib/bds/desktop/shell_live/post_editor.ex:696 #: lib/bds/desktop/shell_live/post_editor.ex:725 +#: lib/bds/desktop/shell_live/post_editor.ex:730 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:60 #, elixir-autogen, elixir-format msgid "Translate" @@ -2727,7 +2727,7 @@ msgstr "" #: lib/bds/desktop/shell_live/media_editor.ex:701 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:10 -#: lib/bds/desktop/shell_live/post_editor.ex:890 +#: lib/bds/desktop/shell_live/post_editor.ex:895 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:7 #, elixir-autogen, elixir-format msgid "Unsaved" @@ -3179,12 +3179,12 @@ msgstr "" msgid "Comparing database and filesystem metadata" msgstr "Comparing database and filesystem metadata" -#: lib/bds/desktop/shell_live.ex:650 +#: lib/bds/desktop/shell_live.ex:655 #, elixir-autogen, elixir-format msgid "Added %{count} images to post" msgstr "Added %{count} images to post" -#: lib/bds/desktop/shell_live.ex:621 +#: lib/bds/desktop/shell_live.ex:626 #, elixir-autogen, elixir-format msgid "Added %{title}" msgstr "Added %{title}" @@ -3204,18 +3204,18 @@ msgstr "" msgid "Image Import Concurrency" msgstr "Image Import Concurrency" -#: lib/bds/desktop/shell_live.ex:408 -#: lib/bds/desktop/shell_live.ex:421 -#: lib/bds/desktop/shell_live.ex:621 -#: lib/bds/desktop/shell_live.ex:649 -#: lib/bds/desktop/shell_live.ex:658 -#: lib/bds/desktop/shell_live.ex:665 +#: lib/bds/desktop/shell_live.ex:413 +#: lib/bds/desktop/shell_live.ex:426 +#: lib/bds/desktop/shell_live.ex:626 +#: lib/bds/desktop/shell_live.ex:654 +#: lib/bds/desktop/shell_live.ex:663 +#: lib/bds/desktop/shell_live.ex:670 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:407 #, elixir-autogen, elixir-format msgid "Add Gallery Images" msgstr "Add Gallery Images" -#: lib/bds/desktop/shell_live.ex:666 +#: lib/bds/desktop/shell_live.ex:671 #, elixir-autogen, elixir-format msgid "Failed to process %{path}: %{reason}" msgstr "Failed to process %{path}: %{reason}" @@ -3230,12 +3230,12 @@ msgstr "" msgid "Move this post to the archive" msgstr "" -#: lib/bds/desktop/shell_live/post_editor.ex:596 +#: lib/bds/desktop/shell_live/post_editor.ex:601 #, elixir-autogen, elixir-format, fuzzy msgid "Post archived" msgstr "" -#: lib/bds/desktop/shell_live/post_editor.ex:629 +#: lib/bds/desktop/shell_live/post_editor.ex:634 #, elixir-autogen, elixir-format, fuzzy msgid "Post unarchived" msgstr "" diff --git a/priv/gettext/es/LC_MESSAGES/render.po b/priv/gettext/es/LC_MESSAGES/render.po index 4d81811..6a31b53 100644 --- a/priv/gettext/es/LC_MESSAGES/render.po +++ b/priv/gettext/es/LC_MESSAGES/render.po @@ -5,7 +5,7 @@ msgid "Archive" msgstr "Archivo" -#: lib/bds/rendering/labels.ex:54 +#: lib/bds/rendering/labels.ex:55 #, elixir-autogen, elixir-format msgid "April" msgstr "abril" @@ -15,7 +15,7 @@ msgstr "abril" msgid "Archive calendar" msgstr "Archivo" -#: lib/bds/rendering/labels.ex:70 +#: lib/bds/rendering/labels.ex:71 #, elixir-autogen, elixir-format msgid "August" msgstr "agosto" @@ -35,27 +35,27 @@ msgstr "No se pudieron cargar los datos del calendario." msgid "Close calendar" msgstr "Cerrar calendario" -#: lib/bds/rendering/labels.ex:86 +#: lib/bds/rendering/labels.ex:87 #, elixir-autogen, elixir-format msgid "December" msgstr "diciembre" -#: lib/bds/rendering/labels.ex:46 +#: lib/bds/rendering/labels.ex:47 #, elixir-autogen, elixir-format msgid "February" msgstr "febrero" -#: lib/bds/rendering/labels.ex:42 +#: lib/bds/rendering/labels.ex:43 #, elixir-autogen, elixir-format msgid "January" msgstr "enero" -#: lib/bds/rendering/labels.ex:66 +#: lib/bds/rendering/labels.ex:67 #, elixir-autogen, elixir-format msgid "July" msgstr "julio" -#: lib/bds/rendering/labels.ex:62 +#: lib/bds/rendering/labels.ex:63 #, elixir-autogen, elixir-format msgid "June" msgstr "junio" @@ -75,22 +75,22 @@ msgstr "Enlazado desde" msgid "Loading calendar…" msgstr "Cargando calendario…" -#: lib/bds/rendering/labels.ex:50 +#: lib/bds/rendering/labels.ex:51 #, elixir-autogen, elixir-format msgid "March" msgstr "marzo" -#: lib/bds/rendering/labels.ex:58 +#: lib/bds/rendering/labels.ex:59 #, elixir-autogen, elixir-format msgid "May" msgstr "mayo" -#: lib/bds/rendering/labels.ex:82 +#: lib/bds/rendering/labels.ex:83 #, elixir-autogen, elixir-format msgid "November" msgstr "noviembre" -#: lib/bds/rendering/labels.ex:78 +#: lib/bds/rendering/labels.ex:79 #, elixir-autogen, elixir-format msgid "October" msgstr "octubre" @@ -110,7 +110,7 @@ msgstr "Paginación" msgid "Search..." msgstr "Buscar..." -#: lib/bds/rendering/labels.ex:74 +#: lib/bds/rendering/labels.ex:75 #, elixir-autogen, elixir-format msgid "September" msgstr "septiembre" @@ -135,22 +135,27 @@ msgstr "más reciente" msgid "older" msgstr "más antiguo" -#: lib/bds/rendering/labels.ex:31 +#: lib/bds/rendering/labels.ex:32 #, elixir-autogen, elixir-format msgid "Back to preview home" msgstr "Volver al inicio de vista previa" -#: lib/bds/rendering/labels.ex:30 +#: lib/bds/rendering/labels.ex:31 #, elixir-autogen, elixir-format msgid "The requested preview page could not be found." msgstr "No se pudo encontrar la página de vista previa solicitada." -#: lib/bds/rendering/labels.ex:33 +#: lib/bds/rendering/labels.ex:34 #, elixir-autogen, elixir-format msgid "Vimeo video" msgstr "Vídeo de Vimeo" -#: lib/bds/rendering/labels.ex:32 +#: lib/bds/rendering/labels.ex:33 #, elixir-autogen, elixir-format msgid "YouTube video" msgstr "Vídeo de YouTube" + +#: lib/bds/rendering/labels.ex:30 +#, elixir-autogen, elixir-format +msgid "No results found" +msgstr "No se encontraron resultados" diff --git a/priv/gettext/es/LC_MESSAGES/ui.po b/priv/gettext/es/LC_MESSAGES/ui.po index 9d82e6f..dcd6a7b 100644 --- a/priv/gettext/es/LC_MESSAGES/ui.po +++ b/priv/gettext/es/LC_MESSAGES/ui.po @@ -79,7 +79,7 @@ msgstr "Configuración de IA" #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:42 #: lib/bds/desktop/shell_live/overlay_manager.ex:72 -#: lib/bds/desktop/shell_live/post_editor.ex:776 +#: lib/bds/desktop/shell_live/post_editor.ex:781 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 #, elixir-autogen, elixir-format msgid "AI Suggestions" @@ -257,14 +257,14 @@ msgid "Auto" msgstr "Automático" #: lib/bds/desktop/shell_data.ex:98 -#: lib/bds/desktop/shell_live.ex:409 +#: lib/bds/desktop/shell_live.ex:414 #: lib/bds/desktop/shell_live/chat_editor.ex:231 #: lib/bds/desktop/shell_live/media_editor.ex:156 #: lib/bds/desktop/shell_live/media_editor.ex:349 #: lib/bds/desktop/shell_live/media_editor.ex:538 #: lib/bds/desktop/shell_live/overlay_manager.ex:73 -#: lib/bds/desktop/shell_live/post_editor.ex:643 -#: lib/bds/desktop/shell_live/post_editor.ex:692 +#: lib/bds/desktop/shell_live/post_editor.ex:648 +#: lib/bds/desktop/shell_live/post_editor.ex:697 #, elixir-autogen, elixir-format msgid "Automatic AI actions stay gated by airplane mode." msgstr "Las acciones automáticas de IA siguen bloqueadas por el modo avión." @@ -404,7 +404,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:932 +#: lib/bds/desktop/shell_live.ex:937 #: lib/bds/desktop/shell_live/chat_editor.ex:87 #: lib/bds/desktop/shell_live/chat_editor.ex:230 #: lib/bds/desktop/shell_live/chat_editor.ex:318 @@ -537,7 +537,7 @@ msgstr "No se pudo leer la configuración MCP %{path}: %{reason}" msgid "Could not write MCP config %{path}: %{reason}" msgstr "No se pudo escribir la configuración MCP %{path}: %{reason}" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:42 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:48 #, elixir-autogen, elixir-format msgid "Create" msgstr "Crear" @@ -649,7 +649,7 @@ msgstr "Modo de edición predeterminado y presentación de diff" #: lib/bds/desktop/shell_live/sidebar_delete.ex:179 #: lib/bds/desktop/shell_live/sidebar_delete.ex:181 #: lib/bds/desktop/shell_live/sidebar_delete.ex:182 -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:58 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:70 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:15 #, elixir-autogen, elixir-format msgid "Delete" @@ -706,9 +706,9 @@ msgstr "Detectar" #: lib/bds/desktop/shell_live/media_editor.ex:199 #: lib/bds/desktop/shell_live/media_editor.ex:205 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:59 -#: lib/bds/desktop/shell_live/post_editor.ex:642 -#: lib/bds/desktop/shell_live/post_editor.ex:671 -#: lib/bds/desktop/shell_live/post_editor.ex:677 +#: lib/bds/desktop/shell_live/post_editor.ex:647 +#: lib/bds/desktop/shell_live/post_editor.ex:676 +#: lib/bds/desktop/shell_live/post_editor.ex:682 #, elixir-autogen, elixir-format msgid "Detect Language" msgstr "Detectar idioma" @@ -749,7 +749,7 @@ msgid "Discard changes and restore the published version" msgstr "Descartar cambios y restaurar la versión publicada" #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:21 -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:84 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:96 #, elixir-autogen, elixir-format msgid "Discover" msgstr "Descubrir" @@ -991,7 +991,7 @@ msgstr "Galeria" msgid "Generate Site" msgstr "Generar sitio" -#: lib/bds/desktop/shell_live.ex:933 +#: lib/bds/desktop/shell_live.ex:938 #: lib/bds/ui/sidebar.ex:784 #, elixir-autogen, elixir-format msgid "Git" @@ -1004,7 +1004,7 @@ msgid "Git Diff" msgstr "Diff de Git" #: lib/bds/desktop/shell_data.ex:244 -#: lib/bds/desktop/shell_live.ex:929 +#: lib/bds/desktop/shell_live.ex:934 #: lib/bds/desktop/shell_live/panel_renderer.ex:171 #, elixir-autogen, elixir-format msgid "Git Log" @@ -1033,7 +1033,7 @@ msgstr "Host" #: lib/bds/desktop/shell_data.ex:116 #: lib/bds/desktop/shell_live/index.html.heex:666 #: lib/bds/desktop/shell_live/media_editor.ex:703 -#: lib/bds/desktop/shell_live/post_editor.ex:894 +#: lib/bds/desktop/shell_live/post_editor.ex:899 #, elixir-autogen, elixir-format msgid "Idle" msgstr "Inactivo" @@ -1127,9 +1127,9 @@ msgstr "Definiciones de importación" msgid "Import failed: %{error}" msgstr "La importación falló: %{error}" -#: lib/bds/desktop/shell_live.ex:580 -#: lib/bds/desktop/shell_live.ex:970 -#: lib/bds/desktop/shell_live.ex:976 +#: lib/bds/desktop/shell_live.ex:585 +#: lib/bds/desktop/shell_live.ex:975 +#: lib/bds/desktop/shell_live.ex:981 #: lib/bds/desktop/shell_live/sidebar_create.ex:47 #, elixir-autogen, elixir-format msgid "Import media" @@ -1204,7 +1204,7 @@ msgid "Language" msgstr "Idioma" #: lib/bds/desktop/shell_live/media_editor.ex:206 -#: lib/bds/desktop/shell_live/post_editor.ex:678 +#: lib/bds/desktop/shell_live/post_editor.ex:683 #, elixir-autogen, elixir-format msgid "Language detection failed." msgstr "La detección de idioma falló." @@ -1288,7 +1288,7 @@ msgstr "Mapear a..." msgid "Mapped" msgstr "Mapeado" -#: lib/bds/desktop/shell_live/post_editor.ex:897 +#: lib/bds/desktop/shell_live/post_editor.ex:902 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:120 #, elixir-autogen, elixir-format msgid "Markdown" @@ -1328,12 +1328,12 @@ msgstr "Medio guardado" msgid "Menu" msgstr "Menú" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:75 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:87 #, elixir-autogen, elixir-format msgid "Merge" msgstr "Fusionar" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:66 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:78 #: lib/bds/ui/sidebar.ex:747 #, elixir-autogen, elixir-format msgid "Merge Tags" @@ -1424,7 +1424,7 @@ msgstr "Nuevo submenú" msgid "New Template" msgstr "Nueva plantilla" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:52 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:64 #, elixir-autogen, elixir-format msgid "No Template" msgstr "Sin plantilla" @@ -1721,7 +1721,7 @@ msgstr "Otros" msgid "Other (%{count})" msgstr "Otros (%{count})" -#: lib/bds/desktop/shell_live.ex:928 +#: lib/bds/desktop/shell_live.ex:933 #: lib/bds/desktop/shell_live/panel_renderer.ex:83 #, elixir-autogen, elixir-format msgid "Output" @@ -1786,16 +1786,16 @@ msgid "Persist the detected language for this media item" msgstr "Guardar el idioma detectado para este medio" #: lib/bds/desktop/shell_live/misc_editor.ex:742 -#: lib/bds/desktop/shell_live/post_editor.ex:474 -#: lib/bds/desktop/shell_live/post_editor.ex:478 -#: lib/bds/desktop/shell_live/post_editor.ex:513 -#: lib/bds/desktop/shell_live/post_editor.ex:517 -#: lib/bds/desktop/shell_live/post_editor.ex:552 -#: lib/bds/desktop/shell_live/post_editor.ex:567 -#: lib/bds/desktop/shell_live/post_editor.ex:596 -#: lib/bds/desktop/shell_live/post_editor.ex:599 -#: lib/bds/desktop/shell_live/post_editor.ex:629 -#: lib/bds/desktop/shell_live/post_editor.ex:632 +#: lib/bds/desktop/shell_live/post_editor.ex:479 +#: lib/bds/desktop/shell_live/post_editor.ex:483 +#: lib/bds/desktop/shell_live/post_editor.ex:518 +#: lib/bds/desktop/shell_live/post_editor.ex:522 +#: lib/bds/desktop/shell_live/post_editor.ex:557 +#: lib/bds/desktop/shell_live/post_editor.ex:572 +#: lib/bds/desktop/shell_live/post_editor.ex:601 +#: lib/bds/desktop/shell_live/post_editor.ex:604 +#: lib/bds/desktop/shell_live/post_editor.ex:634 +#: lib/bds/desktop/shell_live/post_editor.ex:637 #: lib/bds/desktop/shell_live/sidebar_components.ex:515 #: lib/bds/desktop/shell_live/sidebar_delete.ex:174 #: lib/bds/ui/registry.ex:99 @@ -1825,12 +1825,12 @@ msgstr "Plantilla de publicación" msgid "Post is marked as do-not-translate but has translations" msgstr "La entrada está marcada como no-traducir pero tiene traducciones" -#: lib/bds/desktop/shell_live/post_editor.ex:513 +#: lib/bds/desktop/shell_live/post_editor.ex:518 #, elixir-autogen, elixir-format msgid "Post published" msgstr "Artículo publicado" -#: lib/bds/desktop/shell_live/post_editor.ex:474 +#: lib/bds/desktop/shell_live/post_editor.ex:479 #, elixir-autogen, elixir-format msgid "Post saved" msgstr "Artículo guardado" @@ -1854,7 +1854,7 @@ msgstr "Publicaciones (%{count})" msgid "Preferences" msgstr "Preferencias" -#: lib/bds/desktop/shell_live/post_editor.ex:898 +#: lib/bds/desktop/shell_live/post_editor.ex:903 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:121 #, elixir-autogen, elixir-format msgid "Preview" @@ -1923,7 +1923,7 @@ msgid "Publish Selected" msgstr "Publicar seleccionados" #: lib/bds/desktop/shell_data.ex:181 -#: lib/bds/desktop/shell_live/post_editor.ex:892 +#: lib/bds/desktop/shell_live/post_editor.ex:897 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:456 #: lib/bds/ui/sidebar.ex:320 #, elixir-autogen, elixir-format @@ -2121,7 +2121,7 @@ msgstr "Resolución" msgid "Result" msgstr "Resultado" -#: lib/bds/desktop/shell_live/post_editor.ex:893 +#: lib/bds/desktop/shell_live/post_editor.ex:898 #, elixir-autogen, elixir-format msgid "Reverted" msgstr "Revertido" @@ -2161,7 +2161,7 @@ msgstr "Modo SSH" #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:312 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:329 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:342 -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:57 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:69 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:13 #, elixir-autogen, elixir-format msgid "Save" @@ -2173,7 +2173,7 @@ msgid "Save Translation" msgstr "Guardar traducción" #: lib/bds/desktop/shell_live/media_editor.ex:702 -#: lib/bds/desktop/shell_live/post_editor.ex:891 +#: lib/bds/desktop/shell_live/post_editor.ex:896 #, elixir-autogen, elixir-format msgid "Saved" msgstr "Guardado" @@ -2431,7 +2431,7 @@ msgstr "Submenú" msgid "Switch project" msgstr "Cambiar proyecto" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:82 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:94 #, elixir-autogen, elixir-format msgid "Sync" msgstr "Sincronizar" @@ -2468,11 +2468,11 @@ msgstr "Nombre de la etiqueta" #: lib/bds/desktop/shell_live/index.html.heex:325 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:161 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:158 -#: lib/bds/desktop/shell_live/tags_editor.ex:94 -#: lib/bds/desktop/shell_live/tags_editor.ex:136 -#: lib/bds/desktop/shell_live/tags_editor.ex:189 -#: lib/bds/desktop/shell_live/tags_editor.ex:203 -#: lib/bds/desktop/shell_live/tags_editor.ex:234 +#: lib/bds/desktop/shell_live/tags_editor.ex:104 +#: lib/bds/desktop/shell_live/tags_editor.ex:166 +#: lib/bds/desktop/shell_live/tags_editor.ex:219 +#: lib/bds/desktop/shell_live/tags_editor.ex:233 +#: lib/bds/desktop/shell_live/tags_editor.ex:264 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 @@ -2483,7 +2483,7 @@ msgstr "Nombre de la etiqueta" msgid "Tags" msgstr "Etiquetas" -#: lib/bds/desktop/shell_live.ex:927 +#: lib/bds/desktop/shell_live.ex:932 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 #, elixir-autogen, elixir-format msgid "Tasks" @@ -2648,9 +2648,9 @@ msgstr "Alternar barra lateral" #: lib/bds/desktop/shell_live/media_editor.ex:558 #: lib/bds/desktop/shell_live/media_editor.ex:563 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:76 -#: lib/bds/desktop/shell_live/post_editor.ex:691 -#: lib/bds/desktop/shell_live/post_editor.ex:720 +#: lib/bds/desktop/shell_live/post_editor.ex:696 #: lib/bds/desktop/shell_live/post_editor.ex:725 +#: lib/bds/desktop/shell_live/post_editor.ex:730 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:60 #, elixir-autogen, elixir-format msgid "Translate" @@ -2727,7 +2727,7 @@ msgstr "Desvincular del artículo" #: lib/bds/desktop/shell_live/media_editor.ex:701 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:10 -#: lib/bds/desktop/shell_live/post_editor.ex:890 +#: lib/bds/desktop/shell_live/post_editor.ex:895 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:7 #, elixir-autogen, elixir-format msgid "Unsaved" @@ -3179,12 +3179,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:650 +#: lib/bds/desktop/shell_live.ex:655 #, 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:621 +#: lib/bds/desktop/shell_live.ex:626 #, elixir-autogen, elixir-format msgid "Added %{title}" msgstr "%{title} añadido" @@ -3204,18 +3204,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:408 -#: lib/bds/desktop/shell_live.ex:421 -#: lib/bds/desktop/shell_live.ex:621 -#: lib/bds/desktop/shell_live.ex:649 -#: lib/bds/desktop/shell_live.ex:658 -#: lib/bds/desktop/shell_live.ex:665 +#: lib/bds/desktop/shell_live.ex:413 +#: lib/bds/desktop/shell_live.ex:426 +#: lib/bds/desktop/shell_live.ex:626 +#: lib/bds/desktop/shell_live.ex:654 +#: lib/bds/desktop/shell_live.ex:663 +#: lib/bds/desktop/shell_live.ex:670 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:407 #, elixir-autogen, elixir-format msgid "Add Gallery Images" msgstr "Añadir imágenes a la galería" -#: lib/bds/desktop/shell_live.ex:666 +#: lib/bds/desktop/shell_live.ex:671 #, elixir-autogen, elixir-format msgid "Failed to process %{path}: %{reason}" msgstr "No se pudo procesar %{path}: %{reason}" @@ -3230,12 +3230,12 @@ msgstr "Archivar" msgid "Move this post to the archive" msgstr "Mover este artículo al archivo" -#: lib/bds/desktop/shell_live/post_editor.ex:596 +#: lib/bds/desktop/shell_live/post_editor.ex:601 #, elixir-autogen, elixir-format msgid "Post archived" msgstr "Artículo archivado" -#: lib/bds/desktop/shell_live/post_editor.ex:629 +#: lib/bds/desktop/shell_live/post_editor.ex:634 #, elixir-autogen, elixir-format msgid "Post unarchived" msgstr "Artículo restaurado" diff --git a/priv/gettext/fr/LC_MESSAGES/render.po b/priv/gettext/fr/LC_MESSAGES/render.po index e23d1b9..34aa07e 100644 --- a/priv/gettext/fr/LC_MESSAGES/render.po +++ b/priv/gettext/fr/LC_MESSAGES/render.po @@ -5,7 +5,7 @@ msgid "Archive" msgstr "Archives" -#: lib/bds/rendering/labels.ex:54 +#: lib/bds/rendering/labels.ex:55 #, elixir-autogen, elixir-format msgid "April" msgstr "avril" @@ -15,7 +15,7 @@ msgstr "avril" msgid "Archive calendar" msgstr "Archives" -#: lib/bds/rendering/labels.ex:70 +#: lib/bds/rendering/labels.ex:71 #, elixir-autogen, elixir-format msgid "August" msgstr "août" @@ -35,27 +35,27 @@ msgstr "Impossible de charger les données du calendrier." msgid "Close calendar" msgstr "Fermer le calendrier" -#: lib/bds/rendering/labels.ex:86 +#: lib/bds/rendering/labels.ex:87 #, elixir-autogen, elixir-format msgid "December" msgstr "décembre" -#: lib/bds/rendering/labels.ex:46 +#: lib/bds/rendering/labels.ex:47 #, elixir-autogen, elixir-format msgid "February" msgstr "février" -#: lib/bds/rendering/labels.ex:42 +#: lib/bds/rendering/labels.ex:43 #, elixir-autogen, elixir-format msgid "January" msgstr "janvier" -#: lib/bds/rendering/labels.ex:66 +#: lib/bds/rendering/labels.ex:67 #, elixir-autogen, elixir-format msgid "July" msgstr "juillet" -#: lib/bds/rendering/labels.ex:62 +#: lib/bds/rendering/labels.ex:63 #, elixir-autogen, elixir-format msgid "June" msgstr "juin" @@ -75,22 +75,22 @@ msgstr "Lié depuis" msgid "Loading calendar…" msgstr "Chargement du calendrier…" -#: lib/bds/rendering/labels.ex:50 +#: lib/bds/rendering/labels.ex:51 #, elixir-autogen, elixir-format msgid "March" msgstr "mars" -#: lib/bds/rendering/labels.ex:58 +#: lib/bds/rendering/labels.ex:59 #, elixir-autogen, elixir-format msgid "May" msgstr "mai" -#: lib/bds/rendering/labels.ex:82 +#: lib/bds/rendering/labels.ex:83 #, elixir-autogen, elixir-format msgid "November" msgstr "novembre" -#: lib/bds/rendering/labels.ex:78 +#: lib/bds/rendering/labels.ex:79 #, elixir-autogen, elixir-format msgid "October" msgstr "octobre" @@ -110,7 +110,7 @@ msgstr "Navigation paginée" msgid "Search..." msgstr "Rechercher..." -#: lib/bds/rendering/labels.ex:74 +#: lib/bds/rendering/labels.ex:75 #, elixir-autogen, elixir-format msgid "September" msgstr "septembre" @@ -135,22 +135,27 @@ msgstr "plus récent" msgid "older" msgstr "plus ancien" -#: lib/bds/rendering/labels.ex:31 +#: lib/bds/rendering/labels.ex:32 #, elixir-autogen, elixir-format msgid "Back to preview home" msgstr "Retour à l’accueil de l’aperçu" -#: lib/bds/rendering/labels.ex:30 +#: lib/bds/rendering/labels.ex:31 #, elixir-autogen, elixir-format msgid "The requested preview page could not be found." msgstr "La page d’aperçu demandée est introuvable." -#: lib/bds/rendering/labels.ex:33 +#: lib/bds/rendering/labels.ex:34 #, elixir-autogen, elixir-format msgid "Vimeo video" msgstr "Vidéo Vimeo" -#: lib/bds/rendering/labels.ex:32 +#: lib/bds/rendering/labels.ex:33 #, elixir-autogen, elixir-format msgid "YouTube video" msgstr "Vidéo YouTube" + +#: lib/bds/rendering/labels.ex:30 +#, elixir-autogen, elixir-format +msgid "No results found" +msgstr "Aucun résultat trouvé" diff --git a/priv/gettext/fr/LC_MESSAGES/ui.po b/priv/gettext/fr/LC_MESSAGES/ui.po index 4131881..c0e46a5 100644 --- a/priv/gettext/fr/LC_MESSAGES/ui.po +++ b/priv/gettext/fr/LC_MESSAGES/ui.po @@ -79,7 +79,7 @@ msgstr "Paramètres IA" #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:42 #: lib/bds/desktop/shell_live/overlay_manager.ex:72 -#: lib/bds/desktop/shell_live/post_editor.ex:776 +#: lib/bds/desktop/shell_live/post_editor.ex:781 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 #, elixir-autogen, elixir-format msgid "AI Suggestions" @@ -257,14 +257,14 @@ msgid "Auto" msgstr "Automatique" #: lib/bds/desktop/shell_data.ex:98 -#: lib/bds/desktop/shell_live.ex:409 +#: lib/bds/desktop/shell_live.ex:414 #: lib/bds/desktop/shell_live/chat_editor.ex:231 #: lib/bds/desktop/shell_live/media_editor.ex:156 #: lib/bds/desktop/shell_live/media_editor.ex:349 #: lib/bds/desktop/shell_live/media_editor.ex:538 #: lib/bds/desktop/shell_live/overlay_manager.ex:73 -#: lib/bds/desktop/shell_live/post_editor.ex:643 -#: lib/bds/desktop/shell_live/post_editor.ex:692 +#: lib/bds/desktop/shell_live/post_editor.ex:648 +#: lib/bds/desktop/shell_live/post_editor.ex:697 #, elixir-autogen, elixir-format msgid "Automatic AI actions stay gated by airplane mode." msgstr "Les actions IA automatiques restent bloquées par le mode avion." @@ -404,7 +404,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:932 +#: lib/bds/desktop/shell_live.ex:937 #: lib/bds/desktop/shell_live/chat_editor.ex:87 #: lib/bds/desktop/shell_live/chat_editor.ex:230 #: lib/bds/desktop/shell_live/chat_editor.ex:318 @@ -537,7 +537,7 @@ msgstr "Impossible de lire la configuration MCP %{path} : %{reason}" msgid "Could not write MCP config %{path}: %{reason}" msgstr "Impossible d'écrire la configuration MCP %{path} : %{reason}" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:42 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:48 #, elixir-autogen, elixir-format msgid "Create" msgstr "Créer" @@ -649,7 +649,7 @@ msgstr "Mode d’édition par défaut et présentation des diffs" #: lib/bds/desktop/shell_live/sidebar_delete.ex:179 #: lib/bds/desktop/shell_live/sidebar_delete.ex:181 #: lib/bds/desktop/shell_live/sidebar_delete.ex:182 -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:58 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:70 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:15 #, elixir-autogen, elixir-format msgid "Delete" @@ -706,9 +706,9 @@ msgstr "Détecter" #: lib/bds/desktop/shell_live/media_editor.ex:199 #: lib/bds/desktop/shell_live/media_editor.ex:205 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:59 -#: lib/bds/desktop/shell_live/post_editor.ex:642 -#: lib/bds/desktop/shell_live/post_editor.ex:671 -#: lib/bds/desktop/shell_live/post_editor.ex:677 +#: lib/bds/desktop/shell_live/post_editor.ex:647 +#: lib/bds/desktop/shell_live/post_editor.ex:676 +#: lib/bds/desktop/shell_live/post_editor.ex:682 #, elixir-autogen, elixir-format msgid "Detect Language" msgstr "Détecter la langue" @@ -749,7 +749,7 @@ msgid "Discard changes and restore the published version" msgstr "Annuler les modifications et restaurer la version publiée" #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:21 -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:84 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:96 #, elixir-autogen, elixir-format msgid "Discover" msgstr "Découvrir" @@ -991,7 +991,7 @@ msgstr "Galerie" msgid "Generate Site" msgstr "Générer le site" -#: lib/bds/desktop/shell_live.ex:933 +#: lib/bds/desktop/shell_live.ex:938 #: lib/bds/ui/sidebar.ex:784 #, elixir-autogen, elixir-format msgid "Git" @@ -1004,7 +1004,7 @@ msgid "Git Diff" msgstr "Diff Git" #: lib/bds/desktop/shell_data.ex:244 -#: lib/bds/desktop/shell_live.ex:929 +#: lib/bds/desktop/shell_live.ex:934 #: lib/bds/desktop/shell_live/panel_renderer.ex:171 #, elixir-autogen, elixir-format msgid "Git Log" @@ -1033,7 +1033,7 @@ msgstr "Hôte" #: lib/bds/desktop/shell_data.ex:116 #: lib/bds/desktop/shell_live/index.html.heex:666 #: lib/bds/desktop/shell_live/media_editor.ex:703 -#: lib/bds/desktop/shell_live/post_editor.ex:894 +#: lib/bds/desktop/shell_live/post_editor.ex:899 #, elixir-autogen, elixir-format msgid "Idle" msgstr "Inactif" @@ -1127,9 +1127,9 @@ msgstr "Définitions d’import" msgid "Import failed: %{error}" msgstr "Échec de l’import : %{error}" -#: lib/bds/desktop/shell_live.ex:580 -#: lib/bds/desktop/shell_live.ex:970 -#: lib/bds/desktop/shell_live.ex:976 +#: lib/bds/desktop/shell_live.ex:585 +#: lib/bds/desktop/shell_live.ex:975 +#: lib/bds/desktop/shell_live.ex:981 #: lib/bds/desktop/shell_live/sidebar_create.ex:47 #, elixir-autogen, elixir-format msgid "Import media" @@ -1204,7 +1204,7 @@ msgid "Language" msgstr "Langue" #: lib/bds/desktop/shell_live/media_editor.ex:206 -#: lib/bds/desktop/shell_live/post_editor.ex:678 +#: lib/bds/desktop/shell_live/post_editor.ex:683 #, elixir-autogen, elixir-format msgid "Language detection failed." msgstr "La détection de la langue a échoué." @@ -1288,7 +1288,7 @@ msgstr "Mapper vers..." msgid "Mapped" msgstr "Mappé" -#: lib/bds/desktop/shell_live/post_editor.ex:897 +#: lib/bds/desktop/shell_live/post_editor.ex:902 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:120 #, elixir-autogen, elixir-format msgid "Markdown" @@ -1328,12 +1328,12 @@ msgstr "Média enregistré" msgid "Menu" msgstr "Menu" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:75 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:87 #, elixir-autogen, elixir-format msgid "Merge" msgstr "Fusionner" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:66 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:78 #: lib/bds/ui/sidebar.ex:747 #, elixir-autogen, elixir-format msgid "Merge Tags" @@ -1424,7 +1424,7 @@ msgstr "Nouveau sous-menu" msgid "New Template" msgstr "Nouveau modèle" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:52 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:64 #, elixir-autogen, elixir-format msgid "No Template" msgstr "Aucun template" @@ -1721,7 +1721,7 @@ msgstr "Autre" msgid "Other (%{count})" msgstr "Autres (%{count})" -#: lib/bds/desktop/shell_live.ex:928 +#: lib/bds/desktop/shell_live.ex:933 #: lib/bds/desktop/shell_live/panel_renderer.ex:83 #, elixir-autogen, elixir-format msgid "Output" @@ -1786,16 +1786,16 @@ msgid "Persist the detected language for this media item" msgstr "Enregistrer la langue détectée pour ce média" #: lib/bds/desktop/shell_live/misc_editor.ex:742 -#: lib/bds/desktop/shell_live/post_editor.ex:474 -#: lib/bds/desktop/shell_live/post_editor.ex:478 -#: lib/bds/desktop/shell_live/post_editor.ex:513 -#: lib/bds/desktop/shell_live/post_editor.ex:517 -#: lib/bds/desktop/shell_live/post_editor.ex:552 -#: lib/bds/desktop/shell_live/post_editor.ex:567 -#: lib/bds/desktop/shell_live/post_editor.ex:596 -#: lib/bds/desktop/shell_live/post_editor.ex:599 -#: lib/bds/desktop/shell_live/post_editor.ex:629 -#: lib/bds/desktop/shell_live/post_editor.ex:632 +#: lib/bds/desktop/shell_live/post_editor.ex:479 +#: lib/bds/desktop/shell_live/post_editor.ex:483 +#: lib/bds/desktop/shell_live/post_editor.ex:518 +#: lib/bds/desktop/shell_live/post_editor.ex:522 +#: lib/bds/desktop/shell_live/post_editor.ex:557 +#: lib/bds/desktop/shell_live/post_editor.ex:572 +#: lib/bds/desktop/shell_live/post_editor.ex:601 +#: lib/bds/desktop/shell_live/post_editor.ex:604 +#: lib/bds/desktop/shell_live/post_editor.ex:634 +#: lib/bds/desktop/shell_live/post_editor.ex:637 #: lib/bds/desktop/shell_live/sidebar_components.ex:515 #: lib/bds/desktop/shell_live/sidebar_delete.ex:174 #: lib/bds/ui/registry.ex:99 @@ -1825,12 +1825,12 @@ msgstr "Modèle d’article" msgid "Post is marked as do-not-translate but has translations" msgstr "L'article est marqué ne-pas-traduire mais a des traductions" -#: lib/bds/desktop/shell_live/post_editor.ex:513 +#: lib/bds/desktop/shell_live/post_editor.ex:518 #, elixir-autogen, elixir-format msgid "Post published" msgstr "Article publié" -#: lib/bds/desktop/shell_live/post_editor.ex:474 +#: lib/bds/desktop/shell_live/post_editor.ex:479 #, elixir-autogen, elixir-format msgid "Post saved" msgstr "Article enregistré" @@ -1854,7 +1854,7 @@ msgstr "Articles (%{count})" msgid "Preferences" msgstr "Préférences" -#: lib/bds/desktop/shell_live/post_editor.ex:898 +#: lib/bds/desktop/shell_live/post_editor.ex:903 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:121 #, elixir-autogen, elixir-format msgid "Preview" @@ -1923,7 +1923,7 @@ msgid "Publish Selected" msgstr "Publier la sélection" #: lib/bds/desktop/shell_data.ex:181 -#: lib/bds/desktop/shell_live/post_editor.ex:892 +#: lib/bds/desktop/shell_live/post_editor.ex:897 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:456 #: lib/bds/ui/sidebar.ex:320 #, elixir-autogen, elixir-format @@ -2121,7 +2121,7 @@ msgstr "Résolution" msgid "Result" msgstr "Résultat" -#: lib/bds/desktop/shell_live/post_editor.ex:893 +#: lib/bds/desktop/shell_live/post_editor.ex:898 #, elixir-autogen, elixir-format msgid "Reverted" msgstr "Restauré" @@ -2161,7 +2161,7 @@ msgstr "Mode SSH" #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:312 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:329 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:342 -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:57 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:69 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:13 #, elixir-autogen, elixir-format msgid "Save" @@ -2173,7 +2173,7 @@ msgid "Save Translation" msgstr "Enregistrer la traduction" #: lib/bds/desktop/shell_live/media_editor.ex:702 -#: lib/bds/desktop/shell_live/post_editor.ex:891 +#: lib/bds/desktop/shell_live/post_editor.ex:896 #, elixir-autogen, elixir-format msgid "Saved" msgstr "Enregistré" @@ -2431,7 +2431,7 @@ msgstr "Sous-menu" msgid "Switch project" msgstr "Changer de projet" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:82 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:94 #, elixir-autogen, elixir-format msgid "Sync" msgstr "Synchroniser" @@ -2468,11 +2468,11 @@ msgstr "Nom du mot-clé" #: lib/bds/desktop/shell_live/index.html.heex:325 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:161 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:158 -#: lib/bds/desktop/shell_live/tags_editor.ex:94 -#: lib/bds/desktop/shell_live/tags_editor.ex:136 -#: lib/bds/desktop/shell_live/tags_editor.ex:189 -#: lib/bds/desktop/shell_live/tags_editor.ex:203 -#: lib/bds/desktop/shell_live/tags_editor.ex:234 +#: lib/bds/desktop/shell_live/tags_editor.ex:104 +#: lib/bds/desktop/shell_live/tags_editor.ex:166 +#: lib/bds/desktop/shell_live/tags_editor.ex:219 +#: lib/bds/desktop/shell_live/tags_editor.ex:233 +#: lib/bds/desktop/shell_live/tags_editor.ex:264 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 @@ -2483,7 +2483,7 @@ msgstr "Nom du mot-clé" msgid "Tags" msgstr "Tags" -#: lib/bds/desktop/shell_live.ex:927 +#: lib/bds/desktop/shell_live.ex:932 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 #, elixir-autogen, elixir-format msgid "Tasks" @@ -2648,9 +2648,9 @@ msgstr "Afficher ou masquer la barre latérale" #: lib/bds/desktop/shell_live/media_editor.ex:558 #: lib/bds/desktop/shell_live/media_editor.ex:563 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:76 -#: lib/bds/desktop/shell_live/post_editor.ex:691 -#: lib/bds/desktop/shell_live/post_editor.ex:720 +#: lib/bds/desktop/shell_live/post_editor.ex:696 #: lib/bds/desktop/shell_live/post_editor.ex:725 +#: lib/bds/desktop/shell_live/post_editor.ex:730 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:60 #, elixir-autogen, elixir-format msgid "Translate" @@ -2727,7 +2727,7 @@ msgstr "Dissocier de l'article" #: lib/bds/desktop/shell_live/media_editor.ex:701 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:10 -#: lib/bds/desktop/shell_live/post_editor.ex:890 +#: lib/bds/desktop/shell_live/post_editor.ex:895 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:7 #, elixir-autogen, elixir-format msgid "Unsaved" @@ -3179,12 +3179,12 @@ msgstr "Bienvenue dans l’assistant 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:650 +#: lib/bds/desktop/shell_live.ex:655 #, elixir-autogen, elixir-format msgid "Added %{count} images to post" msgstr "%{count} images ajoutées à l'article" -#: lib/bds/desktop/shell_live.ex:621 +#: lib/bds/desktop/shell_live.ex:626 #, elixir-autogen, elixir-format msgid "Added %{title}" msgstr "%{title} ajouté" @@ -3204,18 +3204,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:408 -#: lib/bds/desktop/shell_live.ex:421 -#: lib/bds/desktop/shell_live.ex:621 -#: lib/bds/desktop/shell_live.ex:649 -#: lib/bds/desktop/shell_live.ex:658 -#: lib/bds/desktop/shell_live.ex:665 +#: lib/bds/desktop/shell_live.ex:413 +#: lib/bds/desktop/shell_live.ex:426 +#: lib/bds/desktop/shell_live.ex:626 +#: lib/bds/desktop/shell_live.ex:654 +#: lib/bds/desktop/shell_live.ex:663 +#: lib/bds/desktop/shell_live.ex:670 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:407 #, elixir-autogen, elixir-format msgid "Add Gallery Images" msgstr "Ajouter des images à la galerie" -#: lib/bds/desktop/shell_live.ex:666 +#: lib/bds/desktop/shell_live.ex:671 #, elixir-autogen, elixir-format msgid "Failed to process %{path}: %{reason}" msgstr "Impossible de traiter %{path} : %{reason}" @@ -3230,12 +3230,12 @@ msgstr "Archiver" msgid "Move this post to the archive" msgstr "Déplacer cet article dans les archives" -#: lib/bds/desktop/shell_live/post_editor.ex:596 +#: lib/bds/desktop/shell_live/post_editor.ex:601 #, elixir-autogen, elixir-format msgid "Post archived" msgstr "Article archivé" -#: lib/bds/desktop/shell_live/post_editor.ex:629 +#: lib/bds/desktop/shell_live/post_editor.ex:634 #, elixir-autogen, elixir-format msgid "Post unarchived" msgstr "Article désarchivé" diff --git a/priv/gettext/it/LC_MESSAGES/render.po b/priv/gettext/it/LC_MESSAGES/render.po index a9f87c6..9c4445e 100644 --- a/priv/gettext/it/LC_MESSAGES/render.po +++ b/priv/gettext/it/LC_MESSAGES/render.po @@ -5,7 +5,7 @@ msgid "Archive" msgstr "Archivio" -#: lib/bds/rendering/labels.ex:54 +#: lib/bds/rendering/labels.ex:55 #, elixir-autogen, elixir-format msgid "April" msgstr "aprile" @@ -15,7 +15,7 @@ msgstr "aprile" msgid "Archive calendar" msgstr "Archivio" -#: lib/bds/rendering/labels.ex:70 +#: lib/bds/rendering/labels.ex:71 #, elixir-autogen, elixir-format msgid "August" msgstr "agosto" @@ -35,27 +35,27 @@ msgstr "Impossibile caricare i dati del calendario." msgid "Close calendar" msgstr "Chiudi calendario" -#: lib/bds/rendering/labels.ex:86 +#: lib/bds/rendering/labels.ex:87 #, elixir-autogen, elixir-format msgid "December" msgstr "dicembre" -#: lib/bds/rendering/labels.ex:46 +#: lib/bds/rendering/labels.ex:47 #, elixir-autogen, elixir-format msgid "February" msgstr "febbraio" -#: lib/bds/rendering/labels.ex:42 +#: lib/bds/rendering/labels.ex:43 #, elixir-autogen, elixir-format msgid "January" msgstr "gennaio" -#: lib/bds/rendering/labels.ex:66 +#: lib/bds/rendering/labels.ex:67 #, elixir-autogen, elixir-format msgid "July" msgstr "luglio" -#: lib/bds/rendering/labels.ex:62 +#: lib/bds/rendering/labels.ex:63 #, elixir-autogen, elixir-format msgid "June" msgstr "giugno" @@ -75,22 +75,22 @@ msgstr "Collegato da" msgid "Loading calendar…" msgstr "Caricamento calendario…" -#: lib/bds/rendering/labels.ex:50 +#: lib/bds/rendering/labels.ex:51 #, elixir-autogen, elixir-format msgid "March" msgstr "marzo" -#: lib/bds/rendering/labels.ex:58 +#: lib/bds/rendering/labels.ex:59 #, elixir-autogen, elixir-format msgid "May" msgstr "maggio" -#: lib/bds/rendering/labels.ex:82 +#: lib/bds/rendering/labels.ex:83 #, elixir-autogen, elixir-format msgid "November" msgstr "novembre" -#: lib/bds/rendering/labels.ex:78 +#: lib/bds/rendering/labels.ex:79 #, elixir-autogen, elixir-format msgid "October" msgstr "ottobre" @@ -110,7 +110,7 @@ msgstr "Paginazione" msgid "Search..." msgstr "Cerca..." -#: lib/bds/rendering/labels.ex:74 +#: lib/bds/rendering/labels.ex:75 #, elixir-autogen, elixir-format msgid "September" msgstr "settembre" @@ -135,22 +135,27 @@ msgstr "più recente" msgid "older" msgstr "più vecchio" -#: lib/bds/rendering/labels.ex:31 +#: lib/bds/rendering/labels.ex:32 #, elixir-autogen, elixir-format msgid "Back to preview home" msgstr "Torna alla home di anteprima" -#: lib/bds/rendering/labels.ex:30 +#: lib/bds/rendering/labels.ex:31 #, elixir-autogen, elixir-format msgid "The requested preview page could not be found." msgstr "La pagina di anteprima richiesta non è stata trovata." -#: lib/bds/rendering/labels.ex:33 +#: lib/bds/rendering/labels.ex:34 #, elixir-autogen, elixir-format msgid "Vimeo video" msgstr "Video Vimeo" -#: lib/bds/rendering/labels.ex:32 +#: lib/bds/rendering/labels.ex:33 #, elixir-autogen, elixir-format msgid "YouTube video" msgstr "Video YouTube" + +#: lib/bds/rendering/labels.ex:30 +#, elixir-autogen, elixir-format +msgid "No results found" +msgstr "Nessun risultato trovato" diff --git a/priv/gettext/it/LC_MESSAGES/ui.po b/priv/gettext/it/LC_MESSAGES/ui.po index 096293d..d8bd642 100644 --- a/priv/gettext/it/LC_MESSAGES/ui.po +++ b/priv/gettext/it/LC_MESSAGES/ui.po @@ -79,7 +79,7 @@ msgstr "Impostazioni IA" #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:42 #: lib/bds/desktop/shell_live/overlay_manager.ex:72 -#: lib/bds/desktop/shell_live/post_editor.ex:776 +#: lib/bds/desktop/shell_live/post_editor.ex:781 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 #, elixir-autogen, elixir-format msgid "AI Suggestions" @@ -257,14 +257,14 @@ msgid "Auto" msgstr "Automatico" #: lib/bds/desktop/shell_data.ex:98 -#: lib/bds/desktop/shell_live.ex:409 +#: lib/bds/desktop/shell_live.ex:414 #: lib/bds/desktop/shell_live/chat_editor.ex:231 #: lib/bds/desktop/shell_live/media_editor.ex:156 #: lib/bds/desktop/shell_live/media_editor.ex:349 #: lib/bds/desktop/shell_live/media_editor.ex:538 #: lib/bds/desktop/shell_live/overlay_manager.ex:73 -#: lib/bds/desktop/shell_live/post_editor.ex:643 -#: lib/bds/desktop/shell_live/post_editor.ex:692 +#: lib/bds/desktop/shell_live/post_editor.ex:648 +#: lib/bds/desktop/shell_live/post_editor.ex:697 #, elixir-autogen, elixir-format msgid "Automatic AI actions stay gated by airplane mode." msgstr "Le azioni IA automatiche restano bloccate dalla modalità aereo." @@ -404,7 +404,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:932 +#: lib/bds/desktop/shell_live.ex:937 #: lib/bds/desktop/shell_live/chat_editor.ex:87 #: lib/bds/desktop/shell_live/chat_editor.ex:230 #: lib/bds/desktop/shell_live/chat_editor.ex:318 @@ -537,7 +537,7 @@ msgstr "Impossibile leggere la configurazione MCP %{path}: %{reason}" msgid "Could not write MCP config %{path}: %{reason}" msgstr "Impossibile scrivere la configurazione MCP %{path}: %{reason}" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:42 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:48 #, elixir-autogen, elixir-format msgid "Create" msgstr "Crea" @@ -649,7 +649,7 @@ msgstr "Modalità di modifica predefinita e presentazione dei diff" #: lib/bds/desktop/shell_live/sidebar_delete.ex:179 #: lib/bds/desktop/shell_live/sidebar_delete.ex:181 #: lib/bds/desktop/shell_live/sidebar_delete.ex:182 -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:58 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:70 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:15 #, elixir-autogen, elixir-format msgid "Delete" @@ -706,9 +706,9 @@ msgstr "Rileva" #: lib/bds/desktop/shell_live/media_editor.ex:199 #: lib/bds/desktop/shell_live/media_editor.ex:205 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:59 -#: lib/bds/desktop/shell_live/post_editor.ex:642 -#: lib/bds/desktop/shell_live/post_editor.ex:671 -#: lib/bds/desktop/shell_live/post_editor.ex:677 +#: lib/bds/desktop/shell_live/post_editor.ex:647 +#: lib/bds/desktop/shell_live/post_editor.ex:676 +#: lib/bds/desktop/shell_live/post_editor.ex:682 #, elixir-autogen, elixir-format msgid "Detect Language" msgstr "Rileva lingua" @@ -749,7 +749,7 @@ msgid "Discard changes and restore the published version" msgstr "Annulla le modifiche e ripristina la versione pubblicata" #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:21 -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:84 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:96 #, elixir-autogen, elixir-format msgid "Discover" msgstr "Scopri" @@ -991,7 +991,7 @@ msgstr "Galleria" msgid "Generate Site" msgstr "Genera sito" -#: lib/bds/desktop/shell_live.ex:933 +#: lib/bds/desktop/shell_live.ex:938 #: lib/bds/ui/sidebar.ex:784 #, elixir-autogen, elixir-format msgid "Git" @@ -1004,7 +1004,7 @@ msgid "Git Diff" msgstr "Diff Git" #: lib/bds/desktop/shell_data.ex:244 -#: lib/bds/desktop/shell_live.ex:929 +#: lib/bds/desktop/shell_live.ex:934 #: lib/bds/desktop/shell_live/panel_renderer.ex:171 #, elixir-autogen, elixir-format msgid "Git Log" @@ -1033,7 +1033,7 @@ msgstr "Host" #: lib/bds/desktop/shell_data.ex:116 #: lib/bds/desktop/shell_live/index.html.heex:666 #: lib/bds/desktop/shell_live/media_editor.ex:703 -#: lib/bds/desktop/shell_live/post_editor.ex:894 +#: lib/bds/desktop/shell_live/post_editor.ex:899 #, elixir-autogen, elixir-format msgid "Idle" msgstr "Inattivo" @@ -1127,9 +1127,9 @@ msgstr "Definizioni di importazione" msgid "Import failed: %{error}" msgstr "Importazione non riuscita: %{error}" -#: lib/bds/desktop/shell_live.ex:580 -#: lib/bds/desktop/shell_live.ex:970 -#: lib/bds/desktop/shell_live.ex:976 +#: lib/bds/desktop/shell_live.ex:585 +#: lib/bds/desktop/shell_live.ex:975 +#: lib/bds/desktop/shell_live.ex:981 #: lib/bds/desktop/shell_live/sidebar_create.ex:47 #, elixir-autogen, elixir-format msgid "Import media" @@ -1204,7 +1204,7 @@ msgid "Language" msgstr "Lingua" #: lib/bds/desktop/shell_live/media_editor.ex:206 -#: lib/bds/desktop/shell_live/post_editor.ex:678 +#: lib/bds/desktop/shell_live/post_editor.ex:683 #, elixir-autogen, elixir-format msgid "Language detection failed." msgstr "Rilevamento della lingua non riuscito." @@ -1288,7 +1288,7 @@ msgstr "Mappa a..." msgid "Mapped" msgstr "Mappato" -#: lib/bds/desktop/shell_live/post_editor.ex:897 +#: lib/bds/desktop/shell_live/post_editor.ex:902 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:120 #, elixir-autogen, elixir-format msgid "Markdown" @@ -1328,12 +1328,12 @@ msgstr "Media salvato" msgid "Menu" msgstr "Menu" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:75 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:87 #, elixir-autogen, elixir-format msgid "Merge" msgstr "Unisci" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:66 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:78 #: lib/bds/ui/sidebar.ex:747 #, elixir-autogen, elixir-format msgid "Merge Tags" @@ -1424,7 +1424,7 @@ msgstr "Nuovo sottomenu" msgid "New Template" msgstr "Nuovo modello" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:52 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:64 #, elixir-autogen, elixir-format msgid "No Template" msgstr "Nessun template" @@ -1721,7 +1721,7 @@ msgstr "Altro" msgid "Other (%{count})" msgstr "Altro (%{count})" -#: lib/bds/desktop/shell_live.ex:928 +#: lib/bds/desktop/shell_live.ex:933 #: lib/bds/desktop/shell_live/panel_renderer.ex:83 #, elixir-autogen, elixir-format msgid "Output" @@ -1786,16 +1786,16 @@ msgid "Persist the detected language for this media item" msgstr "Salva la lingua rilevata per questo media" #: lib/bds/desktop/shell_live/misc_editor.ex:742 -#: lib/bds/desktop/shell_live/post_editor.ex:474 -#: lib/bds/desktop/shell_live/post_editor.ex:478 -#: lib/bds/desktop/shell_live/post_editor.ex:513 -#: lib/bds/desktop/shell_live/post_editor.ex:517 -#: lib/bds/desktop/shell_live/post_editor.ex:552 -#: lib/bds/desktop/shell_live/post_editor.ex:567 -#: lib/bds/desktop/shell_live/post_editor.ex:596 -#: lib/bds/desktop/shell_live/post_editor.ex:599 -#: lib/bds/desktop/shell_live/post_editor.ex:629 -#: lib/bds/desktop/shell_live/post_editor.ex:632 +#: lib/bds/desktop/shell_live/post_editor.ex:479 +#: lib/bds/desktop/shell_live/post_editor.ex:483 +#: lib/bds/desktop/shell_live/post_editor.ex:518 +#: lib/bds/desktop/shell_live/post_editor.ex:522 +#: lib/bds/desktop/shell_live/post_editor.ex:557 +#: lib/bds/desktop/shell_live/post_editor.ex:572 +#: lib/bds/desktop/shell_live/post_editor.ex:601 +#: lib/bds/desktop/shell_live/post_editor.ex:604 +#: lib/bds/desktop/shell_live/post_editor.ex:634 +#: lib/bds/desktop/shell_live/post_editor.ex:637 #: lib/bds/desktop/shell_live/sidebar_components.ex:515 #: lib/bds/desktop/shell_live/sidebar_delete.ex:174 #: lib/bds/ui/registry.ex:99 @@ -1825,12 +1825,12 @@ msgstr "Template del post" msgid "Post is marked as do-not-translate but has translations" msgstr "Il post è contrassegnato come non-tradurre ma ha traduzioni" -#: lib/bds/desktop/shell_live/post_editor.ex:513 +#: lib/bds/desktop/shell_live/post_editor.ex:518 #, elixir-autogen, elixir-format msgid "Post published" msgstr "Articolo pubblicato" -#: lib/bds/desktop/shell_live/post_editor.ex:474 +#: lib/bds/desktop/shell_live/post_editor.ex:479 #, elixir-autogen, elixir-format msgid "Post saved" msgstr "Articolo salvato" @@ -1854,7 +1854,7 @@ msgstr "Articoli (%{count})" msgid "Preferences" msgstr "Preferenze" -#: lib/bds/desktop/shell_live/post_editor.ex:898 +#: lib/bds/desktop/shell_live/post_editor.ex:903 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:121 #, elixir-autogen, elixir-format msgid "Preview" @@ -1923,7 +1923,7 @@ msgid "Publish Selected" msgstr "Pubblica selezionati" #: lib/bds/desktop/shell_data.ex:181 -#: lib/bds/desktop/shell_live/post_editor.ex:892 +#: lib/bds/desktop/shell_live/post_editor.ex:897 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:456 #: lib/bds/ui/sidebar.ex:320 #, elixir-autogen, elixir-format @@ -2121,7 +2121,7 @@ msgstr "Risoluzione" msgid "Result" msgstr "Risultato" -#: lib/bds/desktop/shell_live/post_editor.ex:893 +#: lib/bds/desktop/shell_live/post_editor.ex:898 #, elixir-autogen, elixir-format msgid "Reverted" msgstr "Ripristinato" @@ -2161,7 +2161,7 @@ msgstr "Modalità SSH" #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:312 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:329 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:342 -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:57 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:69 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:13 #, elixir-autogen, elixir-format msgid "Save" @@ -2173,7 +2173,7 @@ msgid "Save Translation" msgstr "Salva traduzione" #: lib/bds/desktop/shell_live/media_editor.ex:702 -#: lib/bds/desktop/shell_live/post_editor.ex:891 +#: lib/bds/desktop/shell_live/post_editor.ex:896 #, elixir-autogen, elixir-format msgid "Saved" msgstr "Salvato" @@ -2431,7 +2431,7 @@ msgstr "Sottomenu" msgid "Switch project" msgstr "Cambia progetto" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:82 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:94 #, elixir-autogen, elixir-format msgid "Sync" msgstr "Sincronizza" @@ -2468,11 +2468,11 @@ msgstr "Nome del tag" #: lib/bds/desktop/shell_live/index.html.heex:325 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:161 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:158 -#: lib/bds/desktop/shell_live/tags_editor.ex:94 -#: lib/bds/desktop/shell_live/tags_editor.ex:136 -#: lib/bds/desktop/shell_live/tags_editor.ex:189 -#: lib/bds/desktop/shell_live/tags_editor.ex:203 -#: lib/bds/desktop/shell_live/tags_editor.ex:234 +#: lib/bds/desktop/shell_live/tags_editor.ex:104 +#: lib/bds/desktop/shell_live/tags_editor.ex:166 +#: lib/bds/desktop/shell_live/tags_editor.ex:219 +#: lib/bds/desktop/shell_live/tags_editor.ex:233 +#: lib/bds/desktop/shell_live/tags_editor.ex:264 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 @@ -2483,7 +2483,7 @@ msgstr "Nome del tag" msgid "Tags" msgstr "Tag" -#: lib/bds/desktop/shell_live.ex:927 +#: lib/bds/desktop/shell_live.ex:932 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 #, elixir-autogen, elixir-format msgid "Tasks" @@ -2648,9 +2648,9 @@ msgstr "Attiva/disattiva barra laterale" #: lib/bds/desktop/shell_live/media_editor.ex:558 #: lib/bds/desktop/shell_live/media_editor.ex:563 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:76 -#: lib/bds/desktop/shell_live/post_editor.ex:691 -#: lib/bds/desktop/shell_live/post_editor.ex:720 +#: lib/bds/desktop/shell_live/post_editor.ex:696 #: lib/bds/desktop/shell_live/post_editor.ex:725 +#: lib/bds/desktop/shell_live/post_editor.ex:730 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:60 #, elixir-autogen, elixir-format msgid "Translate" @@ -2727,7 +2727,7 @@ msgstr "Scollega dall'articolo" #: lib/bds/desktop/shell_live/media_editor.ex:701 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:10 -#: lib/bds/desktop/shell_live/post_editor.ex:890 +#: lib/bds/desktop/shell_live/post_editor.ex:895 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:7 #, elixir-autogen, elixir-format msgid "Unsaved" @@ -3179,12 +3179,12 @@ msgstr "Benvenuto nell’assistente IA" msgid "Comparing database and filesystem metadata" msgstr "Confronto tra i metadati del database e del filesystem" -#: lib/bds/desktop/shell_live.ex:650 +#: lib/bds/desktop/shell_live.ex:655 #, elixir-autogen, elixir-format msgid "Added %{count} images to post" msgstr "%{count} immagini aggiunte al post" -#: lib/bds/desktop/shell_live.ex:621 +#: lib/bds/desktop/shell_live.ex:626 #, elixir-autogen, elixir-format msgid "Added %{title}" msgstr "%{title} aggiunto" @@ -3204,18 +3204,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:408 -#: lib/bds/desktop/shell_live.ex:421 -#: lib/bds/desktop/shell_live.ex:621 -#: lib/bds/desktop/shell_live.ex:649 -#: lib/bds/desktop/shell_live.ex:658 -#: lib/bds/desktop/shell_live.ex:665 +#: lib/bds/desktop/shell_live.ex:413 +#: lib/bds/desktop/shell_live.ex:426 +#: lib/bds/desktop/shell_live.ex:626 +#: lib/bds/desktop/shell_live.ex:654 +#: lib/bds/desktop/shell_live.ex:663 +#: lib/bds/desktop/shell_live.ex:670 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:407 #, elixir-autogen, elixir-format msgid "Add Gallery Images" msgstr "Aggiungi immagini alla galleria" -#: lib/bds/desktop/shell_live.ex:666 +#: lib/bds/desktop/shell_live.ex:671 #, elixir-autogen, elixir-format msgid "Failed to process %{path}: %{reason}" msgstr "Impossibile elaborare %{path}: %{reason}" @@ -3230,12 +3230,12 @@ msgstr "Archivia" msgid "Move this post to the archive" msgstr "Sposta questo articolo nell'archivio" -#: lib/bds/desktop/shell_live/post_editor.ex:596 +#: lib/bds/desktop/shell_live/post_editor.ex:601 #, elixir-autogen, elixir-format msgid "Post archived" msgstr "Articolo archiviato" -#: lib/bds/desktop/shell_live/post_editor.ex:629 +#: lib/bds/desktop/shell_live/post_editor.ex:634 #, elixir-autogen, elixir-format msgid "Post unarchived" msgstr "Articolo ripristinato" diff --git a/priv/gettext/render.pot b/priv/gettext/render.pot index 636958f..baecaaa 100644 --- a/priv/gettext/render.pot +++ b/priv/gettext/render.pot @@ -18,7 +18,7 @@ msgstr "" msgid "Archive" msgstr "" -#: lib/bds/rendering/labels.ex:54 +#: lib/bds/rendering/labels.ex:55 #, elixir-autogen, elixir-format msgid "April" msgstr "" @@ -28,7 +28,7 @@ msgstr "" msgid "Archive calendar" msgstr "" -#: lib/bds/rendering/labels.ex:70 +#: lib/bds/rendering/labels.ex:71 #, elixir-autogen, elixir-format msgid "August" msgstr "" @@ -48,27 +48,27 @@ msgstr "" msgid "Close calendar" msgstr "" -#: lib/bds/rendering/labels.ex:86 +#: lib/bds/rendering/labels.ex:87 #, elixir-autogen, elixir-format msgid "December" msgstr "" -#: lib/bds/rendering/labels.ex:46 +#: lib/bds/rendering/labels.ex:47 #, elixir-autogen, elixir-format msgid "February" msgstr "" -#: lib/bds/rendering/labels.ex:42 +#: lib/bds/rendering/labels.ex:43 #, elixir-autogen, elixir-format msgid "January" msgstr "" -#: lib/bds/rendering/labels.ex:66 +#: lib/bds/rendering/labels.ex:67 #, elixir-autogen, elixir-format msgid "July" msgstr "" -#: lib/bds/rendering/labels.ex:62 +#: lib/bds/rendering/labels.ex:63 #, elixir-autogen, elixir-format msgid "June" msgstr "" @@ -88,22 +88,22 @@ msgstr "" msgid "Loading calendar…" msgstr "" -#: lib/bds/rendering/labels.ex:50 +#: lib/bds/rendering/labels.ex:51 #, elixir-autogen, elixir-format msgid "March" msgstr "" -#: lib/bds/rendering/labels.ex:58 +#: lib/bds/rendering/labels.ex:59 #, elixir-autogen, elixir-format msgid "May" msgstr "" -#: lib/bds/rendering/labels.ex:82 +#: lib/bds/rendering/labels.ex:83 #, elixir-autogen, elixir-format msgid "November" msgstr "" -#: lib/bds/rendering/labels.ex:78 +#: lib/bds/rendering/labels.ex:79 #, elixir-autogen, elixir-format msgid "October" msgstr "" @@ -123,7 +123,7 @@ msgstr "" msgid "Search..." msgstr "" -#: lib/bds/rendering/labels.ex:74 +#: lib/bds/rendering/labels.ex:75 #, elixir-autogen, elixir-format msgid "September" msgstr "" @@ -148,22 +148,27 @@ msgstr "" msgid "older" msgstr "" -#: lib/bds/rendering/labels.ex:31 +#: lib/bds/rendering/labels.ex:32 #, elixir-autogen, elixir-format msgid "Back to preview home" msgstr "" -#: lib/bds/rendering/labels.ex:30 +#: lib/bds/rendering/labels.ex:31 #, elixir-autogen, elixir-format msgid "The requested preview page could not be found." msgstr "" -#: lib/bds/rendering/labels.ex:33 +#: lib/bds/rendering/labels.ex:34 #, elixir-autogen, elixir-format msgid "Vimeo video" msgstr "" -#: lib/bds/rendering/labels.ex:32 +#: lib/bds/rendering/labels.ex:33 #, elixir-autogen, elixir-format msgid "YouTube video" msgstr "" + +#: lib/bds/rendering/labels.ex:30 +#, elixir-autogen, elixir-format +msgid "No results found" +msgstr "" diff --git a/priv/gettext/ui.pot b/priv/gettext/ui.pot index b603636..2b5f120 100644 --- a/priv/gettext/ui.pot +++ b/priv/gettext/ui.pot @@ -92,7 +92,7 @@ msgstr "" #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:42 #: lib/bds/desktop/shell_live/overlay_manager.ex:72 -#: lib/bds/desktop/shell_live/post_editor.ex:776 +#: lib/bds/desktop/shell_live/post_editor.ex:781 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 #, elixir-autogen, elixir-format msgid "AI Suggestions" @@ -270,14 +270,14 @@ msgid "Auto" msgstr "" #: lib/bds/desktop/shell_data.ex:98 -#: lib/bds/desktop/shell_live.ex:409 +#: lib/bds/desktop/shell_live.ex:414 #: lib/bds/desktop/shell_live/chat_editor.ex:231 #: lib/bds/desktop/shell_live/media_editor.ex:156 #: lib/bds/desktop/shell_live/media_editor.ex:349 #: lib/bds/desktop/shell_live/media_editor.ex:538 #: lib/bds/desktop/shell_live/overlay_manager.ex:73 -#: lib/bds/desktop/shell_live/post_editor.ex:643 -#: lib/bds/desktop/shell_live/post_editor.ex:692 +#: lib/bds/desktop/shell_live/post_editor.ex:648 +#: lib/bds/desktop/shell_live/post_editor.ex:697 #, elixir-autogen, elixir-format msgid "Automatic AI actions stay gated by airplane mode." msgstr "" @@ -417,7 +417,7 @@ msgstr "" msgid "Category name is required" msgstr "" -#: lib/bds/desktop/shell_live.ex:932 +#: lib/bds/desktop/shell_live.ex:937 #: lib/bds/desktop/shell_live/chat_editor.ex:87 #: lib/bds/desktop/shell_live/chat_editor.ex:230 #: lib/bds/desktop/shell_live/chat_editor.ex:318 @@ -550,7 +550,7 @@ msgstr "" msgid "Could not write MCP config %{path}: %{reason}" msgstr "" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:42 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:48 #, elixir-autogen, elixir-format msgid "Create" msgstr "" @@ -662,7 +662,7 @@ msgstr "" #: lib/bds/desktop/shell_live/sidebar_delete.ex:179 #: lib/bds/desktop/shell_live/sidebar_delete.ex:181 #: lib/bds/desktop/shell_live/sidebar_delete.ex:182 -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:58 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:70 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:15 #, elixir-autogen, elixir-format msgid "Delete" @@ -719,9 +719,9 @@ msgstr "" #: lib/bds/desktop/shell_live/media_editor.ex:199 #: lib/bds/desktop/shell_live/media_editor.ex:205 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:59 -#: lib/bds/desktop/shell_live/post_editor.ex:642 -#: lib/bds/desktop/shell_live/post_editor.ex:671 -#: lib/bds/desktop/shell_live/post_editor.ex:677 +#: lib/bds/desktop/shell_live/post_editor.ex:647 +#: lib/bds/desktop/shell_live/post_editor.ex:676 +#: lib/bds/desktop/shell_live/post_editor.ex:682 #, elixir-autogen, elixir-format msgid "Detect Language" msgstr "" @@ -762,7 +762,7 @@ msgid "Discard changes and restore the published version" msgstr "" #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:21 -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:84 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:96 #, elixir-autogen, elixir-format msgid "Discover" msgstr "" @@ -1004,7 +1004,7 @@ msgstr "" msgid "Generate Site" msgstr "" -#: lib/bds/desktop/shell_live.ex:933 +#: lib/bds/desktop/shell_live.ex:938 #: lib/bds/ui/sidebar.ex:784 #, elixir-autogen, elixir-format msgid "Git" @@ -1017,7 +1017,7 @@ msgid "Git Diff" msgstr "" #: lib/bds/desktop/shell_data.ex:244 -#: lib/bds/desktop/shell_live.ex:929 +#: lib/bds/desktop/shell_live.ex:934 #: lib/bds/desktop/shell_live/panel_renderer.ex:171 #, elixir-autogen, elixir-format msgid "Git Log" @@ -1046,7 +1046,7 @@ msgstr "" #: lib/bds/desktop/shell_data.ex:116 #: lib/bds/desktop/shell_live/index.html.heex:666 #: lib/bds/desktop/shell_live/media_editor.ex:703 -#: lib/bds/desktop/shell_live/post_editor.ex:894 +#: lib/bds/desktop/shell_live/post_editor.ex:899 #, elixir-autogen, elixir-format msgid "Idle" msgstr "" @@ -1140,9 +1140,9 @@ msgstr "" msgid "Import failed: %{error}" msgstr "" -#: lib/bds/desktop/shell_live.ex:580 -#: lib/bds/desktop/shell_live.ex:970 -#: lib/bds/desktop/shell_live.ex:976 +#: lib/bds/desktop/shell_live.ex:585 +#: lib/bds/desktop/shell_live.ex:975 +#: lib/bds/desktop/shell_live.ex:981 #: lib/bds/desktop/shell_live/sidebar_create.ex:47 #, elixir-autogen, elixir-format msgid "Import media" @@ -1217,7 +1217,7 @@ msgid "Language" msgstr "" #: lib/bds/desktop/shell_live/media_editor.ex:206 -#: lib/bds/desktop/shell_live/post_editor.ex:678 +#: lib/bds/desktop/shell_live/post_editor.ex:683 #, elixir-autogen, elixir-format msgid "Language detection failed." msgstr "" @@ -1301,7 +1301,7 @@ msgstr "" msgid "Mapped" msgstr "" -#: lib/bds/desktop/shell_live/post_editor.ex:897 +#: lib/bds/desktop/shell_live/post_editor.ex:902 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:120 #, elixir-autogen, elixir-format msgid "Markdown" @@ -1341,12 +1341,12 @@ msgstr "" msgid "Menu" msgstr "" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:75 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:87 #, elixir-autogen, elixir-format msgid "Merge" msgstr "" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:66 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:78 #: lib/bds/ui/sidebar.ex:747 #, elixir-autogen, elixir-format msgid "Merge Tags" @@ -1437,7 +1437,7 @@ msgstr "" msgid "New Template" msgstr "" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:52 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:64 #, elixir-autogen, elixir-format msgid "No Template" msgstr "" @@ -1734,7 +1734,7 @@ msgstr "" msgid "Other (%{count})" msgstr "" -#: lib/bds/desktop/shell_live.ex:928 +#: lib/bds/desktop/shell_live.ex:933 #: lib/bds/desktop/shell_live/panel_renderer.ex:83 #, elixir-autogen, elixir-format msgid "Output" @@ -1799,16 +1799,16 @@ msgid "Persist the detected language for this media item" msgstr "" #: lib/bds/desktop/shell_live/misc_editor.ex:742 -#: lib/bds/desktop/shell_live/post_editor.ex:474 -#: lib/bds/desktop/shell_live/post_editor.ex:478 -#: lib/bds/desktop/shell_live/post_editor.ex:513 -#: lib/bds/desktop/shell_live/post_editor.ex:517 -#: lib/bds/desktop/shell_live/post_editor.ex:552 -#: lib/bds/desktop/shell_live/post_editor.ex:567 -#: lib/bds/desktop/shell_live/post_editor.ex:596 -#: lib/bds/desktop/shell_live/post_editor.ex:599 -#: lib/bds/desktop/shell_live/post_editor.ex:629 -#: lib/bds/desktop/shell_live/post_editor.ex:632 +#: lib/bds/desktop/shell_live/post_editor.ex:479 +#: lib/bds/desktop/shell_live/post_editor.ex:483 +#: lib/bds/desktop/shell_live/post_editor.ex:518 +#: lib/bds/desktop/shell_live/post_editor.ex:522 +#: lib/bds/desktop/shell_live/post_editor.ex:557 +#: lib/bds/desktop/shell_live/post_editor.ex:572 +#: lib/bds/desktop/shell_live/post_editor.ex:601 +#: lib/bds/desktop/shell_live/post_editor.ex:604 +#: lib/bds/desktop/shell_live/post_editor.ex:634 +#: lib/bds/desktop/shell_live/post_editor.ex:637 #: lib/bds/desktop/shell_live/sidebar_components.ex:515 #: lib/bds/desktop/shell_live/sidebar_delete.ex:174 #: lib/bds/ui/registry.ex:99 @@ -1838,12 +1838,12 @@ msgstr "" msgid "Post is marked as do-not-translate but has translations" msgstr "" -#: lib/bds/desktop/shell_live/post_editor.ex:513 +#: lib/bds/desktop/shell_live/post_editor.ex:518 #, elixir-autogen, elixir-format msgid "Post published" msgstr "" -#: lib/bds/desktop/shell_live/post_editor.ex:474 +#: lib/bds/desktop/shell_live/post_editor.ex:479 #, elixir-autogen, elixir-format msgid "Post saved" msgstr "" @@ -1867,7 +1867,7 @@ msgstr "" msgid "Preferences" msgstr "" -#: lib/bds/desktop/shell_live/post_editor.ex:898 +#: lib/bds/desktop/shell_live/post_editor.ex:903 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:121 #, elixir-autogen, elixir-format msgid "Preview" @@ -1936,7 +1936,7 @@ msgid "Publish Selected" msgstr "" #: lib/bds/desktop/shell_data.ex:181 -#: lib/bds/desktop/shell_live/post_editor.ex:892 +#: lib/bds/desktop/shell_live/post_editor.ex:897 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:456 #: lib/bds/ui/sidebar.ex:320 #, elixir-autogen, elixir-format @@ -2134,7 +2134,7 @@ msgstr "" msgid "Result" msgstr "" -#: lib/bds/desktop/shell_live/post_editor.ex:893 +#: lib/bds/desktop/shell_live/post_editor.ex:898 #, elixir-autogen, elixir-format msgid "Reverted" msgstr "" @@ -2174,7 +2174,7 @@ msgstr "" #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:312 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:329 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:342 -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:57 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:69 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:13 #, elixir-autogen, elixir-format msgid "Save" @@ -2186,7 +2186,7 @@ msgid "Save Translation" msgstr "" #: lib/bds/desktop/shell_live/media_editor.ex:702 -#: lib/bds/desktop/shell_live/post_editor.ex:891 +#: lib/bds/desktop/shell_live/post_editor.ex:896 #, elixir-autogen, elixir-format msgid "Saved" msgstr "" @@ -2444,7 +2444,7 @@ msgstr "" msgid "Switch project" msgstr "" -#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:82 +#: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:94 #, elixir-autogen, elixir-format msgid "Sync" msgstr "" @@ -2481,11 +2481,11 @@ msgstr "" #: lib/bds/desktop/shell_live/index.html.heex:325 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:161 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:158 -#: lib/bds/desktop/shell_live/tags_editor.ex:94 -#: lib/bds/desktop/shell_live/tags_editor.ex:136 -#: lib/bds/desktop/shell_live/tags_editor.ex:189 -#: lib/bds/desktop/shell_live/tags_editor.ex:203 -#: lib/bds/desktop/shell_live/tags_editor.ex:234 +#: lib/bds/desktop/shell_live/tags_editor.ex:104 +#: lib/bds/desktop/shell_live/tags_editor.ex:166 +#: lib/bds/desktop/shell_live/tags_editor.ex:219 +#: lib/bds/desktop/shell_live/tags_editor.ex:233 +#: lib/bds/desktop/shell_live/tags_editor.ex:264 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 @@ -2496,7 +2496,7 @@ msgstr "" msgid "Tags" msgstr "" -#: lib/bds/desktop/shell_live.ex:927 +#: lib/bds/desktop/shell_live.ex:932 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 #, elixir-autogen, elixir-format msgid "Tasks" @@ -2661,9 +2661,9 @@ msgstr "" #: lib/bds/desktop/shell_live/media_editor.ex:558 #: lib/bds/desktop/shell_live/media_editor.ex:563 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:76 -#: lib/bds/desktop/shell_live/post_editor.ex:691 -#: lib/bds/desktop/shell_live/post_editor.ex:720 +#: lib/bds/desktop/shell_live/post_editor.ex:696 #: lib/bds/desktop/shell_live/post_editor.ex:725 +#: lib/bds/desktop/shell_live/post_editor.ex:730 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:60 #, elixir-autogen, elixir-format msgid "Translate" @@ -2740,7 +2740,7 @@ msgstr "" #: lib/bds/desktop/shell_live/media_editor.ex:701 #: lib/bds/desktop/shell_live/media_editor_html/media_editor.html.heex:10 -#: lib/bds/desktop/shell_live/post_editor.ex:890 +#: lib/bds/desktop/shell_live/post_editor.ex:895 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:7 #, elixir-autogen, elixir-format msgid "Unsaved" @@ -3192,12 +3192,12 @@ msgstr "" msgid "Comparing database and filesystem metadata" msgstr "" -#: lib/bds/desktop/shell_live.ex:650 +#: lib/bds/desktop/shell_live.ex:655 #, elixir-autogen, elixir-format msgid "Added %{count} images to post" msgstr "" -#: lib/bds/desktop/shell_live.ex:621 +#: lib/bds/desktop/shell_live.ex:626 #, elixir-autogen, elixir-format msgid "Added %{title}" msgstr "" @@ -3217,18 +3217,18 @@ msgstr "" msgid "Image Import Concurrency" msgstr "" -#: lib/bds/desktop/shell_live.ex:408 -#: lib/bds/desktop/shell_live.ex:421 -#: lib/bds/desktop/shell_live.ex:621 -#: lib/bds/desktop/shell_live.ex:649 -#: lib/bds/desktop/shell_live.ex:658 -#: lib/bds/desktop/shell_live.ex:665 +#: lib/bds/desktop/shell_live.ex:413 +#: lib/bds/desktop/shell_live.ex:426 +#: lib/bds/desktop/shell_live.ex:626 +#: lib/bds/desktop/shell_live.ex:654 +#: lib/bds/desktop/shell_live.ex:663 +#: lib/bds/desktop/shell_live.ex:670 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:407 #, elixir-autogen, elixir-format msgid "Add Gallery Images" msgstr "" -#: lib/bds/desktop/shell_live.ex:666 +#: lib/bds/desktop/shell_live.ex:671 #, elixir-autogen, elixir-format msgid "Failed to process %{path}: %{reason}" msgstr "" @@ -3243,12 +3243,12 @@ msgstr "" msgid "Move this post to the archive" msgstr "" -#: lib/bds/desktop/shell_live/post_editor.ex:596 +#: lib/bds/desktop/shell_live/post_editor.ex:601 #, elixir-autogen, elixir-format msgid "Post archived" msgstr "" -#: lib/bds/desktop/shell_live/post_editor.ex:629 +#: lib/bds/desktop/shell_live/post_editor.ex:634 #, elixir-autogen, elixir-format msgid "Post unarchived" msgstr "" diff --git a/priv/preview_assets/assets/pagefind-ui.css b/priv/preview_assets/assets/pagefind-ui.css new file mode 100644 index 0000000..ab87619 --- /dev/null +++ b/priv/preview_assets/assets/pagefind-ui.css @@ -0,0 +1,65 @@ +/* Styling for the self-contained PagefindUI search widget. */ +.pagefind-ui { + display: block; + font-size: 0.95rem; +} + +.pagefind-ui__form { + margin: 0 0 0.75rem 0; +} + +.pagefind-ui__search-input { + width: 100%; + padding: 0.5rem 0.75rem; + border: 1px solid var(--pico-form-element-border-color, #ccc); + border-radius: 0.375rem; + font: inherit; + box-sizing: border-box; +} + +.pagefind-ui__results { + display: block; +} + +.pagefind-ui__message { + margin: 0.5rem 0; + opacity: 0.7; +} + +.pagefind-ui__result-list { + list-style: none; + margin: 0; + padding: 0; +} + +.pagefind-ui__result { + padding: 0.5rem 0; + border-bottom: 1px solid var(--pico-muted-border-color, #eee); +} + +.pagefind-ui__result:last-child { + border-bottom: none; +} + +.pagefind-ui__result-link { + display: block; + font-weight: 600; + text-decoration: none; +} + +.pagefind-ui__result-link:hover { + text-decoration: underline; +} + +.pagefind-ui__result-excerpt { + margin: 0.25rem 0 0 0; + opacity: 0.8; + line-height: 1.4; +} + +.pagefind-ui__result-excerpt mark { + background: var(--pico-mark-background-color, #ffe08a); + color: inherit; + padding: 0 0.1em; + border-radius: 0.15em; +} diff --git a/priv/preview_assets/assets/pagefind-ui.js b/priv/preview_assets/assets/pagefind-ui.js new file mode 100644 index 0000000..58f3564 --- /dev/null +++ b/priv/preview_assets/assets/pagefind-ui.js @@ -0,0 +1,272 @@ +/* + * Self-contained client-side search UI for generated blog output. + * + * Exposes a global `PagefindUI` constructor that the bundled + * `search-runtime.js` instantiates. It fetches the per-language fragment + * index (`index.json`) co-located with this script, performs full-text + * matching over the indexed post fragments, and renders ranked results. + * + * No external/CDN dependencies — everything needed ships in this file. + */ +(function () { + "use strict"; + + // Resolve the sibling index.json relative to this script's own URL so the + // same bundle works for every language directory (e.g. /pagefind/, + // /de/pagefind/) without baking the path in at generation time. + var scriptSrc = (document.currentScript && document.currentScript.src) || ""; + + function resolveIndexUrl(src) { + try { + return new URL("index.json", src).href; + } catch (err) { + return "index.json"; + } + } + + function tokenize(value) { + return (value || "") + .toLowerCase() + .split(/[^\p{L}\p{N}]+/u) + .filter(function (token) { + return token.length > 0; + }); + } + + function PagefindUI(options) { + options = options || {}; + this.element = + typeof options.element === "string" + ? document.querySelector(options.element) + : options.element; + + if (!this.element) { + return; + } + + var translations = options.translations || {}; + this.placeholder = translations.placeholder || "Search"; + this.zeroResults = translations.zero_results || "No results found"; + this.indexUrl = options.indexUrl || resolveIndexUrl(scriptSrc); + this.pages = null; + this.loadPromise = null; + + this.render(); + } + + PagefindUI.prototype.render = function () { + var self = this; + this.element.classList.add("pagefind-ui"); + this.element.innerHTML = ""; + + var form = document.createElement("form"); + form.className = "pagefind-ui__form"; + form.setAttribute("role", "search"); + form.addEventListener("submit", function (event) { + event.preventDefault(); + }); + + var input = document.createElement("input"); + input.type = "search"; + input.className = "pagefind-ui__search-input"; + input.setAttribute("autocomplete", "off"); + input.placeholder = this.placeholder; + input.setAttribute("aria-label", this.placeholder); + + var results = document.createElement("div"); + results.className = "pagefind-ui__results"; + + form.appendChild(input); + this.element.appendChild(form); + this.element.appendChild(results); + + this.input = input; + this.results = results; + + var debounce = null; + input.addEventListener("input", function () { + window.clearTimeout(debounce); + debounce = window.setTimeout(function () { + self.search(input.value); + }, 120); + }); + }; + + PagefindUI.prototype.load = function () { + if (this.pages) { + return Promise.resolve(this.pages); + } + if (this.loadPromise) { + return this.loadPromise; + } + + var self = this; + this.loadPromise = fetch(this.indexUrl, { credentials: "same-origin" }) + .then(function (response) { + if (!response.ok) { + throw new Error("pagefind index request failed: " + response.status); + } + return response.json(); + }) + .then(function (data) { + self.pages = (data && data.pages) || []; + return self.pages; + }) + .catch(function () { + self.pages = []; + return self.pages; + }); + + return this.loadPromise; + }; + + PagefindUI.prototype.search = function (query) { + var self = this; + var terms = tokenize(query); + + if (terms.length === 0) { + this.results.innerHTML = ""; + return; + } + + this.load().then(function (pages) { + var matches = []; + + for (var i = 0; i < pages.length; i++) { + var page = pages[i]; + var title = (page.title || "").toLowerCase(); + var body = (page.text || "").toLowerCase(); + var score = 0; + var matchedAll = true; + + for (var t = 0; t < terms.length; t++) { + var term = terms[t]; + var bodyHits = body.split(term).length - 1; + var titleHits = title.split(term).length - 1; + + if (bodyHits === 0 && titleHits === 0) { + matchedAll = false; + break; + } + + // Title matches are weighted more heavily than body matches. + score += bodyHits + titleHits * 5; + } + + if (matchedAll) { + matches.push({ page: page, score: score }); + } + } + + matches.sort(function (a, b) { + return b.score - a.score; + }); + + self.renderResults(matches.slice(0, 10), terms); + }); + }; + + PagefindUI.prototype.renderResults = function (matches, terms) { + this.results.innerHTML = ""; + + if (matches.length === 0) { + var message = document.createElement("p"); + message.className = "pagefind-ui__message"; + message.textContent = this.zeroResults; + this.results.appendChild(message); + return; + } + + var list = document.createElement("ol"); + list.className = "pagefind-ui__result-list"; + + for (var i = 0; i < matches.length; i++) { + var page = matches[i].page; + + var item = document.createElement("li"); + item.className = "pagefind-ui__result"; + + var link = document.createElement("a"); + link.className = "pagefind-ui__result-link"; + link.href = page.url; + link.textContent = page.title || page.url; + + var excerpt = document.createElement("p"); + excerpt.className = "pagefind-ui__result-excerpt"; + buildExcerpt(excerpt, page.text || "", terms); + + item.appendChild(link); + item.appendChild(excerpt); + list.appendChild(item); + } + + this.results.appendChild(list); + }; + + // Build an excerpt around the first matching term and highlight all terms + // with <mark>, using safe text nodes (never innerHTML on untrusted text). + function buildExcerpt(target, text, terms) { + var lower = text.toLowerCase(); + var firstHit = -1; + + for (var t = 0; t < terms.length; t++) { + var idx = lower.indexOf(terms[t]); + if (idx !== -1 && (firstHit === -1 || idx < firstHit)) { + firstHit = idx; + } + } + + var start = firstHit === -1 ? 0 : Math.max(0, firstHit - 60); + var snippet = text.slice(start, start + 220); + if (start > 0) { + snippet = "…" + snippet; + } + if (start + 220 < text.length) { + snippet = snippet + "…"; + } + + highlightInto(target, snippet, terms); + } + + function highlightInto(target, snippet, terms) { + var escaped = terms + .map(function (term) { + return term.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + }) + .filter(function (term) { + return term.length > 0; + }); + + if (escaped.length === 0) { + target.appendChild(document.createTextNode(snippet)); + return; + } + + var pattern = new RegExp("(" + escaped.join("|") + ")", "giu"); + var lastIndex = 0; + var match; + + while ((match = pattern.exec(snippet)) !== null) { + if (match.index > lastIndex) { + target.appendChild( + document.createTextNode(snippet.slice(lastIndex, match.index)) + ); + } + var mark = document.createElement("mark"); + mark.textContent = match[0]; + target.appendChild(mark); + lastIndex = match.index + match[0].length; + + // Guard against zero-length matches looping forever. + if (match.index === pattern.lastIndex) { + pattern.lastIndex++; + } + } + + if (lastIndex < snippet.length) { + target.appendChild(document.createTextNode(snippet.slice(lastIndex))); + } + } + + window.PagefindUI = PagefindUI; +})(); diff --git a/priv/preview_assets/assets/search-runtime.js b/priv/preview_assets/assets/search-runtime.js index c69718e..d38e0cc 100644 --- a/priv/preview_assets/assets/search-runtime.js +++ b/priv/preview_assets/assets/search-runtime.js @@ -15,11 +15,12 @@ } initialized = true; var placeholder = root.getAttribute('data-search-placeholder') || 'Search...'; + var zeroResults = root.getAttribute('data-search-no-results') || 'No results found'; new PagefindUI({ element: root, showSubResults: true, showImages: false, - translations: { placeholder: placeholder } + translations: { placeholder: placeholder, zero_results: zeroResults } }); var input = root.querySelector('input'); if (input) { diff --git a/priv/starter_templates/templates/partials/language-switcher.liquid b/priv/starter_templates/templates/partials/language-switcher.liquid index 71ee921..eb79c2f 100644 --- a/priv/starter_templates/templates/partials/language-switcher.liquid +++ b/priv/starter_templates/templates/partials/language-switcher.liquid @@ -15,7 +15,7 @@ </svg> </button> <div class="blog-search-panel" data-blog-search-panel hidden> - <div id="blog-search" data-blog-search-root data-search-placeholder="{{ labels.search_placeholder }}"></div> + <div id="blog-search" data-blog-search-root data-search-placeholder="{{ labels.search_placeholder }}" data-search-no-results="{{ labels.search_no_results }}"></div> </div> </div> </nav> @@ -35,7 +35,7 @@ </svg> </button> <div class="blog-search-panel" data-blog-search-panel hidden> - <div id="blog-search" data-blog-search-root data-search-placeholder="{{ labels.search_placeholder }}"></div> + <div id="blog-search" data-blog-search-root data-search-placeholder="{{ labels.search_placeholder }}" data-search-no-results="{{ labels.search_no_results }}"></div> </div> </div> {% endif %} diff --git a/test/bds/csm025_hardcoded_languages_test.exs b/test/bds/csm025_hardcoded_languages_test.exs index 6ce4a63..14bdb51 100644 --- a/test/bds/csm025_hardcoded_languages_test.exs +++ b/test/bds/csm025_hardcoded_languages_test.exs @@ -7,7 +7,7 @@ defmodule BDS.CSM025HardcodedLanguagesTest do %{language: main, blog_languages: languages} end - defp html(path), do: {path, "<p>hello</p>"} + defp html(path), do: {path, "<article data-pagefind-body><p>hello</p></article>"} describe "build_outputs/2 derives language prefixes from plan" do test "no hardcoded language prefixes in source" do diff --git a/test/bds/generation/pagefind_test.exs b/test/bds/generation/pagefind_test.exs new file mode 100644 index 0000000..b9cf871 --- /dev/null +++ b/test/bds/generation/pagefind_test.exs @@ -0,0 +1,91 @@ +defmodule BDS.Generation.PagefindTest do + use ExUnit.Case, async: true + + alias BDS.Generation.Pagefind + + defp plan(language, blog_languages), do: %{language: language, blog_languages: blog_languages} + + defp index_for(outputs, relative_path) do + {_path, content} = Enum.find(outputs, fn {path, _} -> path == relative_path end) + Jason.decode!(content) + end + + defp content_for(outputs, relative_path) do + {_path, content} = Enum.find(outputs, fn {path, _} -> path == relative_path end) + content + end + + test "indexes only pages marked with data-pagefind-body and scopes text to that region" do + post_html = """ + <html><head><title>My First Post + + +

My First Post

Searchable elixir content.

+ + + """ + + list_html = "Home" + + outputs = + Pagefind.build_outputs(plan("en", ["en"]), [ + {"posts/first.html", post_html}, + {"index.html", list_html} + ]) + + index = index_for(outputs, "pagefind/index.json") + + assert index["language"] == "en" + # Only the marked post page is indexed; the unmarked list page is excluded. + urls = Enum.map(index["pages"], & &1["url"]) + assert "/posts/first.html" in urls + refute "/index.html" in urls + + page = Enum.find(index["pages"], &(&1["url"] == "/posts/first.html")) + assert page["title"] == "My First Post" + # Body text is scoped to data-pagefind-body — nav/footer text is excluded. + assert page["text"] =~ "Searchable elixir content" + refute page["text"] =~ "ignored-nav-term" + refute page["text"] =~ "footer-term" + end + + test "builds a separate index per language scoped by route prefix" do + en_post = + "EN
english body
" + + de_post = + "DE
deutscher text
" + + outputs = + Pagefind.build_outputs(plan("en", ["en", "de"]), [ + {"posts/first.html", en_post}, + {"de/posts/first.html", de_post} + ]) + + en_index = index_for(outputs, "pagefind/index.json") + de_index = index_for(outputs, "de/pagefind/index.json") + + assert en_index["language"] == "en" + assert Enum.map(en_index["pages"], & &1["url"]) == ["/posts/first.html"] + + assert de_index["language"] == "de" + assert Enum.map(de_index["pages"], & &1["url"]) == ["/de/posts/first.html"] + end + + test "emits a functional PagefindUI script and stylesheet per language" do + outputs = + Pagefind.build_outputs(plan("en", ["en"]), [ + {"posts/first.html", + "T
b
"} + ]) + + js = content_for(outputs, "pagefind/pagefind-ui.js") + css = content_for(outputs, "pagefind/pagefind-ui.css") + + # Real UI defines the PagefindUI global the search runtime instantiates. + assert js =~ "PagefindUI" + refute js =~ "window.bDSPagefind" + # Stylesheet carries real UI selectors, not a one-liner stub. + assert css =~ ".pagefind-ui__results" + end +end diff --git a/test/bds/generation_test.exs b/test/bds/generation_test.exs index aea38bb..cfb593e 100644 --- a/test/bds/generation_test.exs +++ b/test/bds/generation_test.exs @@ -252,7 +252,7 @@ defmodule BDS.GenerationTest do title: "Post View", kind: :post, content: - "

{{ post.title }}

{{ post.content }}
" + "

{{ post.title }}

{{ post.content }}
" }) assert {:ok, published_post_template} = BDS.Templates.publish_template(post_template.id)