From 2fd132e8277c9ed639545629a150ebd72977fb4b Mon Sep 17 00:00:00 2001 From: Chili Palmer Date: Fri, 17 Jul 2026 14:50:25 +0200 Subject: [PATCH] feat: TUI tags panels (cloud, manage, merge) wired to the shared tags backend (issue #34) --- lib/bds/desktop/shell_live/tags_editor.ex | 16 +- lib/bds/tui.ex | 273 ++++++++++++++++++ lib/bds/ui/tags_panel.ex | 240 ++++++++++++++++ priv/gettext/de/LC_MESSAGES/ui.po | 327 +++++++++++++++------- priv/gettext/en/LC_MESSAGES/ui.po | 327 +++++++++++++++------- priv/gettext/es/LC_MESSAGES/ui.po | 327 +++++++++++++++------- priv/gettext/fr/LC_MESSAGES/ui.po | 327 +++++++++++++++------- priv/gettext/it/LC_MESSAGES/ui.po | 327 +++++++++++++++------- priv/gettext/ui.pot | 327 +++++++++++++++------- specs/tui.allium | 20 ++ test/bds/tui_test.exs | 137 +++++++++ 11 files changed, 1987 insertions(+), 661 deletions(-) create mode 100644 lib/bds/ui/tags_panel.ex diff --git a/lib/bds/desktop/shell_live/tags_editor.ex b/lib/bds/desktop/shell_live/tags_editor.ex index e0cc43b..8558437 100644 --- a/lib/bds/desktop/shell_live/tags_editor.ex +++ b/lib/bds/desktop/shell_live/tags_editor.ex @@ -7,7 +7,6 @@ defmodule BDS.Desktop.ShellLive.TagsEditor do alias BDS.{Repo, Tags} alias BDS.Desktop.ShellLive.Notify - alias BDS.Posts.Post alias BDS.Tags.Tag alias BDS.Templates.Template use Gettext, backend: BDS.Gettext @@ -16,12 +15,8 @@ defmodule BDS.Desktop.ShellLive.TagsEditor do @tags_sections ~w(cloud manage merge) - @colour_presets ~w( - #ef4444 #f97316 #f59e0b #eab308 #84cc16 - #22c55e #10b981 #14b8a6 #06b6d4 #0ea5e9 - #3b82f6 #6366f1 #8b5cf6 #a855f7 #d946ef - #ec4899 #64748b - ) + # Shared with the TUI tags panel (issue #34) via BDS.UI.TagsPanel. + @colour_presets BDS.UI.TagsPanel.colour_presets() @spec colour_presets() :: [String.t()] def colour_presets, do: @colour_presets @@ -439,12 +434,7 @@ defmodule BDS.Desktop.ShellLive.TagsEditor do defp current_tab_meta(_assigns), do: %{} - defp tag_counts(project_id) do - Repo.all(from post in Post, where: post.project_id == ^project_id, select: post.tags) - |> List.flatten() - |> Enum.reject(&is_nil/1) - |> Enum.reduce(%{}, fn tag, acc -> Map.update(acc, tag, 1, &(&1 + 1)) end) - end + defp tag_counts(project_id), do: BDS.UI.TagsPanel.tag_counts(project_id) defp blank_to_nil(nil), do: nil diff --git a/lib/bds/tui.ex b/lib/bds/tui.ex index 6ee059a..c2159ce 100644 --- a/lib/bds/tui.ex +++ b/lib/bds/tui.ex @@ -45,6 +45,7 @@ defmodule BDS.TUI do alias BDS.UI.PostEditor.{Draft, Metadata, Persistence} alias BDS.UI.SettingsForm alias BDS.UI.Sidebar + alias BDS.UI.TagsPanel alias ExRatatui.Layout alias ExRatatui.Layout.Rect alias ExRatatui.Style @@ -78,6 +79,7 @@ defmodule BDS.TUI do git: nil, git_commit: nil, settings_form: nil, + tags_panel: nil, report: nil, handled_task_ids: nil, task_polling: false, @@ -149,6 +151,10 @@ defmodule BDS.TUI do when form != nil, do: settings_form_key(key, state) + def handle_event(%ExRatatui.Event.Key{kind: "press"} = key, %{tags_panel: panel} = state) + when panel != nil, + do: tags_panel_key(key, state) + def handle_event(%ExRatatui.Event.Key{code: "esc"}, %{image: image} = state) when image != nil, do: {:noreply, %{state | image: nil}} @@ -240,6 +246,7 @@ defmodule BDS.TUI do %{route: "git_file", id: path} -> {:noreply, jump_to_file_diff(state, path)} %{route: "settings", id: "settings-" <> section} -> {:noreply, open_settings_form(state, section)} %{route: "style"} -> {:noreply, open_settings_form(state, "style")} + %{route: "tags", id: "tags-" <> section} -> {:noreply, open_tags_panel(state, section)} %{id: _id} -> {:noreply, toast(state, view_label(state.view), dgettext("ui", "Editing this item is not available in the terminal UI yet."))} _other -> {:noreply, state} end @@ -563,6 +570,217 @@ defmodule BDS.TUI do end end + # ── Events: tags panel (issue #34) ──────────────────────────────────────── + + # The tags sidebar entries open tag management in the main area — the + # same BDS.Tags operations as the GUI tags editor, shared through + # BDS.UI.TagsPanel: cloud (usage overview), manage (create / rename / + # colour / template / delete / sync-from-posts), merge (mark tags with + # space, merge them into the selected one). + defp open_tags_panel(state, section) when section in ~w(cloud manage merge) do + data = TagsPanel.load(state.project_id) + + %{ + state + | tags_panel: %{ + section: section, + tags: data.tags, + selected: 0, + marked: [], + input: nil, + confirm_delete: nil + }, + image: nil + } + end + + defp open_tags_panel(state, _section), do: state + + defp reload_tags_panel(%{tags_panel: panel} = state) do + data = TagsPanel.load(state.project_id) + names = MapSet.new(data.tags, & &1.name) + + panel = %{ + panel + | tags: data.tags, + selected: min(panel.selected, max(length(data.tags) - 1, 0)), + marked: Enum.filter(panel.marked, &MapSet.member?(names, &1)), + input: nil, + confirm_delete: nil + } + + load_sidebar(%{state | tags_panel: panel}) + end + + # Text input prompt (new tag name / rename) lives in the status line, + # like the settings form and the commit message prompt. + defp tags_panel_key(%{code: "esc"}, %{tags_panel: %{input: input}} = state) when input != nil, + do: {:noreply, put_in(state.tags_panel.input, nil)} + + defp tags_panel_key(%{code: "enter"}, %{tags_panel: %{input: input}} = state) + when input != nil do + result = + case input do + %{kind: :new} -> TagsPanel.create(state.project_id, input.value) + %{kind: :rename, name: name} -> TagsPanel.rename(state.project_id, name, input.value) + end + + {:noreply, tags_panel_result(state, result)} + end + + defp tags_panel_key(%{code: "backspace"}, %{tags_panel: %{input: input}} = state) + when input != nil do + {:noreply, put_in(state.tags_panel.input.value, String.slice(input.value, 0..-2//1))} + end + + defp tags_panel_key(%{code: code, modifiers: []}, %{tags_panel: %{input: input}} = state) + when input != nil and byte_size(code) >= 1 do + if String.length(code) == 1 do + {:noreply, put_in(state.tags_panel.input.value, input.value <> code)} + else + {:noreply, state} + end + end + + defp tags_panel_key(_key, %{tags_panel: %{input: input}} = state) when input != nil, + do: {:noreply, state} + + # Pending delete confirmation: y deletes, anything else cancels. + defp tags_panel_key(%{code: "y"}, %{tags_panel: %{confirm_delete: name}} = state) + when name != nil do + {:noreply, tags_panel_result(state, TagsPanel.delete(state.project_id, name))} + end + + defp tags_panel_key(_key, %{tags_panel: %{confirm_delete: name}} = state) when name != nil do + state = put_in(state.tags_panel.confirm_delete, nil) + {:noreply, toast(state, view_label("tags"), dgettext("ui", "Delete cancelled"))} + end + + defp tags_panel_key(%{code: "esc"}, state), do: {:noreply, %{state | tags_panel: nil}} + + defp tags_panel_key(%{code: code}, state) when code in ["down", "j"], + do: {:noreply, move_tags_selection(state, 1)} + + defp tags_panel_key(%{code: code}, state) when code in ["up", "k"], + do: {:noreply, move_tags_selection(state, -1)} + + defp tags_panel_key(%{code: "n"}, %{tags_panel: %{section: "manage"}} = state) do + input = %{kind: :new, label: dgettext("ui", "New tag"), value: ""} + {:noreply, put_in(state.tags_panel.input, input)} + end + + defp tags_panel_key(%{code: "enter"}, %{tags_panel: %{section: "manage"}} = state) do + case selected_tag(state.tags_panel) do + nil -> + {:noreply, state} + + tag -> + input = %{ + kind: :rename, + name: tag.name, + label: dgettext("ui", "Rename tag"), + value: tag.name + } + + {:noreply, put_in(state.tags_panel.input, input)} + end + end + + defp tags_panel_key(%{code: "c"}, %{tags_panel: %{section: "manage"}} = state), + do: with_selected_tag(state, &TagsPanel.cycle_color(state.project_id, &1.name)) + + defp tags_panel_key(%{code: "t"}, %{tags_panel: %{section: "manage"}} = state), + do: with_selected_tag(state, &TagsPanel.cycle_template(state.project_id, &1.name)) + + defp tags_panel_key(%{code: "d"}, %{tags_panel: %{section: "manage"}} = state) do + case selected_tag(state.tags_panel) do + nil -> + {:noreply, state} + + tag -> + count = TagsPanel.post_count(state.project_id, tag.name) + state = put_in(state.tags_panel.confirm_delete, tag.name) + + {:noreply, + toast( + state, + view_label("tags"), + dgettext("ui", "Delete %{name} (used by %{count} posts)? Press y to confirm.", + name: tag.name, + count: count + ) + )} + end + end + + defp tags_panel_key(%{code: "s"}, %{tags_panel: %{section: "manage"}} = state), + do: {:noreply, tags_panel_result(state, TagsPanel.sync(state.project_id))} + + defp tags_panel_key(%{code: code}, %{tags_panel: %{section: "merge"}} = state) + when code in [" ", "space"] do + case selected_tag(state.tags_panel) do + nil -> + {:noreply, state} + + tag -> + marked = state.tags_panel.marked + + next = + if tag.name in marked, + do: marked -- [tag.name], + else: marked ++ [tag.name] + + {:noreply, put_in(state.tags_panel.marked, next)} + end + end + + defp tags_panel_key(%{code: "m"}, %{tags_panel: %{section: "merge"}} = state) do + case selected_tag(state.tags_panel) do + nil -> + {:noreply, state} + + target -> + marked = Enum.uniq(state.tags_panel.marked ++ [target.name]) + {:noreply, tags_panel_result(state, TagsPanel.merge(state.project_id, marked, target.name))} + end + end + + defp tags_panel_key(_key, state), do: {:noreply, state} + + defp tags_panel_result(state, {:ok, message}) do + state |> reload_tags_panel() |> toast(view_label("tags"), message) + end + + defp tags_panel_result(state, {:error, message}) do + state = put_in(state.tags_panel.input, nil) + state = put_in(state.tags_panel.confirm_delete, nil) + toast(state, view_label("tags"), message) + end + + defp with_selected_tag(state, fun) do + case selected_tag(state.tags_panel) do + nil -> {:noreply, state} + tag -> {:noreply, tags_panel_result(state, fun.(tag))} + end + end + + # The cloud orders by usage (a terminal tag cloud); manage and merge + # stay alphabetical like the GUI list. + defp panel_tags(%{section: "cloud", tags: tags}), do: Enum.sort_by(tags, &{-&1.count, &1.name}) + defp panel_tags(%{tags: tags}), do: tags + + defp selected_tag(panel), do: Enum.at(panel_tags(panel), panel.selected) + + defp move_tags_selection(%{tags_panel: panel} = state, delta) do + count = length(panel.tags) + + if count == 0 do + state + else + put_in(state.tags_panel.selected, clamp(panel.selected + delta, count)) + end + end + # ── Events: sidebar search (vi-style "/") ───────────────────────────────── # The prompt lives in the status line and filters the current view live @@ -921,6 +1139,14 @@ defmodule BDS.TUI do state end + # An open tags panel tracks external tag changes (other clients, CLI). + state = + if state.tags_panel != nil and entity == "tag" do + reload_tags_panel(state) + else + state + end + {:noreply, state} end @@ -1155,6 +1381,20 @@ defmodule BDS.TUI do ] end + defp main_widgets(%{tags_panel: panel}, rect) when panel != nil do + items = Enum.map(panel_tags(panel), &tag_line(panel, &1)) + + [ + {%List{ + items: items, + selected: list_selected(items, panel.selected), + scroll_padding: 2, + highlight_style: %Style{fg: :black, bg: :cyan}, + block: %Block{title: tags_panel_title(panel), borders: [:all]} + }, rect} + ] + end + defp main_widgets(%{view: "git", editor: nil, git: nil}, rect) do [ {%Paragraph{ @@ -1241,10 +1481,12 @@ defmodule BDS.TUI do defp status_widgets(state, rect) do settings_input = state.settings_form && state.settings_form.input + tags_input = state.tags_panel && state.tags_panel.input text = cond do settings_input -> settings_input.label <> ": " <> settings_input.value + tags_input -> tags_input.label <> ": " <> tags_input.value state.git_commit -> dgettext("ui", "Commit message") <> ": " <> state.git_commit.input state.search -> "/" <> state.search.input state.busy -> dgettext("ui", "Working…") @@ -1654,6 +1896,37 @@ defmodule BDS.TUI do defp field_line(%{type: :info, value: ""} = field), do: field.label defp field_line(field), do: "#{field.label}: #{field.value}" + defp tag_line(%{section: "merge", marked: marked}, tag) do + if(tag.name in marked, do: "[x] ", else: "[ ] ") <> tag_line_base(tag) + end + + defp tag_line(%{section: "manage"}, tag) do + extras = + [tag.color, tag.post_template_slug] + |> Enum.reject(&(&1 in [nil, ""])) + |> Enum.map_join("", &(" · " <> &1)) + + tag_line_base(tag) <> extras + end + + defp tag_line(_panel, tag), do: tag_line_base(tag) + + defp tag_line_base(tag), do: "#{tag.name} (#{tag.count})" + + defp tags_panel_title(%{section: "cloud"}), + do: dgettext("ui", "Tag Cloud") <> " — " <> dgettext("ui", "esc close") + + defp tags_panel_title(%{section: "manage"}) do + dgettext("ui", "Tags") <> + " — " <> + dgettext("ui", "n new · enter rename · c colour · t template · d delete · s sync · esc close") + end + + defp tags_panel_title(%{section: "merge"}) do + dgettext("ui", "Merge Tags") <> + " — " <> dgettext("ui", "space mark · m merge into selected · esc close") + end + defp item_label(item) do title = item[:title] || item[:name] || item[:original_name] || item[:label] || item[:id] || "?" diff --git a/lib/bds/ui/tags_panel.ex b/lib/bds/ui/tags_panel.ex new file mode 100644 index 0000000..843cb2c --- /dev/null +++ b/lib/bds/ui/tags_panel.ex @@ -0,0 +1,240 @@ +defmodule BDS.UI.TagsPanel do + @moduledoc """ + Renderer-agnostic tag management core (issue #34). + + Exposes the same tag operations the GUI tags editor + (`BDS.Desktop.ShellLive.TagsEditor`) performs — create, rename, colour, + post template, delete, merge, sync-from-posts — as plain functions with + localized result messages, so the TUI tags panel and the GUI operate on + the same `BDS.Tags` backend. + """ + + import Ecto.Query + + use Gettext, backend: BDS.Gettext + + alias BDS.Posts.Post + alias BDS.Repo + alias BDS.Tags + alias BDS.Tags.Tag + alias BDS.Templates.Template + + @colour_presets ~w( + #ef4444 #f97316 #f59e0b #eab308 #84cc16 + #22c55e #10b981 #14b8a6 #06b6d4 #0ea5e9 + #3b82f6 #6366f1 #8b5cf6 #a855f7 #d946ef + #ec4899 #64748b + ) + + @type tag_entry :: %{ + id: String.t(), + name: String.t(), + color: String.t() | nil, + post_template_slug: String.t() | nil, + count: non_neg_integer() + } + + @spec colour_presets() :: [String.t()] + def colour_presets, do: @colour_presets + + @doc "All project tags with their post usage counts, plus template slugs." + @spec load(String.t()) :: %{tags: [tag_entry()], templates: [String.t()]} + def load(project_id) do + counts = tag_counts(project_id) + + tags = + project_id + |> Tags.list_tags() + |> Enum.map(fn tag -> + %{ + id: tag.id, + name: tag.name, + color: tag.color, + post_template_slug: tag.post_template_slug, + count: Map.get(counts, tag.name, 0) + } + end) + + %{tags: tags, templates: template_slugs(project_id)} + end + + @doc "How many posts use each tag name." + @spec tag_counts(String.t()) :: %{String.t() => non_neg_integer()} + def tag_counts(project_id) do + Repo.all(from post in Post, where: post.project_id == ^project_id, select: post.tags) + |> List.flatten() + |> Enum.reject(&is_nil/1) + |> Enum.reduce(%{}, fn tag, acc -> Map.update(acc, tag, 1, &(&1 + 1)) end) + end + + @spec post_count(String.t(), String.t()) :: non_neg_integer() + def post_count(project_id, tag_name), do: Map.get(tag_counts(project_id), tag_name, 0) + + @spec create(String.t(), String.t()) :: {:ok, String.t()} | {:error, String.t()} + def create(project_id, name) do + case Tags.create_tag(%{project_id: project_id, name: name}) do + {:ok, tag} -> {:ok, dgettext("ui", "Tag %{name} created", name: tag.name)} + {:error, reason} -> {:error, error_message(reason)} + end + end + + @spec rename(String.t(), String.t(), String.t()) :: {:ok, String.t()} | {:error, String.t()} + def rename(project_id, tag_name, new_name) do + with {:ok, tag} <- fetch(project_id, tag_name) do + normalized = String.trim(to_string(new_name || "")) + + cond do + normalized == "" -> + {:error, dgettext("ui", "Tag name cannot be empty")} + + normalized == tag.name -> + {:ok, dgettext("ui", "Tag unchanged")} + + true -> + case Tags.rename_tag(tag.id, normalized) do + {:ok, renamed} -> + {:ok, dgettext("ui", "Tag renamed to %{name}", name: renamed.name)} + + {:error, reason} -> + {:error, error_message(reason)} + end + end + end + end + + @doc "Advances the tag colour through the presets (last preset wraps to none)." + @spec cycle_color(String.t(), String.t()) :: {:ok, String.t()} | {:error, String.t()} + def cycle_color(project_id, tag_name) do + with {:ok, tag} <- fetch(project_id, tag_name) do + next = next_in_cycle(@colour_presets, tag.color) + + case Tags.update_tag(tag.id, %{color: next}) do + {:ok, updated} -> + {:ok, + dgettext("ui", "Colour of %{name}: %{color}", + name: updated.name, + color: updated.color || dgettext("ui", "none") + )} + + {:error, reason} -> + {:error, error_message(reason)} + end + end + end + + @doc "Advances the tag post template through the project templates (wraps to none)." + @spec cycle_template(String.t(), String.t()) :: {:ok, String.t()} | {:error, String.t()} + def cycle_template(project_id, tag_name) do + with {:ok, tag} <- fetch(project_id, tag_name) do + next = next_in_cycle(template_slugs(project_id), tag.post_template_slug) + + case Tags.update_tag(tag.id, %{post_template_slug: next}) do + {:ok, updated} -> + {:ok, + dgettext("ui", "Template of %{name}: %{template}", + name: updated.name, + template: updated.post_template_slug || dgettext("ui", "default") + )} + + {:error, reason} -> + {:error, error_message(reason)} + end + end + end + + @spec delete(String.t(), String.t()) :: {:ok, String.t()} | {:error, String.t()} + def delete(project_id, tag_name) do + with {:ok, tag} <- fetch(project_id, tag_name) do + case Tags.delete_tag(tag.id) do + {:ok, _deleted} -> {:ok, dgettext("ui", "Tag %{name} deleted", name: tag_name)} + {:error, reason} -> {:error, error_message(reason)} + end + end + end + + @doc "Merges the named tags into `target_name` (which must be one of them)." + @spec merge(String.t(), [String.t()], String.t()) :: {:ok, String.t()} | {:error, String.t()} + def merge(project_id, source_names, target_name) do + tags = + Repo.all( + from tag in Tag, where: tag.project_id == ^project_id and tag.name in ^source_names + ) + + target = Enum.find(tags, &(&1.name == target_name)) + sources = Enum.reject(tags, &(&1.name == target_name)) + + cond do + target == nil -> + {:error, dgettext("ui", "The merge target must be one of the marked tags")} + + sources == [] -> + {:error, dgettext("ui", "Mark at least two tags to merge")} + + true -> + case Tags.merge_tags(Enum.map(sources, & &1.id), target.id) do + {:ok, _merged} -> + {:ok, + dgettext("ui", "Merged %{count} tags into %{name}", + count: length(sources), + name: target.name + )} + + {:error, reason} -> + {:error, error_message(reason)} + end + end + end + + @spec sync(String.t()) :: {:ok, String.t()} | {:error, String.t()} + def sync(project_id) do + case Tags.sync_tags_from_posts(project_id) do + {:ok, tags} -> + {:ok, dgettext("ui", "Tags synced from posts (%{count} total)", count: length(tags))} + + {:error, reason} -> + {:error, error_message(reason)} + end + end + + defp fetch(project_id, tag_name) do + case Repo.get_by(Tag, project_id: project_id, name: tag_name) do + nil -> {:error, dgettext("ui", "Tag %{name} not found", name: tag_name)} + tag -> {:ok, tag} + end + end + + defp template_slugs(project_id) do + Repo.all( + from template in Template, + where: template.project_id == ^project_id, + order_by: [asc: template.slug], + select: template.slug + ) + end + + # nil → first option → … → last option → nil + defp next_in_cycle([], _current), do: nil + + defp next_in_cycle(options, current) do + case Enum.find_index(options, &(&1 == current)) do + nil -> List.first(options) + index when index == length(options) - 1 -> nil + index -> Enum.at(options, index + 1) + end + end + + defp error_message(reason) when is_binary(reason), do: reason + defp error_message(:not_found), do: dgettext("ui", "Tag not found") + + defp error_message(%Ecto.Changeset{} = changeset) do + changeset + |> Ecto.Changeset.traverse_errors(fn {message, opts} -> + Enum.reduce(opts, message, fn {key, value}, acc -> + String.replace(acc, "%{#{key}}", to_string(value)) + end) + end) + |> Enum.map_join("; ", fn {field, messages} -> "#{field}: #{Enum.join(messages, ", ")}" end) + end + + defp error_message(reason), do: inspect(reason) +end diff --git a/priv/gettext/de/LC_MESSAGES/ui.po b/priv/gettext/de/LC_MESSAGES/ui.po index 5a908e2..14dd608 100644 --- a/priv/gettext/de/LC_MESSAGES/ui.po +++ b/priv/gettext/de/LC_MESSAGES/ui.po @@ -82,11 +82,11 @@ msgstr "KI-Einstellungen" #: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: lib/bds/desktop/shell_live/post_editor.ex:906 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 -#: lib/bds/tui.ex:946 -#: lib/bds/tui.ex:949 -#: lib/bds/tui.ex:952 -#: lib/bds/tui.ex:960 -#: lib/bds/tui.ex:1762 +#: lib/bds/tui.ex:1172 +#: lib/bds/tui.ex:1175 +#: lib/bds/tui.ex:1178 +#: lib/bds/tui.ex:1186 +#: lib/bds/tui.ex:2035 #, elixir-autogen, elixir-format msgid "AI Suggestions" msgstr "KI-Vorschlaege" @@ -575,7 +575,7 @@ msgid "Collapse unchanged diff hunks" msgstr "Unveränderte Diff-Blöcke einklappen" #: lib/bds/desktop/shell_live/overlay_manager.ex:423 -#: lib/bds/tui.ex:1858 +#: lib/bds/tui.ex:2131 #, elixir-autogen, elixir-format msgid "Command completed" msgstr "Befehl abgeschlossen" @@ -593,7 +593,7 @@ msgstr "Bestaetigen" #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 -#: lib/bds/tui.ex:1228 +#: lib/bds/tui.ex:1468 #: lib/bds/ui/settings_form.ex:137 #: lib/bds/ui/sidebar.ex:801 #, elixir-autogen, elixir-format @@ -1040,7 +1040,7 @@ msgid "Filename" msgstr "Dateiname" #: lib/bds/desktop/menu_bar.ex:254 -#: lib/bds/tui.ex:1822 +#: lib/bds/tui.ex:2095 #, elixir-autogen, elixir-format msgid "Fill Missing Translations" msgstr "Fehlende Übersetzungen ergänzen" @@ -1051,7 +1051,7 @@ msgid "Find" msgstr "Suchen" #: lib/bds/desktop/menu_bar.ex:255 -#: lib/bds/tui.ex:1825 +#: lib/bds/tui.ex:2098 #, elixir-autogen, elixir-format msgid "Find Duplicate Posts" msgstr "Doppelte Beiträge finden" @@ -1078,14 +1078,14 @@ msgid "Gallery" msgstr "Galerie" #: lib/bds/desktop/menu_bar.ex:256 -#: lib/bds/tui.ex:1806 +#: lib/bds/tui.ex:2079 #, elixir-autogen, elixir-format msgid "Generate Site" msgstr "Website generieren" #: lib/bds/desktop/shell_live.ex:792 #: lib/bds/desktop/shell_live/socket_state.ex:109 -#: lib/bds/tui.ex:1671 +#: lib/bds/tui.ex:1944 #: lib/bds/ui/sidebar.ex:826 #, elixir-autogen, elixir-format msgid "Git" @@ -1404,9 +1404,9 @@ msgstr "Maximale Beiträge pro Seite" #: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175 -#: lib/bds/tui.ex:1666 -#: lib/bds/tui.ex:1887 -#: lib/bds/tui.ex:1890 +#: lib/bds/tui.ex:1939 +#: lib/bds/tui.ex:2160 +#: lib/bds/tui.ex:2163 #: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:100 #: lib/bds/ui/sidebar.ex:578 @@ -1435,6 +1435,7 @@ msgid "Merge" msgstr "Zusammenführen" #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:78 +#: lib/bds/tui.ex:1926 #: lib/bds/ui/sidebar.ex:787 #, elixir-autogen, elixir-format msgid "Merge Tags" @@ -1449,11 +1450,11 @@ msgstr "Metadaten" #: lib/bds/desktop/shell_live/misc_editor.ex:214 #: lib/bds/desktop/shell_live/misc_editor.ex:226 #: lib/bds/desktop/shell_live/misc_editor.ex:448 -#: lib/bds/tui.ex:278 -#: lib/bds/tui.ex:284 -#: lib/bds/tui.ex:295 -#: lib/bds/tui.ex:1421 -#: lib/bds/tui.ex:1803 +#: lib/bds/tui.ex:285 +#: lib/bds/tui.ex:291 +#: lib/bds/tui.ex:302 +#: lib/bds/tui.ex:1663 +#: lib/bds/tui.ex:2076 #: lib/bds/ui/registry.ex:111 #, elixir-autogen, elixir-format msgid "Metadata Diff" @@ -1499,7 +1500,7 @@ msgstr "Neue Seite" #: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/shell_live/sidebar_create.ex:41 -#: lib/bds/tui.ex:232 +#: lib/bds/tui.ex:238 #, elixir-autogen, elixir-format msgid "New Post" msgstr "Neuer Beitrag" @@ -1787,8 +1788,8 @@ msgid "Open Data Folder" msgstr "Datenordner öffnen" #: lib/bds/desktop/shell_live/index.html.heex:644 -#: lib/bds/tui.ex:801 -#: lib/bds/tui.ex:806 +#: lib/bds/tui.ex:1019 +#: lib/bds/tui.ex:1024 #, elixir-autogen, elixir-format msgid "Open Existing Blog" msgstr "Bestehenden Blog öffnen" @@ -1800,7 +1801,7 @@ msgid "Open Settings" msgstr "Einstellungen öffnen" #: lib/bds/desktop/menu_bar.ex:217 -#: lib/bds/tui.ex:1827 +#: lib/bds/tui.ex:2100 #, elixir-autogen, elixir-format msgid "Open in Browser" msgstr "Im Browser öffnen" @@ -1949,8 +1950,8 @@ msgstr "Beitrag gespeichert" #: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:761 -#: lib/bds/tui.ex:1665 -#: lib/bds/tui.ex:1680 +#: lib/bds/tui.ex:1938 +#: lib/bds/tui.ex:1953 #: lib/bds/ui/registry.ex:14 #: lib/bds/ui/sidebar.ex:271 #, elixir-autogen, elixir-format @@ -2010,8 +2011,8 @@ msgstr "Projekt und Veröffentlichung" #: lib/bds/desktop/shell_live/chat_surface.ex:15 #: lib/bds/desktop/shell_live/index.html.heex:623 -#: lib/bds/tui.ex:714 -#: lib/bds/tui.ex:719 +#: lib/bds/tui.ex:932 +#: lib/bds/tui.ex:937 #, elixir-autogen, elixir-format msgid "Projects" msgstr "Projekte" @@ -2079,15 +2080,15 @@ msgid "Ready to import:" msgstr "Bereit zum Import:" #: lib/bds/desktop/menu_bar.ex:248 -#: lib/bds/tui.ex:798 -#: lib/bds/tui.ex:1807 +#: lib/bds/tui.ex:1016 +#: lib/bds/tui.ex:2080 #, elixir-autogen, elixir-format msgid "Rebuild Database" msgstr "Datenbank neu aufbauen" #: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 -#: lib/bds/tui.ex:1811 +#: lib/bds/tui.ex:2084 #, elixir-autogen, elixir-format msgid "Rebuild Embedding Index" msgstr "Embedding-Index neu aufbauen" @@ -2145,7 +2146,7 @@ msgid "Refresh Translation" msgstr "Übersetzung aktualisieren" #: lib/bds/desktop/menu_bar.ex:252 -#: lib/bds/tui.ex:1814 +#: lib/bds/tui.ex:2087 #, elixir-autogen, elixir-format msgid "Regenerate Calendar" msgstr "Kalender neu erzeugen" @@ -2156,7 +2157,7 @@ msgid "Regenerate Missing Thumbnails" msgstr "Fehlende Vorschaubilder neu erzeugen" #: lib/bds/desktop/menu_bar.ex:249 -#: lib/bds/tui.ex:1808 +#: lib/bds/tui.ex:2081 #, elixir-autogen, elixir-format msgid "Reindex Text" msgstr "Text neu indizieren" @@ -2344,7 +2345,7 @@ msgstr "Scripting-Funktionen werden in der Neufassung auf Anwendungsebene konfig #: lib/bds/desktop/shell_live/script_editor.ex:216 #: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:234 -#: lib/bds/tui.ex:1668 +#: lib/bds/tui.ex:1941 #: lib/bds/ui/registry.ex:38 #: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:115 @@ -2451,7 +2452,7 @@ msgstr "Semantische Ähnlichkeit" #: lib/bds/desktop/shell_live/settings_editor/project_settings.ex:60 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:11 -#: lib/bds/tui.ex:1670 +#: lib/bds/tui.ex:1943 #: lib/bds/ui/registry.ex:86 #: lib/bds/ui/registry.ex:101 #: lib/bds/ui/sidebar.ex:795 @@ -2475,9 +2476,9 @@ msgid "Site" msgstr "Website" #: lib/bds/desktop/shell_live/misc_editor.ex:412 -#: lib/bds/tui.ex:311 -#: lib/bds/tui.ex:313 -#: lib/bds/tui.ex:1426 +#: lib/bds/tui.ex:318 +#: lib/bds/tui.ex:320 +#: lib/bds/tui.ex:1668 #: lib/bds/ui/registry.ex:125 #, elixir-autogen, elixir-format msgid "Site Validation" @@ -2574,6 +2575,7 @@ msgid "System Prompt" msgstr "System-Prompt" #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:16 +#: lib/bds/tui.ex:1917 #: lib/bds/ui/sidebar.ex:785 #, elixir-autogen, elixir-format msgid "Tag Cloud" @@ -2595,12 +2597,13 @@ 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:104 -#: lib/bds/desktop/shell_live/tags_editor.ex:208 -#: lib/bds/desktop/shell_live/tags_editor.ex:222 -#: lib/bds/desktop/shell_live/tags_editor.ex:253 +#: lib/bds/desktop/shell_live/tags_editor.ex:99 +#: lib/bds/desktop/shell_live/tags_editor.ex:203 +#: lib/bds/desktop/shell_live/tags_editor.ex:217 +#: lib/bds/desktop/shell_live/tags_editor.ex:248 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 -#: lib/bds/tui.ex:1669 +#: lib/bds/tui.ex:1920 +#: lib/bds/tui.ex:1942 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 #: lib/bds/ui/sidebar.ex:289 @@ -2612,7 +2615,7 @@ msgstr "Tags" #: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 -#: lib/bds/tui.ex:994 +#: lib/bds/tui.ex:1220 #, elixir-autogen, elixir-format msgid "Tasks" msgstr "Aufgaben" @@ -2658,7 +2661,7 @@ msgstr "Template-Syntax ist gültig" #: lib/bds/desktop/shell_live/template_editor.ex:171 #: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:191 -#: lib/bds/tui.ex:1667 +#: lib/bds/tui.ex:1940 #: lib/bds/ui/registry.ex:46 #: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:122 @@ -2882,7 +2885,7 @@ msgid "Updated URLs" msgstr "Aktualisierte URLs" #: lib/bds/desktop/menu_bar.ex:259 -#: lib/bds/tui.ex:1826 +#: lib/bds/tui.ex:2099 #, elixir-autogen, elixir-format msgid "Upload Site" msgstr "Website hochladen" @@ -2910,13 +2913,13 @@ msgid "Validate" msgstr "Validieren" #: lib/bds/desktop/menu_bar.ex:258 -#: lib/bds/tui.ex:1804 +#: lib/bds/tui.ex:2077 #, elixir-autogen, elixir-format msgid "Validate Site" msgstr "Website validieren" #: lib/bds/desktop/menu_bar.ex:253 -#: lib/bds/tui.ex:1817 +#: lib/bds/tui.ex:2090 #, elixir-autogen, elixir-format msgid "Validate Translations" msgstr "Übersetzungen validieren" @@ -3389,15 +3392,15 @@ msgstr "Änderungen" #: lib/bds/desktop/shell_live/git_handler.ex:46 #: lib/bds/desktop/shell_live/git_handler.ex:52 #: lib/bds/desktop/shell_live/sidebar_components.ex:556 -#: lib/bds/tui.ex:334 -#: lib/bds/tui.ex:340 -#: lib/bds/tui.ex:343 +#: lib/bds/tui.ex:341 +#: lib/bds/tui.ex:347 +#: lib/bds/tui.ex:350 #, elixir-autogen, elixir-format msgid "Commit" msgstr "Commit" #: lib/bds/desktop/shell_live/sidebar_components.ex:555 -#: lib/bds/tui.ex:1248 +#: lib/bds/tui.ex:1490 #, elixir-autogen, elixir-format msgid "Commit message" msgstr "Commit-Nachricht" @@ -3421,7 +3424,7 @@ msgid "Fetch" msgstr "Abrufen" #: lib/bds/desktop/shell_live/sidebar_components.ex:586 -#: lib/bds/tui.ex:1083 +#: lib/bds/tui.ex:1309 #, elixir-autogen, elixir-format msgid "History" msgstr "Verlauf" @@ -3469,7 +3472,7 @@ msgstr "LFS bereinigen" #: lib/bds/desktop/shell_live/git_handler.ex:17 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 -#: lib/bds/tui.ex:966 +#: lib/bds/tui.ex:1192 #, elixir-autogen, elixir-format msgid "Pull" msgstr "Pull" @@ -3477,7 +3480,7 @@ msgstr "Pull" #: lib/bds/desktop/shell_live/git_handler.ex:18 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 -#: lib/bds/tui.ex:967 +#: lib/bds/tui.ex:1193 #, elixir-autogen, elixir-format msgid "Push" msgstr "Push" @@ -3590,7 +3593,7 @@ msgid "Suggested tags" msgstr "Vorgeschlagene Tags" #: lib/bds/desktop/menu_bar.ex:257 -#: lib/bds/tui.ex:1805 +#: lib/bds/tui.ex:2078 #, elixir-autogen, elixir-format msgid "Force Render Site" msgstr "Website vollständig neu generieren" @@ -3687,83 +3690,83 @@ msgstr "OK" msgid "The endpoint returned no models. You can still type a model name manually." msgstr "Der Endpunkt hat keine Modelle zurückgegeben. Sie können einen Modellnamen weiterhin manuell eingeben." -#: lib/bds/tui.ex:1763 +#: lib/bds/tui.ex:2036 #, elixir-autogen, elixir-format msgid "AI is unavailable in airplane mode without a local endpoint." msgstr "KI ist im Flugmodus ohne lokalen Endpunkt nicht verfügbar." -#: lib/bds/tui.ex:1890 +#: lib/bds/tui.ex:2163 #, elixir-autogen, elixir-format msgid "Could not load this file." msgstr "Diese Datei konnte nicht geladen werden." -#: lib/bds/tui.ex:243 +#: lib/bds/tui.ex:250 #, elixir-autogen, elixir-format msgid "Editing this item is not available in the terminal UI yet." msgstr "Die Bearbeitung dieses Eintrags ist in der Terminal-Oberfläche noch nicht verfügbar." -#: lib/bds/tui.ex:949 +#: lib/bds/tui.ex:1175 #, elixir-autogen, elixir-format msgid "No suggestions returned." msgstr "Keine Vorschläge erhalten." -#: lib/bds/tui.ex:1887 +#: lib/bds/tui.ex:2160 #, elixir-autogen, elixir-format msgid "Only images can be previewed." msgstr "Nur Bilder können in der Vorschau angezeigt werden." -#: lib/bds/tui.ex:1680 +#: lib/bds/tui.ex:1953 #, elixir-autogen, elixir-format msgid "Post not found." msgstr "Beitrag nicht gefunden." -#: lib/bds/tui.ex:1183 +#: lib/bds/tui.ex:1423 #, elixir-autogen, elixir-format msgid "Press enter to preview %{name}." msgstr "Drücken Sie Enter, um %{name} in der Vorschau anzuzeigen." -#: lib/bds/tui.ex:1733 +#: lib/bds/tui.ex:2006 #, elixir-autogen, elixir-format msgid "Published." msgstr "Veröffentlicht." -#: lib/bds/tui.ex:1749 +#: lib/bds/tui.ex:2022 #, elixir-autogen, elixir-format msgid "Save before switching languages." msgstr "Speichern Sie vor dem Sprachwechsel." -#: lib/bds/tui.ex:533 -#: lib/bds/tui.ex:1734 +#: lib/bds/tui.ex:540 +#: lib/bds/tui.ex:2007 #, elixir-autogen, elixir-format msgid "Saved." msgstr "Gespeichert." -#: lib/bds/tui.ex:1186 +#: lib/bds/tui.ex:1426 #, elixir-autogen, elixir-format msgid "Select an entry and press enter to open it." msgstr "Wählen Sie einen Eintrag aus und öffnen Sie ihn mit Enter." -#: lib/bds/tui.ex:946 +#: lib/bds/tui.ex:1172 #, elixir-autogen, elixir-format msgid "Suggestions applied." msgstr "Vorschläge übernommen." -#: lib/bds/tui.ex:1198 +#: lib/bds/tui.ex:1438 #, elixir-autogen, elixir-format msgid "Title (ctrl+t to edit)" msgstr "Titel (Strg+T zum Bearbeiten)" -#: lib/bds/tui.ex:1197 +#: lib/bds/tui.ex:1437 #, elixir-autogen, elixir-format msgid "Title (editing — enter to confirm)" msgstr "Titel (Bearbeitung — Enter zum Bestätigen)" -#: lib/bds/tui.ex:1250 +#: lib/bds/tui.ex:1492 #, elixir-autogen, elixir-format msgid "Working…" msgstr "Wird bearbeitet…" -#: lib/bds/tui.ex:1272 +#: lib/bds/tui.ex:1514 #, elixir-autogen, elixir-format msgid "esc to close" msgstr "Esc zum Schließen" @@ -3800,148 +3803,148 @@ msgstr "Serveradresse (user@host oder user@host:port), Public-Key-Authentifizier msgid "Use the form user@host or user@host:port." msgstr "Verwenden Sie das Format user@host oder user@host:port." -#: lib/bds/tui.ex:1217 +#: lib/bds/tui.ex:1457 #, elixir-autogen, elixir-format msgid "Preview (ctrl+e to edit)" msgstr "Vorschau (ctrl+e zum Bearbeiten)" -#: lib/bds/tui.ex:1529 +#: lib/bds/tui.ex:1771 #, elixir-autogen, elixir-format msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" msgstr "Strg+S Speichern · Strg+P Veröffentlichen · Strg+E Vorschau · Strg+T Titel · Strg+L Sprache · Strg+G KI · Esc Zurück" -#: lib/bds/tui.ex:994 +#: lib/bds/tui.ex:1220 #, elixir-autogen, elixir-format msgid "All tasks finished." msgstr "Alle Aufgaben abgeschlossen." -#: lib/bds/tui.ex:1298 +#: lib/bds/tui.ex:1540 #, elixir-autogen, elixir-format msgid "Commands — esc to close" msgstr "Befehle — Esc zum Schließen" -#: lib/bds/tui.ex:823 +#: lib/bds/tui.ex:1041 #, elixir-autogen, elixir-format msgid "Unknown command." msgstr "Unbekannter Befehl." -#: lib/bds/tui.ex:1288 +#: lib/bds/tui.ex:1530 #, elixir-autogen, elixir-format msgid "[report/apply in GUI]" msgstr "[Bericht/Anwenden in der GUI]" -#: lib/bds/tui.ex:1437 +#: lib/bds/tui.ex:1679 #, elixir-autogen, elixir-format msgid "%{diffs} differences · %{orphans} orphan files" msgstr "%{diffs} Unterschiede · %{orphans} verwaiste Dateien" -#: lib/bds/tui.ex:1469 +#: lib/bds/tui.ex:1711 #, elixir-autogen, elixir-format msgid "Expected %{expected} · Existing %{existing}" msgstr "Erwartet %{expected} · Vorhanden %{existing}" -#: lib/bds/tui.ex:1486 +#: lib/bds/tui.ex:1728 #, elixir-autogen, elixir-format msgid "Extra files (will be removed):" msgstr "Überzählige Dateien (werden entfernt):" -#: lib/bds/tui.ex:1482 +#: lib/bds/tui.ex:1724 #, elixir-autogen, elixir-format msgid "Missing pages (will be rendered):" msgstr "Fehlende Seiten (werden gerendert):" -#: lib/bds/tui.ex:311 +#: lib/bds/tui.ex:318 #, elixir-autogen, elixir-format msgid "Nothing to apply." msgstr "Nichts anzuwenden." -#: lib/bds/tui.ex:278 +#: lib/bds/tui.ex:285 #, elixir-autogen, elixir-format msgid "Nothing to repair." msgstr "Nichts zu reparieren." -#: lib/bds/tui.ex:1460 +#: lib/bds/tui.ex:1702 #, elixir-autogen, elixir-format msgid "Orphan files (not in database):" msgstr "Verwaiste Dateien (nicht in der Datenbank):" -#: lib/bds/tui.ex:1476 +#: lib/bds/tui.ex:1718 #, elixir-autogen, elixir-format msgid "Sitemap changed." msgstr "Sitemap geändert." -#: lib/bds/tui.ex:1490 +#: lib/bds/tui.ex:1732 #, elixir-autogen, elixir-format msgid "Updated posts (will be re-rendered):" msgstr "Aktualisierte Beiträge (werden neu gerendert):" -#: lib/bds/tui.ex:1427 +#: lib/bds/tui.ex:1669 #, elixir-autogen, elixir-format msgid "enter apply changes · esc close" msgstr "Enter Änderungen anwenden · Esc Schließen" -#: lib/bds/tui.ex:1422 +#: lib/bds/tui.ex:1664 #, elixir-autogen, elixir-format msgid "enter repair all from files · esc close" msgstr "Enter alles aus Dateien reparieren · Esc Schließen" -#: lib/bds/tui.ex:788 +#: lib/bds/tui.ex:1006 #, elixir-autogen, elixir-format msgid "Imported Blog" msgstr "Importierter Blog" -#: lib/bds/tui.ex:807 +#: lib/bds/tui.ex:1025 #, elixir-autogen, elixir-format msgid "Not a folder: %{path}" msgstr "Kein Ordner: %{path}" -#: lib/bds/tui.ex:1364 +#: lib/bds/tui.ex:1606 #, elixir-autogen, elixir-format msgid "Projects — enter switch · o open existing · esc close" msgstr "Projekte — Enter Wechseln · O Bestehenden öffnen · Esc Schließen" -#: lib/bds/tui.ex:715 +#: lib/bds/tui.ex:933 #, elixir-autogen, elixir-format msgid "Switched to %{name}." msgstr "Zu %{name} gewechselt." -#: lib/bds/tui.ex:1392 +#: lib/bds/tui.ex:1634 #, elixir-autogen, elixir-format msgid "Matching folders" msgstr "Passende Ordner" -#: lib/bds/tui.ex:1330 +#: lib/bds/tui.ex:1572 #, elixir-autogen, elixir-format msgid "Open Existing Blog — type a folder path · tab complete · enter open · esc back" msgstr "Bestehenden Blog öffnen — Ordnerpfad eingeben · Tab Vervollständigen · Enter Öffnen · Esc Zurück" -#: lib/bds/tui.ex:334 +#: lib/bds/tui.ex:341 #, elixir-autogen, elixir-format msgid "Commit message required." msgstr "Commit-Nachricht erforderlich." -#: lib/bds/tui.ex:340 +#: lib/bds/tui.ex:347 #, elixir-autogen, elixir-format msgid "Committed." msgstr "Commit erstellt." -#: lib/bds/tui.ex:1174 +#: lib/bds/tui.ex:1414 #, elixir-autogen, elixir-format msgid "Diff (pgup/pgdn scroll)" msgstr "Diff (Bild↑/Bild↓ blättern)" -#: lib/bds/tui.ex:1557 +#: lib/bds/tui.ex:1799 #, elixir-autogen, elixir-format msgid "No changes." msgstr "Keine Änderungen." -#: lib/bds/tui.ex:400 +#: lib/bds/tui.ex:407 #, elixir-autogen, elixir-format msgid "No diff for this file." msgstr "Kein Diff für diese Datei." -#: lib/bds/tui.ex:388 -#: lib/bds/tui.ex:1161 +#: lib/bds/tui.ex:395 +#: lib/bds/tui.ex:1401 #, elixir-autogen, elixir-format msgid "Not a git repository." msgstr "Kein Git-Repository." @@ -4036,12 +4039,12 @@ msgstr "Titel anzeigen" msgid "Theme" msgstr "Theme" -#: lib/bds/tui.ex:1145 +#: lib/bds/tui.ex:1371 #, elixir-autogen, elixir-format msgid "enter edit · ctrl+s save · esc close" msgstr "Enter Bearbeiten · Strg+S Speichern · Esc Schließen" -#: lib/bds/tui.ex:1508 +#: lib/bds/tui.ex:1750 #, elixir-autogen, elixir-format msgid "enter edit/toggle/cycle · ctrl+s save · esc close · ctrl+q quit" msgstr "Enter Bearbeiten/Umschalten/Wechseln · Strg+S Speichern · Esc Schließen · Strg+Q Beenden" @@ -4051,12 +4054,12 @@ msgstr "Enter Bearbeiten/Umschalten/Wechseln · Strg+S Speichern · Esc Schließ msgid "not supported yet" msgstr "noch nicht unterstützt" -#: lib/bds/tui.ex:1515 +#: lib/bds/tui.ex:1757 #, elixir-autogen, elixir-format msgid "c commit · u pull · s push · enter jump to file · pgup/pgdn scroll diff · 1-7 views · ctrl+q quit" msgstr "C Commit · U Pull · S Push · Enter Zur Datei springen · Bild↑/Bild↓ Diff blättern · 1-7 Ansichten · Strg+Q Beenden" -#: lib/bds/tui.ex:1522 +#: lib/bds/tui.ex:1764 #, elixir-autogen, elixir-format msgid "enter open · n new post · 1-7 views · p projects · / search · : commands (:? help) · r refresh · ctrl+q quit" msgstr "Enter Öffnen · N Neuer Beitrag · 1-7 Ansichten · P Projekte · / Suche · : Befehle (:? Hilfe) · R Aktualisieren · Strg+Q Beenden" @@ -4066,8 +4069,6 @@ msgstr "Enter Öffnen · N Neuer Beitrag · 1-7 Ansichten · P Projekte · / Suc msgid "CLI tool installed to %{path}" msgstr "CLI-Tool wurde nach %{path} installiert" -#: lib/bds/desktop/shell_live/settings_editor.ex:75 -#: lib/bds/desktop/shell_live/settings_editor.ex:78 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:386 #: lib/bds/ui/settings_form.ex:223 #, elixir-autogen, elixir-format @@ -4099,3 +4100,113 @@ msgstr "Das CLI-Tool kann nur aus der paketierten Anwendung installiert werden" #, elixir-autogen, elixir-format msgid "Unknown settings action" msgstr "Unbekannte Einstellungsaktion" + +#: lib/bds/ui/tags_panel.ex:114 +#, elixir-autogen, elixir-format +msgid "Colour of %{name}: %{color}" +msgstr "Farbe von %{name}: %{color}" + +#: lib/bds/tui.ex:708 +#, elixir-autogen, elixir-format +msgid "Delete %{name} (used by %{count} posts)? Press y to confirm." +msgstr "%{name} löschen (von %{count} Artikeln verwendet)? Zum Bestätigen y drücken." + +#: lib/bds/tui.ex:656 +#, elixir-autogen, elixir-format +msgid "Delete cancelled" +msgstr "Löschen abgebrochen" + +#: lib/bds/ui/tags_panel.ex:171 +#, elixir-autogen, elixir-format +msgid "Mark at least two tags to merge" +msgstr "Zum Zusammenführen mindestens zwei Schlagwörter markieren" + +#: lib/bds/ui/tags_panel.ex:177 +#, elixir-autogen, elixir-format +msgid "Merged %{count} tags into %{name}" +msgstr "%{count} Schlagwörter in %{name} zusammengeführt" + +#: lib/bds/tui.ex:668 +#, elixir-autogen, elixir-format +msgid "New tag" +msgstr "Neues Schlagwort" + +#: lib/bds/tui.ex:681 +#, elixir-autogen, elixir-format +msgid "Rename tag" +msgstr "Schlagwort umbenennen" + +#: lib/bds/ui/tags_panel.ex:76 +#, elixir-autogen, elixir-format +msgid "Tag %{name} created" +msgstr "Schlagwort %{name} erstellt" + +#: lib/bds/ui/tags_panel.ex:149 +#, elixir-autogen, elixir-format +msgid "Tag %{name} deleted" +msgstr "Schlagwort %{name} gelöscht" + +#: lib/bds/ui/tags_panel.ex:201 +#, elixir-autogen, elixir-format +msgid "Tag %{name} not found" +msgstr "Schlagwort %{name} nicht gefunden" + +#: lib/bds/ui/tags_panel.ex:88 +#, elixir-autogen, elixir-format +msgid "Tag name cannot be empty" +msgstr "Der Schlagwortname darf nicht leer sein" + +#: lib/bds/ui/tags_panel.ex:227 +#, elixir-autogen, elixir-format +msgid "Tag not found" +msgstr "Schlagwort nicht gefunden" + +#: lib/bds/ui/tags_panel.ex:96 +#, elixir-autogen, elixir-format +msgid "Tag renamed to %{name}" +msgstr "Schlagwort umbenannt in %{name}" + +#: lib/bds/ui/tags_panel.ex:91 +#, elixir-autogen, elixir-format +msgid "Tag unchanged" +msgstr "Schlagwort unverändert" + +#: lib/bds/ui/tags_panel.ex:192 +#, elixir-autogen, elixir-format +msgid "Tags synced from posts (%{count} total)" +msgstr "Schlagwörter aus Artikeln synchronisiert (insgesamt %{count})" + +#: lib/bds/ui/tags_panel.ex:134 +#, elixir-autogen, elixir-format +msgid "Template of %{name}: %{template}" +msgstr "Vorlage von %{name}: %{template}" + +#: lib/bds/ui/tags_panel.ex:168 +#, elixir-autogen, elixir-format +msgid "The merge target must be one of the marked tags" +msgstr "Das Ziel der Zusammenführung muss eines der markierten Schlagwörter sein" + +#: lib/bds/ui/tags_panel.ex:136 +#, elixir-autogen, elixir-format +msgid "default" +msgstr "Standard" + +#: lib/bds/tui.ex:1917 +#, elixir-autogen, elixir-format +msgid "esc close" +msgstr "Esc schließen" + +#: lib/bds/tui.ex:1922 +#, elixir-autogen, elixir-format +msgid "n new · enter rename · c colour · t template · d delete · s sync · esc close" +msgstr "n neu · Enter umbenennen · c Farbe · t Vorlage · d löschen · s synchronisieren · Esc schließen" + +#: lib/bds/ui/tags_panel.ex:116 +#, elixir-autogen, elixir-format +msgid "none" +msgstr "keine" + +#: lib/bds/tui.ex:1927 +#, elixir-autogen, elixir-format +msgid "space mark · m merge into selected · esc close" +msgstr "Leertaste markieren · m in Auswahl zusammenführen · Esc schließen" diff --git a/priv/gettext/en/LC_MESSAGES/ui.po b/priv/gettext/en/LC_MESSAGES/ui.po index e57be5e..265604e 100644 --- a/priv/gettext/en/LC_MESSAGES/ui.po +++ b/priv/gettext/en/LC_MESSAGES/ui.po @@ -82,11 +82,11 @@ msgstr "" #: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: lib/bds/desktop/shell_live/post_editor.ex:906 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 -#: lib/bds/tui.ex:946 -#: lib/bds/tui.ex:949 -#: lib/bds/tui.ex:952 -#: lib/bds/tui.ex:960 -#: lib/bds/tui.ex:1762 +#: lib/bds/tui.ex:1172 +#: lib/bds/tui.ex:1175 +#: lib/bds/tui.ex:1178 +#: lib/bds/tui.ex:1186 +#: lib/bds/tui.ex:2035 #, elixir-autogen, elixir-format msgid "AI Suggestions" msgstr "" @@ -575,7 +575,7 @@ msgid "Collapse unchanged diff hunks" msgstr "" #: lib/bds/desktop/shell_live/overlay_manager.ex:423 -#: lib/bds/tui.ex:1858 +#: lib/bds/tui.ex:2131 #, elixir-autogen, elixir-format msgid "Command completed" msgstr "" @@ -593,7 +593,7 @@ msgstr "" #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 -#: lib/bds/tui.ex:1228 +#: lib/bds/tui.ex:1468 #: lib/bds/ui/settings_form.ex:137 #: lib/bds/ui/sidebar.ex:801 #, elixir-autogen, elixir-format @@ -1040,7 +1040,7 @@ msgid "Filename" msgstr "" #: lib/bds/desktop/menu_bar.ex:254 -#: lib/bds/tui.ex:1822 +#: lib/bds/tui.ex:2095 #, elixir-autogen, elixir-format msgid "Fill Missing Translations" msgstr "" @@ -1051,7 +1051,7 @@ msgid "Find" msgstr "" #: lib/bds/desktop/menu_bar.ex:255 -#: lib/bds/tui.ex:1825 +#: lib/bds/tui.ex:2098 #, elixir-autogen, elixir-format msgid "Find Duplicate Posts" msgstr "" @@ -1078,14 +1078,14 @@ msgid "Gallery" msgstr "" #: lib/bds/desktop/menu_bar.ex:256 -#: lib/bds/tui.ex:1806 +#: lib/bds/tui.ex:2079 #, elixir-autogen, elixir-format msgid "Generate Site" msgstr "" #: lib/bds/desktop/shell_live.ex:792 #: lib/bds/desktop/shell_live/socket_state.ex:109 -#: lib/bds/tui.ex:1671 +#: lib/bds/tui.ex:1944 #: lib/bds/ui/sidebar.ex:826 #, elixir-autogen, elixir-format msgid "Git" @@ -1404,9 +1404,9 @@ msgstr "" #: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175 -#: lib/bds/tui.ex:1666 -#: lib/bds/tui.ex:1887 -#: lib/bds/tui.ex:1890 +#: lib/bds/tui.ex:1939 +#: lib/bds/tui.ex:2160 +#: lib/bds/tui.ex:2163 #: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:100 #: lib/bds/ui/sidebar.ex:578 @@ -1435,6 +1435,7 @@ msgid "Merge" msgstr "" #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:78 +#: lib/bds/tui.ex:1926 #: lib/bds/ui/sidebar.ex:787 #, elixir-autogen, elixir-format msgid "Merge Tags" @@ -1449,11 +1450,11 @@ msgstr "" #: lib/bds/desktop/shell_live/misc_editor.ex:214 #: lib/bds/desktop/shell_live/misc_editor.ex:226 #: lib/bds/desktop/shell_live/misc_editor.ex:448 -#: lib/bds/tui.ex:278 -#: lib/bds/tui.ex:284 -#: lib/bds/tui.ex:295 -#: lib/bds/tui.ex:1421 -#: lib/bds/tui.ex:1803 +#: lib/bds/tui.ex:285 +#: lib/bds/tui.ex:291 +#: lib/bds/tui.ex:302 +#: lib/bds/tui.ex:1663 +#: lib/bds/tui.ex:2076 #: lib/bds/ui/registry.ex:111 #, elixir-autogen, elixir-format msgid "Metadata Diff" @@ -1499,7 +1500,7 @@ msgstr "" #: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/shell_live/sidebar_create.ex:41 -#: lib/bds/tui.ex:232 +#: lib/bds/tui.ex:238 #, elixir-autogen, elixir-format msgid "New Post" msgstr "" @@ -1787,8 +1788,8 @@ msgid "Open Data Folder" msgstr "" #: lib/bds/desktop/shell_live/index.html.heex:644 -#: lib/bds/tui.ex:801 -#: lib/bds/tui.ex:806 +#: lib/bds/tui.ex:1019 +#: lib/bds/tui.ex:1024 #, elixir-autogen, elixir-format msgid "Open Existing Blog" msgstr "" @@ -1800,7 +1801,7 @@ msgid "Open Settings" msgstr "" #: lib/bds/desktop/menu_bar.ex:217 -#: lib/bds/tui.ex:1827 +#: lib/bds/tui.ex:2100 #, elixir-autogen, elixir-format msgid "Open in Browser" msgstr "" @@ -1949,8 +1950,8 @@ msgstr "" #: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:761 -#: lib/bds/tui.ex:1665 -#: lib/bds/tui.ex:1680 +#: lib/bds/tui.ex:1938 +#: lib/bds/tui.ex:1953 #: lib/bds/ui/registry.ex:14 #: lib/bds/ui/sidebar.ex:271 #, elixir-autogen, elixir-format @@ -2010,8 +2011,8 @@ msgstr "" #: lib/bds/desktop/shell_live/chat_surface.ex:15 #: lib/bds/desktop/shell_live/index.html.heex:623 -#: lib/bds/tui.ex:714 -#: lib/bds/tui.ex:719 +#: lib/bds/tui.ex:932 +#: lib/bds/tui.ex:937 #, elixir-autogen, elixir-format msgid "Projects" msgstr "" @@ -2079,15 +2080,15 @@ msgid "Ready to import:" msgstr "" #: lib/bds/desktop/menu_bar.ex:248 -#: lib/bds/tui.ex:798 -#: lib/bds/tui.ex:1807 +#: lib/bds/tui.ex:1016 +#: lib/bds/tui.ex:2080 #, elixir-autogen, elixir-format msgid "Rebuild Database" msgstr "" #: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 -#: lib/bds/tui.ex:1811 +#: lib/bds/tui.ex:2084 #, elixir-autogen, elixir-format msgid "Rebuild Embedding Index" msgstr "" @@ -2145,7 +2146,7 @@ msgid "Refresh Translation" msgstr "" #: lib/bds/desktop/menu_bar.ex:252 -#: lib/bds/tui.ex:1814 +#: lib/bds/tui.ex:2087 #, elixir-autogen, elixir-format msgid "Regenerate Calendar" msgstr "" @@ -2156,7 +2157,7 @@ msgid "Regenerate Missing Thumbnails" msgstr "" #: lib/bds/desktop/menu_bar.ex:249 -#: lib/bds/tui.ex:1808 +#: lib/bds/tui.ex:2081 #, elixir-autogen, elixir-format msgid "Reindex Text" msgstr "" @@ -2344,7 +2345,7 @@ msgstr "" #: lib/bds/desktop/shell_live/script_editor.ex:216 #: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:234 -#: lib/bds/tui.ex:1668 +#: lib/bds/tui.ex:1941 #: lib/bds/ui/registry.ex:38 #: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:115 @@ -2451,7 +2452,7 @@ msgstr "" #: lib/bds/desktop/shell_live/settings_editor/project_settings.ex:60 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:11 -#: lib/bds/tui.ex:1670 +#: lib/bds/tui.ex:1943 #: lib/bds/ui/registry.ex:86 #: lib/bds/ui/registry.ex:101 #: lib/bds/ui/sidebar.ex:795 @@ -2475,9 +2476,9 @@ msgid "Site" msgstr "" #: lib/bds/desktop/shell_live/misc_editor.ex:412 -#: lib/bds/tui.ex:311 -#: lib/bds/tui.ex:313 -#: lib/bds/tui.ex:1426 +#: lib/bds/tui.ex:318 +#: lib/bds/tui.ex:320 +#: lib/bds/tui.ex:1668 #: lib/bds/ui/registry.ex:125 #, elixir-autogen, elixir-format msgid "Site Validation" @@ -2574,6 +2575,7 @@ msgid "System Prompt" msgstr "" #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:16 +#: lib/bds/tui.ex:1917 #: lib/bds/ui/sidebar.ex:785 #, elixir-autogen, elixir-format msgid "Tag Cloud" @@ -2595,12 +2597,13 @@ 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:104 -#: lib/bds/desktop/shell_live/tags_editor.ex:208 -#: lib/bds/desktop/shell_live/tags_editor.ex:222 -#: lib/bds/desktop/shell_live/tags_editor.ex:253 +#: lib/bds/desktop/shell_live/tags_editor.ex:99 +#: lib/bds/desktop/shell_live/tags_editor.ex:203 +#: lib/bds/desktop/shell_live/tags_editor.ex:217 +#: lib/bds/desktop/shell_live/tags_editor.ex:248 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 -#: lib/bds/tui.ex:1669 +#: lib/bds/tui.ex:1920 +#: lib/bds/tui.ex:1942 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 #: lib/bds/ui/sidebar.ex:289 @@ -2612,7 +2615,7 @@ msgstr "" #: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 -#: lib/bds/tui.ex:994 +#: lib/bds/tui.ex:1220 #, elixir-autogen, elixir-format msgid "Tasks" msgstr "" @@ -2658,7 +2661,7 @@ msgstr "" #: lib/bds/desktop/shell_live/template_editor.ex:171 #: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:191 -#: lib/bds/tui.ex:1667 +#: lib/bds/tui.ex:1940 #: lib/bds/ui/registry.ex:46 #: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:122 @@ -2882,7 +2885,7 @@ msgid "Updated URLs" msgstr "" #: lib/bds/desktop/menu_bar.ex:259 -#: lib/bds/tui.ex:1826 +#: lib/bds/tui.ex:2099 #, elixir-autogen, elixir-format msgid "Upload Site" msgstr "" @@ -2910,13 +2913,13 @@ msgid "Validate" msgstr "" #: lib/bds/desktop/menu_bar.ex:258 -#: lib/bds/tui.ex:1804 +#: lib/bds/tui.ex:2077 #, elixir-autogen, elixir-format msgid "Validate Site" msgstr "" #: lib/bds/desktop/menu_bar.ex:253 -#: lib/bds/tui.ex:1817 +#: lib/bds/tui.ex:2090 #, elixir-autogen, elixir-format msgid "Validate Translations" msgstr "" @@ -3389,15 +3392,15 @@ msgstr "" #: lib/bds/desktop/shell_live/git_handler.ex:46 #: lib/bds/desktop/shell_live/git_handler.ex:52 #: lib/bds/desktop/shell_live/sidebar_components.ex:556 -#: lib/bds/tui.ex:334 -#: lib/bds/tui.ex:340 -#: lib/bds/tui.ex:343 +#: lib/bds/tui.ex:341 +#: lib/bds/tui.ex:347 +#: lib/bds/tui.ex:350 #, elixir-autogen, elixir-format msgid "Commit" msgstr "" #: lib/bds/desktop/shell_live/sidebar_components.ex:555 -#: lib/bds/tui.ex:1248 +#: lib/bds/tui.ex:1490 #, elixir-autogen, elixir-format msgid "Commit message" msgstr "" @@ -3421,7 +3424,7 @@ msgid "Fetch" msgstr "" #: lib/bds/desktop/shell_live/sidebar_components.ex:586 -#: lib/bds/tui.ex:1083 +#: lib/bds/tui.ex:1309 #, elixir-autogen, elixir-format msgid "History" msgstr "" @@ -3469,7 +3472,7 @@ msgstr "" #: lib/bds/desktop/shell_live/git_handler.ex:17 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 -#: lib/bds/tui.ex:966 +#: lib/bds/tui.ex:1192 #, elixir-autogen, elixir-format msgid "Pull" msgstr "" @@ -3477,7 +3480,7 @@ msgstr "" #: lib/bds/desktop/shell_live/git_handler.ex:18 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 -#: lib/bds/tui.ex:967 +#: lib/bds/tui.ex:1193 #, elixir-autogen, elixir-format, fuzzy msgid "Push" msgstr "" @@ -3590,7 +3593,7 @@ msgid "Suggested tags" msgstr "" #: lib/bds/desktop/menu_bar.ex:257 -#: lib/bds/tui.ex:1805 +#: lib/bds/tui.ex:2078 #, elixir-autogen, elixir-format msgid "Force Render Site" msgstr "" @@ -3687,83 +3690,83 @@ msgstr "" msgid "The endpoint returned no models. You can still type a model name manually." msgstr "" -#: lib/bds/tui.ex:1763 +#: lib/bds/tui.ex:2036 #, elixir-autogen, elixir-format msgid "AI is unavailable in airplane mode without a local endpoint." msgstr "" -#: lib/bds/tui.ex:1890 +#: lib/bds/tui.ex:2163 #, elixir-autogen, elixir-format, fuzzy msgid "Could not load this file." msgstr "" -#: lib/bds/tui.ex:243 +#: lib/bds/tui.ex:250 #, elixir-autogen, elixir-format msgid "Editing this item is not available in the terminal UI yet." msgstr "" -#: lib/bds/tui.ex:949 +#: lib/bds/tui.ex:1175 #, elixir-autogen, elixir-format msgid "No suggestions returned." msgstr "" -#: lib/bds/tui.ex:1887 +#: lib/bds/tui.ex:2160 #, elixir-autogen, elixir-format msgid "Only images can be previewed." msgstr "" -#: lib/bds/tui.ex:1680 +#: lib/bds/tui.ex:1953 #, elixir-autogen, elixir-format msgid "Post not found." msgstr "" -#: lib/bds/tui.ex:1183 +#: lib/bds/tui.ex:1423 #, elixir-autogen, elixir-format msgid "Press enter to preview %{name}." msgstr "" -#: lib/bds/tui.ex:1733 +#: lib/bds/tui.ex:2006 #, elixir-autogen, elixir-format, fuzzy msgid "Published." msgstr "" -#: lib/bds/tui.ex:1749 +#: lib/bds/tui.ex:2022 #, elixir-autogen, elixir-format msgid "Save before switching languages." msgstr "" -#: lib/bds/tui.ex:533 -#: lib/bds/tui.ex:1734 +#: lib/bds/tui.ex:540 +#: lib/bds/tui.ex:2007 #, elixir-autogen, elixir-format, fuzzy msgid "Saved." msgstr "" -#: lib/bds/tui.ex:1186 +#: lib/bds/tui.ex:1426 #, elixir-autogen, elixir-format msgid "Select an entry and press enter to open it." msgstr "" -#: lib/bds/tui.ex:946 +#: lib/bds/tui.ex:1172 #, elixir-autogen, elixir-format msgid "Suggestions applied." msgstr "" -#: lib/bds/tui.ex:1198 +#: lib/bds/tui.ex:1438 #, elixir-autogen, elixir-format msgid "Title (ctrl+t to edit)" msgstr "" -#: lib/bds/tui.ex:1197 +#: lib/bds/tui.ex:1437 #, elixir-autogen, elixir-format msgid "Title (editing — enter to confirm)" msgstr "" -#: lib/bds/tui.ex:1250 +#: lib/bds/tui.ex:1492 #, elixir-autogen, elixir-format, fuzzy msgid "Working…" msgstr "" -#: lib/bds/tui.ex:1272 +#: lib/bds/tui.ex:1514 #, elixir-autogen, elixir-format msgid "esc to close" msgstr "" @@ -3800,148 +3803,148 @@ msgstr "" msgid "Use the form user@host or user@host:port." msgstr "" -#: lib/bds/tui.ex:1217 +#: lib/bds/tui.ex:1457 #, elixir-autogen, elixir-format msgid "Preview (ctrl+e to edit)" msgstr "" -#: lib/bds/tui.ex:1529 +#: lib/bds/tui.ex:1771 #, elixir-autogen, elixir-format, fuzzy msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" msgstr "" -#: lib/bds/tui.ex:994 +#: lib/bds/tui.ex:1220 #, elixir-autogen, elixir-format msgid "All tasks finished." msgstr "" -#: lib/bds/tui.ex:1298 +#: lib/bds/tui.ex:1540 #, elixir-autogen, elixir-format msgid "Commands — esc to close" msgstr "" -#: lib/bds/tui.ex:823 +#: lib/bds/tui.ex:1041 #, elixir-autogen, elixir-format, fuzzy msgid "Unknown command." msgstr "" -#: lib/bds/tui.ex:1288 +#: lib/bds/tui.ex:1530 #, elixir-autogen, elixir-format msgid "[report/apply in GUI]" msgstr "" -#: lib/bds/tui.ex:1437 +#: lib/bds/tui.ex:1679 #, elixir-autogen, elixir-format msgid "%{diffs} differences · %{orphans} orphan files" msgstr "" -#: lib/bds/tui.ex:1469 +#: lib/bds/tui.ex:1711 #, elixir-autogen, elixir-format msgid "Expected %{expected} · Existing %{existing}" msgstr "" -#: lib/bds/tui.ex:1486 +#: lib/bds/tui.ex:1728 #, elixir-autogen, elixir-format msgid "Extra files (will be removed):" msgstr "" -#: lib/bds/tui.ex:1482 +#: lib/bds/tui.ex:1724 #, elixir-autogen, elixir-format msgid "Missing pages (will be rendered):" msgstr "" -#: lib/bds/tui.ex:311 +#: lib/bds/tui.ex:318 #, elixir-autogen, elixir-format, fuzzy msgid "Nothing to apply." msgstr "" -#: lib/bds/tui.ex:278 +#: lib/bds/tui.ex:285 #, elixir-autogen, elixir-format, fuzzy msgid "Nothing to repair." msgstr "" -#: lib/bds/tui.ex:1460 +#: lib/bds/tui.ex:1702 #, elixir-autogen, elixir-format msgid "Orphan files (not in database):" msgstr "" -#: lib/bds/tui.ex:1476 +#: lib/bds/tui.ex:1718 #, elixir-autogen, elixir-format msgid "Sitemap changed." msgstr "" -#: lib/bds/tui.ex:1490 +#: lib/bds/tui.ex:1732 #, elixir-autogen, elixir-format msgid "Updated posts (will be re-rendered):" msgstr "" -#: lib/bds/tui.ex:1427 +#: lib/bds/tui.ex:1669 #, elixir-autogen, elixir-format msgid "enter apply changes · esc close" msgstr "" -#: lib/bds/tui.ex:1422 +#: lib/bds/tui.ex:1664 #, elixir-autogen, elixir-format msgid "enter repair all from files · esc close" msgstr "" -#: lib/bds/tui.ex:788 +#: lib/bds/tui.ex:1006 #, elixir-autogen, elixir-format, fuzzy msgid "Imported Blog" msgstr "" -#: lib/bds/tui.ex:807 +#: lib/bds/tui.ex:1025 #, elixir-autogen, elixir-format msgid "Not a folder: %{path}" msgstr "" -#: lib/bds/tui.ex:1364 +#: lib/bds/tui.ex:1606 #, elixir-autogen, elixir-format msgid "Projects — enter switch · o open existing · esc close" msgstr "" -#: lib/bds/tui.ex:715 +#: lib/bds/tui.ex:933 #, elixir-autogen, elixir-format msgid "Switched to %{name}." msgstr "" -#: lib/bds/tui.ex:1392 +#: lib/bds/tui.ex:1634 #, elixir-autogen, elixir-format msgid "Matching folders" msgstr "" -#: lib/bds/tui.ex:1330 +#: lib/bds/tui.ex:1572 #, elixir-autogen, elixir-format, fuzzy msgid "Open Existing Blog — type a folder path · tab complete · enter open · esc back" msgstr "" -#: lib/bds/tui.ex:334 +#: lib/bds/tui.ex:341 #, elixir-autogen, elixir-format, fuzzy msgid "Commit message required." msgstr "" -#: lib/bds/tui.ex:340 +#: lib/bds/tui.ex:347 #, elixir-autogen, elixir-format, fuzzy msgid "Committed." msgstr "" -#: lib/bds/tui.ex:1174 +#: lib/bds/tui.ex:1414 #, elixir-autogen, elixir-format msgid "Diff (pgup/pgdn scroll)" msgstr "" -#: lib/bds/tui.ex:1557 +#: lib/bds/tui.ex:1799 #, elixir-autogen, elixir-format, fuzzy msgid "No changes." msgstr "" -#: lib/bds/tui.ex:400 +#: lib/bds/tui.ex:407 #, elixir-autogen, elixir-format msgid "No diff for this file." msgstr "" -#: lib/bds/tui.ex:388 -#: lib/bds/tui.ex:1161 +#: lib/bds/tui.ex:395 +#: lib/bds/tui.ex:1401 #, elixir-autogen, elixir-format msgid "Not a git repository." msgstr "" @@ -4036,12 +4039,12 @@ msgstr "" msgid "Theme" msgstr "" -#: lib/bds/tui.ex:1145 +#: lib/bds/tui.ex:1371 #, elixir-autogen, elixir-format msgid "enter edit · ctrl+s save · esc close" msgstr "" -#: lib/bds/tui.ex:1508 +#: lib/bds/tui.ex:1750 #, elixir-autogen, elixir-format msgid "enter edit/toggle/cycle · ctrl+s save · esc close · ctrl+q quit" msgstr "" @@ -4051,12 +4054,12 @@ msgstr "" msgid "not supported yet" msgstr "" -#: lib/bds/tui.ex:1515 +#: lib/bds/tui.ex:1757 #, elixir-autogen, elixir-format, fuzzy msgid "c commit · u pull · s push · enter jump to file · pgup/pgdn scroll diff · 1-7 views · ctrl+q quit" msgstr "" -#: lib/bds/tui.ex:1522 +#: lib/bds/tui.ex:1764 #, elixir-autogen, elixir-format, fuzzy msgid "enter open · n new post · 1-7 views · p projects · / search · : commands (:? help) · r refresh · ctrl+q quit" msgstr "" @@ -4066,8 +4069,6 @@ msgstr "" msgid "CLI tool installed to %{path}" msgstr "" -#: lib/bds/desktop/shell_live/settings_editor.ex:75 -#: lib/bds/desktop/shell_live/settings_editor.ex:78 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:386 #: lib/bds/ui/settings_form.ex:223 #, elixir-autogen, elixir-format @@ -4099,3 +4100,113 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Unknown settings action" msgstr "" + +#: lib/bds/ui/tags_panel.ex:114 +#, elixir-autogen, elixir-format +msgid "Colour of %{name}: %{color}" +msgstr "" + +#: lib/bds/tui.ex:708 +#, elixir-autogen, elixir-format +msgid "Delete %{name} (used by %{count} posts)? Press y to confirm." +msgstr "" + +#: lib/bds/tui.ex:656 +#, elixir-autogen, elixir-format +msgid "Delete cancelled" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:171 +#, elixir-autogen, elixir-format +msgid "Mark at least two tags to merge" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:177 +#, elixir-autogen, elixir-format +msgid "Merged %{count} tags into %{name}" +msgstr "" + +#: lib/bds/tui.ex:668 +#, elixir-autogen, elixir-format, fuzzy +msgid "New tag" +msgstr "" + +#: lib/bds/tui.ex:681 +#, elixir-autogen, elixir-format, fuzzy +msgid "Rename tag" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:76 +#, elixir-autogen, elixir-format, fuzzy +msgid "Tag %{name} created" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:149 +#, elixir-autogen, elixir-format, fuzzy +msgid "Tag %{name} deleted" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:201 +#, elixir-autogen, elixir-format +msgid "Tag %{name} not found" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:88 +#, elixir-autogen, elixir-format +msgid "Tag name cannot be empty" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:227 +#, elixir-autogen, elixir-format, fuzzy +msgid "Tag not found" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:96 +#, elixir-autogen, elixir-format +msgid "Tag renamed to %{name}" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:91 +#, elixir-autogen, elixir-format, fuzzy +msgid "Tag unchanged" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:192 +#, elixir-autogen, elixir-format +msgid "Tags synced from posts (%{count} total)" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:134 +#, elixir-autogen, elixir-format +msgid "Template of %{name}: %{template}" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:168 +#, elixir-autogen, elixir-format +msgid "The merge target must be one of the marked tags" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:136 +#, elixir-autogen, elixir-format, fuzzy +msgid "default" +msgstr "" + +#: lib/bds/tui.ex:1917 +#, elixir-autogen, elixir-format, fuzzy +msgid "esc close" +msgstr "" + +#: lib/bds/tui.ex:1922 +#, elixir-autogen, elixir-format +msgid "n new · enter rename · c colour · t template · d delete · s sync · esc close" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:116 +#, elixir-autogen, elixir-format, fuzzy +msgid "none" +msgstr "" + +#: lib/bds/tui.ex:1927 +#, elixir-autogen, elixir-format +msgid "space mark · m merge into selected · esc close" +msgstr "" diff --git a/priv/gettext/es/LC_MESSAGES/ui.po b/priv/gettext/es/LC_MESSAGES/ui.po index 73462e7..c08bf52 100644 --- a/priv/gettext/es/LC_MESSAGES/ui.po +++ b/priv/gettext/es/LC_MESSAGES/ui.po @@ -82,11 +82,11 @@ msgstr "Configuración de IA" #: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: lib/bds/desktop/shell_live/post_editor.ex:906 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 -#: lib/bds/tui.ex:946 -#: lib/bds/tui.ex:949 -#: lib/bds/tui.ex:952 -#: lib/bds/tui.ex:960 -#: lib/bds/tui.ex:1762 +#: lib/bds/tui.ex:1172 +#: lib/bds/tui.ex:1175 +#: lib/bds/tui.ex:1178 +#: lib/bds/tui.ex:1186 +#: lib/bds/tui.ex:2035 #, elixir-autogen, elixir-format msgid "AI Suggestions" msgstr "Sugerencias de IA" @@ -575,7 +575,7 @@ msgid "Collapse unchanged diff hunks" msgstr "Contraer bloques de diff sin cambios" #: lib/bds/desktop/shell_live/overlay_manager.ex:423 -#: lib/bds/tui.ex:1858 +#: lib/bds/tui.ex:2131 #, elixir-autogen, elixir-format msgid "Command completed" msgstr "Comando completado" @@ -593,7 +593,7 @@ msgstr "Confirmar" #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 -#: lib/bds/tui.ex:1228 +#: lib/bds/tui.ex:1468 #: lib/bds/ui/settings_form.ex:137 #: lib/bds/ui/sidebar.ex:801 #, elixir-autogen, elixir-format @@ -1040,7 +1040,7 @@ msgid "Filename" msgstr "Nombre de archivo" #: lib/bds/desktop/menu_bar.ex:254 -#: lib/bds/tui.ex:1822 +#: lib/bds/tui.ex:2095 #, elixir-autogen, elixir-format msgid "Fill Missing Translations" msgstr "Completar traducciones faltantes" @@ -1051,7 +1051,7 @@ msgid "Find" msgstr "Buscar" #: lib/bds/desktop/menu_bar.ex:255 -#: lib/bds/tui.ex:1825 +#: lib/bds/tui.ex:2098 #, elixir-autogen, elixir-format msgid "Find Duplicate Posts" msgstr "Buscar entradas duplicadas" @@ -1078,14 +1078,14 @@ msgid "Gallery" msgstr "Galeria" #: lib/bds/desktop/menu_bar.ex:256 -#: lib/bds/tui.ex:1806 +#: lib/bds/tui.ex:2079 #, elixir-autogen, elixir-format msgid "Generate Site" msgstr "Generar sitio" #: lib/bds/desktop/shell_live.ex:792 #: lib/bds/desktop/shell_live/socket_state.ex:109 -#: lib/bds/tui.ex:1671 +#: lib/bds/tui.ex:1944 #: lib/bds/ui/sidebar.ex:826 #, elixir-autogen, elixir-format msgid "Git" @@ -1404,9 +1404,9 @@ msgstr "Máximo de publicaciones por página" #: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175 -#: lib/bds/tui.ex:1666 -#: lib/bds/tui.ex:1887 -#: lib/bds/tui.ex:1890 +#: lib/bds/tui.ex:1939 +#: lib/bds/tui.ex:2160 +#: lib/bds/tui.ex:2163 #: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:100 #: lib/bds/ui/sidebar.ex:578 @@ -1435,6 +1435,7 @@ msgid "Merge" msgstr "Fusionar" #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:78 +#: lib/bds/tui.ex:1926 #: lib/bds/ui/sidebar.ex:787 #, elixir-autogen, elixir-format msgid "Merge Tags" @@ -1449,11 +1450,11 @@ msgstr "Metadatos" #: lib/bds/desktop/shell_live/misc_editor.ex:214 #: lib/bds/desktop/shell_live/misc_editor.ex:226 #: lib/bds/desktop/shell_live/misc_editor.ex:448 -#: lib/bds/tui.ex:278 -#: lib/bds/tui.ex:284 -#: lib/bds/tui.ex:295 -#: lib/bds/tui.ex:1421 -#: lib/bds/tui.ex:1803 +#: lib/bds/tui.ex:285 +#: lib/bds/tui.ex:291 +#: lib/bds/tui.ex:302 +#: lib/bds/tui.ex:1663 +#: lib/bds/tui.ex:2076 #: lib/bds/ui/registry.ex:111 #, elixir-autogen, elixir-format msgid "Metadata Diff" @@ -1499,7 +1500,7 @@ msgstr "Nueva página" #: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/shell_live/sidebar_create.ex:41 -#: lib/bds/tui.ex:232 +#: lib/bds/tui.ex:238 #, elixir-autogen, elixir-format msgid "New Post" msgstr "Nueva entrada" @@ -1787,8 +1788,8 @@ msgid "Open Data Folder" msgstr "Abrir carpeta de datos" #: lib/bds/desktop/shell_live/index.html.heex:644 -#: lib/bds/tui.ex:801 -#: lib/bds/tui.ex:806 +#: lib/bds/tui.ex:1019 +#: lib/bds/tui.ex:1024 #, elixir-autogen, elixir-format msgid "Open Existing Blog" msgstr "Abrir blog existente" @@ -1800,7 +1801,7 @@ msgid "Open Settings" msgstr "Abrir Ajustes" #: lib/bds/desktop/menu_bar.ex:217 -#: lib/bds/tui.ex:1827 +#: lib/bds/tui.ex:2100 #, elixir-autogen, elixir-format msgid "Open in Browser" msgstr "Abrir en el navegador" @@ -1949,8 +1950,8 @@ msgstr "Artículo guardado" #: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:761 -#: lib/bds/tui.ex:1665 -#: lib/bds/tui.ex:1680 +#: lib/bds/tui.ex:1938 +#: lib/bds/tui.ex:1953 #: lib/bds/ui/registry.ex:14 #: lib/bds/ui/sidebar.ex:271 #, elixir-autogen, elixir-format @@ -2010,8 +2011,8 @@ msgstr "Proyecto y publicación" #: lib/bds/desktop/shell_live/chat_surface.ex:15 #: lib/bds/desktop/shell_live/index.html.heex:623 -#: lib/bds/tui.ex:714 -#: lib/bds/tui.ex:719 +#: lib/bds/tui.ex:932 +#: lib/bds/tui.ex:937 #, elixir-autogen, elixir-format msgid "Projects" msgstr "Proyectos" @@ -2079,15 +2080,15 @@ msgid "Ready to import:" msgstr "Listo para importar:" #: lib/bds/desktop/menu_bar.ex:248 -#: lib/bds/tui.ex:798 -#: lib/bds/tui.ex:1807 +#: lib/bds/tui.ex:1016 +#: lib/bds/tui.ex:2080 #, elixir-autogen, elixir-format msgid "Rebuild Database" msgstr "Reconstruir base de datos" #: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 -#: lib/bds/tui.ex:1811 +#: lib/bds/tui.ex:2084 #, elixir-autogen, elixir-format msgid "Rebuild Embedding Index" msgstr "Reconstruir índice de embeddings" @@ -2145,7 +2146,7 @@ msgid "Refresh Translation" msgstr "Actualizar traducción" #: lib/bds/desktop/menu_bar.ex:252 -#: lib/bds/tui.ex:1814 +#: lib/bds/tui.ex:2087 #, elixir-autogen, elixir-format msgid "Regenerate Calendar" msgstr "Regenerar calendario" @@ -2156,7 +2157,7 @@ msgid "Regenerate Missing Thumbnails" msgstr "Regenerar miniaturas faltantes" #: lib/bds/desktop/menu_bar.ex:249 -#: lib/bds/tui.ex:1808 +#: lib/bds/tui.ex:2081 #, elixir-autogen, elixir-format msgid "Reindex Text" msgstr "Reindexar texto" @@ -2344,7 +2345,7 @@ msgstr "Las capacidades de scripts se configuran en la capa de aplicación en la #: lib/bds/desktop/shell_live/script_editor.ex:216 #: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:234 -#: lib/bds/tui.ex:1668 +#: lib/bds/tui.ex:1941 #: lib/bds/ui/registry.ex:38 #: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:115 @@ -2451,7 +2452,7 @@ msgstr "Similitud semántica" #: lib/bds/desktop/shell_live/settings_editor/project_settings.ex:60 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:11 -#: lib/bds/tui.ex:1670 +#: lib/bds/tui.ex:1943 #: lib/bds/ui/registry.ex:86 #: lib/bds/ui/registry.ex:101 #: lib/bds/ui/sidebar.ex:795 @@ -2475,9 +2476,9 @@ msgid "Site" msgstr "Sitio" #: lib/bds/desktop/shell_live/misc_editor.ex:412 -#: lib/bds/tui.ex:311 -#: lib/bds/tui.ex:313 -#: lib/bds/tui.ex:1426 +#: lib/bds/tui.ex:318 +#: lib/bds/tui.ex:320 +#: lib/bds/tui.ex:1668 #: lib/bds/ui/registry.ex:125 #, elixir-autogen, elixir-format msgid "Site Validation" @@ -2574,6 +2575,7 @@ msgid "System Prompt" msgstr "Prompt del sistema" #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:16 +#: lib/bds/tui.ex:1917 #: lib/bds/ui/sidebar.ex:785 #, elixir-autogen, elixir-format msgid "Tag Cloud" @@ -2595,12 +2597,13 @@ 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:104 -#: lib/bds/desktop/shell_live/tags_editor.ex:208 -#: lib/bds/desktop/shell_live/tags_editor.ex:222 -#: lib/bds/desktop/shell_live/tags_editor.ex:253 +#: lib/bds/desktop/shell_live/tags_editor.ex:99 +#: lib/bds/desktop/shell_live/tags_editor.ex:203 +#: lib/bds/desktop/shell_live/tags_editor.ex:217 +#: lib/bds/desktop/shell_live/tags_editor.ex:248 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 -#: lib/bds/tui.ex:1669 +#: lib/bds/tui.ex:1920 +#: lib/bds/tui.ex:1942 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 #: lib/bds/ui/sidebar.ex:289 @@ -2612,7 +2615,7 @@ msgstr "Etiquetas" #: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 -#: lib/bds/tui.ex:994 +#: lib/bds/tui.ex:1220 #, elixir-autogen, elixir-format msgid "Tasks" msgstr "Tareas" @@ -2658,7 +2661,7 @@ msgstr "La sintaxis de la plantilla es válida" #: lib/bds/desktop/shell_live/template_editor.ex:171 #: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:191 -#: lib/bds/tui.ex:1667 +#: lib/bds/tui.ex:1940 #: lib/bds/ui/registry.ex:46 #: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:122 @@ -2882,7 +2885,7 @@ msgid "Updated URLs" msgstr "URLs actualizadas" #: lib/bds/desktop/menu_bar.ex:259 -#: lib/bds/tui.ex:1826 +#: lib/bds/tui.ex:2099 #, elixir-autogen, elixir-format msgid "Upload Site" msgstr "Subir sitio" @@ -2910,13 +2913,13 @@ msgid "Validate" msgstr "Validar" #: lib/bds/desktop/menu_bar.ex:258 -#: lib/bds/tui.ex:1804 +#: lib/bds/tui.ex:2077 #, elixir-autogen, elixir-format msgid "Validate Site" msgstr "Validar sitio" #: lib/bds/desktop/menu_bar.ex:253 -#: lib/bds/tui.ex:1817 +#: lib/bds/tui.ex:2090 #, elixir-autogen, elixir-format msgid "Validate Translations" msgstr "Validar traducciones" @@ -3389,15 +3392,15 @@ msgstr "Cambios" #: lib/bds/desktop/shell_live/git_handler.ex:46 #: lib/bds/desktop/shell_live/git_handler.ex:52 #: lib/bds/desktop/shell_live/sidebar_components.ex:556 -#: lib/bds/tui.ex:334 -#: lib/bds/tui.ex:340 -#: lib/bds/tui.ex:343 +#: lib/bds/tui.ex:341 +#: lib/bds/tui.ex:347 +#: lib/bds/tui.ex:350 #, elixir-autogen, elixir-format msgid "Commit" msgstr "Commit" #: lib/bds/desktop/shell_live/sidebar_components.ex:555 -#: lib/bds/tui.ex:1248 +#: lib/bds/tui.ex:1490 #, elixir-autogen, elixir-format msgid "Commit message" msgstr "Mensaje de commit" @@ -3421,7 +3424,7 @@ msgid "Fetch" msgstr "Obtener" #: lib/bds/desktop/shell_live/sidebar_components.ex:586 -#: lib/bds/tui.ex:1083 +#: lib/bds/tui.ex:1309 #, elixir-autogen, elixir-format msgid "History" msgstr "Historial" @@ -3469,7 +3472,7 @@ msgstr "Limpiar LFS" #: lib/bds/desktop/shell_live/git_handler.ex:17 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 -#: lib/bds/tui.ex:966 +#: lib/bds/tui.ex:1192 #, elixir-autogen, elixir-format msgid "Pull" msgstr "Pull" @@ -3477,7 +3480,7 @@ msgstr "Pull" #: lib/bds/desktop/shell_live/git_handler.ex:18 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 -#: lib/bds/tui.ex:967 +#: lib/bds/tui.ex:1193 #, elixir-autogen, elixir-format msgid "Push" msgstr "Push" @@ -3590,7 +3593,7 @@ msgid "Suggested tags" msgstr "Etiquetas sugeridas" #: lib/bds/desktop/menu_bar.ex:257 -#: lib/bds/tui.ex:1805 +#: lib/bds/tui.ex:2078 #, elixir-autogen, elixir-format msgid "Force Render Site" msgstr "Forzar la regeneración del sitio" @@ -3687,83 +3690,83 @@ msgstr "OK" msgid "The endpoint returned no models. You can still type a model name manually." msgstr "El endpoint no devolvió ningún modelo. Aún puedes escribir el nombre de un modelo manualmente." -#: lib/bds/tui.ex:1763 +#: lib/bds/tui.ex:2036 #, elixir-autogen, elixir-format msgid "AI is unavailable in airplane mode without a local endpoint." msgstr "La IA no está disponible en modo avión sin un punto de conexión local." -#: lib/bds/tui.ex:1890 +#: lib/bds/tui.ex:2163 #, elixir-autogen, elixir-format msgid "Could not load this file." msgstr "No se pudo cargar este archivo." -#: lib/bds/tui.ex:243 +#: lib/bds/tui.ex:250 #, elixir-autogen, elixir-format msgid "Editing this item is not available in the terminal UI yet." msgstr "La edición de este elemento aún no está disponible en la interfaz de terminal." -#: lib/bds/tui.ex:949 +#: lib/bds/tui.ex:1175 #, elixir-autogen, elixir-format msgid "No suggestions returned." msgstr "No se recibieron sugerencias." -#: lib/bds/tui.ex:1887 +#: lib/bds/tui.ex:2160 #, elixir-autogen, elixir-format msgid "Only images can be previewed." msgstr "Solo se pueden previsualizar imágenes." -#: lib/bds/tui.ex:1680 +#: lib/bds/tui.ex:1953 #, elixir-autogen, elixir-format msgid "Post not found." msgstr "Entrada no encontrada." -#: lib/bds/tui.ex:1183 +#: lib/bds/tui.ex:1423 #, elixir-autogen, elixir-format msgid "Press enter to preview %{name}." msgstr "Pulsa Intro para previsualizar %{name}." -#: lib/bds/tui.ex:1733 +#: lib/bds/tui.ex:2006 #, elixir-autogen, elixir-format msgid "Published." msgstr "Publicado." -#: lib/bds/tui.ex:1749 +#: lib/bds/tui.ex:2022 #, elixir-autogen, elixir-format msgid "Save before switching languages." msgstr "Guarda antes de cambiar de idioma." -#: lib/bds/tui.ex:533 -#: lib/bds/tui.ex:1734 +#: lib/bds/tui.ex:540 +#: lib/bds/tui.ex:2007 #, elixir-autogen, elixir-format msgid "Saved." msgstr "Guardado." -#: lib/bds/tui.ex:1186 +#: lib/bds/tui.ex:1426 #, elixir-autogen, elixir-format msgid "Select an entry and press enter to open it." msgstr "Selecciona una entrada y pulsa Intro para abrirla." -#: lib/bds/tui.ex:946 +#: lib/bds/tui.ex:1172 #, elixir-autogen, elixir-format msgid "Suggestions applied." msgstr "Sugerencias aplicadas." -#: lib/bds/tui.ex:1198 +#: lib/bds/tui.ex:1438 #, elixir-autogen, elixir-format msgid "Title (ctrl+t to edit)" msgstr "Título (ctrl+t para editar)" -#: lib/bds/tui.ex:1197 +#: lib/bds/tui.ex:1437 #, elixir-autogen, elixir-format msgid "Title (editing — enter to confirm)" msgstr "Título (edición — Intro para confirmar)" -#: lib/bds/tui.ex:1250 +#: lib/bds/tui.ex:1492 #, elixir-autogen, elixir-format msgid "Working…" msgstr "Procesando…" -#: lib/bds/tui.ex:1272 +#: lib/bds/tui.ex:1514 #, elixir-autogen, elixir-format msgid "esc to close" msgstr "esc para cerrar" @@ -3800,148 +3803,148 @@ msgstr "Dirección del servidor (user@host o user@host:port), autenticación de msgid "Use the form user@host or user@host:port." msgstr "Usa el formato user@host o user@host:port." -#: lib/bds/tui.ex:1217 +#: lib/bds/tui.ex:1457 #, elixir-autogen, elixir-format msgid "Preview (ctrl+e to edit)" msgstr "Vista previa (ctrl+e para editar)" -#: lib/bds/tui.ex:1529 +#: lib/bds/tui.ex:1771 #, elixir-autogen, elixir-format msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" msgstr "ctrl+s guardar · ctrl+p publicar · ctrl+e vista previa · ctrl+t título · ctrl+l idioma · ctrl+g IA · esc volver" -#: lib/bds/tui.ex:994 +#: lib/bds/tui.ex:1220 #, elixir-autogen, elixir-format msgid "All tasks finished." msgstr "Todas las tareas han terminado." -#: lib/bds/tui.ex:1298 +#: lib/bds/tui.ex:1540 #, elixir-autogen, elixir-format msgid "Commands — esc to close" msgstr "Comandos — esc para cerrar" -#: lib/bds/tui.ex:823 +#: lib/bds/tui.ex:1041 #, elixir-autogen, elixir-format msgid "Unknown command." msgstr "Comando desconocido." -#: lib/bds/tui.ex:1288 +#: lib/bds/tui.ex:1530 #, elixir-autogen, elixir-format msgid "[report/apply in GUI]" msgstr "[informe/aplicación en la GUI]" -#: lib/bds/tui.ex:1437 +#: lib/bds/tui.ex:1679 #, elixir-autogen, elixir-format msgid "%{diffs} differences · %{orphans} orphan files" msgstr "%{diffs} diferencias · %{orphans} archivos huérfanos" -#: lib/bds/tui.ex:1469 +#: lib/bds/tui.ex:1711 #, elixir-autogen, elixir-format msgid "Expected %{expected} · Existing %{existing}" msgstr "Esperados %{expected} · Existentes %{existing}" -#: lib/bds/tui.ex:1486 +#: lib/bds/tui.ex:1728 #, elixir-autogen, elixir-format msgid "Extra files (will be removed):" msgstr "Archivos sobrantes (se eliminarán):" -#: lib/bds/tui.ex:1482 +#: lib/bds/tui.ex:1724 #, elixir-autogen, elixir-format msgid "Missing pages (will be rendered):" msgstr "Páginas faltantes (se generarán):" -#: lib/bds/tui.ex:311 +#: lib/bds/tui.ex:318 #, elixir-autogen, elixir-format msgid "Nothing to apply." msgstr "Nada que aplicar." -#: lib/bds/tui.ex:278 +#: lib/bds/tui.ex:285 #, elixir-autogen, elixir-format msgid "Nothing to repair." msgstr "Nada que reparar." -#: lib/bds/tui.ex:1460 +#: lib/bds/tui.ex:1702 #, elixir-autogen, elixir-format msgid "Orphan files (not in database):" msgstr "Archivos huérfanos (no están en la base de datos):" -#: lib/bds/tui.ex:1476 +#: lib/bds/tui.ex:1718 #, elixir-autogen, elixir-format msgid "Sitemap changed." msgstr "Sitemap modificado." -#: lib/bds/tui.ex:1490 +#: lib/bds/tui.ex:1732 #, elixir-autogen, elixir-format msgid "Updated posts (will be re-rendered):" msgstr "Entradas actualizadas (se volverán a generar):" -#: lib/bds/tui.ex:1427 +#: lib/bds/tui.ex:1669 #, elixir-autogen, elixir-format msgid "enter apply changes · esc close" msgstr "intro aplicar cambios · esc cerrar" -#: lib/bds/tui.ex:1422 +#: lib/bds/tui.ex:1664 #, elixir-autogen, elixir-format msgid "enter repair all from files · esc close" msgstr "intro reparar todo desde archivos · esc cerrar" -#: lib/bds/tui.ex:788 +#: lib/bds/tui.ex:1006 #, elixir-autogen, elixir-format msgid "Imported Blog" msgstr "Blog importado" -#: lib/bds/tui.ex:807 +#: lib/bds/tui.ex:1025 #, elixir-autogen, elixir-format msgid "Not a folder: %{path}" msgstr "No es una carpeta: %{path}" -#: lib/bds/tui.ex:1364 +#: lib/bds/tui.ex:1606 #, elixir-autogen, elixir-format msgid "Projects — enter switch · o open existing · esc close" msgstr "Proyectos — intro cambiar · o abrir existente · esc cerrar" -#: lib/bds/tui.ex:715 +#: lib/bds/tui.ex:933 #, elixir-autogen, elixir-format msgid "Switched to %{name}." msgstr "Cambiado a %{name}." -#: lib/bds/tui.ex:1392 +#: lib/bds/tui.ex:1634 #, elixir-autogen, elixir-format msgid "Matching folders" msgstr "Carpetas coincidentes" -#: lib/bds/tui.ex:1330 +#: lib/bds/tui.ex:1572 #, elixir-autogen, elixir-format msgid "Open Existing Blog — type a folder path · tab complete · enter open · esc back" msgstr "Abrir blog existente — escribe la ruta de una carpeta · tab completar · intro abrir · esc volver" -#: lib/bds/tui.ex:334 +#: lib/bds/tui.ex:341 #, elixir-autogen, elixir-format msgid "Commit message required." msgstr "Se requiere un mensaje de commit." -#: lib/bds/tui.ex:340 +#: lib/bds/tui.ex:347 #, elixir-autogen, elixir-format msgid "Committed." msgstr "Commit realizado." -#: lib/bds/tui.ex:1174 +#: lib/bds/tui.ex:1414 #, elixir-autogen, elixir-format msgid "Diff (pgup/pgdn scroll)" msgstr "Diff (pgup/pgdn para desplazar)" -#: lib/bds/tui.ex:1557 +#: lib/bds/tui.ex:1799 #, elixir-autogen, elixir-format msgid "No changes." msgstr "Sin cambios." -#: lib/bds/tui.ex:400 +#: lib/bds/tui.ex:407 #, elixir-autogen, elixir-format msgid "No diff for this file." msgstr "No hay diff para este archivo." -#: lib/bds/tui.ex:388 -#: lib/bds/tui.ex:1161 +#: lib/bds/tui.ex:395 +#: lib/bds/tui.ex:1401 #, elixir-autogen, elixir-format msgid "Not a git repository." msgstr "No es un repositorio git." @@ -4036,12 +4039,12 @@ msgstr "Mostrar título" msgid "Theme" msgstr "Tema" -#: lib/bds/tui.ex:1145 +#: lib/bds/tui.ex:1371 #, elixir-autogen, elixir-format msgid "enter edit · ctrl+s save · esc close" msgstr "intro editar · ctrl+s guardar · esc cerrar" -#: lib/bds/tui.ex:1508 +#: lib/bds/tui.ex:1750 #, elixir-autogen, elixir-format msgid "enter edit/toggle/cycle · ctrl+s save · esc close · ctrl+q quit" msgstr "intro editar/alternar/ciclar · ctrl+s guardar · esc cerrar · ctrl+q salir" @@ -4051,12 +4054,12 @@ msgstr "intro editar/alternar/ciclar · ctrl+s guardar · esc cerrar · ctrl+q s msgid "not supported yet" msgstr "aún no compatible" -#: lib/bds/tui.ex:1515 +#: lib/bds/tui.ex:1757 #, elixir-autogen, elixir-format msgid "c commit · u pull · s push · enter jump to file · pgup/pgdn scroll diff · 1-7 views · ctrl+q quit" msgstr "c commit · u pull · s push · intro ir al archivo · pgup/pgdn desplazar el diff · 1-7 vistas · ctrl+q salir" -#: lib/bds/tui.ex:1522 +#: lib/bds/tui.ex:1764 #, elixir-autogen, elixir-format msgid "enter open · n new post · 1-7 views · p projects · / search · : commands (:? help) · r refresh · ctrl+q quit" msgstr "intro abrir · n nueva entrada · 1-7 vistas · p proyectos · / buscar · : comandos (:? ayuda) · r actualizar · ctrl+q salir" @@ -4066,8 +4069,6 @@ msgstr "intro abrir · n nueva entrada · 1-7 vistas · p proyectos · / buscar msgid "CLI tool installed to %{path}" msgstr "Herramienta CLI instalada en %{path}" -#: lib/bds/desktop/shell_live/settings_editor.ex:75 -#: lib/bds/desktop/shell_live/settings_editor.ex:78 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:386 #: lib/bds/ui/settings_form.ex:223 #, elixir-autogen, elixir-format @@ -4099,3 +4100,113 @@ msgstr "La herramienta CLI solo puede instalarse desde la aplicación empaquetad #, elixir-autogen, elixir-format msgid "Unknown settings action" msgstr "Acción de configuración desconocida" + +#: lib/bds/ui/tags_panel.ex:114 +#, elixir-autogen, elixir-format +msgid "Colour of %{name}: %{color}" +msgstr "Color de %{name}: %{color}" + +#: lib/bds/tui.ex:708 +#, elixir-autogen, elixir-format +msgid "Delete %{name} (used by %{count} posts)? Press y to confirm." +msgstr "¿Eliminar %{name} (usada en %{count} artículos)? Pulsa y para confirmar." + +#: lib/bds/tui.ex:656 +#, elixir-autogen, elixir-format +msgid "Delete cancelled" +msgstr "Eliminación cancelada" + +#: lib/bds/ui/tags_panel.ex:171 +#, elixir-autogen, elixir-format +msgid "Mark at least two tags to merge" +msgstr "Marca al menos dos etiquetas para combinar" + +#: lib/bds/ui/tags_panel.ex:177 +#, elixir-autogen, elixir-format +msgid "Merged %{count} tags into %{name}" +msgstr "%{count} etiquetas combinadas en %{name}" + +#: lib/bds/tui.ex:668 +#, elixir-autogen, elixir-format +msgid "New tag" +msgstr "Nueva etiqueta" + +#: lib/bds/tui.ex:681 +#, elixir-autogen, elixir-format +msgid "Rename tag" +msgstr "Renombrar etiqueta" + +#: lib/bds/ui/tags_panel.ex:76 +#, elixir-autogen, elixir-format +msgid "Tag %{name} created" +msgstr "Etiqueta %{name} creada" + +#: lib/bds/ui/tags_panel.ex:149 +#, elixir-autogen, elixir-format +msgid "Tag %{name} deleted" +msgstr "Etiqueta %{name} eliminada" + +#: lib/bds/ui/tags_panel.ex:201 +#, elixir-autogen, elixir-format +msgid "Tag %{name} not found" +msgstr "Etiqueta %{name} no encontrada" + +#: lib/bds/ui/tags_panel.ex:88 +#, elixir-autogen, elixir-format +msgid "Tag name cannot be empty" +msgstr "El nombre de la etiqueta no puede estar vacío" + +#: lib/bds/ui/tags_panel.ex:227 +#, elixir-autogen, elixir-format +msgid "Tag not found" +msgstr "Etiqueta no encontrada" + +#: lib/bds/ui/tags_panel.ex:96 +#, elixir-autogen, elixir-format +msgid "Tag renamed to %{name}" +msgstr "Etiqueta renombrada a %{name}" + +#: lib/bds/ui/tags_panel.ex:91 +#, elixir-autogen, elixir-format +msgid "Tag unchanged" +msgstr "Etiqueta sin cambios" + +#: lib/bds/ui/tags_panel.ex:192 +#, elixir-autogen, elixir-format +msgid "Tags synced from posts (%{count} total)" +msgstr "Etiquetas sincronizadas desde los artículos (%{count} en total)" + +#: lib/bds/ui/tags_panel.ex:134 +#, elixir-autogen, elixir-format +msgid "Template of %{name}: %{template}" +msgstr "Plantilla de %{name}: %{template}" + +#: lib/bds/ui/tags_panel.ex:168 +#, elixir-autogen, elixir-format +msgid "The merge target must be one of the marked tags" +msgstr "El destino de la combinación debe ser una de las etiquetas marcadas" + +#: lib/bds/ui/tags_panel.ex:136 +#, elixir-autogen, elixir-format +msgid "default" +msgstr "predeterminado" + +#: lib/bds/tui.ex:1917 +#, elixir-autogen, elixir-format +msgid "esc close" +msgstr "esc cerrar" + +#: lib/bds/tui.ex:1922 +#, elixir-autogen, elixir-format +msgid "n new · enter rename · c colour · t template · d delete · s sync · esc close" +msgstr "n nuevo · intro renombrar · c color · t plantilla · d eliminar · s sincronizar · esc cerrar" + +#: lib/bds/ui/tags_panel.ex:116 +#, elixir-autogen, elixir-format +msgid "none" +msgstr "ninguno" + +#: lib/bds/tui.ex:1927 +#, elixir-autogen, elixir-format +msgid "space mark · m merge into selected · esc close" +msgstr "espacio marcar · m combinar en la selección · esc cerrar" diff --git a/priv/gettext/fr/LC_MESSAGES/ui.po b/priv/gettext/fr/LC_MESSAGES/ui.po index 7cf0ad1..8c3506f 100644 --- a/priv/gettext/fr/LC_MESSAGES/ui.po +++ b/priv/gettext/fr/LC_MESSAGES/ui.po @@ -82,11 +82,11 @@ msgstr "Paramètres IA" #: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: lib/bds/desktop/shell_live/post_editor.ex:906 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 -#: lib/bds/tui.ex:946 -#: lib/bds/tui.ex:949 -#: lib/bds/tui.ex:952 -#: lib/bds/tui.ex:960 -#: lib/bds/tui.ex:1762 +#: lib/bds/tui.ex:1172 +#: lib/bds/tui.ex:1175 +#: lib/bds/tui.ex:1178 +#: lib/bds/tui.ex:1186 +#: lib/bds/tui.ex:2035 #, elixir-autogen, elixir-format msgid "AI Suggestions" msgstr "Suggestions IA" @@ -575,7 +575,7 @@ msgid "Collapse unchanged diff hunks" msgstr "Réduire les blocs de diff inchangés" #: lib/bds/desktop/shell_live/overlay_manager.ex:423 -#: lib/bds/tui.ex:1858 +#: lib/bds/tui.ex:2131 #, elixir-autogen, elixir-format msgid "Command completed" msgstr "Commande terminée" @@ -593,7 +593,7 @@ msgstr "Confirmer" #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 -#: lib/bds/tui.ex:1228 +#: lib/bds/tui.ex:1468 #: lib/bds/ui/settings_form.ex:137 #: lib/bds/ui/sidebar.ex:801 #, elixir-autogen, elixir-format @@ -1040,7 +1040,7 @@ msgid "Filename" msgstr "Nom de fichier" #: lib/bds/desktop/menu_bar.ex:254 -#: lib/bds/tui.ex:1822 +#: lib/bds/tui.ex:2095 #, elixir-autogen, elixir-format msgid "Fill Missing Translations" msgstr "Compléter les traductions manquantes" @@ -1051,7 +1051,7 @@ msgid "Find" msgstr "Rechercher" #: lib/bds/desktop/menu_bar.ex:255 -#: lib/bds/tui.ex:1825 +#: lib/bds/tui.ex:2098 #, elixir-autogen, elixir-format msgid "Find Duplicate Posts" msgstr "Trouver les doublons" @@ -1078,14 +1078,14 @@ msgid "Gallery" msgstr "Galerie" #: lib/bds/desktop/menu_bar.ex:256 -#: lib/bds/tui.ex:1806 +#: lib/bds/tui.ex:2079 #, elixir-autogen, elixir-format msgid "Generate Site" msgstr "Générer le site" #: lib/bds/desktop/shell_live.ex:792 #: lib/bds/desktop/shell_live/socket_state.ex:109 -#: lib/bds/tui.ex:1671 +#: lib/bds/tui.ex:1944 #: lib/bds/ui/sidebar.ex:826 #, elixir-autogen, elixir-format msgid "Git" @@ -1404,9 +1404,9 @@ msgstr "Nombre maximal d’articles par page" #: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175 -#: lib/bds/tui.ex:1666 -#: lib/bds/tui.ex:1887 -#: lib/bds/tui.ex:1890 +#: lib/bds/tui.ex:1939 +#: lib/bds/tui.ex:2160 +#: lib/bds/tui.ex:2163 #: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:100 #: lib/bds/ui/sidebar.ex:578 @@ -1435,6 +1435,7 @@ msgid "Merge" msgstr "Fusionner" #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:78 +#: lib/bds/tui.ex:1926 #: lib/bds/ui/sidebar.ex:787 #, elixir-autogen, elixir-format msgid "Merge Tags" @@ -1449,11 +1450,11 @@ msgstr "Métadonnées" #: lib/bds/desktop/shell_live/misc_editor.ex:214 #: lib/bds/desktop/shell_live/misc_editor.ex:226 #: lib/bds/desktop/shell_live/misc_editor.ex:448 -#: lib/bds/tui.ex:278 -#: lib/bds/tui.ex:284 -#: lib/bds/tui.ex:295 -#: lib/bds/tui.ex:1421 -#: lib/bds/tui.ex:1803 +#: lib/bds/tui.ex:285 +#: lib/bds/tui.ex:291 +#: lib/bds/tui.ex:302 +#: lib/bds/tui.ex:1663 +#: lib/bds/tui.ex:2076 #: lib/bds/ui/registry.ex:111 #, elixir-autogen, elixir-format msgid "Metadata Diff" @@ -1499,7 +1500,7 @@ msgstr "Nouvelle page" #: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/shell_live/sidebar_create.ex:41 -#: lib/bds/tui.ex:232 +#: lib/bds/tui.ex:238 #, elixir-autogen, elixir-format msgid "New Post" msgstr "Nouvel article" @@ -1787,8 +1788,8 @@ msgid "Open Data Folder" msgstr "Ouvrir le dossier de données" #: lib/bds/desktop/shell_live/index.html.heex:644 -#: lib/bds/tui.ex:801 -#: lib/bds/tui.ex:806 +#: lib/bds/tui.ex:1019 +#: lib/bds/tui.ex:1024 #, elixir-autogen, elixir-format msgid "Open Existing Blog" msgstr "Ouvrir un blog existant" @@ -1800,7 +1801,7 @@ msgid "Open Settings" msgstr "Ouvrir les Réglages" #: lib/bds/desktop/menu_bar.ex:217 -#: lib/bds/tui.ex:1827 +#: lib/bds/tui.ex:2100 #, elixir-autogen, elixir-format msgid "Open in Browser" msgstr "Ouvrir dans le navigateur" @@ -1949,8 +1950,8 @@ msgstr "Article enregistré" #: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:761 -#: lib/bds/tui.ex:1665 -#: lib/bds/tui.ex:1680 +#: lib/bds/tui.ex:1938 +#: lib/bds/tui.ex:1953 #: lib/bds/ui/registry.ex:14 #: lib/bds/ui/sidebar.ex:271 #, elixir-autogen, elixir-format @@ -2010,8 +2011,8 @@ msgstr "Projet et publication" #: lib/bds/desktop/shell_live/chat_surface.ex:15 #: lib/bds/desktop/shell_live/index.html.heex:623 -#: lib/bds/tui.ex:714 -#: lib/bds/tui.ex:719 +#: lib/bds/tui.ex:932 +#: lib/bds/tui.ex:937 #, elixir-autogen, elixir-format msgid "Projects" msgstr "Projets" @@ -2079,15 +2080,15 @@ msgid "Ready to import:" msgstr "Prêt à importer :" #: lib/bds/desktop/menu_bar.ex:248 -#: lib/bds/tui.ex:798 -#: lib/bds/tui.ex:1807 +#: lib/bds/tui.ex:1016 +#: lib/bds/tui.ex:2080 #, elixir-autogen, elixir-format msgid "Rebuild Database" msgstr "Reconstruire la base de données" #: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 -#: lib/bds/tui.ex:1811 +#: lib/bds/tui.ex:2084 #, elixir-autogen, elixir-format msgid "Rebuild Embedding Index" msgstr "Reconstruire l’index d’embeddings" @@ -2145,7 +2146,7 @@ msgid "Refresh Translation" msgstr "Actualiser la traduction" #: lib/bds/desktop/menu_bar.ex:252 -#: lib/bds/tui.ex:1814 +#: lib/bds/tui.ex:2087 #, elixir-autogen, elixir-format msgid "Regenerate Calendar" msgstr "Régénérer le calendrier" @@ -2156,7 +2157,7 @@ msgid "Regenerate Missing Thumbnails" msgstr "Régénérer les vignettes manquantes" #: lib/bds/desktop/menu_bar.ex:249 -#: lib/bds/tui.ex:1808 +#: lib/bds/tui.ex:2081 #, elixir-autogen, elixir-format msgid "Reindex Text" msgstr "Réindexer le texte" @@ -2344,7 +2345,7 @@ msgstr "Les capacités de script sont configurées au niveau de l’application #: lib/bds/desktop/shell_live/script_editor.ex:216 #: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:234 -#: lib/bds/tui.ex:1668 +#: lib/bds/tui.ex:1941 #: lib/bds/ui/registry.ex:38 #: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:115 @@ -2451,7 +2452,7 @@ msgstr "Similarité sémantique" #: lib/bds/desktop/shell_live/settings_editor/project_settings.ex:60 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:11 -#: lib/bds/tui.ex:1670 +#: lib/bds/tui.ex:1943 #: lib/bds/ui/registry.ex:86 #: lib/bds/ui/registry.ex:101 #: lib/bds/ui/sidebar.ex:795 @@ -2475,9 +2476,9 @@ msgid "Site" msgstr "Site" #: lib/bds/desktop/shell_live/misc_editor.ex:412 -#: lib/bds/tui.ex:311 -#: lib/bds/tui.ex:313 -#: lib/bds/tui.ex:1426 +#: lib/bds/tui.ex:318 +#: lib/bds/tui.ex:320 +#: lib/bds/tui.ex:1668 #: lib/bds/ui/registry.ex:125 #, elixir-autogen, elixir-format msgid "Site Validation" @@ -2574,6 +2575,7 @@ msgid "System Prompt" msgstr "Prompt système" #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:16 +#: lib/bds/tui.ex:1917 #: lib/bds/ui/sidebar.ex:785 #, elixir-autogen, elixir-format msgid "Tag Cloud" @@ -2595,12 +2597,13 @@ 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:104 -#: lib/bds/desktop/shell_live/tags_editor.ex:208 -#: lib/bds/desktop/shell_live/tags_editor.ex:222 -#: lib/bds/desktop/shell_live/tags_editor.ex:253 +#: lib/bds/desktop/shell_live/tags_editor.ex:99 +#: lib/bds/desktop/shell_live/tags_editor.ex:203 +#: lib/bds/desktop/shell_live/tags_editor.ex:217 +#: lib/bds/desktop/shell_live/tags_editor.ex:248 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 -#: lib/bds/tui.ex:1669 +#: lib/bds/tui.ex:1920 +#: lib/bds/tui.ex:1942 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 #: lib/bds/ui/sidebar.ex:289 @@ -2612,7 +2615,7 @@ msgstr "Tags" #: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 -#: lib/bds/tui.ex:994 +#: lib/bds/tui.ex:1220 #, elixir-autogen, elixir-format msgid "Tasks" msgstr "Tâches" @@ -2658,7 +2661,7 @@ msgstr "La syntaxe du template est valide" #: lib/bds/desktop/shell_live/template_editor.ex:171 #: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:191 -#: lib/bds/tui.ex:1667 +#: lib/bds/tui.ex:1940 #: lib/bds/ui/registry.ex:46 #: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:122 @@ -2882,7 +2885,7 @@ msgid "Updated URLs" msgstr "URLs mises à jour" #: lib/bds/desktop/menu_bar.ex:259 -#: lib/bds/tui.ex:1826 +#: lib/bds/tui.ex:2099 #, elixir-autogen, elixir-format msgid "Upload Site" msgstr "Téléverser le site" @@ -2910,13 +2913,13 @@ msgid "Validate" msgstr "Valider" #: lib/bds/desktop/menu_bar.ex:258 -#: lib/bds/tui.ex:1804 +#: lib/bds/tui.ex:2077 #, elixir-autogen, elixir-format msgid "Validate Site" msgstr "Valider le site" #: lib/bds/desktop/menu_bar.ex:253 -#: lib/bds/tui.ex:1817 +#: lib/bds/tui.ex:2090 #, elixir-autogen, elixir-format msgid "Validate Translations" msgstr "Valider les traductions" @@ -3389,15 +3392,15 @@ msgstr "Modifications" #: lib/bds/desktop/shell_live/git_handler.ex:46 #: lib/bds/desktop/shell_live/git_handler.ex:52 #: lib/bds/desktop/shell_live/sidebar_components.ex:556 -#: lib/bds/tui.ex:334 -#: lib/bds/tui.ex:340 -#: lib/bds/tui.ex:343 +#: lib/bds/tui.ex:341 +#: lib/bds/tui.ex:347 +#: lib/bds/tui.ex:350 #, elixir-autogen, elixir-format msgid "Commit" msgstr "Commit" #: lib/bds/desktop/shell_live/sidebar_components.ex:555 -#: lib/bds/tui.ex:1248 +#: lib/bds/tui.ex:1490 #, elixir-autogen, elixir-format msgid "Commit message" msgstr "Message de commit" @@ -3421,7 +3424,7 @@ msgid "Fetch" msgstr "Récupérer" #: lib/bds/desktop/shell_live/sidebar_components.ex:586 -#: lib/bds/tui.ex:1083 +#: lib/bds/tui.ex:1309 #, elixir-autogen, elixir-format msgid "History" msgstr "Historique" @@ -3469,7 +3472,7 @@ msgstr "Nettoyer LFS" #: lib/bds/desktop/shell_live/git_handler.ex:17 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 -#: lib/bds/tui.ex:966 +#: lib/bds/tui.ex:1192 #, elixir-autogen, elixir-format msgid "Pull" msgstr "Pull" @@ -3477,7 +3480,7 @@ msgstr "Pull" #: lib/bds/desktop/shell_live/git_handler.ex:18 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 -#: lib/bds/tui.ex:967 +#: lib/bds/tui.ex:1193 #, elixir-autogen, elixir-format msgid "Push" msgstr "Push" @@ -3590,7 +3593,7 @@ msgid "Suggested tags" msgstr "Tags suggérés" #: lib/bds/desktop/menu_bar.ex:257 -#: lib/bds/tui.ex:1805 +#: lib/bds/tui.ex:2078 #, elixir-autogen, elixir-format msgid "Force Render Site" msgstr "Forcer la régénération du site" @@ -3687,83 +3690,83 @@ msgstr "OK" msgid "The endpoint returned no models. You can still type a model name manually." msgstr "Le point de terminaison n'a renvoyé aucun modèle. Vous pouvez toujours saisir un nom de modèle manuellement." -#: lib/bds/tui.ex:1763 +#: lib/bds/tui.ex:2036 #, elixir-autogen, elixir-format msgid "AI is unavailable in airplane mode without a local endpoint." msgstr "L'IA n'est pas disponible en mode avion sans point de terminaison local." -#: lib/bds/tui.ex:1890 +#: lib/bds/tui.ex:2163 #, elixir-autogen, elixir-format msgid "Could not load this file." msgstr "Impossible de charger ce fichier." -#: lib/bds/tui.ex:243 +#: lib/bds/tui.ex:250 #, elixir-autogen, elixir-format msgid "Editing this item is not available in the terminal UI yet." msgstr "La modification de cet élément n'est pas encore disponible dans l'interface du terminal." -#: lib/bds/tui.ex:949 +#: lib/bds/tui.ex:1175 #, elixir-autogen, elixir-format msgid "No suggestions returned." msgstr "Aucune suggestion reçue." -#: lib/bds/tui.ex:1887 +#: lib/bds/tui.ex:2160 #, elixir-autogen, elixir-format msgid "Only images can be previewed." msgstr "Seules les images peuvent être prévisualisées." -#: lib/bds/tui.ex:1680 +#: lib/bds/tui.ex:1953 #, elixir-autogen, elixir-format msgid "Post not found." msgstr "Article introuvable." -#: lib/bds/tui.ex:1183 +#: lib/bds/tui.ex:1423 #, elixir-autogen, elixir-format msgid "Press enter to preview %{name}." msgstr "Appuyez sur Entrée pour prévisualiser %{name}." -#: lib/bds/tui.ex:1733 +#: lib/bds/tui.ex:2006 #, elixir-autogen, elixir-format msgid "Published." msgstr "Publié." -#: lib/bds/tui.ex:1749 +#: lib/bds/tui.ex:2022 #, elixir-autogen, elixir-format msgid "Save before switching languages." msgstr "Enregistrez avant de changer de langue." -#: lib/bds/tui.ex:533 -#: lib/bds/tui.ex:1734 +#: lib/bds/tui.ex:540 +#: lib/bds/tui.ex:2007 #, elixir-autogen, elixir-format msgid "Saved." msgstr "Enregistré." -#: lib/bds/tui.ex:1186 +#: lib/bds/tui.ex:1426 #, elixir-autogen, elixir-format msgid "Select an entry and press enter to open it." msgstr "Sélectionnez une entrée et appuyez sur Entrée pour l'ouvrir." -#: lib/bds/tui.ex:946 +#: lib/bds/tui.ex:1172 #, elixir-autogen, elixir-format msgid "Suggestions applied." msgstr "Suggestions appliquées." -#: lib/bds/tui.ex:1198 +#: lib/bds/tui.ex:1438 #, elixir-autogen, elixir-format msgid "Title (ctrl+t to edit)" msgstr "Titre (ctrl+t pour modifier)" -#: lib/bds/tui.ex:1197 +#: lib/bds/tui.ex:1437 #, elixir-autogen, elixir-format msgid "Title (editing — enter to confirm)" msgstr "Titre (édition — Entrée pour confirmer)" -#: lib/bds/tui.ex:1250 +#: lib/bds/tui.ex:1492 #, elixir-autogen, elixir-format msgid "Working…" msgstr "Traitement en cours…" -#: lib/bds/tui.ex:1272 +#: lib/bds/tui.ex:1514 #, elixir-autogen, elixir-format msgid "esc to close" msgstr "échap pour fermer" @@ -3800,148 +3803,148 @@ msgstr "Adresse du serveur (user@host ou user@host:port), authentification par c msgid "Use the form user@host or user@host:port." msgstr "Utilisez le format user@host ou user@host:port." -#: lib/bds/tui.ex:1217 +#: lib/bds/tui.ex:1457 #, elixir-autogen, elixir-format msgid "Preview (ctrl+e to edit)" msgstr "Aperçu (ctrl+e pour modifier)" -#: lib/bds/tui.ex:1529 +#: lib/bds/tui.ex:1771 #, elixir-autogen, elixir-format msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" msgstr "ctrl+s enregistrer · ctrl+p publier · ctrl+e aperçu · ctrl+t titre · ctrl+l langue · ctrl+g IA · échap retour" -#: lib/bds/tui.ex:994 +#: lib/bds/tui.ex:1220 #, elixir-autogen, elixir-format msgid "All tasks finished." msgstr "Toutes les tâches sont terminées." -#: lib/bds/tui.ex:1298 +#: lib/bds/tui.ex:1540 #, elixir-autogen, elixir-format msgid "Commands — esc to close" msgstr "Commandes — échap pour fermer" -#: lib/bds/tui.ex:823 +#: lib/bds/tui.ex:1041 #, elixir-autogen, elixir-format msgid "Unknown command." msgstr "Commande inconnue." -#: lib/bds/tui.ex:1288 +#: lib/bds/tui.ex:1530 #, elixir-autogen, elixir-format msgid "[report/apply in GUI]" msgstr "[rapport/application dans la GUI]" -#: lib/bds/tui.ex:1437 +#: lib/bds/tui.ex:1679 #, elixir-autogen, elixir-format msgid "%{diffs} differences · %{orphans} orphan files" msgstr "%{diffs} différences · %{orphans} fichiers orphelins" -#: lib/bds/tui.ex:1469 +#: lib/bds/tui.ex:1711 #, elixir-autogen, elixir-format msgid "Expected %{expected} · Existing %{existing}" msgstr "Attendu %{expected} · Existant %{existing}" -#: lib/bds/tui.ex:1486 +#: lib/bds/tui.ex:1728 #, elixir-autogen, elixir-format msgid "Extra files (will be removed):" msgstr "Fichiers en trop (seront supprimés) :" -#: lib/bds/tui.ex:1482 +#: lib/bds/tui.ex:1724 #, elixir-autogen, elixir-format msgid "Missing pages (will be rendered):" msgstr "Pages manquantes (seront rendues) :" -#: lib/bds/tui.ex:311 +#: lib/bds/tui.ex:318 #, elixir-autogen, elixir-format msgid "Nothing to apply." msgstr "Rien à appliquer." -#: lib/bds/tui.ex:278 +#: lib/bds/tui.ex:285 #, elixir-autogen, elixir-format msgid "Nothing to repair." msgstr "Rien à réparer." -#: lib/bds/tui.ex:1460 +#: lib/bds/tui.ex:1702 #, elixir-autogen, elixir-format msgid "Orphan files (not in database):" msgstr "Fichiers orphelins (absents de la base de données) :" -#: lib/bds/tui.ex:1476 +#: lib/bds/tui.ex:1718 #, elixir-autogen, elixir-format msgid "Sitemap changed." msgstr "Sitemap modifié." -#: lib/bds/tui.ex:1490 +#: lib/bds/tui.ex:1732 #, elixir-autogen, elixir-format msgid "Updated posts (will be re-rendered):" msgstr "Articles mis à jour (seront rendus à nouveau) :" -#: lib/bds/tui.ex:1427 +#: lib/bds/tui.ex:1669 #, elixir-autogen, elixir-format msgid "enter apply changes · esc close" msgstr "entrée appliquer les modifications · échap fermer" -#: lib/bds/tui.ex:1422 +#: lib/bds/tui.ex:1664 #, elixir-autogen, elixir-format msgid "enter repair all from files · esc close" msgstr "entrée tout réparer depuis les fichiers · échap fermer" -#: lib/bds/tui.ex:788 +#: lib/bds/tui.ex:1006 #, elixir-autogen, elixir-format msgid "Imported Blog" msgstr "Blog importé" -#: lib/bds/tui.ex:807 +#: lib/bds/tui.ex:1025 #, elixir-autogen, elixir-format msgid "Not a folder: %{path}" msgstr "Pas un dossier : %{path}" -#: lib/bds/tui.ex:1364 +#: lib/bds/tui.ex:1606 #, elixir-autogen, elixir-format msgid "Projects — enter switch · o open existing · esc close" msgstr "Projets — entrée changer · o ouvrir existant · échap fermer" -#: lib/bds/tui.ex:715 +#: lib/bds/tui.ex:933 #, elixir-autogen, elixir-format msgid "Switched to %{name}." msgstr "Passage à %{name}." -#: lib/bds/tui.ex:1392 +#: lib/bds/tui.ex:1634 #, elixir-autogen, elixir-format msgid "Matching folders" msgstr "Dossiers correspondants" -#: lib/bds/tui.ex:1330 +#: lib/bds/tui.ex:1572 #, elixir-autogen, elixir-format msgid "Open Existing Blog — type a folder path · tab complete · enter open · esc back" msgstr "Ouvrir un blog existant — saisir le chemin d'un dossier · tab compléter · entrée ouvrir · échap retour" -#: lib/bds/tui.ex:334 +#: lib/bds/tui.ex:341 #, elixir-autogen, elixir-format msgid "Commit message required." msgstr "Message de commit requis." -#: lib/bds/tui.ex:340 +#: lib/bds/tui.ex:347 #, elixir-autogen, elixir-format msgid "Committed." msgstr "Commit effectué." -#: lib/bds/tui.ex:1174 +#: lib/bds/tui.ex:1414 #, elixir-autogen, elixir-format msgid "Diff (pgup/pgdn scroll)" msgstr "Diff (pgup/pgdn pour défiler)" -#: lib/bds/tui.ex:1557 +#: lib/bds/tui.ex:1799 #, elixir-autogen, elixir-format msgid "No changes." msgstr "Aucune modification." -#: lib/bds/tui.ex:400 +#: lib/bds/tui.ex:407 #, elixir-autogen, elixir-format msgid "No diff for this file." msgstr "Pas de diff pour ce fichier." -#: lib/bds/tui.ex:388 -#: lib/bds/tui.ex:1161 +#: lib/bds/tui.ex:395 +#: lib/bds/tui.ex:1401 #, elixir-autogen, elixir-format msgid "Not a git repository." msgstr "Pas un dépôt git." @@ -4036,12 +4039,12 @@ msgstr "Afficher le titre" msgid "Theme" msgstr "Thème" -#: lib/bds/tui.ex:1145 +#: lib/bds/tui.ex:1371 #, elixir-autogen, elixir-format msgid "enter edit · ctrl+s save · esc close" msgstr "entrée modifier · ctrl+s enregistrer · échap fermer" -#: lib/bds/tui.ex:1508 +#: lib/bds/tui.ex:1750 #, elixir-autogen, elixir-format msgid "enter edit/toggle/cycle · ctrl+s save · esc close · ctrl+q quit" msgstr "entrée modifier/basculer/parcourir · ctrl+s enregistrer · échap fermer · ctrl+q quitter" @@ -4051,12 +4054,12 @@ msgstr "entrée modifier/basculer/parcourir · ctrl+s enregistrer · échap ferm msgid "not supported yet" msgstr "pas encore pris en charge" -#: lib/bds/tui.ex:1515 +#: lib/bds/tui.ex:1757 #, elixir-autogen, elixir-format msgid "c commit · u pull · s push · enter jump to file · pgup/pgdn scroll diff · 1-7 views · ctrl+q quit" msgstr "c commit · u pull · s push · entrée aller au fichier · pgup/pgdn défiler le diff · 1-7 vues · ctrl+q quitter" -#: lib/bds/tui.ex:1522 +#: lib/bds/tui.ex:1764 #, elixir-autogen, elixir-format msgid "enter open · n new post · 1-7 views · p projects · / search · : commands (:? help) · r refresh · ctrl+q quit" msgstr "entrée ouvrir · n nouvel article · 1-7 vues · p projets · / rechercher · : commandes (:? aide) · r actualiser · ctrl+q quitter" @@ -4066,8 +4069,6 @@ msgstr "entrée ouvrir · n nouvel article · 1-7 vues · p projets · / recherc msgid "CLI tool installed to %{path}" msgstr "Outil CLI installé dans %{path}" -#: lib/bds/desktop/shell_live/settings_editor.ex:75 -#: lib/bds/desktop/shell_live/settings_editor.ex:78 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:386 #: lib/bds/ui/settings_form.ex:223 #, elixir-autogen, elixir-format @@ -4099,3 +4100,113 @@ msgstr "L'outil CLI ne peut être installé que depuis l'application empaquetée #, elixir-autogen, elixir-format msgid "Unknown settings action" msgstr "Action de paramètres inconnue" + +#: lib/bds/ui/tags_panel.ex:114 +#, elixir-autogen, elixir-format +msgid "Colour of %{name}: %{color}" +msgstr "Couleur de %{name} : %{color}" + +#: lib/bds/tui.ex:708 +#, elixir-autogen, elixir-format +msgid "Delete %{name} (used by %{count} posts)? Press y to confirm." +msgstr "Supprimer %{name} (utilisé par %{count} articles) ? Appuyez sur y pour confirmer." + +#: lib/bds/tui.ex:656 +#, elixir-autogen, elixir-format +msgid "Delete cancelled" +msgstr "Suppression annulée" + +#: lib/bds/ui/tags_panel.ex:171 +#, elixir-autogen, elixir-format +msgid "Mark at least two tags to merge" +msgstr "Marquez au moins deux mots-clés à fusionner" + +#: lib/bds/ui/tags_panel.ex:177 +#, elixir-autogen, elixir-format +msgid "Merged %{count} tags into %{name}" +msgstr "%{count} mots-clés fusionnés dans %{name}" + +#: lib/bds/tui.ex:668 +#, elixir-autogen, elixir-format +msgid "New tag" +msgstr "Nouveau mot-clé" + +#: lib/bds/tui.ex:681 +#, elixir-autogen, elixir-format +msgid "Rename tag" +msgstr "Renommer le mot-clé" + +#: lib/bds/ui/tags_panel.ex:76 +#, elixir-autogen, elixir-format +msgid "Tag %{name} created" +msgstr "Mot-clé %{name} créé" + +#: lib/bds/ui/tags_panel.ex:149 +#, elixir-autogen, elixir-format +msgid "Tag %{name} deleted" +msgstr "Mot-clé %{name} supprimé" + +#: lib/bds/ui/tags_panel.ex:201 +#, elixir-autogen, elixir-format +msgid "Tag %{name} not found" +msgstr "Mot-clé %{name} introuvable" + +#: lib/bds/ui/tags_panel.ex:88 +#, elixir-autogen, elixir-format +msgid "Tag name cannot be empty" +msgstr "Le nom du mot-clé ne peut pas être vide" + +#: lib/bds/ui/tags_panel.ex:227 +#, elixir-autogen, elixir-format +msgid "Tag not found" +msgstr "Mot-clé introuvable" + +#: lib/bds/ui/tags_panel.ex:96 +#, elixir-autogen, elixir-format +msgid "Tag renamed to %{name}" +msgstr "Mot-clé renommé en %{name}" + +#: lib/bds/ui/tags_panel.ex:91 +#, elixir-autogen, elixir-format +msgid "Tag unchanged" +msgstr "Mot-clé inchangé" + +#: lib/bds/ui/tags_panel.ex:192 +#, elixir-autogen, elixir-format +msgid "Tags synced from posts (%{count} total)" +msgstr "Mots-clés synchronisés depuis les articles (%{count} au total)" + +#: lib/bds/ui/tags_panel.ex:134 +#, elixir-autogen, elixir-format +msgid "Template of %{name}: %{template}" +msgstr "Modèle de %{name} : %{template}" + +#: lib/bds/ui/tags_panel.ex:168 +#, elixir-autogen, elixir-format +msgid "The merge target must be one of the marked tags" +msgstr "La cible de la fusion doit être l'un des mots-clés marqués" + +#: lib/bds/ui/tags_panel.ex:136 +#, elixir-autogen, elixir-format +msgid "default" +msgstr "par défaut" + +#: lib/bds/tui.ex:1917 +#, elixir-autogen, elixir-format +msgid "esc close" +msgstr "échap fermer" + +#: lib/bds/tui.ex:1922 +#, elixir-autogen, elixir-format +msgid "n new · enter rename · c colour · t template · d delete · s sync · esc close" +msgstr "n nouveau · entrée renommer · c couleur · t modèle · d supprimer · s synchroniser · échap fermer" + +#: lib/bds/ui/tags_panel.ex:116 +#, elixir-autogen, elixir-format +msgid "none" +msgstr "aucune" + +#: lib/bds/tui.ex:1927 +#, elixir-autogen, elixir-format +msgid "space mark · m merge into selected · esc close" +msgstr "espace marquer · m fusionner dans la sélection · échap fermer" diff --git a/priv/gettext/it/LC_MESSAGES/ui.po b/priv/gettext/it/LC_MESSAGES/ui.po index 08ec7e8..e3030af 100644 --- a/priv/gettext/it/LC_MESSAGES/ui.po +++ b/priv/gettext/it/LC_MESSAGES/ui.po @@ -82,11 +82,11 @@ msgstr "Impostazioni IA" #: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: lib/bds/desktop/shell_live/post_editor.ex:906 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 -#: lib/bds/tui.ex:946 -#: lib/bds/tui.ex:949 -#: lib/bds/tui.ex:952 -#: lib/bds/tui.ex:960 -#: lib/bds/tui.ex:1762 +#: lib/bds/tui.ex:1172 +#: lib/bds/tui.ex:1175 +#: lib/bds/tui.ex:1178 +#: lib/bds/tui.ex:1186 +#: lib/bds/tui.ex:2035 #, elixir-autogen, elixir-format msgid "AI Suggestions" msgstr "Suggerimenti IA" @@ -575,7 +575,7 @@ msgid "Collapse unchanged diff hunks" msgstr "Comprimi i blocchi diff invariati" #: lib/bds/desktop/shell_live/overlay_manager.ex:423 -#: lib/bds/tui.ex:1858 +#: lib/bds/tui.ex:2131 #, elixir-autogen, elixir-format msgid "Command completed" msgstr "Comando completato" @@ -593,7 +593,7 @@ msgstr "Conferma" #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 -#: lib/bds/tui.ex:1228 +#: lib/bds/tui.ex:1468 #: lib/bds/ui/settings_form.ex:137 #: lib/bds/ui/sidebar.ex:801 #, elixir-autogen, elixir-format @@ -1040,7 +1040,7 @@ msgid "Filename" msgstr "Nome file" #: lib/bds/desktop/menu_bar.ex:254 -#: lib/bds/tui.ex:1822 +#: lib/bds/tui.ex:2095 #, elixir-autogen, elixir-format msgid "Fill Missing Translations" msgstr "Completa traduzioni mancanti" @@ -1051,7 +1051,7 @@ msgid "Find" msgstr "Trova" #: lib/bds/desktop/menu_bar.ex:255 -#: lib/bds/tui.ex:1825 +#: lib/bds/tui.ex:2098 #, elixir-autogen, elixir-format msgid "Find Duplicate Posts" msgstr "Trova post duplicati" @@ -1078,14 +1078,14 @@ msgid "Gallery" msgstr "Galleria" #: lib/bds/desktop/menu_bar.ex:256 -#: lib/bds/tui.ex:1806 +#: lib/bds/tui.ex:2079 #, elixir-autogen, elixir-format msgid "Generate Site" msgstr "Genera sito" #: lib/bds/desktop/shell_live.ex:792 #: lib/bds/desktop/shell_live/socket_state.ex:109 -#: lib/bds/tui.ex:1671 +#: lib/bds/tui.ex:1944 #: lib/bds/ui/sidebar.ex:826 #, elixir-autogen, elixir-format msgid "Git" @@ -1404,9 +1404,9 @@ msgstr "Numero massimo di post per pagina" #: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175 -#: lib/bds/tui.ex:1666 -#: lib/bds/tui.ex:1887 -#: lib/bds/tui.ex:1890 +#: lib/bds/tui.ex:1939 +#: lib/bds/tui.ex:2160 +#: lib/bds/tui.ex:2163 #: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:100 #: lib/bds/ui/sidebar.ex:578 @@ -1435,6 +1435,7 @@ msgid "Merge" msgstr "Unisci" #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:78 +#: lib/bds/tui.ex:1926 #: lib/bds/ui/sidebar.ex:787 #, elixir-autogen, elixir-format msgid "Merge Tags" @@ -1449,11 +1450,11 @@ msgstr "Metadati" #: lib/bds/desktop/shell_live/misc_editor.ex:214 #: lib/bds/desktop/shell_live/misc_editor.ex:226 #: lib/bds/desktop/shell_live/misc_editor.ex:448 -#: lib/bds/tui.ex:278 -#: lib/bds/tui.ex:284 -#: lib/bds/tui.ex:295 -#: lib/bds/tui.ex:1421 -#: lib/bds/tui.ex:1803 +#: lib/bds/tui.ex:285 +#: lib/bds/tui.ex:291 +#: lib/bds/tui.ex:302 +#: lib/bds/tui.ex:1663 +#: lib/bds/tui.ex:2076 #: lib/bds/ui/registry.ex:111 #, elixir-autogen, elixir-format msgid "Metadata Diff" @@ -1499,7 +1500,7 @@ msgstr "Nuova pagina" #: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/shell_live/sidebar_create.ex:41 -#: lib/bds/tui.ex:232 +#: lib/bds/tui.ex:238 #, elixir-autogen, elixir-format msgid "New Post" msgstr "Nuovo post" @@ -1787,8 +1788,8 @@ msgid "Open Data Folder" msgstr "Apri cartella dati" #: lib/bds/desktop/shell_live/index.html.heex:644 -#: lib/bds/tui.ex:801 -#: lib/bds/tui.ex:806 +#: lib/bds/tui.ex:1019 +#: lib/bds/tui.ex:1024 #, elixir-autogen, elixir-format msgid "Open Existing Blog" msgstr "Apri blog esistente" @@ -1800,7 +1801,7 @@ msgid "Open Settings" msgstr "Apri Impostazioni" #: lib/bds/desktop/menu_bar.ex:217 -#: lib/bds/tui.ex:1827 +#: lib/bds/tui.ex:2100 #, elixir-autogen, elixir-format msgid "Open in Browser" msgstr "Apri nel browser" @@ -1949,8 +1950,8 @@ msgstr "Articolo salvato" #: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:761 -#: lib/bds/tui.ex:1665 -#: lib/bds/tui.ex:1680 +#: lib/bds/tui.ex:1938 +#: lib/bds/tui.ex:1953 #: lib/bds/ui/registry.ex:14 #: lib/bds/ui/sidebar.ex:271 #, elixir-autogen, elixir-format @@ -2010,8 +2011,8 @@ msgstr "Progetto e pubblicazione" #: lib/bds/desktop/shell_live/chat_surface.ex:15 #: lib/bds/desktop/shell_live/index.html.heex:623 -#: lib/bds/tui.ex:714 -#: lib/bds/tui.ex:719 +#: lib/bds/tui.ex:932 +#: lib/bds/tui.ex:937 #, elixir-autogen, elixir-format msgid "Projects" msgstr "Progetti" @@ -2079,15 +2080,15 @@ msgid "Ready to import:" msgstr "Pronto per importare:" #: lib/bds/desktop/menu_bar.ex:248 -#: lib/bds/tui.ex:798 -#: lib/bds/tui.ex:1807 +#: lib/bds/tui.ex:1016 +#: lib/bds/tui.ex:2080 #, elixir-autogen, elixir-format msgid "Rebuild Database" msgstr "Ricostruisci database" #: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 -#: lib/bds/tui.ex:1811 +#: lib/bds/tui.ex:2084 #, elixir-autogen, elixir-format msgid "Rebuild Embedding Index" msgstr "Ricostruisci indice embeddings" @@ -2145,7 +2146,7 @@ msgid "Refresh Translation" msgstr "Aggiorna traduzione" #: lib/bds/desktop/menu_bar.ex:252 -#: lib/bds/tui.ex:1814 +#: lib/bds/tui.ex:2087 #, elixir-autogen, elixir-format msgid "Regenerate Calendar" msgstr "Rigenera calendario" @@ -2156,7 +2157,7 @@ msgid "Regenerate Missing Thumbnails" msgstr "Rigenera miniature mancanti" #: lib/bds/desktop/menu_bar.ex:249 -#: lib/bds/tui.ex:1808 +#: lib/bds/tui.ex:2081 #, elixir-autogen, elixir-format msgid "Reindex Text" msgstr "Reindicizza testo" @@ -2344,7 +2345,7 @@ msgstr "Le capacità di scripting sono configurate a livello applicativo nella r #: lib/bds/desktop/shell_live/script_editor.ex:216 #: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:234 -#: lib/bds/tui.ex:1668 +#: lib/bds/tui.ex:1941 #: lib/bds/ui/registry.ex:38 #: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:115 @@ -2451,7 +2452,7 @@ msgstr "Somiglianza semantica" #: lib/bds/desktop/shell_live/settings_editor/project_settings.ex:60 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:11 -#: lib/bds/tui.ex:1670 +#: lib/bds/tui.ex:1943 #: lib/bds/ui/registry.ex:86 #: lib/bds/ui/registry.ex:101 #: lib/bds/ui/sidebar.ex:795 @@ -2475,9 +2476,9 @@ msgid "Site" msgstr "Sito" #: lib/bds/desktop/shell_live/misc_editor.ex:412 -#: lib/bds/tui.ex:311 -#: lib/bds/tui.ex:313 -#: lib/bds/tui.ex:1426 +#: lib/bds/tui.ex:318 +#: lib/bds/tui.ex:320 +#: lib/bds/tui.ex:1668 #: lib/bds/ui/registry.ex:125 #, elixir-autogen, elixir-format msgid "Site Validation" @@ -2574,6 +2575,7 @@ msgid "System Prompt" msgstr "Prompt di sistema" #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:16 +#: lib/bds/tui.ex:1917 #: lib/bds/ui/sidebar.ex:785 #, elixir-autogen, elixir-format msgid "Tag Cloud" @@ -2595,12 +2597,13 @@ 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:104 -#: lib/bds/desktop/shell_live/tags_editor.ex:208 -#: lib/bds/desktop/shell_live/tags_editor.ex:222 -#: lib/bds/desktop/shell_live/tags_editor.ex:253 +#: lib/bds/desktop/shell_live/tags_editor.ex:99 +#: lib/bds/desktop/shell_live/tags_editor.ex:203 +#: lib/bds/desktop/shell_live/tags_editor.ex:217 +#: lib/bds/desktop/shell_live/tags_editor.ex:248 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 -#: lib/bds/tui.ex:1669 +#: lib/bds/tui.ex:1920 +#: lib/bds/tui.ex:1942 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 #: lib/bds/ui/sidebar.ex:289 @@ -2612,7 +2615,7 @@ msgstr "Tag" #: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 -#: lib/bds/tui.ex:994 +#: lib/bds/tui.ex:1220 #, elixir-autogen, elixir-format msgid "Tasks" msgstr "Attività" @@ -2658,7 +2661,7 @@ msgstr "La sintassi del template è valida" #: lib/bds/desktop/shell_live/template_editor.ex:171 #: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:191 -#: lib/bds/tui.ex:1667 +#: lib/bds/tui.ex:1940 #: lib/bds/ui/registry.ex:46 #: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:122 @@ -2882,7 +2885,7 @@ msgid "Updated URLs" msgstr "URL aggiornati" #: lib/bds/desktop/menu_bar.ex:259 -#: lib/bds/tui.ex:1826 +#: lib/bds/tui.ex:2099 #, elixir-autogen, elixir-format msgid "Upload Site" msgstr "Carica sito" @@ -2910,13 +2913,13 @@ msgid "Validate" msgstr "Valida" #: lib/bds/desktop/menu_bar.ex:258 -#: lib/bds/tui.ex:1804 +#: lib/bds/tui.ex:2077 #, elixir-autogen, elixir-format msgid "Validate Site" msgstr "Valida sito" #: lib/bds/desktop/menu_bar.ex:253 -#: lib/bds/tui.ex:1817 +#: lib/bds/tui.ex:2090 #, elixir-autogen, elixir-format msgid "Validate Translations" msgstr "Valida traduzioni" @@ -3389,15 +3392,15 @@ msgstr "Modifiche" #: lib/bds/desktop/shell_live/git_handler.ex:46 #: lib/bds/desktop/shell_live/git_handler.ex:52 #: lib/bds/desktop/shell_live/sidebar_components.ex:556 -#: lib/bds/tui.ex:334 -#: lib/bds/tui.ex:340 -#: lib/bds/tui.ex:343 +#: lib/bds/tui.ex:341 +#: lib/bds/tui.ex:347 +#: lib/bds/tui.ex:350 #, elixir-autogen, elixir-format msgid "Commit" msgstr "Commit" #: lib/bds/desktop/shell_live/sidebar_components.ex:555 -#: lib/bds/tui.ex:1248 +#: lib/bds/tui.ex:1490 #, elixir-autogen, elixir-format msgid "Commit message" msgstr "Messaggio di commit" @@ -3421,7 +3424,7 @@ msgid "Fetch" msgstr "Recupera" #: lib/bds/desktop/shell_live/sidebar_components.ex:586 -#: lib/bds/tui.ex:1083 +#: lib/bds/tui.ex:1309 #, elixir-autogen, elixir-format msgid "History" msgstr "Cronologia" @@ -3469,7 +3472,7 @@ msgstr "Pulisci LFS" #: lib/bds/desktop/shell_live/git_handler.ex:17 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 -#: lib/bds/tui.ex:966 +#: lib/bds/tui.ex:1192 #, elixir-autogen, elixir-format msgid "Pull" msgstr "Pull" @@ -3477,7 +3480,7 @@ msgstr "Pull" #: lib/bds/desktop/shell_live/git_handler.ex:18 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 -#: lib/bds/tui.ex:967 +#: lib/bds/tui.ex:1193 #, elixir-autogen, elixir-format msgid "Push" msgstr "Push" @@ -3590,7 +3593,7 @@ msgid "Suggested tags" msgstr "Tag suggeriti" #: lib/bds/desktop/menu_bar.ex:257 -#: lib/bds/tui.ex:1805 +#: lib/bds/tui.ex:2078 #, elixir-autogen, elixir-format msgid "Force Render Site" msgstr "Forza la rigenerazione del sito" @@ -3687,83 +3690,83 @@ msgstr "OK" msgid "The endpoint returned no models. You can still type a model name manually." msgstr "L'endpoint non ha restituito alcun modello. Puoi comunque digitare manualmente il nome di un modello." -#: lib/bds/tui.ex:1763 +#: lib/bds/tui.ex:2036 #, elixir-autogen, elixir-format msgid "AI is unavailable in airplane mode without a local endpoint." msgstr "L'IA non è disponibile in modalità aereo senza un endpoint locale." -#: lib/bds/tui.ex:1890 +#: lib/bds/tui.ex:2163 #, elixir-autogen, elixir-format msgid "Could not load this file." msgstr "Impossibile caricare questo file." -#: lib/bds/tui.ex:243 +#: lib/bds/tui.ex:250 #, elixir-autogen, elixir-format msgid "Editing this item is not available in the terminal UI yet." msgstr "La modifica di questo elemento non è ancora disponibile nell'interfaccia del terminale." -#: lib/bds/tui.ex:949 +#: lib/bds/tui.ex:1175 #, elixir-autogen, elixir-format msgid "No suggestions returned." msgstr "Nessun suggerimento ricevuto." -#: lib/bds/tui.ex:1887 +#: lib/bds/tui.ex:2160 #, elixir-autogen, elixir-format msgid "Only images can be previewed." msgstr "Solo le immagini possono essere visualizzate in anteprima." -#: lib/bds/tui.ex:1680 +#: lib/bds/tui.ex:1953 #, elixir-autogen, elixir-format msgid "Post not found." msgstr "Post non trovato." -#: lib/bds/tui.ex:1183 +#: lib/bds/tui.ex:1423 #, elixir-autogen, elixir-format msgid "Press enter to preview %{name}." msgstr "Premi Invio per l'anteprima di %{name}." -#: lib/bds/tui.ex:1733 +#: lib/bds/tui.ex:2006 #, elixir-autogen, elixir-format msgid "Published." msgstr "Pubblicato." -#: lib/bds/tui.ex:1749 +#: lib/bds/tui.ex:2022 #, elixir-autogen, elixir-format msgid "Save before switching languages." msgstr "Salva prima di cambiare lingua." -#: lib/bds/tui.ex:533 -#: lib/bds/tui.ex:1734 +#: lib/bds/tui.ex:540 +#: lib/bds/tui.ex:2007 #, elixir-autogen, elixir-format msgid "Saved." msgstr "Salvato." -#: lib/bds/tui.ex:1186 +#: lib/bds/tui.ex:1426 #, elixir-autogen, elixir-format msgid "Select an entry and press enter to open it." msgstr "Seleziona una voce e premi Invio per aprirla." -#: lib/bds/tui.ex:946 +#: lib/bds/tui.ex:1172 #, elixir-autogen, elixir-format msgid "Suggestions applied." msgstr "Suggerimenti applicati." -#: lib/bds/tui.ex:1198 +#: lib/bds/tui.ex:1438 #, elixir-autogen, elixir-format msgid "Title (ctrl+t to edit)" msgstr "Titolo (ctrl+t per modificare)" -#: lib/bds/tui.ex:1197 +#: lib/bds/tui.ex:1437 #, elixir-autogen, elixir-format msgid "Title (editing — enter to confirm)" msgstr "Titolo (modifica — Invio per confermare)" -#: lib/bds/tui.ex:1250 +#: lib/bds/tui.ex:1492 #, elixir-autogen, elixir-format msgid "Working…" msgstr "Elaborazione…" -#: lib/bds/tui.ex:1272 +#: lib/bds/tui.ex:1514 #, elixir-autogen, elixir-format msgid "esc to close" msgstr "esc per chiudere" @@ -3800,148 +3803,148 @@ msgstr "Indirizzo del server (user@host o user@host:port), autenticazione a chia msgid "Use the form user@host or user@host:port." msgstr "Usa il formato user@host o user@host:port." -#: lib/bds/tui.ex:1217 +#: lib/bds/tui.ex:1457 #, elixir-autogen, elixir-format msgid "Preview (ctrl+e to edit)" msgstr "Anteprima (ctrl+e per modificare)" -#: lib/bds/tui.ex:1529 +#: lib/bds/tui.ex:1771 #, elixir-autogen, elixir-format msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" msgstr "ctrl+s salva · ctrl+p pubblica · ctrl+e anteprima · ctrl+t titolo · ctrl+l lingua · ctrl+g IA · esc indietro" -#: lib/bds/tui.ex:994 +#: lib/bds/tui.ex:1220 #, elixir-autogen, elixir-format msgid "All tasks finished." msgstr "Tutte le attività sono terminate." -#: lib/bds/tui.ex:1298 +#: lib/bds/tui.ex:1540 #, elixir-autogen, elixir-format msgid "Commands — esc to close" msgstr "Comandi — esc per chiudere" -#: lib/bds/tui.ex:823 +#: lib/bds/tui.ex:1041 #, elixir-autogen, elixir-format msgid "Unknown command." msgstr "Comando sconosciuto." -#: lib/bds/tui.ex:1288 +#: lib/bds/tui.ex:1530 #, elixir-autogen, elixir-format msgid "[report/apply in GUI]" msgstr "[report/applicazione nella GUI]" -#: lib/bds/tui.ex:1437 +#: lib/bds/tui.ex:1679 #, elixir-autogen, elixir-format msgid "%{diffs} differences · %{orphans} orphan files" msgstr "%{diffs} differenze · %{orphans} file orfani" -#: lib/bds/tui.ex:1469 +#: lib/bds/tui.ex:1711 #, elixir-autogen, elixir-format msgid "Expected %{expected} · Existing %{existing}" msgstr "Attesi %{expected} · Esistenti %{existing}" -#: lib/bds/tui.ex:1486 +#: lib/bds/tui.ex:1728 #, elixir-autogen, elixir-format msgid "Extra files (will be removed):" msgstr "File in eccesso (verranno rimossi):" -#: lib/bds/tui.ex:1482 +#: lib/bds/tui.ex:1724 #, elixir-autogen, elixir-format msgid "Missing pages (will be rendered):" msgstr "Pagine mancanti (verranno generate):" -#: lib/bds/tui.ex:311 +#: lib/bds/tui.ex:318 #, elixir-autogen, elixir-format msgid "Nothing to apply." msgstr "Niente da applicare." -#: lib/bds/tui.ex:278 +#: lib/bds/tui.ex:285 #, elixir-autogen, elixir-format msgid "Nothing to repair." msgstr "Niente da riparare." -#: lib/bds/tui.ex:1460 +#: lib/bds/tui.ex:1702 #, elixir-autogen, elixir-format msgid "Orphan files (not in database):" msgstr "File orfani (non presenti nel database):" -#: lib/bds/tui.ex:1476 +#: lib/bds/tui.ex:1718 #, elixir-autogen, elixir-format msgid "Sitemap changed." msgstr "Sitemap modificata." -#: lib/bds/tui.ex:1490 +#: lib/bds/tui.ex:1732 #, elixir-autogen, elixir-format msgid "Updated posts (will be re-rendered):" msgstr "Post aggiornati (verranno rigenerati):" -#: lib/bds/tui.ex:1427 +#: lib/bds/tui.ex:1669 #, elixir-autogen, elixir-format msgid "enter apply changes · esc close" msgstr "invio applica le modifiche · esc chiudi" -#: lib/bds/tui.ex:1422 +#: lib/bds/tui.ex:1664 #, elixir-autogen, elixir-format msgid "enter repair all from files · esc close" msgstr "invio ripara tutto dai file · esc chiudi" -#: lib/bds/tui.ex:788 +#: lib/bds/tui.ex:1006 #, elixir-autogen, elixir-format msgid "Imported Blog" msgstr "Blog importato" -#: lib/bds/tui.ex:807 +#: lib/bds/tui.ex:1025 #, elixir-autogen, elixir-format msgid "Not a folder: %{path}" msgstr "Non è una cartella: %{path}" -#: lib/bds/tui.ex:1364 +#: lib/bds/tui.ex:1606 #, elixir-autogen, elixir-format msgid "Projects — enter switch · o open existing · esc close" msgstr "Progetti — invio cambia · o apri esistente · esc chiudi" -#: lib/bds/tui.ex:715 +#: lib/bds/tui.ex:933 #, elixir-autogen, elixir-format msgid "Switched to %{name}." msgstr "Passato a %{name}." -#: lib/bds/tui.ex:1392 +#: lib/bds/tui.ex:1634 #, elixir-autogen, elixir-format msgid "Matching folders" msgstr "Cartelle corrispondenti" -#: lib/bds/tui.ex:1330 +#: lib/bds/tui.ex:1572 #, elixir-autogen, elixir-format msgid "Open Existing Blog — type a folder path · tab complete · enter open · esc back" msgstr "Apri blog esistente — digita il percorso di una cartella · tab completa · invio apri · esc indietro" -#: lib/bds/tui.ex:334 +#: lib/bds/tui.ex:341 #, elixir-autogen, elixir-format msgid "Commit message required." msgstr "Messaggio di commit obbligatorio." -#: lib/bds/tui.ex:340 +#: lib/bds/tui.ex:347 #, elixir-autogen, elixir-format msgid "Committed." msgstr "Commit eseguito." -#: lib/bds/tui.ex:1174 +#: lib/bds/tui.ex:1414 #, elixir-autogen, elixir-format msgid "Diff (pgup/pgdn scroll)" msgstr "Diff (pgup/pgdn per scorrere)" -#: lib/bds/tui.ex:1557 +#: lib/bds/tui.ex:1799 #, elixir-autogen, elixir-format msgid "No changes." msgstr "Nessuna modifica." -#: lib/bds/tui.ex:400 +#: lib/bds/tui.ex:407 #, elixir-autogen, elixir-format msgid "No diff for this file." msgstr "Nessun diff per questo file." -#: lib/bds/tui.ex:388 -#: lib/bds/tui.ex:1161 +#: lib/bds/tui.ex:395 +#: lib/bds/tui.ex:1401 #, elixir-autogen, elixir-format msgid "Not a git repository." msgstr "Non è un repository git." @@ -4036,12 +4039,12 @@ msgstr "Mostra titolo" msgid "Theme" msgstr "Tema" -#: lib/bds/tui.ex:1145 +#: lib/bds/tui.ex:1371 #, elixir-autogen, elixir-format msgid "enter edit · ctrl+s save · esc close" msgstr "invio modifica · ctrl+s salva · esc chiudi" -#: lib/bds/tui.ex:1508 +#: lib/bds/tui.ex:1750 #, elixir-autogen, elixir-format msgid "enter edit/toggle/cycle · ctrl+s save · esc close · ctrl+q quit" msgstr "invio modifica/attiva/cicla · ctrl+s salva · esc chiudi · ctrl+q esci" @@ -4051,12 +4054,12 @@ msgstr "invio modifica/attiva/cicla · ctrl+s salva · esc chiudi · ctrl+q esci msgid "not supported yet" msgstr "non ancora supportato" -#: lib/bds/tui.ex:1515 +#: lib/bds/tui.ex:1757 #, elixir-autogen, elixir-format msgid "c commit · u pull · s push · enter jump to file · pgup/pgdn scroll diff · 1-7 views · ctrl+q quit" msgstr "c commit · u pull · s push · invio vai al file · pgup/pgdn scorri il diff · 1-7 viste · ctrl+q esci" -#: lib/bds/tui.ex:1522 +#: lib/bds/tui.ex:1764 #, elixir-autogen, elixir-format msgid "enter open · n new post · 1-7 views · p projects · / search · : commands (:? help) · r refresh · ctrl+q quit" msgstr "invio apri · n nuovo post · 1-7 viste · p progetti · / cerca · : comandi (:? aiuto) · r aggiorna · ctrl+q esci" @@ -4066,8 +4069,6 @@ msgstr "invio apri · n nuovo post · 1-7 viste · p progetti · / cerca · : co msgid "CLI tool installed to %{path}" msgstr "Strumento CLI installato in %{path}" -#: lib/bds/desktop/shell_live/settings_editor.ex:75 -#: lib/bds/desktop/shell_live/settings_editor.ex:78 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:386 #: lib/bds/ui/settings_form.ex:223 #, elixir-autogen, elixir-format @@ -4099,3 +4100,113 @@ msgstr "Lo strumento CLI può essere installato solo dall'applicazione pacchetti #, elixir-autogen, elixir-format msgid "Unknown settings action" msgstr "Azione delle impostazioni sconosciuta" + +#: lib/bds/ui/tags_panel.ex:114 +#, elixir-autogen, elixir-format +msgid "Colour of %{name}: %{color}" +msgstr "Colore di %{name}: %{color}" + +#: lib/bds/tui.ex:708 +#, elixir-autogen, elixir-format +msgid "Delete %{name} (used by %{count} posts)? Press y to confirm." +msgstr "Eliminare %{name} (usato da %{count} articoli)? Premi y per confermare." + +#: lib/bds/tui.ex:656 +#, elixir-autogen, elixir-format +msgid "Delete cancelled" +msgstr "Eliminazione annullata" + +#: lib/bds/ui/tags_panel.ex:171 +#, elixir-autogen, elixir-format +msgid "Mark at least two tags to merge" +msgstr "Contrassegna almeno due tag da unire" + +#: lib/bds/ui/tags_panel.ex:177 +#, elixir-autogen, elixir-format +msgid "Merged %{count} tags into %{name}" +msgstr "%{count} tag uniti in %{name}" + +#: lib/bds/tui.ex:668 +#, elixir-autogen, elixir-format +msgid "New tag" +msgstr "Nuovo tag" + +#: lib/bds/tui.ex:681 +#, elixir-autogen, elixir-format +msgid "Rename tag" +msgstr "Rinomina tag" + +#: lib/bds/ui/tags_panel.ex:76 +#, elixir-autogen, elixir-format +msgid "Tag %{name} created" +msgstr "Tag %{name} creato" + +#: lib/bds/ui/tags_panel.ex:149 +#, elixir-autogen, elixir-format +msgid "Tag %{name} deleted" +msgstr "Tag %{name} eliminato" + +#: lib/bds/ui/tags_panel.ex:201 +#, elixir-autogen, elixir-format +msgid "Tag %{name} not found" +msgstr "Tag %{name} non trovato" + +#: lib/bds/ui/tags_panel.ex:88 +#, elixir-autogen, elixir-format +msgid "Tag name cannot be empty" +msgstr "Il nome del tag non può essere vuoto" + +#: lib/bds/ui/tags_panel.ex:227 +#, elixir-autogen, elixir-format +msgid "Tag not found" +msgstr "Tag non trovato" + +#: lib/bds/ui/tags_panel.ex:96 +#, elixir-autogen, elixir-format +msgid "Tag renamed to %{name}" +msgstr "Tag rinominato in %{name}" + +#: lib/bds/ui/tags_panel.ex:91 +#, elixir-autogen, elixir-format +msgid "Tag unchanged" +msgstr "Tag invariato" + +#: lib/bds/ui/tags_panel.ex:192 +#, elixir-autogen, elixir-format +msgid "Tags synced from posts (%{count} total)" +msgstr "Tag sincronizzati dagli articoli (%{count} in totale)" + +#: lib/bds/ui/tags_panel.ex:134 +#, elixir-autogen, elixir-format +msgid "Template of %{name}: %{template}" +msgstr "Template di %{name}: %{template}" + +#: lib/bds/ui/tags_panel.ex:168 +#, elixir-autogen, elixir-format +msgid "The merge target must be one of the marked tags" +msgstr "La destinazione dell'unione deve essere uno dei tag contrassegnati" + +#: lib/bds/ui/tags_panel.ex:136 +#, elixir-autogen, elixir-format +msgid "default" +msgstr "predefinito" + +#: lib/bds/tui.ex:1917 +#, elixir-autogen, elixir-format +msgid "esc close" +msgstr "esc chiudi" + +#: lib/bds/tui.ex:1922 +#, elixir-autogen, elixir-format +msgid "n new · enter rename · c colour · t template · d delete · s sync · esc close" +msgstr "n nuovo · invio rinomina · c colore · t template · d elimina · s sincronizza · esc chiudi" + +#: lib/bds/ui/tags_panel.ex:116 +#, elixir-autogen, elixir-format +msgid "none" +msgstr "nessuno" + +#: lib/bds/tui.ex:1927 +#, elixir-autogen, elixir-format +msgid "space mark · m merge into selected · esc close" +msgstr "spazio contrassegna · m unisci nel selezionato · esc chiudi" diff --git a/priv/gettext/ui.pot b/priv/gettext/ui.pot index bc039e2..11844cd 100644 --- a/priv/gettext/ui.pot +++ b/priv/gettext/ui.pot @@ -95,11 +95,11 @@ msgstr "" #: lib/bds/desktop/shell_live/overlay_manager.ex:72 #: lib/bds/desktop/shell_live/post_editor.ex:906 #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:43 -#: lib/bds/tui.ex:946 -#: lib/bds/tui.ex:949 -#: lib/bds/tui.ex:952 -#: lib/bds/tui.ex:960 -#: lib/bds/tui.ex:1762 +#: lib/bds/tui.ex:1172 +#: lib/bds/tui.ex:1175 +#: lib/bds/tui.ex:1178 +#: lib/bds/tui.ex:1186 +#: lib/bds/tui.ex:2035 #, elixir-autogen, elixir-format msgid "AI Suggestions" msgstr "" @@ -588,7 +588,7 @@ msgid "Collapse unchanged diff hunks" msgstr "" #: lib/bds/desktop/shell_live/overlay_manager.ex:423 -#: lib/bds/tui.ex:1858 +#: lib/bds/tui.ex:2131 #, elixir-autogen, elixir-format msgid "Command completed" msgstr "" @@ -606,7 +606,7 @@ msgstr "" #: lib/bds/desktop/shell_live/post_editor_html/post_editor.html.heex:375 #: lib/bds/desktop/shell_live/script_editor_html/script_editor.html.heex:34 #: lib/bds/desktop/shell_live/template_editor_html/template_editor.html.heex:32 -#: lib/bds/tui.ex:1228 +#: lib/bds/tui.ex:1468 #: lib/bds/ui/settings_form.ex:137 #: lib/bds/ui/sidebar.ex:801 #, elixir-autogen, elixir-format @@ -1053,7 +1053,7 @@ msgid "Filename" msgstr "" #: lib/bds/desktop/menu_bar.ex:254 -#: lib/bds/tui.ex:1822 +#: lib/bds/tui.ex:2095 #, elixir-autogen, elixir-format msgid "Fill Missing Translations" msgstr "" @@ -1064,7 +1064,7 @@ msgid "Find" msgstr "" #: lib/bds/desktop/menu_bar.ex:255 -#: lib/bds/tui.ex:1825 +#: lib/bds/tui.ex:2098 #, elixir-autogen, elixir-format msgid "Find Duplicate Posts" msgstr "" @@ -1091,14 +1091,14 @@ msgid "Gallery" msgstr "" #: lib/bds/desktop/menu_bar.ex:256 -#: lib/bds/tui.ex:1806 +#: lib/bds/tui.ex:2079 #, elixir-autogen, elixir-format msgid "Generate Site" msgstr "" #: lib/bds/desktop/shell_live.ex:792 #: lib/bds/desktop/shell_live/socket_state.ex:109 -#: lib/bds/tui.ex:1671 +#: lib/bds/tui.ex:1944 #: lib/bds/ui/sidebar.ex:826 #, elixir-autogen, elixir-format msgid "Git" @@ -1417,9 +1417,9 @@ msgstr "" #: lib/bds/desktop/shell_live/misc_editor.ex:762 #: lib/bds/desktop/shell_live/sidebar_components.ex:654 #: lib/bds/desktop/shell_live/sidebar_delete.ex:175 -#: lib/bds/tui.ex:1666 -#: lib/bds/tui.ex:1887 -#: lib/bds/tui.ex:1890 +#: lib/bds/tui.ex:1939 +#: lib/bds/tui.ex:2160 +#: lib/bds/tui.ex:2163 #: lib/bds/ui/registry.ex:30 #: lib/bds/ui/registry.ex:100 #: lib/bds/ui/sidebar.ex:578 @@ -1448,6 +1448,7 @@ msgid "Merge" msgstr "" #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:78 +#: lib/bds/tui.ex:1926 #: lib/bds/ui/sidebar.ex:787 #, elixir-autogen, elixir-format msgid "Merge Tags" @@ -1462,11 +1463,11 @@ msgstr "" #: lib/bds/desktop/shell_live/misc_editor.ex:214 #: lib/bds/desktop/shell_live/misc_editor.ex:226 #: lib/bds/desktop/shell_live/misc_editor.ex:448 -#: lib/bds/tui.ex:278 -#: lib/bds/tui.ex:284 -#: lib/bds/tui.ex:295 -#: lib/bds/tui.ex:1421 -#: lib/bds/tui.ex:1803 +#: lib/bds/tui.ex:285 +#: lib/bds/tui.ex:291 +#: lib/bds/tui.ex:302 +#: lib/bds/tui.ex:1663 +#: lib/bds/tui.ex:2076 #: lib/bds/ui/registry.ex:111 #, elixir-autogen, elixir-format msgid "Metadata Diff" @@ -1512,7 +1513,7 @@ msgstr "" #: lib/bds/desktop/menu_bar.ex:214 #: lib/bds/desktop/shell_live/sidebar_create.ex:41 -#: lib/bds/tui.ex:232 +#: lib/bds/tui.ex:238 #, elixir-autogen, elixir-format msgid "New Post" msgstr "" @@ -1800,8 +1801,8 @@ msgid "Open Data Folder" msgstr "" #: lib/bds/desktop/shell_live/index.html.heex:644 -#: lib/bds/tui.ex:801 -#: lib/bds/tui.ex:806 +#: lib/bds/tui.ex:1019 +#: lib/bds/tui.ex:1024 #, elixir-autogen, elixir-format msgid "Open Existing Blog" msgstr "" @@ -1813,7 +1814,7 @@ msgid "Open Settings" msgstr "" #: lib/bds/desktop/menu_bar.ex:217 -#: lib/bds/tui.ex:1827 +#: lib/bds/tui.ex:2100 #, elixir-autogen, elixir-format msgid "Open in Browser" msgstr "" @@ -1962,8 +1963,8 @@ msgstr "" #: lib/bds/desktop/menu_bar.ex:233 #: lib/bds/desktop/shell_live/misc_editor.ex:664 #: lib/bds/desktop/shell_live/misc_editor.ex:761 -#: lib/bds/tui.ex:1665 -#: lib/bds/tui.ex:1680 +#: lib/bds/tui.ex:1938 +#: lib/bds/tui.ex:1953 #: lib/bds/ui/registry.ex:14 #: lib/bds/ui/sidebar.ex:271 #, elixir-autogen, elixir-format @@ -2023,8 +2024,8 @@ msgstr "" #: lib/bds/desktop/shell_live/chat_surface.ex:15 #: lib/bds/desktop/shell_live/index.html.heex:623 -#: lib/bds/tui.ex:714 -#: lib/bds/tui.ex:719 +#: lib/bds/tui.ex:932 +#: lib/bds/tui.ex:937 #, elixir-autogen, elixir-format msgid "Projects" msgstr "" @@ -2092,15 +2093,15 @@ msgid "Ready to import:" msgstr "" #: lib/bds/desktop/menu_bar.ex:248 -#: lib/bds/tui.ex:798 -#: lib/bds/tui.ex:1807 +#: lib/bds/tui.ex:1016 +#: lib/bds/tui.ex:2080 #, elixir-autogen, elixir-format msgid "Rebuild Database" msgstr "" #: lib/bds/desktop/menu_bar.ex:250 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:381 -#: lib/bds/tui.ex:1811 +#: lib/bds/tui.ex:2084 #, elixir-autogen, elixir-format msgid "Rebuild Embedding Index" msgstr "" @@ -2158,7 +2159,7 @@ msgid "Refresh Translation" msgstr "" #: lib/bds/desktop/menu_bar.ex:252 -#: lib/bds/tui.ex:1814 +#: lib/bds/tui.ex:2087 #, elixir-autogen, elixir-format msgid "Regenerate Calendar" msgstr "" @@ -2169,7 +2170,7 @@ msgid "Regenerate Missing Thumbnails" msgstr "" #: lib/bds/desktop/menu_bar.ex:249 -#: lib/bds/tui.ex:1808 +#: lib/bds/tui.ex:2081 #, elixir-autogen, elixir-format msgid "Reindex Text" msgstr "" @@ -2357,7 +2358,7 @@ msgstr "" #: lib/bds/desktop/shell_live/script_editor.ex:216 #: lib/bds/desktop/shell_live/script_editor.ex:219 #: lib/bds/desktop/shell_live/script_editor.ex:234 -#: lib/bds/tui.ex:1668 +#: lib/bds/tui.ex:1941 #: lib/bds/ui/registry.ex:38 #: lib/bds/ui/sidebar.ex:63 #: lib/bds/ui/sidebar.ex:115 @@ -2464,7 +2465,7 @@ msgstr "" #: lib/bds/desktop/shell_live/settings_editor/project_settings.ex:60 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:11 -#: lib/bds/tui.ex:1670 +#: lib/bds/tui.ex:1943 #: lib/bds/ui/registry.ex:86 #: lib/bds/ui/registry.ex:101 #: lib/bds/ui/sidebar.ex:795 @@ -2488,9 +2489,9 @@ msgid "Site" msgstr "" #: lib/bds/desktop/shell_live/misc_editor.ex:412 -#: lib/bds/tui.ex:311 -#: lib/bds/tui.ex:313 -#: lib/bds/tui.ex:1426 +#: lib/bds/tui.ex:318 +#: lib/bds/tui.ex:320 +#: lib/bds/tui.ex:1668 #: lib/bds/ui/registry.ex:125 #, elixir-autogen, elixir-format msgid "Site Validation" @@ -2587,6 +2588,7 @@ msgid "System Prompt" msgstr "" #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:16 +#: lib/bds/tui.ex:1917 #: lib/bds/ui/sidebar.ex:785 #, elixir-autogen, elixir-format msgid "Tag Cloud" @@ -2608,12 +2610,13 @@ 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:104 -#: lib/bds/desktop/shell_live/tags_editor.ex:208 -#: lib/bds/desktop/shell_live/tags_editor.ex:222 -#: lib/bds/desktop/shell_live/tags_editor.ex:253 +#: lib/bds/desktop/shell_live/tags_editor.ex:99 +#: lib/bds/desktop/shell_live/tags_editor.ex:203 +#: lib/bds/desktop/shell_live/tags_editor.ex:217 +#: lib/bds/desktop/shell_live/tags_editor.ex:248 #: lib/bds/desktop/shell_live/tags_editor_html/tags_editor.html.heex:11 -#: lib/bds/tui.ex:1669 +#: lib/bds/tui.ex:1920 +#: lib/bds/tui.ex:1942 #: lib/bds/ui/registry.ex:54 #: lib/bds/ui/registry.ex:103 #: lib/bds/ui/sidebar.ex:289 @@ -2625,7 +2628,7 @@ msgstr "" #: lib/bds/desktop/shell_live.ex:786 #: lib/bds/desktop/shell_live/panel_renderer.ex:54 -#: lib/bds/tui.ex:994 +#: lib/bds/tui.ex:1220 #, elixir-autogen, elixir-format msgid "Tasks" msgstr "" @@ -2671,7 +2674,7 @@ msgstr "" #: lib/bds/desktop/shell_live/template_editor.ex:171 #: lib/bds/desktop/shell_live/template_editor.ex:176 #: lib/bds/desktop/shell_live/template_editor.ex:191 -#: lib/bds/tui.ex:1667 +#: lib/bds/tui.ex:1940 #: lib/bds/ui/registry.ex:46 #: lib/bds/ui/sidebar.ex:71 #: lib/bds/ui/sidebar.ex:122 @@ -2895,7 +2898,7 @@ msgid "Updated URLs" msgstr "" #: lib/bds/desktop/menu_bar.ex:259 -#: lib/bds/tui.ex:1826 +#: lib/bds/tui.ex:2099 #, elixir-autogen, elixir-format msgid "Upload Site" msgstr "" @@ -2923,13 +2926,13 @@ msgid "Validate" msgstr "" #: lib/bds/desktop/menu_bar.ex:258 -#: lib/bds/tui.ex:1804 +#: lib/bds/tui.ex:2077 #, elixir-autogen, elixir-format msgid "Validate Site" msgstr "" #: lib/bds/desktop/menu_bar.ex:253 -#: lib/bds/tui.ex:1817 +#: lib/bds/tui.ex:2090 #, elixir-autogen, elixir-format msgid "Validate Translations" msgstr "" @@ -3402,15 +3405,15 @@ msgstr "" #: lib/bds/desktop/shell_live/git_handler.ex:46 #: lib/bds/desktop/shell_live/git_handler.ex:52 #: lib/bds/desktop/shell_live/sidebar_components.ex:556 -#: lib/bds/tui.ex:334 -#: lib/bds/tui.ex:340 -#: lib/bds/tui.ex:343 +#: lib/bds/tui.ex:341 +#: lib/bds/tui.ex:347 +#: lib/bds/tui.ex:350 #, elixir-autogen, elixir-format msgid "Commit" msgstr "" #: lib/bds/desktop/shell_live/sidebar_components.ex:555 -#: lib/bds/tui.ex:1248 +#: lib/bds/tui.ex:1490 #, elixir-autogen, elixir-format msgid "Commit message" msgstr "" @@ -3434,7 +3437,7 @@ msgid "Fetch" msgstr "" #: lib/bds/desktop/shell_live/sidebar_components.ex:586 -#: lib/bds/tui.ex:1083 +#: lib/bds/tui.ex:1309 #, elixir-autogen, elixir-format msgid "History" msgstr "" @@ -3482,7 +3485,7 @@ msgstr "" #: lib/bds/desktop/shell_live/git_handler.ex:17 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 #: lib/bds/desktop/shell_live/sidebar_components.ex:543 -#: lib/bds/tui.ex:966 +#: lib/bds/tui.ex:1192 #, elixir-autogen, elixir-format msgid "Pull" msgstr "" @@ -3490,7 +3493,7 @@ msgstr "" #: lib/bds/desktop/shell_live/git_handler.ex:18 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 #: lib/bds/desktop/shell_live/sidebar_components.ex:544 -#: lib/bds/tui.ex:967 +#: lib/bds/tui.ex:1193 #, elixir-autogen, elixir-format msgid "Push" msgstr "" @@ -3603,7 +3606,7 @@ msgid "Suggested tags" msgstr "" #: lib/bds/desktop/menu_bar.ex:257 -#: lib/bds/tui.ex:1805 +#: lib/bds/tui.ex:2078 #, elixir-autogen, elixir-format msgid "Force Render Site" msgstr "" @@ -3700,83 +3703,83 @@ msgstr "" msgid "The endpoint returned no models. You can still type a model name manually." msgstr "" -#: lib/bds/tui.ex:1763 +#: lib/bds/tui.ex:2036 #, elixir-autogen, elixir-format msgid "AI is unavailable in airplane mode without a local endpoint." msgstr "" -#: lib/bds/tui.ex:1890 +#: lib/bds/tui.ex:2163 #, elixir-autogen, elixir-format msgid "Could not load this file." msgstr "" -#: lib/bds/tui.ex:243 +#: lib/bds/tui.ex:250 #, elixir-autogen, elixir-format msgid "Editing this item is not available in the terminal UI yet." msgstr "" -#: lib/bds/tui.ex:949 +#: lib/bds/tui.ex:1175 #, elixir-autogen, elixir-format msgid "No suggestions returned." msgstr "" -#: lib/bds/tui.ex:1887 +#: lib/bds/tui.ex:2160 #, elixir-autogen, elixir-format msgid "Only images can be previewed." msgstr "" -#: lib/bds/tui.ex:1680 +#: lib/bds/tui.ex:1953 #, elixir-autogen, elixir-format msgid "Post not found." msgstr "" -#: lib/bds/tui.ex:1183 +#: lib/bds/tui.ex:1423 #, elixir-autogen, elixir-format msgid "Press enter to preview %{name}." msgstr "" -#: lib/bds/tui.ex:1733 +#: lib/bds/tui.ex:2006 #, elixir-autogen, elixir-format msgid "Published." msgstr "" -#: lib/bds/tui.ex:1749 +#: lib/bds/tui.ex:2022 #, elixir-autogen, elixir-format msgid "Save before switching languages." msgstr "" -#: lib/bds/tui.ex:533 -#: lib/bds/tui.ex:1734 +#: lib/bds/tui.ex:540 +#: lib/bds/tui.ex:2007 #, elixir-autogen, elixir-format msgid "Saved." msgstr "" -#: lib/bds/tui.ex:1186 +#: lib/bds/tui.ex:1426 #, elixir-autogen, elixir-format msgid "Select an entry and press enter to open it." msgstr "" -#: lib/bds/tui.ex:946 +#: lib/bds/tui.ex:1172 #, elixir-autogen, elixir-format msgid "Suggestions applied." msgstr "" -#: lib/bds/tui.ex:1198 +#: lib/bds/tui.ex:1438 #, elixir-autogen, elixir-format msgid "Title (ctrl+t to edit)" msgstr "" -#: lib/bds/tui.ex:1197 +#: lib/bds/tui.ex:1437 #, elixir-autogen, elixir-format msgid "Title (editing — enter to confirm)" msgstr "" -#: lib/bds/tui.ex:1250 +#: lib/bds/tui.ex:1492 #, elixir-autogen, elixir-format msgid "Working…" msgstr "" -#: lib/bds/tui.ex:1272 +#: lib/bds/tui.ex:1514 #, elixir-autogen, elixir-format msgid "esc to close" msgstr "" @@ -3813,148 +3816,148 @@ msgstr "" msgid "Use the form user@host or user@host:port." msgstr "" -#: lib/bds/tui.ex:1217 +#: lib/bds/tui.ex:1457 #, elixir-autogen, elixir-format msgid "Preview (ctrl+e to edit)" msgstr "" -#: lib/bds/tui.ex:1529 +#: lib/bds/tui.ex:1771 #, elixir-autogen, elixir-format msgid "ctrl+s save · ctrl+p publish · ctrl+e preview · ctrl+t title · ctrl+l language · ctrl+g AI · esc back" msgstr "" -#: lib/bds/tui.ex:994 +#: lib/bds/tui.ex:1220 #, elixir-autogen, elixir-format msgid "All tasks finished." msgstr "" -#: lib/bds/tui.ex:1298 +#: lib/bds/tui.ex:1540 #, elixir-autogen, elixir-format msgid "Commands — esc to close" msgstr "" -#: lib/bds/tui.ex:823 +#: lib/bds/tui.ex:1041 #, elixir-autogen, elixir-format msgid "Unknown command." msgstr "" -#: lib/bds/tui.ex:1288 +#: lib/bds/tui.ex:1530 #, elixir-autogen, elixir-format msgid "[report/apply in GUI]" msgstr "" -#: lib/bds/tui.ex:1437 +#: lib/bds/tui.ex:1679 #, elixir-autogen, elixir-format msgid "%{diffs} differences · %{orphans} orphan files" msgstr "" -#: lib/bds/tui.ex:1469 +#: lib/bds/tui.ex:1711 #, elixir-autogen, elixir-format msgid "Expected %{expected} · Existing %{existing}" msgstr "" -#: lib/bds/tui.ex:1486 +#: lib/bds/tui.ex:1728 #, elixir-autogen, elixir-format msgid "Extra files (will be removed):" msgstr "" -#: lib/bds/tui.ex:1482 +#: lib/bds/tui.ex:1724 #, elixir-autogen, elixir-format msgid "Missing pages (will be rendered):" msgstr "" -#: lib/bds/tui.ex:311 +#: lib/bds/tui.ex:318 #, elixir-autogen, elixir-format msgid "Nothing to apply." msgstr "" -#: lib/bds/tui.ex:278 +#: lib/bds/tui.ex:285 #, elixir-autogen, elixir-format msgid "Nothing to repair." msgstr "" -#: lib/bds/tui.ex:1460 +#: lib/bds/tui.ex:1702 #, elixir-autogen, elixir-format msgid "Orphan files (not in database):" msgstr "" -#: lib/bds/tui.ex:1476 +#: lib/bds/tui.ex:1718 #, elixir-autogen, elixir-format msgid "Sitemap changed." msgstr "" -#: lib/bds/tui.ex:1490 +#: lib/bds/tui.ex:1732 #, elixir-autogen, elixir-format msgid "Updated posts (will be re-rendered):" msgstr "" -#: lib/bds/tui.ex:1427 +#: lib/bds/tui.ex:1669 #, elixir-autogen, elixir-format msgid "enter apply changes · esc close" msgstr "" -#: lib/bds/tui.ex:1422 +#: lib/bds/tui.ex:1664 #, elixir-autogen, elixir-format msgid "enter repair all from files · esc close" msgstr "" -#: lib/bds/tui.ex:788 +#: lib/bds/tui.ex:1006 #, elixir-autogen, elixir-format msgid "Imported Blog" msgstr "" -#: lib/bds/tui.ex:807 +#: lib/bds/tui.ex:1025 #, elixir-autogen, elixir-format msgid "Not a folder: %{path}" msgstr "" -#: lib/bds/tui.ex:1364 +#: lib/bds/tui.ex:1606 #, elixir-autogen, elixir-format msgid "Projects — enter switch · o open existing · esc close" msgstr "" -#: lib/bds/tui.ex:715 +#: lib/bds/tui.ex:933 #, elixir-autogen, elixir-format msgid "Switched to %{name}." msgstr "" -#: lib/bds/tui.ex:1392 +#: lib/bds/tui.ex:1634 #, elixir-autogen, elixir-format msgid "Matching folders" msgstr "" -#: lib/bds/tui.ex:1330 +#: lib/bds/tui.ex:1572 #, elixir-autogen, elixir-format msgid "Open Existing Blog — type a folder path · tab complete · enter open · esc back" msgstr "" -#: lib/bds/tui.ex:334 +#: lib/bds/tui.ex:341 #, elixir-autogen, elixir-format msgid "Commit message required." msgstr "" -#: lib/bds/tui.ex:340 +#: lib/bds/tui.ex:347 #, elixir-autogen, elixir-format msgid "Committed." msgstr "" -#: lib/bds/tui.ex:1174 +#: lib/bds/tui.ex:1414 #, elixir-autogen, elixir-format msgid "Diff (pgup/pgdn scroll)" msgstr "" -#: lib/bds/tui.ex:1557 +#: lib/bds/tui.ex:1799 #, elixir-autogen, elixir-format msgid "No changes." msgstr "" -#: lib/bds/tui.ex:400 +#: lib/bds/tui.ex:407 #, elixir-autogen, elixir-format msgid "No diff for this file." msgstr "" -#: lib/bds/tui.ex:388 -#: lib/bds/tui.ex:1161 +#: lib/bds/tui.ex:395 +#: lib/bds/tui.ex:1401 #, elixir-autogen, elixir-format msgid "Not a git repository." msgstr "" @@ -4049,12 +4052,12 @@ msgstr "" msgid "Theme" msgstr "" -#: lib/bds/tui.ex:1145 +#: lib/bds/tui.ex:1371 #, elixir-autogen, elixir-format msgid "enter edit · ctrl+s save · esc close" msgstr "" -#: lib/bds/tui.ex:1508 +#: lib/bds/tui.ex:1750 #, elixir-autogen, elixir-format msgid "enter edit/toggle/cycle · ctrl+s save · esc close · ctrl+q quit" msgstr "" @@ -4064,12 +4067,12 @@ msgstr "" msgid "not supported yet" msgstr "" -#: lib/bds/tui.ex:1515 +#: lib/bds/tui.ex:1757 #, elixir-autogen, elixir-format msgid "c commit · u pull · s push · enter jump to file · pgup/pgdn scroll diff · 1-7 views · ctrl+q quit" msgstr "" -#: lib/bds/tui.ex:1522 +#: lib/bds/tui.ex:1764 #, elixir-autogen, elixir-format msgid "enter open · n new post · 1-7 views · p projects · / search · : commands (:? help) · r refresh · ctrl+q quit" msgstr "" @@ -4079,8 +4082,6 @@ msgstr "" msgid "CLI tool installed to %{path}" msgstr "" -#: lib/bds/desktop/shell_live/settings_editor.ex:75 -#: lib/bds/desktop/shell_live/settings_editor.ex:78 #: lib/bds/desktop/shell_live/settings_editor_html/settings_editor.html.heex:386 #: lib/bds/ui/settings_form.ex:223 #, elixir-autogen, elixir-format @@ -4112,3 +4113,113 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Unknown settings action" msgstr "" + +#: lib/bds/ui/tags_panel.ex:114 +#, elixir-autogen, elixir-format +msgid "Colour of %{name}: %{color}" +msgstr "" + +#: lib/bds/tui.ex:708 +#, elixir-autogen, elixir-format +msgid "Delete %{name} (used by %{count} posts)? Press y to confirm." +msgstr "" + +#: lib/bds/tui.ex:656 +#, elixir-autogen, elixir-format +msgid "Delete cancelled" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:171 +#, elixir-autogen, elixir-format +msgid "Mark at least two tags to merge" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:177 +#, elixir-autogen, elixir-format +msgid "Merged %{count} tags into %{name}" +msgstr "" + +#: lib/bds/tui.ex:668 +#, elixir-autogen, elixir-format +msgid "New tag" +msgstr "" + +#: lib/bds/tui.ex:681 +#, elixir-autogen, elixir-format +msgid "Rename tag" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:76 +#, elixir-autogen, elixir-format +msgid "Tag %{name} created" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:149 +#, elixir-autogen, elixir-format +msgid "Tag %{name} deleted" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:201 +#, elixir-autogen, elixir-format +msgid "Tag %{name} not found" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:88 +#, elixir-autogen, elixir-format +msgid "Tag name cannot be empty" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:227 +#, elixir-autogen, elixir-format +msgid "Tag not found" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:96 +#, elixir-autogen, elixir-format +msgid "Tag renamed to %{name}" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:91 +#, elixir-autogen, elixir-format +msgid "Tag unchanged" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:192 +#, elixir-autogen, elixir-format +msgid "Tags synced from posts (%{count} total)" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:134 +#, elixir-autogen, elixir-format +msgid "Template of %{name}: %{template}" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:168 +#, elixir-autogen, elixir-format +msgid "The merge target must be one of the marked tags" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:136 +#, elixir-autogen, elixir-format +msgid "default" +msgstr "" + +#: lib/bds/tui.ex:1917 +#, elixir-autogen, elixir-format +msgid "esc close" +msgstr "" + +#: lib/bds/tui.ex:1922 +#, elixir-autogen, elixir-format +msgid "n new · enter rename · c colour · t template · d delete · s sync · esc close" +msgstr "" + +#: lib/bds/ui/tags_panel.ex:116 +#, elixir-autogen, elixir-format +msgid "none" +msgstr "" + +#: lib/bds/tui.ex:1927 +#, elixir-autogen, elixir-format +msgid "space mark · m merge into selected · esc close" +msgstr "" diff --git a/specs/tui.allium b/specs/tui.allium index 71dc8f2..f79da71 100644 --- a/specs/tui.allium +++ b/specs/tui.allium @@ -134,6 +134,26 @@ rule SettingsPanel { ensures: SettingsFormShownEditedOrSaved() } +rule TagsPanel { + when: TuiKeyPressed(code: "5") + -- "5" opens the tags view (issue #34), matching the GUI panel + -- numbering. The sidebar lists the same three sections as the GUI + -- tags editor (Tag Cloud, Create / Edit, Merge Tags — from + -- BDS.UI.Sidebar's tags nav view); enter opens the section in the + -- main area, all backed by BDS.UI.TagsPanel over the same BDS.Tags + -- operations as the GUI editor. Cloud lists tags with their post + -- usage counts ordered by usage; manage is alphabetical with "n" + -- (create prompt), enter (rename prompt), "c" (cycle colour through + -- the shared presets), "t" (cycle post template), "d" then "y" + -- (delete with post-count confirmation; any other key cancels) and + -- "s" (sync tags from post tags); merge marks tags with space and + -- "m" merges the marked tags into the selected one (at least two, + -- target included). Text prompts live in the status line; esc + -- cancels the prompt, then closes the panel. Domain tag events + -- reload an open panel, keeping it in sync with GUI and CLI writes. + ensures: TagsPanelShownOrEdited() +} + rule GitPanel { when: TuiKeyPressed(code: "7") -- "7" opens the git panel (issue #30) for content sync: the sidebar diff --git a/test/bds/tui_test.exs b/test/bds/tui_test.exs index fcbdfff..8756d52 100644 --- a/test/bds/tui_test.exs +++ b/test/bds/tui_test.exs @@ -966,6 +966,143 @@ defmodule BDS.TUITest do do: Enum.at(state.settings_form.fields, state.settings_form.selected) end + describe "tags panel (issue #34)" do + defp open_tags_section(state, section) do + state = press(state, "5") + + index = + Enum.find_index(state.items, fn + {:item, %{id: id}} -> id == "tags-" <> section + _other -> false + end) + + assert index != nil + press(%{state | selected: index}, "enter") + end + + defp type_text(state, text) do + text + |> String.graphemes() + |> Enum.reduce(state, fn char, acc -> press(acc, char) end) + end + + defp tag_names(project_id) do + project_id |> BDS.Tags.list_tags() |> Enum.map(& &1.name) + end + + test "the sidebar entries open the panel sections in the main area", %{project: project} do + {:ok, _tag} = BDS.Tags.create_tag(%{project_id: project.id, name: "elixir"}) + + state = open_tags_section(mount!(), "cloud") + assert state.tags_panel.section == "cloud" + assert screen_text(state) =~ "elixir (0)" + + state = press(state, "esc") + assert state.tags_panel == nil + + state = open_tags_section(state, "manage") + assert state.tags_panel.section == "manage" + + state = open_tags_section(press(state, "esc"), "merge") + assert state.tags_panel.section == "merge" + assert screen_text(state) =~ "[ ] elixir (0)" + end + + test "manage creates a tag through the n prompt", %{project: project} do + state = open_tags_section(mount!(), "manage") + + state = press(state, "n") + assert state.tags_panel.input.kind == :new + + state = state |> type_text("neu") |> press("enter") + + assert "neu" in tag_names(project.id) + assert state.tags_panel.input == nil + assert state.status =~ "neu" + end + + test "manage renames the selected tag through the enter prompt", %{project: project} do + {:ok, _tag} = BDS.Tags.create_tag(%{project_id: project.id, name: "alpha"}) + + state = open_tags_section(mount!(), "manage") + state = press(state, "enter") + assert state.tags_panel.input.kind == :rename + assert state.tags_panel.input.value == "alpha" + + state = + Enum.reduce(1..5, state, fn _n, acc -> press(acc, "backspace") end) + + _state = state |> type_text("beta") |> press("enter") + + assert tag_names(project.id) == ["beta"] + end + + test "manage cycles the tag colour with c", %{project: project} do + {:ok, tag} = BDS.Tags.create_tag(%{project_id: project.id, name: "colored"}) + + state = open_tags_section(mount!(), "manage") + _state = press(state, "c") + + updated = BDS.Repo.get!(BDS.Tags.Tag, tag.id) + assert updated.color == List.first(BDS.UI.TagsPanel.colour_presets()) + end + + test "manage deletes only after y confirmation", %{project: project} do + {:ok, _tag} = BDS.Tags.create_tag(%{project_id: project.id, name: "doomed"}) + + state = open_tags_section(mount!(), "manage") + + # Any other key cancels the pending delete. + state = state |> press("d") |> press("x") + assert state.tags_panel.confirm_delete == nil + assert "doomed" in tag_names(project.id) + + state = state |> press("d") + assert state.tags_panel.confirm_delete == "doomed" + + state = press(state, "y") + assert tag_names(project.id) == [] + assert state.status =~ "doomed" + end + + test "merge marks tags with space and merges them into the selection", %{project: project} do + {:ok, _one} = BDS.Tags.create_tag(%{project_id: project.id, name: "one"}) + {:ok, _two} = BDS.Tags.create_tag(%{project_id: project.id, name: "two"}) + + {:ok, tagged_post} = + BDS.Posts.create_post(%{ + project_id: project.id, + title: "Tagged", + content: "body", + tags: ["one"] + }) + + state = open_tags_section(mount!(), "merge") + + # Mark "one", move to "two", merge — "one" is folded into "two". + _state = state |> press(" ") |> press("down") |> press("m") + + assert tag_names(project.id) == ["two"] + assert BDS.Posts.get_post!(tagged_post.id).tags == ["two"] + end + + test "manage syncs tags from post tags with s", %{project: project} do + {:ok, _post} = + BDS.Posts.create_post(%{ + project_id: project.id, + title: "With Tags", + content: "body", + tags: ["from-post"] + }) + + state = open_tags_section(mount!(), "manage") + state = press(state, "s") + + assert "from-post" in tag_names(project.id) + assert Enum.any?(state.tags_panel.tags, &(&1.name == "from-post")) + end + end + test "local tui mode stops the VM when the app exits" do parent = self() state = mount!(stop_vm_on_exit: true, stop_fun: fn -> send(parent, :vm_stopped) end)