From fea97f37138b05dbf238ebc0def96135cd03d1d0 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 15 Nov 2021 11:03:06 +0100 Subject: [PATCH 01/18] Fix creating an mz activity when updating an event with some subfields Signed-off-by: Thomas Citharel --- lib/mobilizon/events/event.ex | 3 ++- lib/mobilizon/events/events.ex | 48 ++++++++++++++-------------------- 2 files changed, 21 insertions(+), 30 deletions(-) diff --git a/lib/mobilizon/events/event.ex b/lib/mobilizon/events/event.ex index 3b09c3c36..611197492 100644 --- a/lib/mobilizon/events/event.ex +++ b/lib/mobilizon/events/event.ex @@ -64,7 +64,8 @@ defmodule Mobilizon.Events.Event do tags: [Tag.t()], participants: [Actor.t()], contacts: [Actor.t()], - language: String.t() + language: String.t(), + metadata: [EventMetadata.t()] } @update_required_attrs [:title, :begins_on, :organizer_actor_id] diff --git a/lib/mobilizon/events/events.ex b/lib/mobilizon/events/events.ex index f349ff42f..cae534bd7 100644 --- a/lib/mobilizon/events/events.ex +++ b/lib/mobilizon/events/events.ex @@ -19,7 +19,6 @@ defmodule Mobilizon.Events do alias Mobilizon.Events.{ Event, - EventOptions, EventParticipantStats, FeedToken, Participant, @@ -329,37 +328,28 @@ defmodule Mobilizon.Events do defp build_changes(changes) do changes |> Map.take(Event.__schema__(:fields)) - |> maybe_add_address(changes) - |> maybe_add_options(changes) + |> maybe_add_field(:physical_address) + |> maybe_add_field(:options) + |> maybe_add_field(:metadata) end - @spec maybe_add_address(map(), map()) :: map() - defp maybe_add_address(changes, %{physical_address: %Ecto.Changeset{} = changeset}), - do: - Map.put( - changes, - :physical_address, - changeset - |> Ecto.Changeset.apply_changes() - |> Map.from_struct() - |> Map.take(Address.__schema__(:fields)) - ) + @spec maybe_add_field(map(), atom()) :: map() + defp maybe_add_field(changes, field) do + case Map.get(changes, field) do + %Ecto.Changeset{} = changeset -> + Map.put( + changes, + field, + changeset + |> Ecto.Changeset.apply_changes() + |> Map.from_struct() + |> Map.take(Address.__schema__(:fields)) + ) - defp maybe_add_address(changes, _), do: Map.drop(changes, [:physical_address]) - - @spec maybe_add_options(map(), map()) :: map() - defp maybe_add_options(changes, %{options: %Ecto.Changeset{} = changeset}), - do: - Map.put( - changes, - :options, - changeset - |> Ecto.Changeset.apply_changes() - |> Map.from_struct() - |> Map.take(EventOptions.__schema__(:fields)) - ) - - defp maybe_add_options(changes, _), do: Map.drop(changes, [:options]) + _ -> + Map.drop(changes, [field]) + end + end @doc """ Deletes an event. From bcf17fe30b8f67ec4499790dc8ec7b5bfd439c2f Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 15 Nov 2021 11:08:18 +0100 Subject: [PATCH 02/18] Add "eventAttendanceMode" to JSON-ld schema.org event representation Signed-off-by: Thomas Citharel --- lib/web/views/json_ld/object_view.ex | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/web/views/json_ld/object_view.ex b/lib/web/views/json_ld/object_view.ex index 9f16009b2..02081e18f 100644 --- a/lib/web/views/json_ld/object_view.ex +++ b/lib/web/views/json_ld/object_view.ex @@ -3,7 +3,7 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do alias Mobilizon.Actors.Actor alias Mobilizon.Addresses.Address - alias Mobilizon.Events.{Event, Participant, ParticipantRole} + alias Mobilizon.Events.{Event, EventOptions, Participant, ParticipantRole} alias Mobilizon.Posts.Post alias Mobilizon.Web.Endpoint alias Mobilizon.Web.JsonLD.ObjectView @@ -59,6 +59,7 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do "performer" => organizer, "organizer" => organizer, "location" => render_location(event), + "eventAttendanceMode" => eventAttendanceMode(event), "eventStatus" => if(event.status == :cancelled, do: "https://schema.org/EventCancelled", @@ -182,4 +183,20 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do do: render_one(address, ObjectView, "address.json", as: :address) defp render_address(_), do: nil + + @livestream_keys ["mz:live", "mz:visio"] + + defp eventAttendanceMode(%Event{options: %EventOptions{is_online: true}}), + do: "https://schema.org/OnlineEventAttendanceMode" + + defp eventAttendanceMode(%Event{physical_address: %Address{}, metadata: metadata}) do + if Enum.any?(metadata, &String.contains?(&1["key"], @livestream_keys)) do + "https://schema.org/MixedEventAttendanceMode" + else + "https://schema.org/OfflineEventAttendanceMode" + end + end + + defp eventAttendanceMode(%Event{}), + do: "https://schema.org/OfflineEventAttendanceMode" end From 85ceb1de47a12b0a45029f01b1259ddf20827273 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 15 Nov 2021 12:11:29 +0100 Subject: [PATCH 03/18] Improve json-ld metadata on event live streams Signed-off-by: Thomas Citharel --- lib/service/metadata/utils.ex | 4 +- lib/web/views/json_ld/object_view.ex | 72 ++++++++++++++++++++-------- 2 files changed, 54 insertions(+), 22 deletions(-) diff --git a/lib/service/metadata/utils.ex b/lib/service/metadata/utils.ex index 2e1992dfb..c57990988 100644 --- a/lib/service/metadata/utils.ex +++ b/lib/service/metadata/utils.ex @@ -29,7 +29,7 @@ defmodule Mobilizon.Service.Metadata.Utils do * Slices it to a limit and add an ellipsis character * Returns a default description if text is empty """ - @spec process_description(String.t(), String.t(), integer()) :: String.t() + @spec process_description(String.t(), String.t(), integer() | nil) :: String.t() def process_description(description, locale \\ "en", limit \\ @slice_limit) def process_description(nil, locale, limit), do: process_description("", locale, limit) @@ -56,6 +56,8 @@ defmodule Mobilizon.Service.Metadata.Utils do defdelegate datetime_to_string(datetime, locale \\ "en", format \\ :medium), to: DateTime defdelegate render_address(address), to: Address + defp maybe_slice(description, nil), do: description + defp maybe_slice(description, limit) do if String.length(description) > limit do description diff --git a/lib/web/views/json_ld/object_view.ex b/lib/web/views/json_ld/object_view.ex index 02081e18f..256fc93aa 100644 --- a/lib/web/views/json_ld/object_view.ex +++ b/lib/web/views/json_ld/object_view.ex @@ -9,6 +9,9 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do alias Mobilizon.Web.JsonLD.ObjectView alias Mobilizon.Web.Router.Helpers, as: Routes + import Mobilizon.Service.Metadata.Utils, + only: [process_description: 3] + @spec render(String.t(), map()) :: map() def render("group.json", %{group: %Actor{} = group}) do res = %{ @@ -54,12 +57,12 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do "@context" => "https://schema.org", "@type" => "Event", "name" => event.title, - "description" => event.description, + "description" => process_description(event.description, "en", nil), # We assume for now performer == organizer "performer" => organizer, "organizer" => organizer, - "location" => render_location(event), - "eventAttendanceMode" => eventAttendanceMode(event), + "location" => render_all_locations(event), + "eventAttendanceMode" => event |> attendance_mode() |> event_attendance_mode(), "eventStatus" => if(event.status == :cancelled, do: "https://schema.org/EventCancelled", @@ -164,39 +167,66 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do defp reservation_status(:not_approved), do: "https://schema.org/ReservationHold" defp reservation_status(_), do: "https://schema.org/ReservationConfirmed" - @spec render_location(map()) :: map() | nil - defp render_location(%{physical_address: %Address{} = address}), - do: render_one(address, ObjectView, "place.json", as: :address) + defp render_all_locations(%Event{} = event) do + [] + |> render_location(event) + |> render_virtual_location(event) + end + + @spec render_location(list(), map()) :: list() + defp render_location(locations, %{physical_address: %Address{} = address}), + do: locations ++ [render_one(address, ObjectView, "place.json", as: :address)] + + defp render_location(locations, _), do: locations # For now the Virtual Location of an event is it's own URL, # but in the future it will be a special field - defp render_location(%Event{url: event_url}) do - %{ - "@type" => "VirtualLocation", - "url" => event_url - } + defp render_virtual_location(locations, %Event{ + url: event_url, + metadata: metadata, + options: %EventOptions{is_online: is_online} + }) do + links = virtual_location_links(metadata) + fallback_links = if is_online, do: [event_url], else: [] + links = if length(links) > 0, do: Enum.map(links, & &1.value), else: fallback_links + + locations ++ + Enum.map( + links, + &%{ + "@type" => "VirtualLocation", + "url" => &1 + } + ) end - defp render_location(_), do: nil + defp render_virtual_location(locations, _), do: locations defp render_address(%{physical_address: %Address{} = address}), do: render_one(address, ObjectView, "address.json", as: :address) defp render_address(_), do: nil - @livestream_keys ["mz:live", "mz:visio"] + defp event_attendance_mode(:online), do: "https://schema.org/OnlineEventAttendanceMode" + defp event_attendance_mode(:offline), do: "https://schema.org/OfflineEventAttendanceMode" + defp event_attendance_mode(:mixed), do: "https://schema.org/MixedEventAttendanceMode" - defp eventAttendanceMode(%Event{options: %EventOptions{is_online: true}}), - do: "https://schema.org/OnlineEventAttendanceMode" + defp attendance_mode(%Event{options: %EventOptions{is_online: true}}), + do: :online - defp eventAttendanceMode(%Event{physical_address: %Address{}, metadata: metadata}) do - if Enum.any?(metadata, &String.contains?(&1["key"], @livestream_keys)) do - "https://schema.org/MixedEventAttendanceMode" + defp attendance_mode(%Event{physical_address: %Address{}, metadata: metadata}) do + if metadata |> virtual_location_links() |> length() > 0 do + :mixed else - "https://schema.org/OfflineEventAttendanceMode" + :offline end end - defp eventAttendanceMode(%Event{}), - do: "https://schema.org/OfflineEventAttendanceMode" + defp attendance_mode(%Event{}), + do: :offline + + @livestream_keys ["mz:live", "mz:visio"] + @spec virtual_location_links(list()) :: list() + defp virtual_location_links(metadata), + do: Enum.filter(metadata, &String.contains?(&1.key, @livestream_keys)) end From 200adf272c0a8e904be21b5f63bf04e7d87cc266 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 15 Nov 2021 13:37:00 +0100 Subject: [PATCH 04/18] Move release package at correct path for CI upload Signed-off-by: Thomas Citharel --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c0cfe7e0f..38f75c481 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -299,12 +299,13 @@ multi-arch-release: - docker buildx build --platform linux/${ARCH} --output type=local,dest=releases --build-arg APP_ASSET=${APP_ASSET} -f docker/multiarch/Dockerfile . - ls -alh releases/mobilizon/ - du -sh releases/mobilizon/${APP_ASSET} + - mv releases/mobilizon/${APP_ASSET} . tags: - "privileged" artifacts: expire_in: 30 days paths: - - releases/mobilizon/${APP_ASSET} + - ${APP_ASSET} parallel: matrix: - ARCH: ["arm", "arm64"] From be1664ec8563dcca5b341022cf054d7139beb1c2 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 15 Nov 2021 15:56:28 +0100 Subject: [PATCH 05/18] Improve sending pending participation notifications Signed-off-by: Thomas Citharel --- lib/federation/activity_pub/types/events.ex | 1 + lib/mobilizon/events/events.ex | 2 +- lib/service/notifications/scheduler.ex | 24 +- lib/service/workers/notification.ex | 5 +- lib/web/email/notification.ex | 3 +- .../participation/card/_metadata.html.heex | 52 +- .../participation/card/_metadata.text.eex | 2 - .../email/participation/event_card.html.heex | 49 +- .../email/participation/event_card.text.eex | 2 + ...nding_participation_notification.html.heex | 9 +- ...ending_participation_notification.text.eex | 4 +- priv/gettext/ar/LC_MESSAGES/default.po | 52 +- priv/gettext/ar/LC_MESSAGES/errors.po | 2 +- priv/gettext/be/LC_MESSAGES/default.po | 46 +- priv/gettext/be/LC_MESSAGES/errors.po | 2 +- priv/gettext/ca/LC_MESSAGES/default.po | 48 +- priv/gettext/ca/LC_MESSAGES/errors.po | 2 +- priv/gettext/cs/LC_MESSAGES/default.po | 46 +- priv/gettext/cs/LC_MESSAGES/errors.po | 2 +- priv/gettext/de/LC_MESSAGES/default.po | 44 +- priv/gettext/de/LC_MESSAGES/errors.po | 2 +- priv/gettext/default.pot | 40 +- priv/gettext/en/LC_MESSAGES/default.po | 44 +- priv/gettext/en/LC_MESSAGES/errors.po | 2 +- priv/gettext/errors.pot | 2 +- priv/gettext/es/LC_MESSAGES/activity.po | 108 +-- priv/gettext/es/LC_MESSAGES/default.po | 615 +++++++++--------- priv/gettext/es/LC_MESSAGES/errors.po | 364 +++++------ priv/gettext/fi/LC_MESSAGES/default.po | 46 +- priv/gettext/fi/LC_MESSAGES/errors.po | 2 +- priv/gettext/fr/LC_MESSAGES/activity.po | 209 +++--- priv/gettext/fr/LC_MESSAGES/default.po | 36 +- priv/gettext/fr/LC_MESSAGES/errors.po | 246 ++++++- priv/gettext/gd/LC_MESSAGES/default.po | 48 +- priv/gettext/gd/LC_MESSAGES/errors.po | 2 +- priv/gettext/gl/LC_MESSAGES/default.po | 48 +- priv/gettext/gl/LC_MESSAGES/errors.po | 2 +- priv/gettext/hu/LC_MESSAGES/default.po | 44 +- priv/gettext/hu/LC_MESSAGES/errors.po | 2 +- priv/gettext/id/LC_MESSAGES/default.po | 42 +- priv/gettext/id/LC_MESSAGES/errors.po | 2 +- priv/gettext/it/LC_MESSAGES/default.po | 48 +- priv/gettext/it/LC_MESSAGES/errors.po | 2 +- priv/gettext/ja/LC_MESSAGES/default.po | 42 +- priv/gettext/ja/LC_MESSAGES/errors.po | 2 +- priv/gettext/nl/LC_MESSAGES/default.po | 44 +- priv/gettext/nl/LC_MESSAGES/errors.po | 2 +- priv/gettext/nn/LC_MESSAGES/default.po | 48 +- priv/gettext/nn/LC_MESSAGES/errors.po | 2 +- priv/gettext/oc/LC_MESSAGES/default.po | 44 +- priv/gettext/oc/LC_MESSAGES/errors.po | 2 +- priv/gettext/pl/LC_MESSAGES/default.po | 54 +- priv/gettext/pl/LC_MESSAGES/errors.po | 2 +- priv/gettext/pt/LC_MESSAGES/default.po | 44 +- priv/gettext/pt/LC_MESSAGES/errors.po | 2 +- priv/gettext/pt_BR/LC_MESSAGES/default.po | 44 +- priv/gettext/pt_BR/LC_MESSAGES/errors.po | 2 +- priv/gettext/ru/LC_MESSAGES/default.po | 54 +- priv/gettext/ru/LC_MESSAGES/errors.po | 2 +- priv/gettext/sv/LC_MESSAGES/default.po | 44 +- priv/gettext/sv/LC_MESSAGES/errors.po | 2 +- test/service/notifications/scheduler_test.exs | 1 + test/service/workers/notification_test.exs | 8 +- 63 files changed, 1544 insertions(+), 1254 deletions(-) diff --git a/lib/federation/activity_pub/types/events.ex b/lib/federation/activity_pub/types/events.ex index 52bf0c622..f9ec1f13a 100644 --- a/lib/federation/activity_pub/types/events.ex +++ b/lib/federation/activity_pub/types/events.ex @@ -231,6 +231,7 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Events do Mobilizon.Events.get_default_participant_role(event) == :not_approved && role == :not_approved -> + Logger.debug("Scheduling a notification to notify of a new pending participation") Scheduler.pending_participation_notification(event) {:ok, activity_data, participant} diff --git a/lib/mobilizon/events/events.ex b/lib/mobilizon/events/events.ex index cae534bd7..ba01ed23a 100644 --- a/lib/mobilizon/events/events.ex +++ b/lib/mobilizon/events/events.ex @@ -327,10 +327,10 @@ defmodule Mobilizon.Events do @spec build_changes(map()) :: map() defp build_changes(changes) do changes - |> Map.take(Event.__schema__(:fields)) |> maybe_add_field(:physical_address) |> maybe_add_field(:options) |> maybe_add_field(:metadata) + |> Map.drop(Event.__schema__(:associations) -- [:physical_address, :options, :metadata]) end @spec maybe_add_field(map(), atom()) :: map() diff --git a/lib/service/notifications/scheduler.ex b/lib/service/notifications/scheduler.ex index 6facab5a3..94d670ed0 100644 --- a/lib/service/notifications/scheduler.ex +++ b/lib/service/notifications/scheduler.ex @@ -182,20 +182,39 @@ defmodule Mobilizon.Service.Notifications.Scheduler do event_id: event_id } + Logger.debug("Determining when we should send the pending participation notification") + cond do # Sending directly send_at == :direct -> - Notification.enqueue(:pending_participation_notification, params) + Logger.debug("The notification will be sent straight away!") + + {:ok, %Oban.Job{id: job_id}} = + Notification.enqueue(:pending_participation_notification, params) + + Logger.debug("Job scheduled with ID #{job_id}") # Not sending is_nil(send_at) -> + Logger.debug("We will not send any notification") {:ok, nil} # Sending to calculated time DateTime.compare(begins_on, send_at) == :gt -> - Notification.enqueue(:pending_participation_notification, params, scheduled_at: send_at) + Logger.debug("We will send the notification on #{send_at}") + + {:ok, %Oban.Job{id: job_id}} = + Notification.enqueue(:pending_participation_notification, params, + scheduled_at: send_at + ) + + Logger.debug("Job scheduled with ID #{job_id}") true -> + Logger.debug( + "Something went wrong when determining when to send the pending participation notification" + ) + {:ok, nil} end else @@ -302,6 +321,7 @@ defmodule Mobilizon.Service.Notifications.Scheduler do :one_hour -> compare_to + |> DateTime.add(3600) |> DateTime.shift_zone!(timezone) |> (&%{&1 | minute: 0, second: 0, microsecond: {0, 0}}).() end diff --git a/lib/service/workers/notification.ex b/lib/service/workers/notification.ex index 10d13c09b..46d3310ed 100644 --- a/lib/service/workers/notification.ex +++ b/lib/service/workers/notification.ex @@ -9,6 +9,7 @@ defmodule Mobilizon.Service.Workers.Notification do alias Mobilizon.Storage.Page alias Mobilizon.Users.{Setting, User} alias Mobilizon.Web.Email.{Mailer, Notification} + require Logger import Mobilizon.Service.DateTime, only: [ @@ -114,7 +115,7 @@ defmodule Mobilizon.Service.Workers.Notification do "event_id" => event_id } }) do - with %User{} = user <- Users.get_user(user_id), + with %User{} = user <- Users.get_user_with_settings!(user_id), {:ok, %Event{} = event} <- Events.get_event_with_preload(event_id), %Page{total: total} when total > 0 <- Events.list_participants_for_event(event_id, [:not_approved]) do @@ -125,8 +126,8 @@ defmodule Mobilizon.Service.Workers.Notification do :ok else err -> - require Logger Logger.debug(inspect(err)) + err end end diff --git a/lib/web/email/notification.ex b/lib/web/email/notification.ex index cffb20b7b..f548bf602 100644 --- a/lib/web/email/notification.ex +++ b/lib/web/email/notification.ex @@ -92,7 +92,7 @@ defmodule Mobilizon.Web.Email.Notification do @spec pending_participation_notification(User.t(), Event.t(), pos_integer()) :: Bamboo.Email.t() def pending_participation_notification( - %User{locale: locale, email: email}, + %User{locale: locale, email: email, settings: %Setting{timezone: timezone}}, %Event{} = event, total ) do @@ -111,6 +111,7 @@ defmodule Mobilizon.Web.Email.Notification do |> assign(:locale, locale) |> assign(:event, event) |> assign(:total, total) + |> assign(:timezone, timezone) |> assign(:subject, subject) |> render(:pending_participation_notification) end diff --git a/lib/web/templates/email/participation/card/_metadata.html.heex b/lib/web/templates/email/participation/card/_metadata.html.heex index 8f22c6d20..63e6b03d7 100644 --- a/lib/web/templates/email/participation/card/_metadata.html.heex +++ b/lib/web/templates/email/participation/card/_metadata.html.heex @@ -16,7 +16,7 @@ - + @@ -29,7 +29,7 @@ <%= if @event.physical_address do %> - + @@ -42,7 +42,7 @@ <% end %> <%= if @event.options.is_online do %> - + @@ -55,52 +55,6 @@ - <%= case @action do %> - <% "participation" -> %> -
- - - - - - -
- - - - - - -
- - <%= gettext("Manage your participation") %> - -
-
-
- <% "event" -> %> -
- - - - - - -
- - - - - - -
- - <%= gettext("Participate") %> - -
-
-
- <% end %> diff --git a/lib/web/templates/email/participation/card/_metadata.text.eex b/lib/web/templates/email/participation/card/_metadata.text.eex index 1795cd404..6694d741b 100644 --- a/lib/web/templates/email/participation/card/_metadata.text.eex +++ b/lib/web/templates/email/participation/card/_metadata.text.eex @@ -1,4 +1,2 @@ <%= gettext("Date:") %> <%= render("date/event_tz_date_range.text", event: @event, start_date: datetime_tz_convert(@event.begins_on, @event.options.timezone), end_date: datetime_tz_convert(@event.ends_on, @event.options.timezone), timezone: @timezone, locale: @locale) %> <%= gettext("Address:") %> <%= if @event.physical_address do %><%= render_address(@event.physical_address) %><% end %><%= if @event.options.is_online do %><%= gettext "Online event" %><% end %> - -<%= case @action do %><% "participation" -> %><%= gettext("Manage your participation:") %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid) %><% "event" -> %><%= gettext("Participate:") %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid) %><% end %> \ No newline at end of file diff --git a/lib/web/templates/email/participation/event_card.html.heex b/lib/web/templates/email/participation/event_card.html.heex index 789ee9067..f799cf3a3 100644 --- a/lib/web/templates/email/participation/event_card.html.heex +++ b/lib/web/templates/email/participation/event_card.html.heex @@ -5,7 +5,54 @@ <% end %> <%= render("participation/card/_title.html", event: @event) %> <%= render("participation/card/_metadata.html", event: @event, timezone: @timezone, locale: @locale, action: @action) %> -<%= if @event.description do %> +<%= case @action do %> + <% "participation" -> %> +
+ + + + + + +
+ + + + + + +
+ + <%= gettext("Manage your participation") %> + +
+
+
+ <% "event" -> %> +
+ + + + + + +
+ + + + + + +
+ + <%= gettext("Participate") %> + +
+
+
+ <% nil -> %> +<% end %> +<%= if @event.description && @action != nil do %>

<%= gettext("Details") %> diff --git a/lib/web/templates/email/participation/event_card.text.eex b/lib/web/templates/email/participation/event_card.text.eex index 98d4c6f71..f5520ee4a 100644 --- a/lib/web/templates/email/participation/event_card.text.eex +++ b/lib/web/templates/email/participation/event_card.text.eex @@ -2,6 +2,8 @@ <%= render("participation/card/_metadata.text", event: @event, timezone: @timezone, locale: @locale, action: @action) %> +<%= case @action do %><% "participation" -> %><%= gettext("Manage your participation:") %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid) %><% "event" -> %><%= gettext("Participate:") %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid) %><% nil -> %><% end %> + <%= if @event.description do %><%= gettext("Details:") %> <%= process_description(@event.description) %> <%= if String.length(@event.description) > 200 do %><%= gettext("Read more : %{url}", url: Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid)) |> raw %><% end %><% end %> \ No newline at end of file diff --git a/lib/web/templates/email/pending_participation_notification.html.heex b/lib/web/templates/email/pending_participation_notification.html.heex index aafdc87d2..5e84b2ff1 100644 --- a/lib/web/templates/email/pending_participation_notification.html.heex +++ b/lib/web/templates/email/pending_participation_notification.html.heex @@ -35,15 +35,20 @@

- <%= ngettext "You have one pending attendance request to process:", "You have %{number_participation_requests} attendance requests to process:", @total, number_participation_requests: @total %> + <%= ngettext "You have one pending attendance request to process for the following event:", "You have %{number_participation_requests} attendance requests to process for the following event:", @total, number_participation_requests: @total %>

+ + + <%= render("participation/event_card.html", event: @event, timezone: @timezone, locale: @locale, action: nil) %> + + -
+
diff --git a/lib/web/templates/email/pending_participation_notification.text.eex b/lib/web/templates/email/pending_participation_notification.text.eex index 6a0f31c77..961f32d93 100644 --- a/lib/web/templates/email/pending_participation_notification.text.eex +++ b/lib/web/templates/email/pending_participation_notification.text.eex @@ -1,7 +1,9 @@ <%= gettext "A request is pending!" %> == -<%= ngettext "You have one pending attendance request to process:", "You have %{number_participation_requests} attendance requests to process:", @total, number_participation_requests: @total %> +<%= ngettext "You have one pending attendance request to process for the following event:", "You have %{number_participation_requests} attendance requests to process for the following event:", @total, number_participation_requests: @total %> + +<%= render("participation/event_card.text", event: @event, timezone: @timezone, locale: @locale, action: nil) %> <%= gettext "Manage pending requests" %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid) <> "/participations" %> diff --git a/priv/gettext/ar/LC_MESSAGES/default.po b/priv/gettext/ar/LC_MESSAGES/default.po index ba33d637b..f06a83371 100644 --- a/priv/gettext/ar/LC_MESSAGES/default.po +++ b/priv/gettext/ar/LC_MESSAGES/default.po @@ -789,18 +789,6 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -903,8 +891,8 @@ msgid "Location address was removed" msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "" @@ -1015,8 +1003,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" @@ -1543,7 +1531,7 @@ msgid "On the agenda this week" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1554,7 +1542,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1565,7 +1553,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1596,7 +1584,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1606,7 +1594,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1617,17 +1605,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "تم قبول المشاركة" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "تم قبول المشاركة" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -1693,12 +1681,24 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" diff --git a/priv/gettext/ar/LC_MESSAGES/errors.po b/priv/gettext/ar/LC_MESSAGES/errors.po index 999386182..a6b254716 100644 --- a/priv/gettext/ar/LC_MESSAGES/errors.po +++ b/priv/gettext/ar/LC_MESSAGES/errors.po @@ -829,7 +829,7 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" diff --git a/priv/gettext/be/LC_MESSAGES/default.po b/priv/gettext/be/LC_MESSAGES/default.po index c00a68451..765e28688 100644 --- a/priv/gettext/be/LC_MESSAGES/default.po +++ b/priv/gettext/be/LC_MESSAGES/default.po @@ -768,15 +768,6 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -879,8 +870,8 @@ msgid "Location address was removed" msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "" @@ -991,8 +982,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" @@ -1519,7 +1510,7 @@ msgid "On the agenda this week" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1530,7 +1521,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1541,7 +1532,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1572,7 +1563,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1582,7 +1573,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1593,17 +1584,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -1669,12 +1660,21 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" diff --git a/priv/gettext/be/LC_MESSAGES/errors.po b/priv/gettext/be/LC_MESSAGES/errors.po index 58275332f..684216ca0 100644 --- a/priv/gettext/be/LC_MESSAGES/errors.po +++ b/priv/gettext/be/LC_MESSAGES/errors.po @@ -803,7 +803,7 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" diff --git a/priv/gettext/ca/LC_MESSAGES/default.po b/priv/gettext/ca/LC_MESSAGES/default.po index 611d7a565..0e72a463c 100644 --- a/priv/gettext/ca/LC_MESSAGES/default.po +++ b/priv/gettext/ca/LC_MESSAGES/default.po @@ -938,16 +938,6 @@ msgstr[1] "" "Si has de canceŀlar la teva participació, accedeix a l'activitat per " "l'enllaç de dalt i clica al botó de participació." -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "Tens una soŀlicitud de participació pendent de resoldre:" -msgstr[1] "" -"Tens %{number_participation_requests} soŀlicituds de participació pendents " -"de resoldre:" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -1067,8 +1057,8 @@ msgid "Location address was removed" msgstr "L'adreça postal ha estat esborrada" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "Gestiona les soŀlicituds pendents" @@ -1183,8 +1173,8 @@ msgstr "" "de l'activitat amb l'enllaç d'amunt i clica al botó de participació." #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" "Has rebut aquest correu perquè tens configurat de rebre notificacions per a " @@ -1775,7 +1765,7 @@ msgid "On the agenda this week" msgstr "Una activitat planificada per aquesta setmana" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1786,7 +1776,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1797,7 +1787,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1828,7 +1818,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1838,7 +1828,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1849,17 +1839,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "S'ha aprovat la participació" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "S'ha aprovat la participació" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -1925,12 +1915,22 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "Tens una soŀlicitud de participació pendent de resoldre:" +msgstr[1] "" +"Tens %{number_participation_requests} soŀlicituds de participació pendents " +"de resoldre:" diff --git a/priv/gettext/ca/LC_MESSAGES/errors.po b/priv/gettext/ca/LC_MESSAGES/errors.po index bdaa6bd63..93886fba3 100644 --- a/priv/gettext/ca/LC_MESSAGES/errors.po +++ b/priv/gettext/ca/LC_MESSAGES/errors.po @@ -804,7 +804,7 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" diff --git a/priv/gettext/cs/LC_MESSAGES/default.po b/priv/gettext/cs/LC_MESSAGES/default.po index 2a77e9b88..b3b85bd6d 100644 --- a/priv/gettext/cs/LC_MESSAGES/default.po +++ b/priv/gettext/cs/LC_MESSAGES/default.po @@ -768,15 +768,6 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -879,8 +870,8 @@ msgid "Location address was removed" msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "" @@ -991,8 +982,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" @@ -1519,7 +1510,7 @@ msgid "On the agenda this week" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1530,7 +1521,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1541,7 +1532,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1572,7 +1563,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1582,7 +1573,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1593,17 +1584,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -1669,12 +1660,21 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" diff --git a/priv/gettext/cs/LC_MESSAGES/errors.po b/priv/gettext/cs/LC_MESSAGES/errors.po index 29e4d436e..3cb79def0 100644 --- a/priv/gettext/cs/LC_MESSAGES/errors.po +++ b/priv/gettext/cs/LC_MESSAGES/errors.po @@ -803,7 +803,7 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po index 68f30fbd9..b74e00bd3 100644 --- a/priv/gettext/de/LC_MESSAGES/default.po +++ b/priv/gettext/de/LC_MESSAGES/default.po @@ -972,14 +972,6 @@ msgstr[1] "" "gehe einfach über obenstehenden Link auf die Veranstaltungs-Seite und klicke " "auf den Teilnahme-Button." -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "Sie haben eine ausstehende Anwesenheitsanforderung zu bearbeiten:" -msgstr[1] "Sie haben %{Anzahl_Teilnahmeanträge} Teilnahmeanträge zu bearbeiten:" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -1100,8 +1092,8 @@ msgid "Location address was removed" msgstr "Adresse wurde entfernt" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "Ausstehende Anfragen verwalten" @@ -1222,8 +1214,8 @@ msgstr "" "Schaltfläche \"Teilnehmen\"." #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" "Sie erhalten diese E-Mail, weil Sie sich dafür entschieden haben, " @@ -1887,7 +1879,7 @@ msgid "On the agenda this week" msgstr "Ein Event ist für diese Woche geplant" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1898,7 +1890,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1909,7 +1901,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1940,7 +1932,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1950,7 +1942,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1961,17 +1953,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "Teilnahme bestätigt" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "Teilnahme bestätigt" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -2037,12 +2029,20 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "Sie haben eine ausstehende Anwesenheitsanforderung zu bearbeiten:" +msgstr[1] "Sie haben %{Anzahl_Teilnahmeanträge} Teilnahmeanträge zu bearbeiten:" diff --git a/priv/gettext/de/LC_MESSAGES/errors.po b/priv/gettext/de/LC_MESSAGES/errors.po index 77891c4c1..378600043 100644 --- a/priv/gettext/de/LC_MESSAGES/errors.po +++ b/priv/gettext/de/LC_MESSAGES/errors.po @@ -831,7 +831,7 @@ msgid "You don't have the right to remove this member." msgstr "Sie haben nicht das Recht, dieses Mitglied zu entfernen." #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "Dieser Benutzername ist bereits vergeben." diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index 324463e19..19b1e8079 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -748,14 +748,6 @@ msgid_plural "Would you wish to cancel your attendance to one or several events, msgstr[0] "" msgstr[1] "" -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "" -msgstr[1] "" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -858,8 +850,8 @@ msgid "Location address was removed" msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "" @@ -970,8 +962,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" @@ -1498,7 +1490,7 @@ msgid "On the agenda this week" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1509,7 +1501,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1520,7 +1512,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1551,7 +1543,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1561,7 +1553,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1572,17 +1564,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -1657,3 +1649,11 @@ msgstr "" #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "" +msgstr[1] "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index 384cbfa84..956af4305 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -801,14 +801,6 @@ msgid_plural "Would you wish to cancel your attendance to one or several events, msgstr[0] "If you need to cancel your participation, just access the event page through link above and click on the participation button." msgstr[1] "If you need to cancel your participation, just access the event page through link above and click on the participation button." -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "" -msgstr[1] "" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -911,8 +903,8 @@ msgid "Location address was removed" msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "" @@ -1023,8 +1015,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" @@ -1551,7 +1543,7 @@ msgid "On the agenda this week" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1562,7 +1554,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1573,7 +1565,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1604,7 +1596,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1614,7 +1606,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1625,17 +1617,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "Participant" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "Participant" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -1701,12 +1693,20 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "" +msgstr[1] "" diff --git a/priv/gettext/en/LC_MESSAGES/errors.po b/priv/gettext/en/LC_MESSAGES/errors.po index 254c2a680..9bb8d2c64 100644 --- a/priv/gettext/en/LC_MESSAGES/errors.po +++ b/priv/gettext/en/LC_MESSAGES/errors.po @@ -807,7 +807,7 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" diff --git a/priv/gettext/errors.pot b/priv/gettext/errors.pot index 4fa6730d3..56ad423bb 100644 --- a/priv/gettext/errors.pot +++ b/priv/gettext/errors.pot @@ -804,7 +804,7 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" diff --git a/priv/gettext/es/LC_MESSAGES/activity.po b/priv/gettext/es/LC_MESSAGES/activity.po index 8299603fe..28526f943 100644 --- a/priv/gettext/es/LC_MESSAGES/activity.po +++ b/priv/gettext/es/LC_MESSAGES/activity.po @@ -18,324 +18,324 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.8.1\n" +#, elixir-format #: lib/service/activity/renderer/member.ex:38 #: lib/web/templates/email/activity/_member_activity_item.html.heex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 -#, elixir-format msgid "%{member} accepted the invitation to join the group." msgstr "%{member} aceptó la invitación para unirse al grupo." +#, elixir-format #: lib/service/activity/renderer/member.ex:42 #: lib/web/templates/email/activity/_member_activity_item.html.heex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 -#, elixir-format msgid "%{member} rejected the invitation to join the group." msgstr "%{member} rechazó la invitación para unirse al grupo." +#, elixir-format #: lib/service/activity/renderer/member.ex:30 #: lib/web/templates/email/activity/_member_activity_item.html.heex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 -#, elixir-format msgid "%{member} requested to join the group." msgstr "%{member} solicitó unirse al grupo." +#, elixir-format #: lib/service/activity/renderer/member.ex:34 #: lib/web/templates/email/activity/_member_activity_item.html.heex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 -#, elixir-format msgid "%{member} was invited by %{profile}." msgstr "%{member} fue invitado por %{profile}." +#, elixir-format #: lib/service/activity/renderer/member.ex:50 #: lib/web/templates/email/activity/_member_activity_item.html.heex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 -#, elixir-format msgid "%{profile} added the member %{member}." msgstr "%{profile} agregó el miembro %{member}." +#, elixir-format #: lib/service/activity/renderer/discussion.ex:65 #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 -#, elixir-format msgid "%{profile} archived the discussion %{discussion}." msgstr "%{profile} archivó la discusión %{discussion}." +#, elixir-format #: lib/service/activity/renderer/discussion.ex:25 #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:4 lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 -#, elixir-format msgid "%{profile} created the discussion %{discussion}." msgstr "%{profile} creó la discusión %{discussion}." +#, elixir-format #: lib/service/activity/renderer/resource.ex:24 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 -#, elixir-format msgid "%{profile} created the folder %{resource}." msgstr "%{profile} creó la carpeta %{resource}." +#, elixir-format #: lib/web/templates/email/activity/_group_activity_item.html.heex:4 #: lib/web/templates/email/activity/_group_activity_item.text.eex:1 -#, elixir-format msgid "%{profile} created the group %{group}." msgstr "%{profile} crfeó el grupo %{group}." +#, elixir-format #: lib/service/activity/renderer/resource.ex:33 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 -#, elixir-format msgid "%{profile} created the resource %{resource}." msgstr "%{profile} creó el recurso %{resource}." +#, elixir-format #: lib/service/activity/renderer/discussion.ex:75 #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 -#, elixir-format msgid "%{profile} deleted the discussion %{discussion}." msgstr "%{profile} eliminó la discusión %{discussion}." +#, elixir-format #: lib/service/activity/renderer/resource.ex:97 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 -#, elixir-format msgid "%{profile} deleted the folder %{resource}." msgstr "%{profile} borró la carpeta %{resource}." +#, elixir-format #: lib/service/activity/renderer/resource.ex:106 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 -#, elixir-format msgid "%{profile} deleted the resource %{resource}." msgstr "%{profile} eliminado el recurso %{resource}." +#, elixir-format #: lib/service/activity/renderer/member.ex:66 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 -#, elixir-format msgid "%{profile} excluded member %{member}." msgstr "%{profile }miembro excluido %{member}." +#, elixir-format #: lib/service/activity/renderer/resource.ex:76 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 -#, elixir-format msgid "%{profile} moved the folder %{resource}." msgstr "%{profile} movió la carpeta %{resource}." +#, elixir-format #: lib/service/activity/renderer/resource.ex:85 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 -#, elixir-format msgid "%{profile} moved the resource %{resource}." msgstr "%{profile} movió el recurso %{resource}." +#, elixir-format #: lib/service/activity/renderer/member.ex:70 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 -#, elixir-format msgid "%{profile} quit the group." msgstr "%{profile} abandona el grupo." +#, elixir-format #: lib/service/activity/renderer/discussion.ex:55 #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 -#, elixir-format msgid "%{profile} renamed the discussion %{discussion}." msgstr "%{profile} renombrado la discusión %{discussion}." +#, elixir-format #: lib/service/activity/renderer/resource.ex:45 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 -#, elixir-format msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." msgstr "" "%{profile} ha renombrado la carpeta de %{old_resource_title} a %{resource}." +#, elixir-format #: lib/service/activity/renderer/resource.ex:59 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 -#, elixir-format msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." msgstr "" "%{profile} ha renombrado el recurso de %{old_resource_title} a %{resource}." +#, elixir-format #: lib/service/activity/renderer/discussion.ex:35 #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:18 lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 -#, elixir-format msgid "%{profile} replied to the discussion %{discussion}." msgstr "%{profile} respondió a la discusión %{discussion}." +#, elixir-format #: lib/web/templates/email/activity/_group_activity_item.html.heex:19 #: lib/web/templates/email/activity/_group_activity_item.text.eex:7 -#, elixir-format msgid "%{profile} updated the group %{group}." msgstr "%{profile} actualizó el grupo %{group}." +#, elixir-format #: lib/service/activity/renderer/member.ex:62 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 -#, elixir-format msgid "%{profile} updated the member %{member}." msgstr "%{profile} actualizado el miembro %{member}." +#, elixir-format #: lib/service/activity/renderer/event.ex:23 #: lib/web/templates/email/activity/_event_activity_item.html.heex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 -#, elixir-format msgid "The event %{event} was created by %{profile}." msgstr "El evento %{event} fue creado por %{profile}." +#, elixir-format #: lib/service/activity/renderer/event.ex:43 #: lib/web/templates/email/activity/_event_activity_item.html.heex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 -#, elixir-format msgid "The event %{event} was deleted by %{profile}." msgstr "El evento% {event} fue eliminado por % {profile}." +#, elixir-format #: lib/service/activity/renderer/event.ex:33 #: lib/web/templates/email/activity/_event_activity_item.html.heex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 -#, elixir-format msgid "The event %{event} was updated by %{profile}." msgstr "El evento %{event} fue actualizado por %{profile}." +#, elixir-format #: lib/web/templates/email/activity/_post_activity_item.html.heex:4 #: lib/web/templates/email/activity/_post_activity_item.text.eex:1 -#, elixir-format msgid "The post %{post} was created by %{profile}." msgstr "El cargo %{post} fue creado por %{profile}." +#, elixir-format #: lib/web/templates/email/activity/_post_activity_item.html.heex:34 #: lib/web/templates/email/activity/_post_activity_item.text.eex:13 -#, elixir-format msgid "The post %{post} was deleted by %{profile}." msgstr "El post %{post} fue eliminado por %{profile}." +#, elixir-format #: lib/web/templates/email/activity/_post_activity_item.html.heex:19 #: lib/web/templates/email/activity/_post_activity_item.text.eex:7 -#, elixir-format msgid "The post %{post} was updated by %{profile}." msgstr "El post %{post} fue actualizado por %{profile}." +#, elixir-format #: lib/service/activity/renderer/member.ex:46 #: lib/web/templates/email/activity/_member_activity_item.html.heex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 -#, elixir-format msgid "%{member} joined the group." msgstr "%{member} se unió al grupo." +#, elixir-format #: lib/service/activity/renderer/event.ex:63 #: lib/web/templates/email/activity/_event_activity_item.html.heex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 -#, elixir-format msgid "%{profile} posted a comment on the event %{event}." msgstr "%{profile} publicó un comentario sobre el evento %{event}." +#, elixir-format #: lib/service/activity/renderer/event.ex:54 #: lib/web/templates/email/activity/_event_activity_item.html.heex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 -#, elixir-format msgid "%{profile} replied to a comment on the event %{event}." msgstr "%{profile} respondió a un comentario sobre el evento %{event}." -#: lib/web/templates/email/email_direct_activity.text.eex:27 #, elixir-format +#: lib/web/templates/email/email_direct_activity.text.eex:27 msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." msgstr "" "¿No quieres recibir notificaciones de actividad? Puede cambiar la frecuencia " "o deshabilitarlos en su configuración." +#, elixir-format #: lib/web/templates/email/email_direct_activity.html.heex:135 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "Ver una actividad más" msgstr[1] "Ver %{count} actividades mas" +#, elixir-format #: lib/web/templates/email/email_direct_activity.html.heex:44 #: lib/web/templates/email/email_direct_activity.html.heex:46 lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "¡Ha habido una actividad!" msgstr[1] "¡Ha habido algopúnas actividades!" -#: lib/service/activity/renderer/renderer.ex:46 #, elixir-format +#: lib/service/activity/renderer/renderer.ex:46 msgid "Activity on %{instance}" msgstr "Actividad en %{instance}" +#, elixir-format #: lib/service/activity/renderer/comment.ex:38 #: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 lib/web/templates/email/activity/_comment_activity_item.text.eex:7 #: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 -#, elixir-format msgid "%{profile} has posted an announcement under event %{event}." msgstr "%{profile} ha publicado un anuncio en el evento %{event}." +#, elixir-format #: lib/service/activity/renderer/comment.ex:24 #: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 lib/web/templates/email/activity/_comment_activity_item.text.eex:1 -#, elixir-format msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "%{profile} te mencionó en un comentario en el evento %{event}." -#: lib/service/activity/renderer/discussion.ex:45 #, elixir-format +#: lib/service/activity/renderer/discussion.ex:45 msgid "%{profile} mentionned you in the discussion %{discussion}." msgstr "%{profile}te mencioné en la discusión %{discussion}." -#: lib/web/templates/email/email_direct_activity.html.heex:155 #, elixir-format +#: lib/web/templates/email/email_direct_activity.html.heex:155 msgid "Don't want to receive activity notifications? You may change frequency or disable them in %{tag_start}your settings%{tag_end}." msgstr "" "¿No quieres recibir notificaciones de actividad? Puede cambiar la frecuencia " "o deshabilitarlos en su configuración." +#, elixir-format #: lib/web/templates/email/email_direct_activity.html.heex:42 #: lib/web/templates/email/email_direct_activity.text.eex:5 -#, elixir-format msgid "Here's your weekly activity recap" msgstr "Aquí está su resumen de actividad semanal" -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 #, elixir-format +#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "Actividad en %{instance}" -#: lib/web/email/activity.ex:126 #, elixir-format +#: lib/web/email/activity.ex:126 msgid "Daily activity recap for %{instance}" msgstr "Resumen de actividad diaria en %{instance}" +#, elixir-format #: lib/web/templates/email/email_direct_activity.html.heex:40 #: lib/web/templates/email/email_direct_activity.text.eex:4 -#, elixir-format msgid "Here's your daily activity recap" msgstr "Aquí está su resumen de actividad diaria" -#: lib/web/email/activity.ex:133 #, elixir-format +#: lib/web/email/activity.ex:133 msgid "Weekly activity recap for %{instance}" msgstr "Resumen de actividad semanal para %{instance}" +#, elixir-format #: lib/service/activity/renderer/comment.ex:66 #: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 -#, elixir-format msgid "%{profile} has posted a new comment under your event %{event}." msgstr "%{profile} ha publicado un nuevo comentario en tu evento %{event}." +#, elixir-format #: lib/service/activity/renderer/comment.ex:53 #: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 -#, elixir-format msgid "%{profile} has posted a new reply under your event %{event}." msgstr "%{profile} ha publicado una nueva respuesta en tu evento %{event}." -#: lib/web/email/activity.ex:46 #, elixir-format +#: lib/web/email/activity.ex:46 msgid "Announcement for your event %{event}" msgstr "Anuncio para su evento %{event}" -#: lib/service/activity/renderer/group.ex:23 #, elixir-format +#: lib/service/activity/renderer/group.ex:23 msgid "The group %{group} was updated by %{profile}." msgstr "El post %{post} fue actualizado por %{profile}." -#: lib/service/activity/renderer/post.ex:47 #, elixir-format +#: lib/service/activity/renderer/post.ex:47 msgid "The post %{post} from group %{group} was deleted by %{profile}." msgstr "El post %{post} del grupo %{group} fue actualizado por %{profile}." -#: lib/service/activity/renderer/post.ex:31 #, elixir-format +#: lib/service/activity/renderer/post.ex:31 msgid "The post %{post} from group %{group} was published by %{profile}." msgstr "El post %{post} del grupo %{group} fue actualizado por %{profile}." -#: lib/service/activity/renderer/post.ex:39 #, elixir-format +#: lib/service/activity/renderer/post.ex:39 msgid "The post %{post} from group %{group} was updated by %{profile}." msgstr "El post %{post} del grupo %{group} fue actualizado por %{profile}." -#: lib/service/activity/renderer/member.ex:54 #, elixir-format +#: lib/service/activity/renderer/member.ex:54 msgid "%{profile} approved the membership request from %{member}." msgstr "%{profile} actualizado el miembro %{member}." -#: lib/service/activity/renderer/member.ex:58 #, elixir-format +#: lib/service/activity/renderer/member.ex:58 msgid "%{profile} rejected the membership request from %{member}." msgstr "%{profile} rechazó la solicitud de inscripción de %{member}." diff --git a/priv/gettext/es/LC_MESSAGES/default.po b/priv/gettext/es/LC_MESSAGES/default.po index 205758807..1e9c946d2 100644 --- a/priv/gettext/es/LC_MESSAGES/default.po +++ b/priv/gettext/es/LC_MESSAGES/default.po @@ -14,267 +14,267 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.8.1\n" -#: lib/web/templates/email/password_reset.html.heex:48 #, elixir-format +#: lib/web/templates/email/password_reset.html.heex:48 msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" "Si no solicitaste este correo, simplemente ignóralo. Su contraseña no " "cambiará al menos que use el siguiente enlace para crear una nueva." -#: lib/web/templates/email/report.html.heex:74 #, elixir-format +#: lib/web/templates/email/report.html.heex:74 msgid "%{title} by %{creator}" msgstr "%{title} por %{creator}" -#: lib/web/templates/email/registration_confirmation.html.heex:58 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.heex:58 msgid "Activate my account" msgstr "Activar mi cuenta" +#, elixir-format #: lib/web/templates/email/email.html.heex:120 #: lib/web/templates/email/email.text.eex:9 -#, elixir-format msgid "Ask the community on Framacolibri" msgstr "Preguntar a la comunidad en framacolibri" -#: lib/web/templates/email/report.text.eex:15 #, elixir-format +#: lib/web/templates/email/report.text.eex:15 msgid "Comments" msgstr "Comentarios" +#, elixir-format #: lib/web/templates/email/report.html.heex:72 #: lib/web/templates/email/report.text.eex:11 -#, elixir-format msgid "Event" msgstr "Evento" -#: lib/web/email/user.ex:49 #, elixir-format +#: lib/web/email/user.ex:49 msgid "Instructions to reset your password on %{instance}" msgstr "Instrucciones para restablecer su contraseña en %{instance}" -#: lib/web/templates/email/report.text.eex:21 #, elixir-format +#: lib/web/templates/email/report.text.eex:21 msgid "Reason" msgstr "Razón" -#: lib/web/templates/email/password_reset.html.heex:61 #, elixir-format +#: lib/web/templates/email/password_reset.html.heex:61 msgid "Reset Password" msgstr "Restablecer la contraseña" -#: lib/web/templates/email/password_reset.html.heex:41 #, elixir-format +#: lib/web/templates/email/password_reset.html.heex:41 msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." msgstr "" "Restablecer tu contraseña es fácil. Simplemente presione el botón y siga las " "instrucciones. Te tendremos en funcionamiento en poco tiempo." -#: lib/web/email/user.ex:28 #, elixir-format +#: lib/web/email/user.ex:28 msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Instrucciones para confirmar su cuenta Mobilizon en %{instance}" -#: lib/web/email/admin.ex:24 #, elixir-format +#: lib/web/email/admin.ex:24 msgid "New report on Mobilizon instance %{instance}" msgstr "Nuevo informe sobre la instancia Mobilizon %{instance}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.heex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 -#, elixir-format msgid "Go to event page" msgstr "Ir a la página del evento" -#: lib/web/templates/email/report.text.eex:1 #, elixir-format +#: lib/web/templates/email/report.text.eex:1 msgid "New report from %{reporter} on %{instance}" msgstr "Nuevo informe de %{reporter} en %{instance}" -#: lib/web/templates/email/event_participation_approved.text.eex:1 #, elixir-format +#: lib/web/templates/email/event_participation_approved.text.eex:1 msgid "Participation approved" msgstr "Participación aprobada" +#, elixir-format #: lib/web/templates/email/password_reset.html.heex:13 #: lib/web/templates/email/password_reset.text.eex:1 -#, elixir-format msgid "Password reset" msgstr "Restablecer la contraseña" -#: lib/web/templates/email/password_reset.text.eex:7 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:7 msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." msgstr "" "Restablecer tu contraseña es fácil. Simplemente haga clic en el enlace a " "continuación y siga las instrucciones. Estarás operacional en muy poco " "tiempo." -#: lib/web/templates/email/registration_confirmation.text.eex:5 #, elixir-format +#: lib/web/templates/email/registration_confirmation.text.eex:5 msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." msgstr "" "Has creado una cuenta en %{host} con esta dirección de correo electrónico. " "Estás a un clic de activarlo. Si no eras tú, ignora este correo electrónico." -#: lib/web/email/participation.ex:111 #, elixir-format +#: lib/web/email/participation.ex:111 msgid "Your participation to event %{title} has been approved" msgstr "Su participación en el evento %{title} ha sido aprobada" -#: lib/web/email/participation.ex:68 #, elixir-format +#: lib/web/email/participation.ex:68 msgid "Your participation to event %{title} has been rejected" msgstr "Su participación en el evento %{title} ha sido rechazada" -#: lib/web/email/event.ex:46 #, elixir-format +#: lib/web/email/event.ex:46 msgid "Event %{title} has been updated" msgstr "El evento %{title} ha sido actualizado" -#: lib/web/templates/email/event_updated.text.eex:7 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:7 msgid "New title: %{title}" msgstr "Nuevo título: %{title}" -#: lib/web/templates/email/password_reset.text.eex:5 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:5 msgid "You requested a new password for your account on %{instance}." msgstr "Solicitó una nueva contraseña para su cuenta en %{instancia}." -#: lib/web/templates/email/email.html.heex:88 #, elixir-format +#: lib/web/templates/email/email.html.heex:88 msgid "Warning" msgstr "Advertencia" -#: lib/web/email/participation.ex:135 #, elixir-format +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Confirme su participación en el evento %{title}" -#: lib/web/templates/api/privacy.html.heex:75 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:75 msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "Un ID interno para su identidad seleccionada actualmente" -#: lib/web/templates/api/privacy.html.heex:74 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:74 msgctxt "terms" msgid "An internal user ID" msgstr "Un ID de usuario interna" -#: lib/web/templates/api/privacy.html.heex:37 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:37 msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "" "Cualquier información que recopilemos sobre usted puede usarse de las " "siguientes maneras:" -#: lib/web/templates/api/privacy.html.heex:9 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:9 msgctxt "terms" msgid "Basic account information" msgstr "Información básica de la cuenta" -#: lib/web/templates/api/privacy.html.heex:25 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:25 msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "No comparta ninguna información peligrosa a través de Mobilizon." -#: lib/web/templates/api/privacy.html.heex:90 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:90 msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "¿Divulgamos alguna información a terceros?" -#: lib/web/templates/api/privacy.html.heex:68 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:68 msgctxt "terms" msgid "Do we use cookies?" msgstr "¿Usamos cookies?" -#: lib/web/templates/api/privacy.html.heex:51 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:51 msgctxt "terms" msgid "How do we protect your information?" msgstr "¿Cómo protegemos tu información?" -#: lib/web/templates/api/privacy.html.heex:29 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:29 msgctxt "terms" msgid "IPs and other metadata" msgstr "dirección IP y otros metadatos" -#: lib/web/templates/api/privacy.html.heex:17 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:17 msgctxt "terms" msgid "Published events and comments" msgstr "Eventos publicados y comentarios" -#: lib/web/templates/api/privacy.html.heex:64 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:64 msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "" "Conserva las direcciones IP asociadas con usuarios registrados no más de 12 " "meses." -#: lib/web/templates/api/privacy.html.heex:76 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:76 msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Fichas para \"autenticarte\"" -#: lib/web/templates/api/privacy.html.heex:31 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:31 msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "" "También podemos conservar los registros del servidor que incluyen la " "dirección IP de cada solicitud a nuestro servidor." -#: lib/web/templates/api/privacy.html.heex:70 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:70 msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "" "Almacenamos la siguiente información en tu dispositivo cuando te conectas:" -#: lib/web/templates/api/privacy.html.heex:58 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:58 msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Haremos un esfuerzo de buena fe para:" -#: lib/web/templates/api/privacy.html.heex:35 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:35 msgctxt "terms" msgid "What do we use your information for?" msgstr "¿Para qué utilizamos tu información?" -#: lib/web/templates/api/privacy.html.heex:57 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:57 msgctxt "terms" msgid "What is our data retention policy?" msgstr "¿Cuál es nuestra política de retención de datos?" -#: lib/web/templates/api/privacy.html.heex:67 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:67 msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Puede eliminar irreversiblemente su cuenta en cualquier momento." -#: lib/web/templates/api/privacy.html.heex:115 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:115 msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Cambios a nuestra política de privacidad" -#: lib/web/templates/api/privacy.html.heex:106 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:106 msgctxt "terms" msgid "If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site." msgstr "" @@ -284,8 +284,8 @@ msgstr "" "https://en.wikipedia.org/wiki/General_Data_Protection_Regulation\"> " "Reglamento general de protección de datos ) no utilice este sitio ." -#: lib/web/templates/api/privacy.html.heex:109 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:109 msgctxt "terms" msgid "If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site." msgstr "" @@ -296,30 +296,30 @@ msgstr "" "Ley de protección de la privacidad en línea para niños ) no utilice este " "sitio." -#: lib/web/templates/api/privacy.html.heex:117 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:117 msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "" "Si decidimos cambiar nuestra política de privacidad, publicaremos esos " "cambios en esta página." -#: lib/web/templates/api/privacy.html.heex:112 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:112 msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "" "Los requisitos legales pueden ser diferentes si este servidor se encuentra " "en otra jurisdicción." -#: lib/web/templates/api/privacy.html.heex:103 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:103 msgctxt "terms" msgid "Site usage by children" msgstr "Uso del sitio por niños" -#: lib/web/templates/api/privacy.html.heex:47 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:47 msgctxt "terms" msgid "The email address you provide may be used to send you information, updates and notifications about other people\n interacting with your content or sending you messages and to respond to inquiries, and/or other requests or\n questions." msgstr "" @@ -330,8 +330,8 @@ msgstr "" "consultas y / u otras solicitudes o\n" " preguntas." -#: lib/web/templates/api/privacy.html.heex:45 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:45 msgctxt "terms" msgid "To aid moderation of the community, for example comparing your IP address with other known ones to determine ban\n evasion or other violations." msgstr "" @@ -339,8 +339,8 @@ msgstr "" "dirección IP con otras conocidas para determinar la prohibición,\n" " evasión u otras violaciones." -#: lib/web/templates/api/privacy.html.heex:43 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:43 msgctxt "terms" msgid "To provide the core functionality of Mobilizon. Depending on this instance's policy you may only be able to\n interact with other people's content and post your own content if you are logged in." msgstr "" @@ -349,89 +349,89 @@ msgstr "" " interactuar con el contenido de otras personas y publicar tu propio " "contenido si ha iniciado sesión." -#: lib/web/templates/api/privacy.html.heex:6 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:6 msgctxt "terms" msgid "What information do we collect?" msgstr "¿Qué información recopilamos?" -#: lib/web/email/user.ex:178 #, elixir-format +#: lib/web/email/user.ex:178 msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon en %{instance}: confirma tu dirección de correo electrónico" -#: lib/web/email/user.ex:157 #, elixir-format +#: lib/web/email/user.ex:157 msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon en %{instance}: correo electrónico modificado" -#: lib/web/email/notification.ex:51 #, elixir-format +#: lib/web/email/notification.ex:51 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un evento programado para hoy" msgstr[1] "%{nb_events} eventos planeados hoy" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.heex:38 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Tienes un evento hoy:" msgstr[1] "Tienes %{total} eventos hoy:" -#: lib/web/templates/email/group_invite.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_invite.text.eex:3 msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} te acaba de invitar a unirte a su grupo %{group}" +#, elixir-format #: lib/web/templates/email/group_invite.html.heex:13 #: lib/web/templates/email/group_invite.text.eex:1 -#, elixir-format msgid "Come along!" msgstr "¡ Únete a nosotros !" -#: lib/web/email/notification.ex:25 #, elixir-format +#: lib/web/email/notification.ex:25 msgid "Don't forget to go to %{title}" msgstr "No olvides ir a %{title}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.heex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 -#, elixir-format msgid "Get ready for %{title}" msgstr "Prepárate para %{title}" -#: lib/web/templates/email/group_invite.html.heex:59 #, elixir-format +#: lib/web/templates/email/group_invite.html.heex:59 msgid "See my groups" msgstr "Ver mis grupos" +#, elixir-format #: lib/web/templates/email/group_invite.html.heex:45 #: lib/web/templates/email/group_invite.text.eex:5 -#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Para aceptar esta invitación, dirígete a tus grupos." -#: lib/web/templates/email/before_event_notification.text.eex:5 #, elixir-format +#: lib/web/templates/email/before_event_notification.text.eex:5 msgid "View the event on: %{link}" msgstr "Ver el evento actualizado en: %{link}" -#: lib/web/email/member.ex:31 #, elixir-format +#: lib/web/email/member.ex:31 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{Inviter} te ha invitado a unirte al grupo %{group}" -#: lib/web/email/notification.ex:78 #, elixir-format +#: lib/web/email/notification.ex:78 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un evento programado para hoy" msgstr[1] "%{nb_events} eventos planeados hoy" -#: lib/web/email/notification.ex:102 #, elixir-format +#: lib/web/email/notification.ex:102 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Una solicitud para participar en el evento %{title} a procesar" @@ -439,21 +439,21 @@ msgstr[1] "" "%{number_participation_requests} solicitudes para participar en el evento " "%{title} a procesar" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.heex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Tienes un evento hoy:" msgstr[1] "Tienes %{total} eventos hoy:" -#: lib/service/metadata/utils.ex:53 #, elixir-format +#: lib/service/metadata/utils.ex:53 msgid "The event organizer didn't add any description." msgstr "El organizador del evento no agregó ninguna descripción." -#: lib/web/templates/api/privacy.html.heex:54 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:54 msgctxt "terms" msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." msgstr "" @@ -463,8 +463,8 @@ msgstr "" "el tráfico entre tus aplicaciones y la API, están protegidas con SSL /TLS, y " "su contraseña se codifica con un fuerte algoritmo unidireccional." -#: lib/web/templates/api/privacy.html.heex:94 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:94 msgctxt "terms" msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." msgstr "" @@ -477,20 +477,20 @@ msgstr "" "de nuestro sitio o proteger los derechos, nuestros o de otros, propiedades o " "seguridad." -#: lib/web/templates/api/terms.html.heex:23 #, elixir-format +#: lib/web/templates/api/terms.html.heex:23 msgctxt "terms" msgid "Accepting these Terms" msgstr "Aceptar estos Términos" -#: lib/web/templates/api/terms.html.heex:27 #, elixir-format +#: lib/web/templates/api/terms.html.heex:27 msgctxt "terms" msgid "Changes to these Terms" msgstr "Cambios a estos Términos de uso" -#: lib/web/templates/api/terms.html.heex:85 #, elixir-format +#: lib/web/templates/api/terms.html.heex:85 msgctxt "terms" msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." msgstr "" @@ -502,16 +502,16 @@ msgstr "" "responsable y asume todos los riesgos derivados de su uso o su confianza en " "cualquier contenido." -#: lib/web/templates/api/terms.html.heex:60 #, elixir-format +#: lib/web/templates/api/terms.html.heex:60 msgctxt "terms" msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" msgstr "" "Además, acepta que no hará nada de lo siguiente en relación con el Servicio " "u otros usuarios:" -#: lib/web/templates/api/terms.html.heex:65 #, elixir-format +#: lib/web/templates/api/terms.html.heex:65 msgctxt "terms" msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." msgstr "" @@ -519,23 +519,23 @@ msgstr "" "velocidad u otras características diseñadas para proteger el Servicio, los " "usuarios del Servicio o terceros." -#: lib/web/templates/api/terms.html.heex:64 #, elixir-format +#: lib/web/templates/api/terms.html.heex:64 msgctxt "terms" msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" msgstr "" "Recopilar información personal sobre otros usuarios, o intimidar, amenazar, " "acosar o acosar a otros usuarios del Servicio;" -#: lib/web/templates/api/terms.html.heex:55 #, elixir-format +#: lib/web/templates/api/terms.html.heex:55 msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "" "Contenido que es ilegal o ilegal, que de otro modo crearía responsabilidad;" -#: lib/web/templates/api/terms.html.heex:56 #, elixir-format +#: lib/web/templates/api/terms.html.heex:56 msgctxt "terms" msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" msgstr "" @@ -543,48 +543,48 @@ msgstr "" "secreto comercial, derecho de autor, derecho de privacidad, derecho de " "publicidad u otro derecho intelectual u otro derecho de cualquier parte;" -#: lib/web/templates/api/terms.html.heex:42 #, elixir-format +#: lib/web/templates/api/terms.html.heex:42 msgctxt "terms" msgid "Creating Accounts" msgstr "Crear cuentas" -#: lib/web/templates/api/terms.html.heex:89 #, elixir-format +#: lib/web/templates/api/terms.html.heex:89 msgctxt "terms" msgid "Entire Agreement" msgstr "Acuerdo completo" -#: lib/web/templates/api/terms.html.heex:92 #, elixir-format +#: lib/web/templates/api/terms.html.heex:92 msgctxt "terms" msgid "Feedback" msgstr "Comentarios" -#: lib/web/templates/api/terms.html.heex:83 #, elixir-format +#: lib/web/templates/api/terms.html.heex:83 msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Hipervínculos y contenido de terceros" -#: lib/web/templates/api/terms.html.heex:88 #, elixir-format +#: lib/web/templates/api/terms.html.heex:88 msgctxt "terms" msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." msgstr "" "Si incumple alguno de estos Términos, tenemos el derecho de suspender o " "deshabilitar su acceso o uso del Servicio." -#: lib/web/templates/api/terms.html.heex:63 #, elixir-format +#: lib/web/templates/api/terms.html.heex:63 msgctxt "terms" msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" msgstr "" "Suplantar o publicar en nombre de cualquier persona o entidad o tergiversar " "su afiliación con una persona o entidad;" -#: lib/web/templates/api/terms.html.heex:48 #, elixir-format +#: lib/web/templates/api/terms.html.heex:48 msgctxt "terms" msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." msgstr "" @@ -592,26 +592,26 @@ msgstr "" "poner a disposición contenido. Usted es responsable del contenido que pone a " "disposición del Servicio, incluida su legalidad, confiabilidad y adecuación." -#: lib/web/templates/api/terms.html.heex:39 #, elixir-format +#: lib/web/templates/api/terms.html.heex:39 msgctxt "terms" msgid "Privacy Policy" msgstr "Política de privacidad" -#: lib/web/templates/api/terms.html.heex:95 #, elixir-format +#: lib/web/templates/api/terms.html.heex:95 msgctxt "terms" msgid "Questions & Contact Information" msgstr "Preguntas e información de contacto" -#: lib/web/templates/api/terms.html.heex:87 #, elixir-format +#: lib/web/templates/api/terms.html.heex:87 msgctxt "terms" msgid "Termination" msgstr "Terminación" -#: lib/web/templates/api/terms.html.heex:62 #, elixir-format +#: lib/web/templates/api/terms.html.heex:62 msgctxt "terms" msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" msgstr "" @@ -620,14 +620,14 @@ msgstr "" "Servicio o que pueda dañar, deshabilitar, sobrecargar o perjudicar el " "funcionamiento del Servicio;" -#: lib/web/templates/api/terms.html.heex:47 #, elixir-format +#: lib/web/templates/api/terms.html.heex:47 msgctxt "terms" msgid "Your Content & Conduct" msgstr "Su contenido y conducta" -#: lib/web/templates/api/terms.html.heex:84 #, elixir-format +#: lib/web/templates/api/terms.html.heex:84 msgctxt "terms" msgid "%{instance_name} makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "" @@ -639,8 +639,8 @@ msgstr "" "no implica la aprobación por % {instance_name} del sitio. El uso de " "cualquier sitio web vinculado es bajo el propio riesgo del usuario." -#: lib/web/templates/api/terms.html.heex:68 #, elixir-format +#: lib/web/templates/api/terms.html.heex:68 msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "" @@ -649,16 +649,16 @@ msgstr "" "código de conducta y las reglas de moderación. Romper esas reglas también " "puede resultar en que su cuenta sea deshabilitada o suspendida." -#: lib/web/templates/api/terms.html.heex:81 #, elixir-format +#: lib/web/templates/api/terms.html.heex:81 msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "" "Para obtener detalles completos sobre el software Mobilizon ver aquí ." -#: lib/web/templates/api/terms.html.heex:18 #, elixir-format +#: lib/web/templates/api/terms.html.heex:18 msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "" @@ -668,8 +668,8 @@ msgstr "" "Estos son nuestros términos de servicio (\"Términos\"). Por favor, léalos " "atentamente." -#: lib/web/templates/api/terms.html.heex:33 #, elixir-format +#: lib/web/templates/api/terms.html.heex:33 msgctxt "terms" msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." msgstr "" @@ -678,8 +678,8 @@ msgstr "" "página de nuestro sitio web. Es su responsabilidad revisar el sitio web " "regularmente para ver los cambios a estos Términos." -#: lib/web/templates/api/terms.html.heex:53 #, elixir-format +#: lib/web/templates/api/terms.html.heex:53 msgctxt "terms" msgid "In order to make %{instance_name} a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" msgstr "" @@ -687,8 +687,8 @@ msgstr "" "publique, enlace ni ponga a disposición en el Servicio ni a través de él " "ninguno de los siguientes:" -#: lib/web/templates/api/terms.html.heex:57 #, elixir-format +#: lib/web/templates/api/terms.html.heex:57 msgctxt "terms" msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" msgstr "" @@ -696,8 +696,8 @@ msgstr "" "de teléfono, direcciones de correo electrónico, números de Seguro Social y " "números de tarjetas de crédito); y" -#: lib/web/templates/api/terms.html.heex:52 #, elixir-format +#: lib/web/templates/api/terms.html.heex:52 msgctxt "terms" msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." msgstr "" @@ -709,8 +709,8 @@ msgstr "" "instancias termina aquí. Si por alguna razón, alguna otra instancia no " "elimina el contenido, no podemos ser responsables." -#: lib/web/templates/api/terms.html.heex:90 #, elixir-format +#: lib/web/templates/api/terms.html.heex:90 msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "" @@ -719,8 +719,8 @@ msgstr "" "cualquier acuerdo previo entre usted y %{instance_name} relacionado " "con su uso de el servicio." -#: lib/web/templates/api/terms.html.heex:80 #, elixir-format +#: lib/web/templates/api/terms.html.heex:80 msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "" @@ -730,16 +730,16 @@ msgstr "" "significa que están autorizados e incluso alentados a tomar el código " "fuente, modificarlo y usarlo." -#: lib/web/templates/api/terms.html.heex:58 #, elixir-format +#: lib/web/templates/api/terms.html.heex:58 msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "" "Virus, datos corruptos u otros archivos o códigos dañinos, perjudiciales o " "destructivos." -#: lib/web/templates/api/terms.html.heex:51 #, elixir-format +#: lib/web/templates/api/terms.html.heex:51 msgctxt "terms" msgid "You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time. Web server access logs might also be stored for some time in the system." msgstr "" @@ -749,29 +749,29 @@ msgstr "" "un período de tiempo. Los registros de acceso al servidor web también pueden " "almacenarse durante algún tiempo en el sistema." -#: lib/web/templates/api/terms.html.heex:96 #, elixir-format +#: lib/web/templates/api/terms.html.heex:96 msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "" "Las preguntas o comentarios sobre el Servicio pueden dirigirse a% {contact}" -#: lib/web/templates/api/terms.html.heex:79 #, elixir-format +#: lib/web/templates/api/terms.html.heex:79 msgctxt "terms" msgid "Source code" msgstr "Código fuente" -#: lib/web/templates/api/terms.html.heex:93 #, elixir-format +#: lib/web/templates/api/terms.html.heex:93 msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "" "Nos encantan los comentarios. Háganos saber lo que piensa del Servicio, " "estos Términos y, en general, %{instance_name} ." -#: lib/web/templates/api/terms.html.heex:74 #, elixir-format +#: lib/web/templates/api/terms.html.heex:74 msgctxt "terms" msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." msgstr "" @@ -784,16 +784,16 @@ msgstr "" "incumplir estos términos o por otros comportamientos que consideren " "inapropiados, amenazantes, ofensivos o dañinos." -#: lib/web/templates/api/terms.html.heex:6 #, elixir-format +#: lib/web/templates/api/terms.html.heex:6 msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "" " %{instance_name} no usará ni transmitirá ni revenderá sus datos " "personales" -#: lib/web/templates/api/terms.html.heex:44 #, elixir-format +#: lib/web/templates/api/terms.html.heex:44 msgctxt "terms" msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact its contributors directly." msgstr "" @@ -802,8 +802,8 @@ msgstr "" "de Mobilizon, comuníquese directamente con sus colaboradores ." -#: lib/web/templates/api/terms.html.heex:77 #, elixir-format +#: lib/web/templates/api/terms.html.heex:77 msgctxt "terms" msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." msgstr "" @@ -811,8 +811,8 @@ msgstr "" "alojada en la instancia esté moderada adecuadamente de acuerdo con las " "reglas definidas." -#: lib/web/templates/api/terms.html.heex:98 #, elixir-format +#: lib/web/templates/api/terms.html.heex:98 msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "" @@ -821,8 +821,8 @@ msgstr "" ">App.net privacy policies, also licensed under CC BY-SA." -#: lib/web/templates/api/privacy.html.heex:119 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:119 msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "" @@ -831,22 +831,22 @@ msgstr "" "políticas de privacidad, también bajo licencia CC BY-SA." -#: lib/web/templates/api/terms.html.heex:3 #, elixir-format +#: lib/web/templates/api/terms.html.heex:3 msgctxt "terms" msgid "Short version" msgstr "Version corta" -#: lib/web/templates/api/terms.html.heex:9 #, elixir-format +#: lib/web/templates/api/terms.html.heex:9 msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "" "El servicio se brinda sin garantías y estos términos pueden cambiar en el " "futuro" -#: lib/web/templates/api/privacy.html.heex:118 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:118 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "" @@ -854,8 +854,8 @@ msgstr "" "licenses/by-sa/4.0/\"> CC BY-SA . Se actualizó por última vez el 18 de " "junio de 2020." -#: lib/web/templates/api/terms.html.heex:97 #, elixir-format +#: lib/web/templates/api/terms.html.heex:97 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "" @@ -863,85 +863,85 @@ msgstr "" "licenses/by-sa/4.0/\"> CC BY-SA . Se actualizó por última vez el 22 de " "junio de 2020." -#: lib/web/templates/api/terms.html.heex:8 #, elixir-format +#: lib/web/templates/api/terms.html.heex:8 msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "" "Debe respetar las reglas de otras personas y %{instance_name} al " "usar el servicio" -#: lib/web/templates/api/terms.html.heex:7 #, elixir-format +#: lib/web/templates/api/terms.html.heex:7 msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "Debe respetar la ley cuando use %{instance_name} " -#: lib/web/templates/api/terms.html.heex:5 #, elixir-format +#: lib/web/templates/api/terms.html.heex:5 msgctxt "terms" msgid "Your content is yours" msgstr "Tu contenido es tuyo" -#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:51 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:51 msgid "Confirm my e-mail address" msgstr "Confirmar mi dirección de correo electrónico" +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 -#, elixir-format msgid "Confirm your e-mail" msgstr "Confirme su email" -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "¡Hola! Te acabas de registrar para unirte a este evento: «%{title}». " "Confirme la dirección de correo electrónico que proporcionó:" +#, elixir-format #: lib/web/templates/email/email.html.heex:117 #: lib/web/templates/email/email.text.eex:8 -#, elixir-format msgid "Need help? Is something not working as expected?" msgstr "¿Necesita ayuda? ¿Algo no está funcionando correctamente?" -#: lib/web/templates/email/registration_confirmation.html.heex:38 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.heex:38 msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "" "Creó una cuenta en %{host} con esta dirección de correo electrónico. " "Estás a un clic de activarlo." -#: lib/web/templates/email/report.html.heex:13 #, elixir-format +#: lib/web/templates/email/report.html.heex:13 msgid "New report on %{instance}" msgstr "Nuevo informe sobre %{instance} " -#: lib/web/templates/email/email_changed_old.html.heex:38 #, elixir-format +#: lib/web/templates/email/email_changed_old.html.heex:38 msgid "The email address for your account on %{host} is being changed to:" msgstr "" "La dirección de correo electrónico de su cuenta en %{host} se " "cambiará a:" -#: lib/web/templates/email/password_reset.html.heex:38 #, elixir-format +#: lib/web/templates/email/password_reset.html.heex:38 msgid "You requested a new password for your account on %{instance}." msgstr "Solicitó una nueva contraseña para su cuenta en %{instance} ." -#: lib/web/templates/email/email.text.eex:5 #, elixir-format +#: lib/web/templates/email/email.text.eex:5 msgid "Please do not use it for real purposes." msgstr "Por favor no lo use de ninguna manera real." +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 #: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -951,71 +951,61 @@ msgstr[1] "" "Si desea cancelar su participación en uno o varios eventos, visite las " "páginas de los eventos a través de los enlaces de arriba y presiona el botón." -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 #, elixir-format -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "Tiene una solicitud de participación pendiente de procesar:" -msgstr[1] "" -"Tienes %{number_participation_requests} solicitudes de participación " -"pendientes de procesar:" - #: lib/web/templates/email/email.text.eex:11 -#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} es un servidor de Mobilizon." -#: lib/web/templates/email/email.html.heex:152 #, elixir-format +#: lib/web/templates/email/email.html.heex:152 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} es una instancia de Mobilizon." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.heex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 -#, elixir-format msgid "A request is pending!" msgstr "¡Hay una solicitud pendiente!" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.heex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 -#, elixir-format msgid "An event is upcoming!" msgstr "¡Se acerca un evento!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 -#, elixir-format msgid "Confirm new email" msgstr "Confirme su email" -#: lib/web/templates/email/event_updated.html.heex:84 #, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 msgid "End" msgstr "Final" +#, elixir-format #: lib/web/templates/email/event_updated.html.heex:13 #: lib/web/templates/email/event_updated.text.eex:1 -#, elixir-format msgid "Event update!" msgstr "¡Evento actualizado!" -#: lib/web/templates/email/report.html.heex:88 #, elixir-format +#: lib/web/templates/email/report.html.heex:88 msgid "Flagged comments" msgstr "Comentarios marcados" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 -#, elixir-format msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "" "Buenas noticias: uno de los organizadores del evento acaba de aprobar su " "solicitud. Actualice su calendario, ¡porque ya está en la lista de invitados!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 #: lib/web/templates/email/email_changed_new.text.eex:3 -#, elixir-format msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "¡Hola! Parece que desea cambiar la dirección de correo electrónico vinculada " @@ -1023,16 +1013,16 @@ msgstr "" "botón de abajo para confirmar el cambio. Luego podrá iniciar sesión en% " "{instance} con esta nueva dirección de correo electrónico." -#: lib/web/templates/email/email_changed_old.text.eex:3 #, elixir-format +#: lib/web/templates/email/email_changed_old.text.eex:3 msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" msgstr "" "¡Hola! Solo una nota rápida para confirmar que la dirección de correo " "electrónico vinculada a su cuenta en %{host} se ha cambiado de esta a:" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.heex:62 #: lib/web/templates/email/email_changed_old.text.eex:5 -#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "" "Si no activó este cambio usted mismo, es probable que alguien haya obtenido " @@ -1040,164 +1030,164 @@ msgstr "" "inmediatamente. Si no puede iniciar sesión, comuníquese con el administrador " "en %{host}." -#: lib/web/templates/email/password_reset.text.eex:12 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:12 msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." msgstr "" "Si no activó el cambio usted mismo, ignore este mensaje. Su contraseña no se " "cambiará hasta que haga clic en el enlace de arriba." +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 -#, elixir-format msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Si no activó esta alerta, puede ignorarla con seguridad." +#, elixir-format #: lib/web/templates/email/before_event_notification.html.heex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 -#, elixir-format msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "" "Si necesitas cancelar su participación, sólo accede a la página del evento " "mediante el enlace debajo y presiona el botón." +#, elixir-format #: lib/web/templates/email/email.html.heex:153 #: lib/web/templates/email/email.text.eex:11 -#, elixir-format msgid "Learn more about Mobilizon here!" msgstr "¡Aprenda más sobre Mobilizon aquí!" +#, elixir-format #: lib/web/templates/email/event_updated.html.heex:94 #: lib/web/templates/export/event_participants.html.heex:129 -#, elixir-format msgid "Location" msgstr "Ubicación" -#: lib/web/templates/email/event_updated.html.heex:104 #, elixir-format +#: lib/web/templates/email/event_updated.html.heex:104 msgid "Location address was removed" msgstr "Dirección física fue eliminada" -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 #, elixir-format +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "Gestionar solicitudes de participación pendientes" +#, elixir-format #: lib/web/templates/email/registration_confirmation.html.heex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 -#, elixir-format msgid "Nearly there!" msgstr "¡Ya casi estas!" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.heex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 -#, elixir-format msgid "New email confirmation" msgstr "Nueva confirmación de correo electrónico" -#: lib/web/templates/email/report.html.heex:106 #, elixir-format +#: lib/web/templates/email/report.html.heex:106 msgid "Reasons for report" msgstr "Razones para informar" -#: lib/web/templates/email/report.html.heex:39 #, elixir-format +#: lib/web/templates/email/report.html.heex:39 msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "Alguien en %{instance} informó el siguiente contenido:" +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.heex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 -#, elixir-format msgid "Sorry! You're not going." msgstr "¡Lo siento! No vas." -#: lib/web/templates/email/event_updated.html.heex:74 #, elixir-format +#: lib/web/templates/email/event_updated.html.heex:74 msgid "Start" msgstr "Inicio" -#: lib/web/templates/email/event_updated.text.eex:3 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:3 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Ha habido cambios para %{title}, así que pensamos en avisarle." +#, elixir-format #: lib/web/templates/email/event_updated.html.heex:55 #: lib/web/templates/email/event_updated.text.eex:6 -#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Este evento ha sido cancelado por sus organizadores. ¡Lo siento!" +#, elixir-format #: lib/web/templates/email/event_updated.html.heex:51 #: lib/web/templates/email/event_updated.text.eex:4 -#, elixir-format msgid "This event has been confirmed" msgstr "El evento ha sido confirmado" +#, elixir-format #: lib/web/templates/email/event_updated.html.heex:53 #: lib/web/templates/email/event_updated.text.eex:5 -#, elixir-format msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "" "Este evento aún no se ha confirmado: los organizadores te avisarán si lo " "confirman." +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.heex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 -#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "" "Lamentablemente, los organizadores rechazaron tu solicitud de participación." -#: lib/web/templates/email/email_changed_new.html.heex:51 #, elixir-format +#: lib/web/templates/email/email_changed_new.html.heex:51 msgid "Verify your email address" msgstr "Verifica tu dirección de correo electrónico" -#: lib/web/templates/email/report.html.heex:126 #, elixir-format +#: lib/web/templates/email/report.html.heex:126 msgid "View report" msgstr "Ver el informe" -#: lib/web/templates/email/report.text.eex:24 #, elixir-format +#: lib/web/templates/email/report.text.eex:24 msgid "View report:" msgstr "Ver el informe:" +#, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 #: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 -#, elixir-format msgid "Visit event page" msgstr "Visita la página del evento" -#: lib/web/templates/email/event_updated.html.heex:121 #, elixir-format +#: lib/web/templates/email/event_updated.html.heex:121 msgid "Visit the updated event page" msgstr "Visita la página del evento actualizada" -#: lib/web/templates/email/event_updated.text.eex:12 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:12 msgid "Visit the updated event page: %{link}" msgstr "Ver el evento actualizado en: %{link}" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.heex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 -#, elixir-format msgid "What's up today?" msgstr "Qué pasa hoy?" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 -#, elixir-format msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" "Si desea actualizar o cancelar su asistencia, simplemente acceda a la página " "del evento a través del enlace de arriba y haga clic en el botón Asistir." -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 #, elixir-format +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" "Recibió este correo electrónico porque eligió recibir notificaciones de " @@ -1205,110 +1195,110 @@ msgstr "" "cambiar la configuración de notificaciones en la configuración de su cuenta " "de usuario en «Notificaciones»." -#: lib/web/templates/email/event_participation_rejected.text.eex:5 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.text.eex:5 msgid "You issued a request to attend %{title}." msgstr "Envió una solicitud para asistir a %{title}." +#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Solicitaste participar en el evento %{title}." +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 #: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 -#, elixir-format msgid "You're going!" msgstr "¡Vas!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 -#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "Si no activó el cambio usted mismo, ignore este mensaje." -#: lib/web/templates/email/email.html.heex:92 #, elixir-format +#: lib/web/templates/email/email.html.heex:92 msgid "Please do not use it for real purposes." msgstr "Por favor no lo use de ninguna manera real." +#, elixir-format #: lib/web/templates/email/group_member_removal.html.heex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 -#, elixir-format msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "" "Si cree que esto es un error, puede comunicarse con los administradores del " "grupo para que lo puedan integrar de nuevo." +#, elixir-format #: lib/web/templates/email/group_member_removal.html.heex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 -#, elixir-format msgid "So long, and thanks for the fish!" msgstr "¡Hasta luego y gracias por el pescado!" -#: lib/web/email/member.ex:113 #, elixir-format +#: lib/web/email/member.ex:113 msgid "You have been removed from group %{group}" msgstr "Ha sido eliminado del grupo %{group}" -#: lib/web/templates/email/group_member_removal.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_member_removal.text.eex:3 msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." msgstr "" "Se le ha eliminado del grupo %{group}. Ya no podrá acceder al contenido " "privado de este grupo." -#: lib/web/templates/email/group_invite.html.heex:38 #, elixir-format +#: lib/web/templates/email/group_invite.html.heex:38 msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "" "%{inviter} le acaba de invitar a unirse a su grupo% {link_start} " "%{group %{link_end}" -#: lib/web/templates/email/group_member_removal.html.heex:38 #, elixir-format +#: lib/web/templates/email/group_member_removal.html.heex:38 msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "" "Ha sido eliminado del grupo% {link_start} %{group} % {link_end}. Ya " "no podrá acceder al contenido privado de este grupo." +#, elixir-format #: lib/web/templates/email/group_suspension.html.heex:54 #: lib/web/templates/email/group_suspension.text.eex:7 -#, elixir-format msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "" "Como este grupo estaba ubicado en otra instancia, seguirá funcionando para " "otras instancias además de esta." +#, elixir-format #: lib/web/templates/email/group_suspension.html.heex:46 #: lib/web/templates/email/group_suspension.text.eex:5 -#, elixir-format msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "" "Como este grupo estaba ubicado en esta instancia, todos sus datos se han " "eliminado de forma irremediable." +#, elixir-format #: lib/web/templates/email/group_suspension.html.heex:13 #: lib/web/templates/email/group_suspension.text.eex:1 -#, elixir-format msgid "The group %{group} has been suspended on %{instance}!" msgstr "¡El grupo %{group} ha sido suspendido en %{instance}!" -#: lib/web/templates/email/group_suspension.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_suspension.text.eex:3 msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" "El equipo de moderación de su instancia ha decidido suspender a %{group_name}" " (%{group_address}). Ya no eres miembro de este grupo." -#: lib/web/email/group.ex:89 #, elixir-format +#: lib/web/email/group.ex:89 msgid "The group %{group} has been suspended on %{instance}" msgstr "El grupo %{group} ha sido suspendido en %{instance}" -#: lib/web/templates/api/terms.html.heex:24 #, elixir-format +#: lib/web/templates/api/terms.html.heex:24 msgctxt "terms" msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." msgstr "" @@ -1316,8 +1306,8 @@ msgstr "" "todos los términos a continuación. Si estos términos no son claros de alguna " "manera, háganoslo saber poniéndose en contacto con %{contact}." -#: lib/web/templates/api/terms.html.heex:40 #, elixir-format +#: lib/web/templates/api/terms.html.heex:40 msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "" @@ -1325,22 +1315,22 @@ msgstr "" "sobre los usuarios del Servicio, consulte nuestra " "política de privacidad ." -#: lib/web/templates/api/terms.html.heex:36 #, elixir-format +#: lib/web/templates/api/terms.html.heex:36 msgctxt "terms" msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." msgstr "" "Si continúa utilizando el Servicio después de que los Términos revisados " "entren en vigencia, entonces ha aceptado los Términos revisados." -#: lib/web/templates/api/privacy.html.heex:78 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:78 msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "Si eliminas esta información, deberás iniciar sesión nuevamente." -#: lib/web/templates/api/privacy.html.heex:80 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:80 msgctxt "terms" msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." msgstr "" @@ -1351,22 +1341,22 @@ msgstr "" "información solo dejará de mostrar el estado de participación en tu " "navegador." -#: lib/web/templates/api/privacy.html.heex:87 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:87 msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "" "Nota: Estas informaciones se almacenan en tu almacenamiento local y no en " "tus cookies." -#: lib/web/templates/api/terms.html.heex:71 #, elixir-format +#: lib/web/templates/api/terms.html.heex:71 msgctxt "terms" msgid "Our responsibility" msgstr "Nuestra responsabilidad" -#: lib/web/templates/api/privacy.html.heex:61 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:61 msgctxt "terms" msgid "Retain server logs containing the IP address of all requests to this server, insofar as such logs are kept, no more than 90 days." msgstr "" @@ -1374,9 +1364,9 @@ msgstr "" "las solicitudes a este servidor, en la medida en que dichos registros se " "mantengan, no más de 90 días." +#, elixir-format #: lib/web/templates/api/privacy.html.heex:3 #: lib/web/templates/api/terms.html.heex:15 -#, elixir-format msgctxt "terms" msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary to help you understand them better." msgstr "" @@ -1385,8 +1375,8 @@ msgstr "" "Proporcionamos un glosario para ayudarlo a " "comprenderlos mejor." -#: lib/web/templates/api/terms.html.heex:45 #, elixir-format +#: lib/web/templates/api/terms.html.heex:45 msgctxt "terms" msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." msgstr "" @@ -1394,8 +1384,8 @@ msgstr "" "resultado de que otra persona use su correo electrónico o contraseña, ya sea " "con o sin su conocimiento." -#: lib/web/templates/api/terms.html.heex:50 #, elixir-format +#: lib/web/templates/api/terms.html.heex:50 msgctxt "terms" msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." msgstr "" @@ -1405,8 +1395,8 @@ msgstr "" "todos sus derechos sobre el contenido que publica, vincula y de lo contrario " "pone a disposición en oa través del Servicio." -#: lib/web/templates/api/privacy.html.heex:10 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:10 msgctxt "terms" msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter an email address, a password (hashed) and at least an username. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" @@ -1424,8 +1414,8 @@ msgstr "" "imagen del encabezado siempre se listan públicamente. Sin " "embargo, también puedes visitar este servidor sin registrarse." -#: lib/web/templates/api/terms.html.heex:30 #, elixir-format +#: lib/web/templates/api/terms.html.heex:30 msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" @@ -1433,8 +1423,8 @@ msgstr "" "Por ejemplo, es posible que necesitemos cambiar estos Términos si " "presentamos una nueva función o por alguna otra razón." -#: lib/web/templates/api/terms.html.heex:20 #, elixir-format +#: lib/web/templates/api/terms.html.heex:20 msgctxt "terms" msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by Framasoft, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the \"About this instance\" page." msgstr "" @@ -1449,8 +1439,8 @@ msgstr "" "información sobre esta instancia en la página " "\"Acerca de esta instancia\" ." -#: lib/web/templates/api/terms.html.heex:43 #, elixir-format +#: lib/web/templates/api/terms.html.heex:43 msgctxt "terms" msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to %{instance_name}." msgstr "" @@ -1459,8 +1449,8 @@ msgstr "" "autorizado a los datos de su cuenta y cualquier otra información que " "proporcione a %{instance_name}." -#: lib/web/templates/api/terms.html.heex:49 #, elixir-format +#: lib/web/templates/api/terms.html.heex:49 msgctxt "terms" msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." msgstr "" @@ -1473,8 +1463,8 @@ msgstr "" "visibilidad que ha establecido para el contenido. No modificaremos la " "visibilidad del contenido que ha establecido." -#: lib/web/templates/api/privacy.html.heex:19 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:19 msgctxt "terms" msgid "Your events and comments are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." msgstr "" @@ -1486,8 +1476,8 @@ msgstr "" "servidor y cualquier servidor receptor puede ver dichos mensajes, y los " "destinatarios pueden capturar, copiar o de incluso volver a compartirlos." -#: lib/web/templates/api/privacy.html.heex:99 #, elixir-format +#: lib/web/templates/api/privacy.html.heex:99 msgctxt "terms" msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." msgstr "" @@ -1496,517 +1486,526 @@ msgstr "" "mensajes directos se entregan a los servidores de los destinatarios, en la " "medida en que estos destinatarios residen en un servidor diferente a este." -#: lib/web/templates/email/event_participation_confirmed.text.eex:4 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.text.eex:4 msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Ha confirmado su participación. Actualice su calendario, ¡porque ya está en " "la lista de invitados!" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:38 #: lib/web/templates/email/event_participation_confirmed.html.heex:38 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Solicitaste participar en el evento%{title}." -#: lib/web/email/participation.ex:90 #, elixir-format +#: lib/web/email/participation.ex:90 msgid "Your participation to event %{title} has been confirmed" msgstr "Su participación en el evento %{title} ha sido aprobada" -#: lib/web/templates/email/report.html.heex:41 #, elixir-format +#: lib/web/templates/email/report.html.heex:41 msgid "%{reporter} reported the following content." msgstr "%{reporter} informó el siguiente contenido." -#: lib/web/templates/email/report.text.eex:5 #, elixir-format +#: lib/web/templates/email/report.text.eex:5 msgid "Group %{group} was reported" msgstr "Se informó el grupo %{group}" -#: lib/web/templates/email/report.html.heex:51 #, elixir-format +#: lib/web/templates/email/report.html.heex:51 msgid "Group reported" msgstr "Grupo informado" -#: lib/web/templates/email/report.text.eex:7 #, elixir-format +#: lib/web/templates/email/report.text.eex:7 msgid "Profile %{profile} was reported" msgstr "Se informó el perfil %{profile}" -#: lib/web/templates/email/report.html.heex:56 #, elixir-format +#: lib/web/templates/email/report.html.heex:56 msgid "Profile reported" msgstr "Perfil informado" -#: lib/web/templates/email/event_participation_confirmed.html.heex:45 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.html.heex:45 msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Ahora ha confirmado su participación. Actualice su calendario, ¡porque ya " "está en la lista de invitados!" -#: lib/mobilizon/posts/post.ex:99 #, elixir-format +#: lib/mobilizon/posts/post.ex:99 msgid "A text is required for the post" msgstr "Se requiere un texto para la publicación" -#: lib/mobilizon/posts/post.ex:98 #, elixir-format +#: lib/mobilizon/posts/post.ex:98 msgid "A title is required for the post" msgstr "Se requiere un título para la publicación" -#: lib/web/templates/email/instance_follow.text.eex:3 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:3 msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "%{name} (%{domain}) sólo solicitó seguir su instancia." -#: lib/web/email/follow.ex:54 #, elixir-format +#: lib/web/email/follow.ex:54 msgid "%{name} requests to follow your instance" msgstr "%{name} solicita seguir tu instancia" -#: lib/web/templates/email/instance_follow.html.heex:38 #, elixir-format +#: lib/web/templates/email/instance_follow.html.heex:38 msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "" "%{name} (%{domain}) solo pedí seguir tu instancia. Si acepta, su " "instancia recibirá todos los eventos públicos para su instancia." -#: lib/web/templates/email/instance_follow.text.eex:4 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:4 msgid "If you accept, this instance will receive all of your public events." msgstr "Si acepta, esta instancia recibirá todos sus eventos públicos." -#: lib/web/email/follow.ex:48 #, elixir-format +#: lib/web/email/follow.ex:48 msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "La instancia %{name} (%{domain}) solicita seguir tu instancia" -#: lib/web/templates/email/instance_follow.html.heex:66 #, elixir-format +#: lib/web/templates/email/instance_follow.html.heex:66 msgid "See the federation settings" msgstr "Ver la configuración de la federación" +#, elixir-format #: lib/web/templates/email/instance_follow.html.heex:52 #: lib/web/templates/email/instance_follow.text.eex:6 -#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "Para aceptar esta invitación, dirígete a tus grupos." +#, elixir-format #: lib/web/templates/email/instance_follow.html.heex:13 #: lib/web/templates/email/instance_follow.text.eex:1 -#, elixir-format msgid "Want to connect?" msgstr "¿Quieres conectarte?" +#, elixir-format #: lib/web/templates/email/instance_follow.html.heex:45 #: lib/web/templates/email/instance_follow.text.eex:5 -#, elixir-format msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "" "Nota: el hecho que %{name} (%{domain} te siga, no implica necesariamente que " "sigas esta instancia, pero puedes solicitar seguirla también." -#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:38 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:38 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "¡Hola! Te acabas de registrar para unirte a este evento: «%{title}». " "Confirme la dirección de correo electrónico que proporcionó:" -#: lib/web/templates/email/event_participation_rejected.html.heex:38 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.html.heex:38 msgid "You issued a request to attend %{title}." msgstr "Envió una solicitud para asistir a %{title}." -#: lib/web/templates/email/event_updated.html.heex:64 #, elixir-format +#: lib/web/templates/email/event_updated.html.heex:64 msgid "Event title" msgstr "Título del evento" -#: lib/web/templates/email/event_updated.html.heex:38 #, elixir-format +#: lib/web/templates/email/event_updated.html.heex:38 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Ha habido cambios para%{title}, así que pensamos en avisarle." -#: lib/web/templates/error/500_page.html.heex:7 #, elixir-format +#: lib/web/templates/error/500_page.html.heex:7 msgid "This page is not correct" msgstr "Esta página no es correcta" -#: lib/web/templates/error/500_page.html.heex:50 #, elixir-format +#: lib/web/templates/error/500_page.html.heex:50 msgid "We're sorry, but something went wrong on our end." msgstr "Lo sentimos, pero algo salió mal por nuestra parte." +#, elixir-format #: lib/web/templates/email/email.html.heex:91 #: lib/web/templates/email/email.text.eex:4 -#, elixir-format msgid "This is a demonstration site to test Mobilizon." msgstr "Este es un sitio de demostración para probar Mobilizon." +#, elixir-format #: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 #: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 -#, elixir-format msgid "%{name}'s feed" msgstr "Flujo de %{name}" -#: lib/service/export/feed.ex:115 #, elixir-format +#: lib/service/export/feed.ex:115 msgid "%{actor}'s private events feed on %{instance}" msgstr "Flujo de eventos privados de %{actor} a %{instance}" -#: lib/service/export/feed.ex:110 #, elixir-format +#: lib/service/export/feed.ex:110 msgid "%{actor}'s public events feed on %{instance}" msgstr "Flujo público de eventos de %{actor} a %{instance}" -#: lib/service/export/feed.ex:219 #, elixir-format +#: lib/service/export/feed.ex:219 msgid "Feed for %{email} on %{instance}" msgstr "Flujo para %{email} en %{instance}" -#: lib/web/templates/error/500_page.html.heex:57 #, elixir-format +#: lib/web/templates/error/500_page.html.heex:57 msgid "If the issue persists, you may contact the server administrator at %{contact}." msgstr "" "Si el problema persiste, puede comunicarse con el administrador del servidor " "en %{contact}." -#: lib/web/templates/error/500_page.html.heex:55 #, elixir-format +#: lib/web/templates/error/500_page.html.heex:55 msgid "If the issue persists, you may try to contact the server administrator." msgstr "" "Si el problema persiste, puede intentar comunicarse con el administrador del " "servidor." -#: lib/web/templates/error/500_page.html.heex:68 #, elixir-format +#: lib/web/templates/error/500_page.html.heex:68 msgid "Technical details" msgstr "Detalles técnicos" -#: lib/web/templates/error/500_page.html.heex:52 #, elixir-format +#: lib/web/templates/error/500_page.html.heex:52 msgid "The Mobilizon server %{instance} seems to be temporarily down." msgstr "" "El servidor de Mobilizon %{instance} parece estar temporalmente inactivo." -#: lib/service/export/feed.ex:67 #, elixir-format +#: lib/service/export/feed.ex:67 msgid "Public feed for %{instance}" msgstr "Flujo público para %{instance}" -#: lib/graphql/resolvers/user.ex:298 #, elixir-format +#: lib/graphql/resolvers/user.ex:298 msgid "The password you have choosen is too short. Please make sure your password contains at least 6 charaters." msgstr "" "La contraseña que ha elegido es demasiado corta. Asegúrese de que su " "contraseña contenga al menos 6 caracteres." -#: lib/graphql/resolvers/user.ex:304 #, elixir-format +#: lib/graphql/resolvers/user.ex:304 msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" "El token que proporcionaste no es válido. Asegúrese de que la URL sea " "exactamente la que se proporciona dentro del correo electrónico que recibió." -#: lib/web/email/actor.ex:44 #, elixir-format +#: lib/web/email/actor.ex:44 msgid "Your participation to %{event} has been cancelled!" msgstr "Su participación en el evento %{title} ¡ha sido cancelada!" +#, elixir-format #: lib/web/templates/email/actor_suspension_participants.html.heex:38 #: lib/web/templates/email/actor_suspension_participants.text.eex:3 -#, elixir-format msgid "Your instance's moderation team has decided to suspend %{actor_name} (%{actor_address}). All of their events have been removed and your participation to event %{event} cancelled." msgstr "" "El equipo de moderación de tu instancia ha decidido suspender a%{actor_name} " "(%{actor_address}). Se eliminaron todos sus eventos y se canceló su " "participación en el evento % {event}." -#: lib/web/templates/email/group_suspension.html.heex:38 #, elixir-format +#: lib/web/templates/email/group_suspension.html.heex:38 msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" "El equipo de moderación de su instancia ha decidido suspender a " "%{group_name}(%{group_address}). Ya no eres miembro de este grupo." +#, elixir-format #: lib/web/templates/email/actor_suspension_participants.html.heex:13 #: lib/web/templates/email/actor_suspension_participants.text.eex:1 -#, elixir-format msgid "Your participation to %{event} on %{instance} has been cancelled!" msgstr "¡Tu participación en %{event} en %{instance} ha sido cancelada!" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. +#, elixir-format #: lib/service/export/participants/csv.ex:73 #: lib/service/export/participants/ods.ex:77 lib/service/export/participants/pdf.ex:91 -#, elixir-format msgid "%{event}_participants" msgstr "%{event}_participantes" -#: lib/service/export/participants/common.ex:61 #, elixir-format +#: lib/service/export/participants/common.ex:61 msgid "Participant message" msgstr "Mensaje del participante" -#: lib/service/export/participants/common.ex:61 #, elixir-format +#: lib/service/export/participants/common.ex:61 msgid "Participant name" msgstr "Participación aprobada" -#: lib/service/export/participants/common.ex:61 #, elixir-format +#: lib/service/export/participants/common.ex:61 msgid "Participant status" msgstr "Estado de participante" -#: lib/service/export/participants/common.ex:52 #, elixir-format +#: lib/service/export/participants/common.ex:52 msgid "Administrator" msgstr "Administrador" -#: lib/service/export/participants/common.ex:55 #, elixir-format +#: lib/service/export/participants/common.ex:55 msgid "Creator" msgstr "Creador" -#: lib/service/export/participants/common.ex:49 #, elixir-format +#: lib/service/export/participants/common.ex:49 msgid "Moderator" msgstr "Moderador" -#: lib/service/export/participants/common.ex:37 #, elixir-format +#: lib/service/export/participants/common.ex:37 msgid "Not approved" msgstr "Sin aprovar" -#: lib/service/export/participants/common.ex:40 #, elixir-format +#: lib/service/export/participants/common.ex:40 msgid "Not confirmed" msgstr "Sin confirmar" -#: lib/service/export/participants/common.ex:46 #, elixir-format +#: lib/service/export/participants/common.ex:46 msgid "Participant" msgstr "Participante" -#: lib/service/export/participants/common.ex:43 #, elixir-format +#: lib/service/export/participants/common.ex:43 msgid "Rejected" msgstr "Rechazado" -#: lib/web/templates/export/event_participants.html.heex:122 #, elixir-format +#: lib/web/templates/export/event_participants.html.heex:122 msgid "Begins on" msgstr "Comienza en" -#: lib/web/templates/export/event_participants.html.heex:125 #, elixir-format +#: lib/web/templates/export/event_participants.html.heex:125 msgid "Ends on" msgstr "Final" -#: lib/web/templates/export/event_participants.html.heex:132 #, elixir-format +#: lib/web/templates/export/event_participants.html.heex:132 msgid "Number of participants" msgstr "Número de participantes" -#: lib/web/templates/export/event_participants.html.heex:120 #, elixir-format +#: lib/web/templates/export/event_participants.html.heex:120 msgid "Participants for %{event}" msgstr "Participación aprobada" -#: lib/service/export/participants/common.ex:88 #, elixir-format +#: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "Participante anónimo" +#, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 #: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 #: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 -#, elixir-format msgid "🌐 %{timezone} %{offset}" msgstr "🌐 %{timezone} %{offset}" -#: lib/web/templates/email/date/event_tz_date.text.eex:1 #, elixir-format +#: lib/web/templates/email/date/event_tz_date.text.eex:1 msgid "%{date_time} (%{timezone} %{offset})" msgstr "%{date_time} (%{timezone} %{offset})" -#: lib/web/templates/email/date/event_tz_date.text.eex:1 #, elixir-format +#: lib/web/templates/email/date/event_tz_date.text.eex:1 msgid "%{date_time} (in your timezone %{timezone} %{offset})" msgstr "%{date_time} (en tu zona horaria% {timezone} %{offset})" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.heex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 -#, elixir-format msgid "On the agenda this week" msgstr "Un evento programado para hoy" -#: lib/web/templates/email/participation/event_card.html.heex:11 #, elixir-format +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "Detalles" +#, elixir-format #: lib/web/templates/email/date/event_tz_date_range.html.heex:10 #: lib/web/templates/email/date/event_tz_date_range.text.eex:1 -#, elixir-format msgid "From the %{start} to the %{end}" msgstr "Desde el %{start} hasta el %{end}" -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #, elixir-format +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "Gestiona tu participación" +#, elixir-format #: lib/web/templates/email/date/event_tz_date_range.html.heex:5 #: lib/web/templates/email/date/event_tz_date_range.text.eex:1 -#, elixir-format msgid "On %{date} from %{start_time} to %{end_time}" msgstr "El %{date} del % {start_time} al %{end_time}" -#: lib/web/templates/email/participation/event_card.html.heex:19 #, elixir-format +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "Lee mas" +#, elixir-format #: lib/web/templates/email/participation/card/_metadata.html.heex:50 #: lib/web/templates/email/participation/card/_metadata.text.eex:2 -#, elixir-format msgid "Online event" msgstr "Evento en línea" -#: lib/web/templates/email/event_group_follower_notification.html.heex:13 #, elixir-format +#: lib/web/templates/email/event_group_follower_notification.html.heex:13 msgid "%{group} scheduled a new event" msgstr "%{group} ha programado un evento nuevo" -#: lib/web/templates/email/event_group_follower_notification.text.eex:1 #, elixir-format +#: lib/web/templates/email/event_group_follower_notification.text.eex:1 msgid "%{group} scheduled a new event:" msgstr "%{group} ha programado un evento nuevo:" -#: lib/web/templates/email/participation/card/_metadata.text.eex:2 #, elixir-format +#: lib/web/templates/email/participation/card/_metadata.text.eex:2 msgid "Address:" msgstr "Dirección:" -#: lib/web/templates/email/participation/card/_metadata.text.eex:1 #, elixir-format +#: lib/web/templates/email/participation/card/_metadata.text.eex:1 msgid "Date:" msgstr "Fecha:" -#: lib/web/templates/email/participation/event_card.text.eex:5 #, elixir-format +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "Detalles:" -#: lib/web/templates/email/email.html.heex:147 #, elixir-format +#: lib/web/templates/email/email.html.heex:147 msgid "Manage your notification settings" msgstr "Administra tu configuración de notificaciones" -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #, elixir-format +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "Gestiona tu participación:" -#: lib/web/templates/email/participation/card/_title.text.eex:3 -#: lib/web/templates/email/participation/card/_title.text.eex:3 #, elixir-format +#: lib/web/templates/email/participation/card/_title.text.eex:3 +#: lib/web/templates/email/participation/card/_title.text.eex:3 msgid "Organizer: %{organizer}" msgstr "Organizador: %{organizer}" -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #, elixir-format +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "Participar" -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #, elixir-format +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "Participar:" -#: lib/web/templates/email/participation/event_card.text.eex:7 #, elixir-format +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "Lee mas" -#: lib/web/templates/email/participation/card/_title.text.eex:1 #, elixir-format +#: lib/web/templates/email/participation/card/_title.text.eex:1 msgid "Title: %{title}" msgstr "Título: %{title}" -#: lib/web/email/group.ex:44 #, elixir-format +#: lib/web/email/group.ex:44 msgid "📅 Just scheduled by %{group}: %{event}" msgstr "📅 Recién programado por %{group}: %{event}" -#: lib/web/templates/email/event_updated.text.eex:9 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:9 msgid "New end date:" msgstr "Nueva fecha de finalización:" +#, elixir-format #: lib/web/templates/email/event_updated.text.eex:10 -#, elixir-format -#, elixir-format msgid "New location:" msgstr "Ubicación:" -#: lib/web/templates/email/event_updated.text.eex:8 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:8 msgid "New start date:" msgstr "Nueva fecha de inicio:" +#, elixir-format #: lib/web/templates/email/group_membership_rejection.html.heex:13 #: lib/web/templates/email/group_membership_rejection.text.eex:1 -#, elixir-format msgid "Sorry, not this time!" msgstr "¡Lo siento, esta vez no!" -#: lib/web/templates/email/group_membership_approval.html.heex:52 #, elixir-format +#: lib/web/templates/email/group_membership_approval.html.heex:52 msgid "View the group" msgstr "Ver el grupo" +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:13 #: lib/web/templates/email/group_membership_approval.text.eex:1 -#, elixir-format msgid "You're in!" msgstr "¡Vas!" -#: lib/web/email/member.ex:60 #, elixir-format +#: lib/web/email/member.ex:60 msgid "Your membership request for group %{group} has been approved" msgstr "Su solicitud de adesión para el grupo %{group} ha sido aprobada" -#: lib/web/email/member.ex:89 #, elixir-format +#: lib/web/email/member.ex:89 msgid "Your membership request for group %{group} has been rejected" msgstr "Su solicitud de adesión para el grupo %{group} ha sido rechazada" -#: lib/web/templates/email/group_membership_rejection.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_membership_rejection.text.eex:3 msgid "Your membership request for group %{group} has been rejected." msgstr "Su solicitud de adesión para el grupo %{group} ha sido rechazada." -#: lib/web/templates/email/group_membership_rejection.html.heex:38 #, elixir-format +#: lib/web/templates/email/group_membership_rejection.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" "Su solicitud de membresía para el grupo %{link_start}% {group}% " "{link_end} ha sido rechazada." -#: lib/web/templates/email/group_membership_approval.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "Su solicitud de adesión para el grupo% {group} ha sido aprobada." -#: lib/web/templates/email/group_membership_approval.html.heex:38 #, elixir-format +#: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" "Su solicitud de adesión para el grupo %{link_start}%{group}%{link_end}" " ha sido aprobada." + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "Tiene una solicitud de participación pendiente de procesar:" +msgstr[1] "" +"Tienes %{number_participation_requests} solicitudes de participación " +"pendientes de procesar:" diff --git a/priv/gettext/es/LC_MESSAGES/errors.po b/priv/gettext/es/LC_MESSAGES/errors.po index 7128ec90a..e546bcb6a 100644 --- a/priv/gettext/es/LC_MESSAGES/errors.po +++ b/priv/gettext/es/LC_MESSAGES/errors.po @@ -94,960 +94,960 @@ msgstr "debe ser mayor o igual que% {number}" msgid "must be equal to %{number}" msgstr "debe ser igual a% {number}" -#: lib/graphql/resolvers/user.ex:107 #, elixir-format +#: lib/graphql/resolvers/user.ex:107 msgid "Cannot refresh the token" msgstr "No se puede actualizar el token" -#: lib/graphql/resolvers/group.ex:245 #, elixir-format +#: lib/graphql/resolvers/group.ex:245 msgid "Current profile is not a member of this group" msgstr "El perfil actual no es miembro de este grupo" -#: lib/graphql/resolvers/group.ex:249 #, elixir-format +#: lib/graphql/resolvers/group.ex:249 msgid "Current profile is not an administrator of the selected group" msgstr "El perfil actual no es un administrador del grupo seleccionado" -#: lib/graphql/resolvers/user.ex:593 #, elixir-format +#: lib/graphql/resolvers/user.ex:593 msgid "Error while saving user settings" msgstr "Error al guardar los parámetros del usuario" +#, elixir-format #: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:242 #: lib/graphql/resolvers/group.ex:274 lib/graphql/resolvers/group.ex:311 lib/graphql/resolvers/group.ex:342 #: lib/graphql/resolvers/group.ex:391 lib/graphql/resolvers/member.ex:79 -#, elixir-format msgid "Group not found" msgstr "Grupo no encontrado" -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 #, elixir-format +#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "No se encontró el grupo con ID% {id}" -#: lib/graphql/resolvers/user.ex:85 #, elixir-format +#: lib/graphql/resolvers/user.ex:85 msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" "Imposible autenticarse, su correo electrónico o contraseña no son válidos." -#: lib/graphql/resolvers/group.ex:308 #, elixir-format +#: lib/graphql/resolvers/group.ex:308 msgid "Member not found" msgstr "Miembro no encontrado" -#: lib/graphql/resolvers/actor.ex:94 #, elixir-format +#: lib/graphql/resolvers/actor.ex:94 msgid "No profile found for the moderator user" msgstr "No se encontró el perfil del usuario moderador" -#: lib/graphql/resolvers/user.ex:253 #, elixir-format +#: lib/graphql/resolvers/user.ex:253 msgid "No user to validate with this email was found" msgstr "No se encontró ningún usuario para validar con este correo electrónico" -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:278 #, elixir-format +#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:278 msgid "No user with this email was found" msgstr "No se encontró ningún usuario con este correo electrónico" +#, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 #: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 #: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 -#, elixir-format msgid "Profile is not owned by authenticated user" msgstr "El perfil no es propiedad del usuario autenticado" -#: lib/graphql/resolvers/user.ex:156 #, elixir-format +#: lib/graphql/resolvers/user.ex:156 msgid "Registrations are not open" msgstr "Las inscripciones no están abiertas" -#: lib/graphql/resolvers/user.ex:408 #, elixir-format +#: lib/graphql/resolvers/user.ex:408 msgid "The current password is invalid" msgstr "La contraseña actual no es válida" -#: lib/graphql/resolvers/user.ex:451 #, elixir-format +#: lib/graphql/resolvers/user.ex:451 msgid "The new email doesn't seem to be valid" msgstr "El nuevo correo electrónico no parece ser válido" -#: lib/graphql/resolvers/user.ex:454 #, elixir-format +#: lib/graphql/resolvers/user.ex:454 msgid "The new email must be different" msgstr "El nuevo correo electrónico debe ser diferente" -#: lib/graphql/resolvers/user.ex:411 #, elixir-format +#: lib/graphql/resolvers/user.ex:411 msgid "The new password must be different" msgstr "La nueva contraseña debe ser diferente" +#, elixir-format #: lib/graphql/resolvers/user.ex:458 lib/graphql/resolvers/user.ex:520 #: lib/graphql/resolvers/user.ex:523 -#, elixir-format msgid "The password provided is invalid" msgstr "La contraseña proporcionada no es válida" -#: lib/graphql/resolvers/user.ex:415 #, elixir-format +#: lib/graphql/resolvers/user.ex:415 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" "La contraseña que ha elegido es demasiado corta. Asegúrese de que su " "contraseña contenga al menos 6 caracteres." -#: lib/graphql/resolvers/user.ex:274 #, elixir-format +#: lib/graphql/resolvers/user.ex:274 msgid "This user can't reset their password" msgstr "Este usuario no puede restablecer su contraseña" -#: lib/graphql/resolvers/user.ex:81 #, elixir-format +#: lib/graphql/resolvers/user.ex:81 msgid "This user has been disabled" msgstr "Este usuario ha sido inhabilitado" -#: lib/graphql/resolvers/user.ex:232 lib/graphql/resolvers/user.ex:237 #, elixir-format +#: lib/graphql/resolvers/user.ex:232 lib/graphql/resolvers/user.ex:237 msgid "Unable to validate user" msgstr "No se puede validar al usuario" -#: lib/graphql/resolvers/user.ex:501 #, elixir-format +#: lib/graphql/resolvers/user.ex:501 msgid "User already disabled" msgstr "El usuario ya está inhabilitado" -#: lib/graphql/resolvers/user.ex:568 #, elixir-format +#: lib/graphql/resolvers/user.ex:568 msgid "User requested is not logged-in" msgstr "El usuario solicitado no ha iniciado sesión" -#: lib/graphql/resolvers/group.ex:280 #, elixir-format +#: lib/graphql/resolvers/group.ex:280 msgid "You are already a member of this group" msgstr "Ya eres miembro de este grupo" -#: lib/graphql/resolvers/group.ex:315 #, elixir-format +#: lib/graphql/resolvers/group.ex:315 msgid "You can't leave this group because you are the only administrator" msgstr "No puedes dejar este grupo porque eres el único administrador" -#: lib/graphql/resolvers/group.ex:277 #, elixir-format +#: lib/graphql/resolvers/group.ex:277 msgid "You cannot join this group" msgstr "No puedes unirte a este grupo" -#: lib/graphql/resolvers/group.ex:112 #, elixir-format +#: lib/graphql/resolvers/group.ex:112 msgid "You may not list groups unless moderator." msgstr "No puedes enumerar grupos a menos que seas moderador." -#: lib/graphql/resolvers/user.ex:466 #, elixir-format +#: lib/graphql/resolvers/user.ex:466 msgid "You need to be logged-in to change your email" msgstr "Debes iniciar sesión para cambiar tu correo electrónico" -#: lib/graphql/resolvers/user.ex:423 #, elixir-format +#: lib/graphql/resolvers/user.ex:423 msgid "You need to be logged-in to change your password" msgstr "Debes iniciar sesión para cambiar tu contraseña" -#: lib/graphql/resolvers/group.ex:254 #, elixir-format +#: lib/graphql/resolvers/group.ex:254 msgid "You need to be logged-in to delete a group" msgstr "Debes iniciar sesión para eliminar un grupo" -#: lib/graphql/resolvers/user.ex:528 #, elixir-format +#: lib/graphql/resolvers/user.ex:528 msgid "You need to be logged-in to delete your account" msgstr "Debes iniciar sesión para eliminar su cuenta" -#: lib/graphql/resolvers/group.ex:285 #, elixir-format +#: lib/graphql/resolvers/group.ex:285 msgid "You need to be logged-in to join a group" msgstr "Debes iniciar sesión para eliminar su cuenta" -#: lib/graphql/resolvers/group.ex:320 #, elixir-format +#: lib/graphql/resolvers/group.ex:320 msgid "You need to be logged-in to leave a group" msgstr "Debes iniciar sesión para dejar un grupo" -#: lib/graphql/resolvers/group.ex:218 #, elixir-format +#: lib/graphql/resolvers/group.ex:218 msgid "You need to be logged-in to update a group" msgstr "Debes iniciar sesión para actualizar un grupo" -#: lib/graphql/resolvers/user.ex:112 #, elixir-format +#: lib/graphql/resolvers/user.ex:112 msgid "You need to have an existing token to get a refresh token" msgstr "Debes tener un token existente para obtener un token de actualización" -#: lib/graphql/resolvers/user.ex:256 lib/graphql/resolvers/user.ex:281 #, elixir-format +#: lib/graphql/resolvers/user.ex:256 lib/graphql/resolvers/user.ex:281 msgid "You requested again a confirmation email too soon" msgstr "" "Solicitó de nuevo un correo electrónico de confirmación demasiado pronto" -#: lib/graphql/resolvers/user.ex:159 #, elixir-format +#: lib/graphql/resolvers/user.ex:159 msgid "Your email is not on the allowlist" msgstr "Tu correo electrónico no está en la lista de permitidos" -#: lib/graphql/resolvers/actor.ex:100 #, elixir-format +#: lib/graphql/resolvers/actor.ex:100 msgid "Error while performing background task" msgstr "Error al realizar la tarea en segundo plano" -#: lib/graphql/resolvers/actor.ex:32 #, elixir-format +#: lib/graphql/resolvers/actor.ex:32 msgid "No profile found with this ID" msgstr "No se encontró ningún perfil con este ID" -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 #, elixir-format +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "No se encontró ningún perfil remoto con este ID" -#: lib/graphql/resolvers/actor.ex:72 #, elixir-format +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "Solo los moderadores y administradores pueden suspender un perfil" -#: lib/graphql/resolvers/actor.ex:105 #, elixir-format +#: lib/graphql/resolvers/actor.ex:105 msgid "Only moderators and administrators can unsuspend a profile" msgstr "" "Solo los moderadores y administradores pueden anular la suspensión de un " "perfil" -#: lib/graphql/resolvers/actor.ex:29 #, elixir-format +#: lib/graphql/resolvers/actor.ex:29 msgid "Only remote profiles may be refreshed" msgstr "Solo se pueden actualizar los perfiles remotos" -#: lib/graphql/resolvers/actor.ex:64 #, elixir-format +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "Perfil ya suspendido" -#: lib/graphql/resolvers/participant.ex:96 #, elixir-format +#: lib/graphql/resolvers/participant.ex:96 msgid "A valid email is required by your instance" msgstr "Su instancia requiere un correo electrónico válido" +#, elixir-format #: lib/graphql/resolvers/participant.ex:90 #: lib/graphql/resolvers/participant.ex:143 -#, elixir-format msgid "Anonymous participation is not enabled" msgstr "La participación anónima no está habilitada" -#: lib/graphql/resolvers/person.ex:210 #, elixir-format +#: lib/graphql/resolvers/person.ex:210 msgid "Cannot remove the last administrator of a group" msgstr "No se puede eliminar al último administrador de un grupo" -#: lib/graphql/resolvers/person.ex:207 #, elixir-format +#: lib/graphql/resolvers/person.ex:207 msgid "Cannot remove the last identity of a user" msgstr "No se puede eliminar la última identidad de un usuario" -#: lib/graphql/resolvers/comment.ex:126 #, elixir-format +#: lib/graphql/resolvers/comment.ex:126 msgid "Comment is already deleted" msgstr "El comentario ya está eliminado" -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 #, elixir-format +#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "Discusión no encontrada" -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 #, elixir-format +#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 msgid "Error while saving report" msgstr "Error al guardar el informe" -#: lib/graphql/resolvers/report.ex:102 #, elixir-format +#: lib/graphql/resolvers/report.ex:102 msgid "Error while updating report" msgstr "Error al actualizar el informe" -#: lib/graphql/resolvers/participant.ex:131 #, elixir-format +#: lib/graphql/resolvers/participant.ex:131 msgid "Event id not found" msgstr "ID de evento no encontrado" +#, elixir-format #: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 -#, elixir-format msgid "Event not found" msgstr "Evento no encontrado" +#, elixir-format #: lib/graphql/resolvers/participant.ex:87 #: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 -#, elixir-format msgid "Event with this ID %{id} doesn't exist" msgstr "El evento con este ID%{id} no existe" -#: lib/graphql/resolvers/participant.ex:103 #, elixir-format +#: lib/graphql/resolvers/participant.ex:103 msgid "Internal Error" msgstr "Error interno" -#: lib/graphql/resolvers/discussion.ex:219 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:219 msgid "No discussion with ID %{id}" msgstr "Sin discusión con ID%{id}" +#, elixir-format #: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 #: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 -#, elixir-format msgid "No profile found for user" msgstr "No se encontró perfil para el usuario" -#: lib/graphql/resolvers/feed_token.ex:64 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:64 msgid "No such feed token" msgstr "No existe tal token de alimentación" -#: lib/graphql/resolvers/participant.ex:259 #, elixir-format +#: lib/graphql/resolvers/participant.ex:259 msgid "Participant already has role %{role}" msgstr "El participante ya tiene el rol%{role}" +#, elixir-format #: lib/graphql/resolvers/participant.ex:187 #: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 -#, elixir-format msgid "Participant not found" msgstr "Participante no encontrado" -#: lib/graphql/resolvers/person.ex:32 #, elixir-format +#: lib/graphql/resolvers/person.ex:32 msgid "Person with ID %{id} not found" msgstr "Persona con ID%{id} no encontrada" -#: lib/graphql/resolvers/person.ex:56 #, elixir-format +#: lib/graphql/resolvers/person.ex:56 msgid "Person with username %{username} not found" msgstr "Persona con nombre de usuario %{username} no encontrada" -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 #, elixir-format +#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "La ID de publicación no es válida" -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 #, elixir-format +#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "La publicación no existe" -#: lib/graphql/resolvers/member.ex:82 #, elixir-format +#: lib/graphql/resolvers/member.ex:82 msgid "Profile invited doesn't exist" msgstr "El perfil invitado no existe" -#: lib/graphql/resolvers/member.ex:91 lib/graphql/resolvers/member.ex:95 #, elixir-format +#: lib/graphql/resolvers/member.ex:91 lib/graphql/resolvers/member.ex:95 msgid "Profile is already a member of this group" msgstr "Perfil ya es miembro de este grupo" +#, elixir-format #: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 #: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 #: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 #: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 #: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 -#, elixir-format msgid "Profile is not member of group" msgstr "El perfil no es miembro del grupo" -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 #, elixir-format +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "Perfil no encontrado" -#: lib/graphql/resolvers/report.ex:40 #, elixir-format +#: lib/graphql/resolvers/report.ex:40 msgid "Report not found" msgstr "Informe no encontrado" -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 #, elixir-format +#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "El recurso no existe" -#: lib/graphql/resolvers/participant.ex:124 #, elixir-format +#: lib/graphql/resolvers/participant.ex:124 msgid "The event has already reached its maximum capacity" msgstr "El evento ya alcanzó su capacidad máxima" -#: lib/graphql/resolvers/participant.ex:282 #, elixir-format +#: lib/graphql/resolvers/participant.ex:282 msgid "This token is invalid" msgstr "Este token no es válido" -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 #, elixir-format +#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "Todo no existe" +#, elixir-format #: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 -#, elixir-format msgid "Todo list doesn't exist" msgstr "La lista de tareas pendientes no existe" -#: lib/graphql/resolvers/feed_token.ex:73 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:73 msgid "Token does not exist" msgstr "El token no existe" -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "El token no es un UUID válido" -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 #, elixir-format +#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 msgid "User not found" msgstr "Usuario no encontrado" -#: lib/graphql/resolvers/person.ex:310 #, elixir-format +#: lib/graphql/resolvers/person.ex:310 msgid "You already have a profile for this user" msgstr "Ya tienes un perfil para este usuario" -#: lib/graphql/resolvers/participant.ex:134 #, elixir-format +#: lib/graphql/resolvers/participant.ex:134 msgid "You are already a participant of this event" msgstr "Ya eres participante de este evento" -#: lib/graphql/resolvers/member.ex:85 #, elixir-format +#: lib/graphql/resolvers/member.ex:85 msgid "You are not a member of this group" msgstr "no eres un miembro de este grupo" +#, elixir-format #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171 #: lib/graphql/resolvers/member.ex:186 -#, elixir-format msgid "You are not a moderator or admin for this group" msgstr "No eres moderador ni administrador de este grupo" -#: lib/graphql/resolvers/comment.ex:59 #, elixir-format +#: lib/graphql/resolvers/comment.ex:59 msgid "You are not allowed to create a comment if not connected" msgstr "No está permitido crear un comentario si no está conectado" -#: lib/graphql/resolvers/feed_token.ex:41 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:41 msgid "You are not allowed to create a feed token if not connected" msgstr "No puede crear un token de feed si no está conectado" -#: lib/graphql/resolvers/comment.ex:134 #, elixir-format +#: lib/graphql/resolvers/comment.ex:134 msgid "You are not allowed to delete a comment if not connected" msgstr "No puede eliminar un comentario si no está conectado" -#: lib/graphql/resolvers/feed_token.ex:82 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:82 msgid "You are not allowed to delete a feed token if not connected" msgstr "No puede eliminar un token de feed si no está conectado" -#: lib/graphql/resolvers/comment.ex:93 #, elixir-format +#: lib/graphql/resolvers/comment.ex:93 msgid "You are not allowed to update a comment if not connected" msgstr "No se le permite actualizar un comentario si no está conectado" +#, elixir-format #: lib/graphql/resolvers/participant.ex:181 #: lib/graphql/resolvers/participant.ex:214 -#, elixir-format msgid "You can't leave event because you're the only event creator participant" msgstr "" "No puedes abandonar el evento porque eres el único participante creador del " "evento" -#: lib/graphql/resolvers/member.ex:190 #, elixir-format +#: lib/graphql/resolvers/member.ex:190 msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgstr "" "No puede establecerse en un rol de miembro inferior para este grupo porque " "es el único administrador" -#: lib/graphql/resolvers/comment.ex:122 #, elixir-format +#: lib/graphql/resolvers/comment.ex:122 msgid "You cannot delete this comment" msgstr "No puedes borrar este comentario" -#: lib/graphql/resolvers/event.ex:408 #, elixir-format +#: lib/graphql/resolvers/event.ex:408 msgid "You cannot delete this event" msgstr "No puedes borrar este evento" -#: lib/graphql/resolvers/member.ex:88 #, elixir-format +#: lib/graphql/resolvers/member.ex:88 msgid "You cannot invite to this group" msgstr "No puedes invitar a este grupo" -#: lib/graphql/resolvers/feed_token.ex:76 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:76 msgid "You don't have permission to delete this token" msgstr "No tienes permiso para eliminar este token" -#: lib/graphql/resolvers/admin.ex:54 #, elixir-format +#: lib/graphql/resolvers/admin.ex:54 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" "Debe iniciar sesión y un moderador para enumerar los registros de acción" -#: lib/graphql/resolvers/report.ex:28 #, elixir-format +#: lib/graphql/resolvers/report.ex:28 msgid "You need to be logged-in and a moderator to list reports" msgstr "Debe iniciar sesión y un moderador para enumerar los informes" -#: lib/graphql/resolvers/report.ex:107 #, elixir-format +#: lib/graphql/resolvers/report.ex:107 msgid "You need to be logged-in and a moderator to update a report" msgstr "Debe iniciar sesión y ser un moderador para actualizar un informe" -#: lib/graphql/resolvers/report.ex:45 #, elixir-format +#: lib/graphql/resolvers/report.ex:45 msgid "You need to be logged-in and a moderator to view a report" msgstr "Debe iniciar sesión y ser un moderador para actualizar un informe" -#: lib/graphql/resolvers/admin.ex:255 #, elixir-format +#: lib/graphql/resolvers/admin.ex:255 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Debe iniciar sesión y ser administrador para acceder a la configuración de " "administrador" -#: lib/graphql/resolvers/admin.ex:239 #, elixir-format +#: lib/graphql/resolvers/admin.ex:239 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Debe iniciar sesión y ser administrador para acceder a las estadísticas del " "panel" -#: lib/graphql/resolvers/admin.ex:281 #, elixir-format +#: lib/graphql/resolvers/admin.ex:281 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Debe iniciar sesión y ser administrador para acceder a las estadísticas del " "panel" -#: lib/graphql/resolvers/discussion.ex:84 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:84 msgid "You need to be logged-in to access discussions" msgstr "Debe iniciar sesión para acceder a las discusiones" -#: lib/graphql/resolvers/resource.ex:96 #, elixir-format +#: lib/graphql/resolvers/resource.ex:96 msgid "You need to be logged-in to access resources" msgstr "Debes iniciar sesión para acceder a los recursos" -#: lib/graphql/resolvers/event.ex:318 #, elixir-format +#: lib/graphql/resolvers/event.ex:318 msgid "You need to be logged-in to create events" msgstr "Debes iniciar sesión para crear eventos" -#: lib/graphql/resolvers/post.ex:141 #, elixir-format +#: lib/graphql/resolvers/post.ex:141 msgid "You need to be logged-in to create posts" msgstr "Debes iniciar sesión para crear publicaciones" -#: lib/graphql/resolvers/report.ex:79 #, elixir-format +#: lib/graphql/resolvers/report.ex:79 msgid "You need to be logged-in to create reports" msgstr "Debe iniciar sesión para crear informes" -#: lib/graphql/resolvers/resource.ex:137 #, elixir-format +#: lib/graphql/resolvers/resource.ex:137 msgid "You need to be logged-in to create resources" msgstr "Debe iniciar sesión para crear recursos" -#: lib/graphql/resolvers/event.ex:417 #, elixir-format +#: lib/graphql/resolvers/event.ex:417 msgid "You need to be logged-in to delete an event" msgstr "Debe iniciar sesión para eliminar un evento" -#: lib/graphql/resolvers/post.ex:214 #, elixir-format +#: lib/graphql/resolvers/post.ex:214 msgid "You need to be logged-in to delete posts" msgstr "Debes iniciar sesión para eliminar publicaciones" -#: lib/graphql/resolvers/resource.ex:204 #, elixir-format +#: lib/graphql/resolvers/resource.ex:204 msgid "You need to be logged-in to delete resources" msgstr "Debes iniciar sesión para eliminar recursos" -#: lib/graphql/resolvers/participant.ex:108 #, elixir-format +#: lib/graphql/resolvers/participant.ex:108 msgid "You need to be logged-in to join an event" msgstr "Debes iniciar sesión para eliminar recursos" -#: lib/graphql/resolvers/participant.ex:225 #, elixir-format +#: lib/graphql/resolvers/participant.ex:225 msgid "You need to be logged-in to leave an event" msgstr "Debes iniciar sesión para salir de un evento" -#: lib/graphql/resolvers/event.ex:374 #, elixir-format +#: lib/graphql/resolvers/event.ex:374 msgid "You need to be logged-in to update an event" msgstr "Debe iniciar sesión para actualizar un evento" -#: lib/graphql/resolvers/post.ex:180 #, elixir-format +#: lib/graphql/resolvers/post.ex:180 msgid "You need to be logged-in to update posts" msgstr "Debes iniciar sesión para actualizar las publicaciones" -#: lib/graphql/resolvers/resource.ex:174 #, elixir-format +#: lib/graphql/resolvers/resource.ex:174 msgid "You need to be logged-in to update resources" msgstr "Debes iniciar sesión para actualizar los recursos" -#: lib/graphql/resolvers/resource.ex:233 #, elixir-format +#: lib/graphql/resolvers/resource.ex:233 msgid "You need to be logged-in to view a resource preview" msgstr "Debe iniciar sesión para ver una vista previa del recurso" -#: lib/graphql/resolvers/resource.ex:129 #, elixir-format +#: lib/graphql/resolvers/resource.ex:129 msgid "Parent resource doesn't belong to this group" msgstr "El recurso principal no pertenece a este grupo" -#: lib/mobilizon/users/user.ex:114 #, elixir-format +#: lib/mobilizon/users/user.ex:114 msgid "The chosen password is too short." msgstr "La contraseña elegida es demasiado corta." -#: lib/mobilizon/users/user.ex:142 #, elixir-format +#: lib/mobilizon/users/user.ex:142 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" "El token de registro ya está en uso, esto parece un problema de nuestra " "parte." -#: lib/mobilizon/users/user.ex:108 #, elixir-format +#: lib/mobilizon/users/user.ex:108 msgid "This email is already used." msgstr "Este correo electrónico ya está en uso." -#: lib/graphql/error.ex:97 #, elixir-format +#: lib/graphql/error.ex:97 msgid "Post not found" msgstr "Informe no encontrado" -#: lib/graphql/error.ex:84 #, elixir-format +#: lib/graphql/error.ex:84 msgid "Invalid arguments passed" msgstr "Se pasaron argumentos no válidos" -#: lib/graphql/error.ex:90 #, elixir-format +#: lib/graphql/error.ex:90 msgid "Invalid credentials" msgstr "Credenciales no válidas" -#: lib/graphql/error.ex:88 #, elixir-format +#: lib/graphql/error.ex:88 msgid "Reset your password to login" msgstr "Restablezca su contraseña para iniciar sesión" -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 #, elixir-format +#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 msgid "Resource not found" msgstr "Recurso no encontrado" -#: lib/graphql/error.ex:102 #, elixir-format +#: lib/graphql/error.ex:102 msgid "Something went wrong" msgstr "Algo salió mal" -#: lib/graphql/error.ex:83 #, elixir-format +#: lib/graphql/error.ex:83 msgid "Unknown Resource" msgstr "Recurso desconocido" -#: lib/graphql/error.ex:93 #, elixir-format +#: lib/graphql/error.ex:93 msgid "You don't have permission to do this" msgstr "No tienes permiso para hacer esto" -#: lib/graphql/error.ex:85 #, elixir-format +#: lib/graphql/error.ex:85 msgid "You need to be logged in" msgstr "Debes iniciar sesión" -#: lib/graphql/resolvers/member.ex:116 #, elixir-format +#: lib/graphql/resolvers/member.ex:116 msgid "You can't accept this invitation with this profile." msgstr "No puedes aceptar esta invitación con este perfil." -#: lib/graphql/resolvers/member.ex:137 #, elixir-format +#: lib/graphql/resolvers/member.ex:137 msgid "You can't reject this invitation with this profile." msgstr "No puedes rechazar esta invitación con este perfil." -#: lib/graphql/resolvers/media.ex:71 #, elixir-format +#: lib/graphql/resolvers/media.ex:71 msgid "File doesn't have an allowed MIME type." msgstr "El archivo no tiene un tipo MIME permitido." -#: lib/graphql/resolvers/group.ex:213 #, elixir-format +#: lib/graphql/resolvers/group.ex:213 msgid "Profile is not administrator for the group" msgstr "El perfil no es miembro del grupo" -#: lib/graphql/resolvers/event.ex:363 #, elixir-format +#: lib/graphql/resolvers/event.ex:363 msgid "You can't edit this event." msgstr "No puedes borrar este evento." -#: lib/graphql/resolvers/event.ex:366 #, elixir-format +#: lib/graphql/resolvers/event.ex:366 msgid "You can't attribute this event to this profile." msgstr "No puedes rechazar esta invitación con este perfil." -#: lib/graphql/resolvers/member.ex:140 #, elixir-format +#: lib/graphql/resolvers/member.ex:140 msgid "This invitation doesn't exist." msgstr "Esta invitación no existe." -#: lib/graphql/resolvers/member.ex:215 #, elixir-format +#: lib/graphql/resolvers/member.ex:215 msgid "This member already has been rejected." msgstr "Este miembro ya ha sido rechazado." -#: lib/graphql/resolvers/member.ex:239 #, elixir-format +#: lib/graphql/resolvers/member.ex:239 msgid "You don't have the right to remove this member." msgstr "No tiene derecho a eliminar este miembro." -#: lib/mobilizon/actors/actor.ex:350 #, elixir-format +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "Este nombre de usuario ya está en uso." -#: lib/graphql/resolvers/discussion.ex:81 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:81 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" "Debe proporcionar una identificación o un slug para acceder a una discusión" -#: lib/graphql/resolvers/event.ex:313 #, elixir-format +#: lib/graphql/resolvers/event.ex:313 msgid "Organizer profile is not owned by the user" msgstr "El perfil del organizador no es propiedad del usuario" -#: lib/graphql/resolvers/participant.ex:93 #, elixir-format +#: lib/graphql/resolvers/participant.ex:93 msgid "Profile ID provided is not the anonymous profile one" msgstr "El ID de perfil proporcionado no es el del perfil anónimo" +#, elixir-format #: lib/graphql/resolvers/group.ex:159 lib/graphql/resolvers/group.ex:201 #: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 -#, elixir-format msgid "The provided picture is too heavy" msgstr "La imagen proporcionada es demasiado pesada" -#: lib/web/views/utils.ex:34 #, elixir-format +#: lib/web/views/utils.ex:34 msgid "Index file not found. You need to recompile the front-end." msgstr "No se encontró el archivo de índice. Necesita recompilar el front-end." -#: lib/graphql/resolvers/resource.ex:126 #, elixir-format +#: lib/graphql/resolvers/resource.ex:126 msgid "Error while creating resource" msgstr "Error al crear el recurso" -#: lib/graphql/resolvers/user.ex:484 #, elixir-format +#: lib/graphql/resolvers/user.ex:484 msgid "Invalid activation token" msgstr "Token de activación no válido" -#: lib/graphql/resolvers/resource.ex:223 #, elixir-format +#: lib/graphql/resolvers/resource.ex:223 msgid "Unable to fetch resource details from this URL." msgstr "No se pueden recuperar los detalles del recurso de esta URL." +#, elixir-format #: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 -#, elixir-format msgid "Provided profile doesn't have moderator permissions on this event" msgstr "El perfil de moderador proporcionado no tiene permiso para este evento" -#: lib/graphql/resolvers/event.ex:299 #, elixir-format +#: lib/graphql/resolvers/event.ex:299 msgid "Organizer profile doesn't have permission to create an event on behalf of this group" msgstr "" "El perfil del organizador no tiene permiso para crear un evento en nombre de " "este grupo" -#: lib/graphql/resolvers/event.ex:354 #, elixir-format +#: lib/graphql/resolvers/event.ex:354 msgid "This profile doesn't have permission to update an event on behalf of this group" msgstr "" "Este perfil no tiene permiso para actualizar un evento en nombre de este " "grupo" -#: lib/graphql/resolvers/user.ex:163 #, elixir-format +#: lib/graphql/resolvers/user.ex:163 msgid "Your e-mail has been denied registration or uses a disallowed e-mail provider" msgstr "" "A su correo electrónico se le ha denegado el registro o utiliza un proveedor " "de correo electrónico no autorizado" -#: lib/graphql/resolvers/comment.ex:129 #, elixir-format +#: lib/graphql/resolvers/comment.ex:129 msgid "Comment not found" msgstr "Evento no encontrado" -#: lib/graphql/resolvers/discussion.ex:123 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:123 msgid "Error while creating a discussion" msgstr "Error al crear el recurso" -#: lib/graphql/resolvers/user.ex:607 #, elixir-format +#: lib/graphql/resolvers/user.ex:607 msgid "Error while updating locale" msgstr "Error al actualizar el informe" -#: lib/graphql/resolvers/person.ex:307 #, elixir-format +#: lib/graphql/resolvers/person.ex:307 msgid "Error while uploading pictures" msgstr "Error al actualizar el informe" -#: lib/graphql/resolvers/participant.ex:190 #, elixir-format +#: lib/graphql/resolvers/participant.ex:190 msgid "Failed to leave the event" msgstr "No se pudo salir del evento" -#: lib/graphql/resolvers/group.ex:209 #, elixir-format +#: lib/graphql/resolvers/group.ex:209 msgid "Failed to update the group" msgstr "No se pudo actualizar el grupo" -#: lib/graphql/resolvers/user.ex:448 #, elixir-format +#: lib/graphql/resolvers/user.ex:448 msgid "Failed to update user email" msgstr "No se pudo actualizar el correo electrónico del usuario" -#: lib/graphql/resolvers/user.ex:480 #, elixir-format +#: lib/graphql/resolvers/user.ex:480 msgid "Failed to validate user email" msgstr "No se puede validar al usuario" -#: lib/graphql/resolvers/participant.ex:146 #, elixir-format +#: lib/graphql/resolvers/participant.ex:146 msgid "The anonymous actor ID is invalid" msgstr "El ID de actor anónimo no es válido" -#: lib/graphql/resolvers/resource.ex:162 #, elixir-format +#: lib/graphql/resolvers/resource.ex:162 msgid "Unknown error while updating resource" msgstr "Error desconocido al actualizar el recurso" -#: lib/graphql/resolvers/comment.ex:84 #, elixir-format +#: lib/graphql/resolvers/comment.ex:84 msgid "You are not the comment creator" msgstr "No eres el creador de comentarios" -#: lib/graphql/resolvers/user.ex:405 #, elixir-format +#: lib/graphql/resolvers/user.ex:405 msgid "You cannot change your password." msgstr "No puede cambiar su contraseña." -#: lib/graphql/resolvers/participant.ex:321 #, elixir-format +#: lib/graphql/resolvers/participant.ex:321 msgid "Format not supported" msgstr "Formato incompatible" -#: lib/graphql/resolvers/participant.ex:305 #, elixir-format +#: lib/graphql/resolvers/participant.ex:305 msgid "A dependency needed to export to %{format} is not installed" msgstr "Una dependencia necesaria para exportar a %{formato} no está instalada" -#: lib/graphql/resolvers/participant.ex:313 #, elixir-format +#: lib/graphql/resolvers/participant.ex:313 msgid "An error occured while saving export" msgstr "Ocurrió un error al guardar la exportación" -#: lib/web/controllers/export_controller.ex:30 #, elixir-format +#: lib/web/controllers/export_controller.ex:30 msgid "Export to format %{format} is not enabled on this instance" msgstr "" "La exportación al formato %{format} no está habilitada en esta instancia" -#: lib/graphql/resolvers/group.ex:165 #, elixir-format +#: lib/graphql/resolvers/group.ex:165 msgid "Only admins can create groups" msgstr "Solo los administradores pueden crear grupos" -#: lib/graphql/resolvers/event.ex:306 #, elixir-format +#: lib/graphql/resolvers/event.ex:306 msgid "Only groups can create events" msgstr "Solo los grupos pueden crear eventos" -#: lib/graphql/resolvers/event.ex:292 #, elixir-format +#: lib/graphql/resolvers/event.ex:292 msgid "Unknown error while creating event" msgstr "Error desconocido al crear el evevento" -#: lib/graphql/resolvers/user.ex:461 #, elixir-format +#: lib/graphql/resolvers/user.ex:461 msgid "User cannot change email" msgstr "El usuario no puede cambiar el correo electrónico" -#: lib/graphql/resolvers/group.ex:364 #, elixir-format +#: lib/graphql/resolvers/group.ex:364 msgid "Follow does not match your account" msgstr "Seguir no conduce a tu cuenta" -#: lib/graphql/resolvers/group.ex:368 #, elixir-format +#: lib/graphql/resolvers/group.ex:368 msgid "Follow not found" msgstr "Seguimiento no encontrado" -#: lib/graphql/resolvers/user.ex:327 #, elixir-format +#: lib/graphql/resolvers/user.ex:327 msgid "Profile with username %{username} not found" msgstr "Persona con nombre de usuario %{username} no encontrada" -#: lib/graphql/resolvers/user.ex:322 #, elixir-format +#: lib/graphql/resolvers/user.ex:322 msgid "This profile does not belong to you" msgstr "Este perfil no te pertenece" -#: lib/graphql/resolvers/group.ex:338 #, elixir-format +#: lib/graphql/resolvers/group.ex:338 msgid "You are already following this group" msgstr "Ya estas siguiendo este grupo" -#: lib/graphql/resolvers/group.ex:347 #, elixir-format +#: lib/graphql/resolvers/group.ex:347 msgid "You need to be logged-in to follow a group" msgstr "Debes iniciar sesión para eliminar su cuenta" -#: lib/graphql/resolvers/group.ex:396 #, elixir-format +#: lib/graphql/resolvers/group.ex:396 msgid "You need to be logged-in to unfollow a group" msgstr "Debes iniciar sesión para eliminar su cuenta" -#: lib/graphql/resolvers/group.ex:373 #, elixir-format +#: lib/graphql/resolvers/group.ex:373 msgid "You need to be logged-in to update a group follow" msgstr "Debes iniciar sesión para actualizar un grupo" -#: lib/graphql/resolvers/member.ex:208 #, elixir-format +#: lib/graphql/resolvers/member.ex:208 msgid "This member does not exist" msgstr "Este miembro no existe" -#: lib/graphql/resolvers/member.ex:232 #, elixir-format +#: lib/graphql/resolvers/member.ex:232 msgid "You don't have the role needed to remove this member." msgstr "No tiene derecho a eliminar este miembro." -#: lib/graphql/resolvers/member.ex:250 #, elixir-format +#: lib/graphql/resolvers/member.ex:250 msgid "You must be logged-in to remove a member" msgstr "Debes iniciar sesión para eliminar un miembro" diff --git a/priv/gettext/fi/LC_MESSAGES/default.po b/priv/gettext/fi/LC_MESSAGES/default.po index 8168ef9b9..28e559138 100644 --- a/priv/gettext/fi/LC_MESSAGES/default.po +++ b/priv/gettext/fi/LC_MESSAGES/default.po @@ -933,15 +933,6 @@ msgstr[1] "" "Jos haluat perua osallistumisesi, siirry tapahtumien sivuille yllä olevista " "linkeistä ja napsauta niissä osallistumispainiketta." -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "Yksi osallistujapyyntö odottaa käsittelyäsi:" -msgstr[1] "" -"%{number_participation_requests} osallistujapyyntöä odottaa käsittelyäsi:" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -1060,8 +1051,8 @@ msgid "Location address was removed" msgstr "Käyntiosoite poistettiin" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "Hallinnoi odottavia osallistujapyyntöjä" @@ -1176,8 +1167,8 @@ msgstr "" "linkistä tapahtumasivulle ja napsauta osallistumispainiketta." #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" "Saat tämän sähköpostin, koska olet tilannut ilmoitukset tapahtumiesi " @@ -1813,7 +1804,7 @@ msgid "On the agenda this week" msgstr "Yksi suunniteltu tapahtuma tällä viikolla" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1824,7 +1815,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1835,7 +1826,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1866,7 +1857,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1876,7 +1867,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1887,17 +1878,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "Osallistuminen hyväksytty" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "Osallistuminen hyväksytty" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -1963,12 +1954,21 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "Yksi osallistujapyyntö odottaa käsittelyäsi:" +msgstr[1] "" +"%{number_participation_requests} osallistujapyyntöä odottaa käsittelyäsi:" diff --git a/priv/gettext/fi/LC_MESSAGES/errors.po b/priv/gettext/fi/LC_MESSAGES/errors.po index b4a736cab..76553dba5 100644 --- a/priv/gettext/fi/LC_MESSAGES/errors.po +++ b/priv/gettext/fi/LC_MESSAGES/errors.po @@ -810,7 +810,7 @@ msgid "You don't have the right to remove this member." msgstr "Sinulla ei ole oikeutta poistaa jäsentä." #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "Käyttäjänimi on jo käytössä." diff --git a/priv/gettext/fr/LC_MESSAGES/activity.po b/priv/gettext/fr/LC_MESSAGES/activity.po index c3c82d364..d26be56b0 100644 --- a/priv/gettext/fr/LC_MESSAGES/activity.po +++ b/priv/gettext/fr/LC_MESSAGES/activity.po @@ -20,257 +20,320 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Poedit 3.0\n" -#: lib/service/activity/renderer/member.ex:38 lib/web/templates/email/activity/_member_activity_item.html.heex:19 -#: lib/web/templates/email/activity/_member_activity_item.text.eex:12 +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.heex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 msgid "%{member} accepted the invitation to join the group." msgstr "%{member} a accepté l'invitation à rejoindre le groupe." -#: lib/service/activity/renderer/member.ex:42 lib/web/templates/email/activity/_member_activity_item.html.heex:26 -#: lib/web/templates/email/activity/_member_activity_item.text.eex:17 +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.heex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 msgid "%{member} rejected the invitation to join the group." msgstr "%{member} a refusé l'invitation à rejoindre le groupe." -#: lib/service/activity/renderer/member.ex:30 lib/web/templates/email/activity/_member_activity_item.html.heex:4 -#: lib/web/templates/email/activity/_member_activity_item.text.eex:1 +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.heex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 msgid "%{member} requested to join the group." msgstr "%{member} a demandé à rejoindre le groupe." -#: lib/service/activity/renderer/member.ex:34 lib/web/templates/email/activity/_member_activity_item.html.heex:11 -#: lib/web/templates/email/activity/_member_activity_item.text.eex:6 +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.heex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 msgid "%{member} was invited by %{profile}." msgstr "%{member} a été invité⋅e par %{profile}." -#: lib/service/activity/renderer/member.ex:50 lib/web/templates/email/activity/_member_activity_item.html.heex:40 -#: lib/web/templates/email/activity/_member_activity_item.text.eex:27 +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.heex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 msgid "%{profile} added the member %{member}." msgstr "%{profile} a ajouté le ou la membre %{member}." -#: lib/service/activity/renderer/discussion.ex:65 lib/web/templates/email/activity/_discussion_activity_item.html.heex:46 -#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:65 +#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 msgid "%{profile} archived the discussion %{discussion}." msgstr "%{profile} a archivé la discussion %{discussion}." -#: lib/service/activity/renderer/discussion.ex:25 lib/web/templates/email/activity/_discussion_activity_item.html.heex:4 -#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:4 lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 msgid "%{profile} created the discussion %{discussion}." msgstr "%{profile} a créé la discussion %{discussion}." -#: lib/service/activity/renderer/resource.ex:24 lib/web/templates/email/activity/_resource_activity_item.html.heex:5 -#: lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.heex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 msgid "%{profile} created the folder %{resource}." msgstr "%{profile} a créé le dossier %{resource}." -#: lib/web/templates/email/activity/_group_activity_item.html.heex:4 lib/web/templates/email/activity/_group_activity_item.text.eex:1 +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 msgid "%{profile} created the group %{group}." msgstr "%{profile} a créé le groupe %{group}." -#: lib/service/activity/renderer/resource.ex:33 lib/web/templates/email/activity/_resource_activity_item.html.heex:20 -#: lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.heex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 msgid "%{profile} created the resource %{resource}." msgstr "%{profile} a créé la resource %{resource}." -#: lib/service/activity/renderer/discussion.ex:75 lib/web/templates/email/activity/_discussion_activity_item.html.heex:60 -#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:75 +#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 msgid "%{profile} deleted the discussion %{discussion}." msgstr "%{profile} a créé la discussion %{discussion}." -#: lib/service/activity/renderer/resource.ex:97 lib/web/templates/email/activity/_resource_activity_item.html.heex:103 -#: lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.heex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 msgid "%{profile} deleted the folder %{resource}." msgstr "%{profile} a supprimé le dossier %{resource}." -#: lib/service/activity/renderer/resource.ex:106 lib/web/templates/email/activity/_resource_activity_item.html.heex:111 -#: lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.heex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 msgid "%{profile} deleted the resource %{resource}." msgstr "%{profile} a supprimé la resource %{resource}." -#: lib/service/activity/renderer/member.ex:66 lib/web/templates/email/activity/_member_activity_item.html.heex:56 -#: lib/web/templates/email/activity/_member_activity_item.text.eex:39 +#, elixir-format +#: lib/service/activity/renderer/member.ex:66 +#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 msgid "%{profile} excluded member %{member}." msgstr "%{profile} a exclu le ou la membre %{member}." -#: lib/service/activity/renderer/resource.ex:76 lib/web/templates/email/activity/_resource_activity_item.html.heex:71 -#: lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.heex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 msgid "%{profile} moved the folder %{resource}." msgstr "%{profile} a déplacé le dossier %{resource}." -#: lib/service/activity/renderer/resource.ex:85 lib/web/templates/email/activity/_resource_activity_item.html.heex:86 -#: lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.heex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 msgid "%{profile} moved the resource %{resource}." msgstr "%{profile} a déplacé la ressource %{resource}." -#: lib/service/activity/renderer/member.ex:70 lib/web/templates/email/activity/_member_activity_item.html.heex:64 -#: lib/web/templates/email/activity/_member_activity_item.text.eex:45 +#, elixir-format +#: lib/service/activity/renderer/member.ex:70 +#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 msgid "%{profile} quit the group." msgstr "%{profile} a quitté le groupe." -#: lib/service/activity/renderer/discussion.ex:55 lib/web/templates/email/activity/_discussion_activity_item.html.heex:32 -#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:55 +#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 msgid "%{profile} renamed the discussion %{discussion}." msgstr "%{profile} a renommé la discussion %{discussion}." -#: lib/service/activity/renderer/resource.ex:45 lib/web/templates/email/activity/_resource_activity_item.html.heex:37 -#: lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.heex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." msgstr "%{profile} a renommé le dossier %{old_resource_title} en %{resource}." -#: lib/service/activity/renderer/resource.ex:59 lib/web/templates/email/activity/_resource_activity_item.html.heex:53 -#: lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.heex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." msgstr "%{profile} a renommé la resource %{old_resource_title} en %{resource}." -#: lib/service/activity/renderer/discussion.ex:35 lib/web/templates/email/activity/_discussion_activity_item.html.heex:18 -#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:35 +#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:18 lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 msgid "%{profile} replied to the discussion %{discussion}." msgstr "%{profile} a répondu à la discussion %{discussion}." -#: lib/web/templates/email/activity/_group_activity_item.html.heex:19 lib/web/templates/email/activity/_group_activity_item.text.eex:7 +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 msgid "%{profile} updated the group %{group}." msgstr "%{profile} a mis à jour le groupe %{group}." -#: lib/service/activity/renderer/member.ex:62 lib/web/templates/email/activity/_member_activity_item.html.heex:48 -#: lib/web/templates/email/activity/_member_activity_item.text.eex:33 +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 msgid "%{profile} updated the member %{member}." msgstr "%{profile} a mis à jour le membre %{member}." -#: lib/service/activity/renderer/event.ex:23 lib/web/templates/email/activity/_event_activity_item.html.heex:4 -#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "L'événement %{event} a été créé par %{profile}." -#: lib/service/activity/renderer/event.ex:43 lib/web/templates/email/activity/_event_activity_item.html.heex:34 -#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "L'événement %{event} a été supprimé par %{profile}." -#: lib/service/activity/renderer/event.ex:33 lib/web/templates/email/activity/_event_activity_item.html.heex:19 -#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "L'événement %{event} a été mis à jour par %{profile}." -#: lib/web/templates/email/activity/_post_activity_item.html.heex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +#, elixir-format +#: lib/web/templates/email/activity/_post_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_post_activity_item.text.eex:1 msgid "The post %{post} was created by %{profile}." msgstr "Le billet %{post} a été créé par %{profile}." -#: lib/web/templates/email/activity/_post_activity_item.html.heex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +#, elixir-format +#: lib/web/templates/email/activity/_post_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_post_activity_item.text.eex:13 msgid "The post %{post} was deleted by %{profile}." msgstr "Le billet %{post} a été supprimé par %{profile}." -#: lib/web/templates/email/activity/_post_activity_item.html.heex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +#, elixir-format +#: lib/web/templates/email/activity/_post_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_post_activity_item.text.eex:7 msgid "The post %{post} was updated by %{profile}." msgstr "Le billet %{post} a été mis à jour par %{profile}." -#: lib/service/activity/renderer/member.ex:46 lib/web/templates/email/activity/_member_activity_item.html.heex:33 -#: lib/web/templates/email/activity/_member_activity_item.text.eex:22 +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.heex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 msgid "%{member} joined the group." msgstr "%{member} a rejoint le groupe." -#: lib/service/activity/renderer/event.ex:63 lib/web/templates/email/activity/_event_activity_item.html.heex:58 -#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "%{profile} a posté un commentaire sur l'événement %{event}." -#: lib/service/activity/renderer/event.ex:54 lib/web/templates/email/activity/_event_activity_item.html.heex:43 -#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "%{profile} a répondu à un commentaire sur l'événement %{event}." +#, elixir-format #: lib/web/templates/email/email_direct_activity.text.eex:27 msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." msgstr "Vous ne voulez pas recevoir de notifications d'activité ? Vous pouvez changer leur fréquence ou les désactiver dans vos préférences." -#: lib/web/templates/email/email_direct_activity.html.heex:135 lib/web/templates/email/email_direct_activity.text.eex:23 +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.heex:135 +#: lib/web/templates/email/email_direct_activity.text.eex:23 msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "Voir une activité de plus" msgstr[1] "Voir %{count} activités de plus" -#: lib/web/templates/email/email_direct_activity.html.heex:44 lib/web/templates/email/email_direct_activity.html.heex:46 -#: lib/web/templates/email/email_direct_activity.text.eex:6 lib/web/templates/email/email_direct_activity.text.eex:7 +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.heex:44 +#: lib/web/templates/email/email_direct_activity.html.heex:46 lib/web/templates/email/email_direct_activity.text.eex:6 +#: lib/web/templates/email/email_direct_activity.text.eex:7 msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "Il y a eu une activité !" msgstr[1] "Il y a eu de l'activité !" +#, elixir-format #: lib/service/activity/renderer/renderer.ex:46 msgid "Activity on %{instance}" msgstr "Activité sur %{instance}" -#: lib/service/activity/renderer/comment.ex:38 lib/web/templates/email/activity/_comment_activity_item.html.heex:19 -#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/email_anonymous_activity.html.heex:41 -#: lib/web/templates/email/email_anonymous_activity.text.eex:5 +#, elixir-format +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 lib/web/templates/email/activity/_comment_activity_item.text.eex:7 +#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "%{profile} a posté une annonce sous l'événement %{event}." -#: lib/service/activity/renderer/comment.ex:24 lib/web/templates/email/activity/_comment_activity_item.html.heex:4 -#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 +#, elixir-format +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "%{profile} vous a mentionné dans un commentaire sous l'événement %{event}." +#, elixir-format #: lib/service/activity/renderer/discussion.ex:45 msgid "%{profile} mentionned you in the discussion %{discussion}." msgstr "%{profile} vous a mentionné dans la discussion %{discussion}." +#, elixir-format #: lib/web/templates/email/email_direct_activity.html.heex:155 msgid "Don't want to receive activity notifications? You may change frequency or disable them in %{tag_start}your settings%{tag_end}." msgstr "" "Vous ne voulez pas recevoir de notifications d'activité ? Vous pouvez changer leur fréquence ou les désactiver dans %{tag_start}vos préférences" "%{tag_end}." -#: lib/web/templates/email/email_direct_activity.html.heex:42 lib/web/templates/email/email_direct_activity.text.eex:5 +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.heex:42 +#: lib/web/templates/email/email_direct_activity.text.eex:5 msgid "Here's your weekly activity recap" msgstr "Voici votre récapitulatif hebdomadaire d'activité" +#, elixir-format #: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "Notification d'activité sur %{instance}" +#, elixir-format #: lib/web/email/activity.ex:126 msgid "Daily activity recap for %{instance}" msgstr "Récapitulatif quotidien d'activité sur %{instance}" -#: lib/web/templates/email/email_direct_activity.html.heex:40 lib/web/templates/email/email_direct_activity.text.eex:4 +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.heex:40 +#: lib/web/templates/email/email_direct_activity.text.eex:4 msgid "Here's your daily activity recap" msgstr "Voici votre récapitulatif quotidien d'activité" +#, elixir-format #: lib/web/email/activity.ex:133 msgid "Weekly activity recap for %{instance}" msgstr "Récapitulatif hebdomadaire d'activité sur %{instance}" -#: lib/service/activity/renderer/comment.ex:66 lib/web/templates/email/activity/_comment_activity_item.html.heex:51 -#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#, elixir-format +#: lib/service/activity/renderer/comment.ex:66 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "%{profile} a posté un nouveau commentaire sous votre événement %{event}." -#: lib/service/activity/renderer/comment.ex:53 lib/web/templates/email/activity/_comment_activity_item.html.heex:36 -#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#, elixir-format +#: lib/service/activity/renderer/comment.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "%{profile} a posté une nouvelle réponse sous votre événement %{event}." +#, elixir-format #: lib/web/email/activity.ex:46 msgid "Announcement for your event %{event}" msgstr "Annonce pour votre événement %{event}" +#, elixir-format #: lib/service/activity/renderer/group.ex:23 msgid "The group %{group} was updated by %{profile}." msgstr "Le groupe %{group} a été mis à jour par %{profile}." +#, elixir-format #: lib/service/activity/renderer/post.ex:47 msgid "The post %{post} from group %{group} was deleted by %{profile}." msgstr "Le billet %{post} du groupe %{group} a été supprimé par %{profile}." +#, elixir-format #: lib/service/activity/renderer/post.ex:31 msgid "The post %{post} from group %{group} was published by %{profile}." msgstr "Le billet %{post} du groupe %{group} a été publié par %{profile}." +#, elixir-format #: lib/service/activity/renderer/post.ex:39 msgid "The post %{post} from group %{group} was updated by %{profile}." msgstr "Le billet %{post} du groupe %{group} a été mis à jour par %{profile}." +#, elixir-format #: lib/service/activity/renderer/member.ex:54 msgid "%{profile} approved the membership request from %{member}." msgstr "%{profile} a approuvé la demande d'adhésion de %{member}." +#, elixir-format #: lib/service/activity/renderer/member.ex:58 msgid "%{profile} rejected the membership request from %{member}." msgstr "%{profile} a rejeté la demande d'adhésion de %{member}." diff --git a/priv/gettext/fr/LC_MESSAGES/default.po b/priv/gettext/fr/LC_MESSAGES/default.po index 56b24fa4c..5c144ca94 100644 --- a/priv/gettext/fr/LC_MESSAGES/default.po +++ b/priv/gettext/fr/LC_MESSAGES/default.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-11-12 17:13+0100\n" +"PO-Revision-Date: 2021-11-15 15:55+0100\n" "Last-Translator: Thomas Citharel \n" "Language-Team: French \n" "Language: fr\n" @@ -640,12 +640,6 @@ msgid_plural "Would you wish to cancel your attendance to one or several events, msgstr[0] "Si vous avez besoin d'annuler votre participation, il suffit d'accéder à la page de l'événement à partir du lien ci-dessus et de cliquer sur le bouton « Je participe »." msgstr[1] "Si vous avez besoin d'annuler votre participation à un ou plusieurs événements, il suffit d'accéder aux pages des événement grâce aux liens ci-dessus et de cliquer sur le bouton « Je participe »." -#: lib/web/templates/email/pending_participation_notification.html.heex:38 lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "Vous avez une demande de participation en attente à traiter :" -msgstr[1] "Vous avez %{number_participation_requests} demandes de participation en attente à traiter :" - #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} est une instance Mobilizon." @@ -656,7 +650,7 @@ msgstr "%{instance} est une instance Mobilizon." #: lib/web/templates/email/pending_participation_notification.html.heex:13 lib/web/templates/email/pending_participation_notification.text.eex:1 msgid "A request is pending!" -msgstr "Une requête est en attente !" +msgstr "Une demande est en attente !" #: lib/web/templates/email/before_event_notification.html.heex:13 lib/web/templates/email/before_event_notification.text.eex:1 msgid "An event is upcoming!" @@ -718,7 +712,7 @@ msgstr "Localisation" msgid "Location address was removed" msgstr "L'adresse physique a été enlevée" -#: lib/web/templates/email/pending_participation_notification.html.heex:51 lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "Gérer les demandes de participation en attente" @@ -798,7 +792,7 @@ msgstr "Quoi de neuf aujourd'hui ?" msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "Si vous souhaitez mettre à jour ou annuler votre participation, il vous suffit d'accéder à la page de l'événement par le lien ci-dessus et de cliquer sur le bouton Participer." -#: lib/web/templates/email/pending_participation_notification.html.heex:64 lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "Vous recevez ce courriel parce que vous avez choisi de recevoir des notifications pour les demandes de participation en attente à vos événements. Vous pouvez désactiver ou modifier vos paramètres de notification dans les paramètres de votre compte utilisateur dans « Notifications »." @@ -1209,7 +1203,7 @@ msgstr "%{date_time} (dans votre fuseau horaire %{timezone} %{offset})" msgid "On the agenda this week" msgstr "Au programme cette semaine" -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "Détails" @@ -1217,7 +1211,7 @@ msgstr "Détails" msgid "From the %{start} to the %{end}" msgstr "Du %{start} au %{end}" -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "Gérer votre participation" @@ -1225,7 +1219,7 @@ msgstr "Gérer votre participation" msgid "On %{date} from %{start_time} to %{end_time}" msgstr "Le %{date} de %{start_time} à %{end_time}" -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "Lire plus" @@ -1249,7 +1243,7 @@ msgstr "Adresse :" msgid "Date:" msgstr "Date :" -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "Détails :" @@ -1257,7 +1251,7 @@ msgstr "Détails :" msgid "Manage your notification settings" msgstr "Gérer vos paramètres de notification" -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "Gérer votre participation :" @@ -1265,15 +1259,15 @@ msgstr "Gérer votre participation :" msgid "Organizer: %{organizer}" msgstr "Organisateur : %{organizer}" -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "Participer" -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "Participer :" -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "Lire plus : %{url}" @@ -1332,3 +1326,9 @@ msgstr "Votre demande d'adhésion pour le groupe %{group} a été approuvée." #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "Votre demande d'adhésion pour le groupe %{link_start}%{group}%{link_end} a été approuvée." + +#: lib/web/templates/email/pending_participation_notification.html.heex:38 lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "Vous avez une demande de participation en attente à traiter pour l'événement suivant :" +msgstr[1] "Vous avez %{number_participation_requests} demandes de participation en attente à traiter pour l'événement suivant :" diff --git a/priv/gettext/fr/LC_MESSAGES/errors.po b/priv/gettext/fr/LC_MESSAGES/errors.po index 2f9a0ac4d..e1e9a8874 100644 --- a/priv/gettext/fr/LC_MESSAGES/errors.po +++ b/priv/gettext/fr/LC_MESSAGES/errors.po @@ -96,747 +96,937 @@ msgstr "doit être supérieur ou égal à %{number}" msgid "must be equal to %{number}" msgstr "doit être égal à %{number}" +#, elixir-format #: lib/graphql/resolvers/user.ex:107 msgid "Cannot refresh the token" msgstr "Impossible de rafraîchir le jeton" +#, elixir-format #: lib/graphql/resolvers/group.ex:245 msgid "Current profile is not a member of this group" msgstr "Le profil actuel n'est pas un membre de ce groupe" +#, elixir-format #: lib/graphql/resolvers/group.ex:249 msgid "Current profile is not an administrator of the selected group" msgstr "Le profil actuel n'est pas un·e administrateur·ice du groupe sélectionné" +#, elixir-format #: lib/graphql/resolvers/user.ex:593 msgid "Error while saving user settings" msgstr "Erreur lors de la sauvegarde des paramètres utilisateur" -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:242 lib/graphql/resolvers/group.ex:274 -#: lib/graphql/resolvers/group.ex:311 lib/graphql/resolvers/group.ex:342 lib/graphql/resolvers/group.ex:391 -#: lib/graphql/resolvers/member.ex:79 +#, elixir-format +#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:242 +#: lib/graphql/resolvers/group.ex:274 lib/graphql/resolvers/group.ex:311 lib/graphql/resolvers/group.ex:342 +#: lib/graphql/resolvers/group.ex:391 lib/graphql/resolvers/member.ex:79 msgid "Group not found" msgstr "Groupe non trouvé" +#, elixir-format #: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "Groupe avec l'ID %{id} non trouvé" +#, elixir-format #: lib/graphql/resolvers/user.ex:85 msgid "Impossible to authenticate, either your email or password are invalid." msgstr "Impossible de s'authentifier, votre adresse e-mail ou bien votre mot de passe sont invalides." +#, elixir-format #: lib/graphql/resolvers/group.ex:308 msgid "Member not found" msgstr "Membre non trouvé" +#, elixir-format #: lib/graphql/resolvers/actor.ex:94 msgid "No profile found for the moderator user" msgstr "Aucun profil trouvé pour l'utilisateur modérateur" +#, elixir-format #: lib/graphql/resolvers/user.ex:253 msgid "No user to validate with this email was found" msgstr "Aucun·e utilisateur·ice à valider avec cet email n'a été trouvé·e" +#, elixir-format #: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:278 msgid "No user with this email was found" msgstr "Aucun·e utilisateur·ice avec cette adresse e-mail n'a été trouvé·e" -#: lib/graphql/resolvers/feed_token.ex:28 lib/graphql/resolvers/participant.ex:32 -#: lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 lib/graphql/resolvers/person.ex:353 -#: lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 lib/graphql/resolvers/person.ex:425 -#: lib/graphql/resolvers/person.ex:440 +#, elixir-format +#: lib/graphql/resolvers/feed_token.ex:28 +#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "Le profil n'est pas possédé par l'utilisateur connecté" +#, elixir-format #: lib/graphql/resolvers/user.ex:156 msgid "Registrations are not open" msgstr "Les inscriptions ne sont pas ouvertes" +#, elixir-format #: lib/graphql/resolvers/user.ex:408 msgid "The current password is invalid" msgstr "Le mot de passe actuel est invalid" +#, elixir-format #: lib/graphql/resolvers/user.ex:451 msgid "The new email doesn't seem to be valid" msgstr "La nouvelle adresse e-mail ne semble pas être valide" +#, elixir-format #: lib/graphql/resolvers/user.ex:454 msgid "The new email must be different" msgstr "La nouvelle adresse e-mail doit être différente" +#, elixir-format #: lib/graphql/resolvers/user.ex:411 msgid "The new password must be different" msgstr "Le nouveau mot de passe doit être différent" -#: lib/graphql/resolvers/user.ex:458 lib/graphql/resolvers/user.ex:520 lib/graphql/resolvers/user.ex:523 +#, elixir-format +#: lib/graphql/resolvers/user.ex:458 lib/graphql/resolvers/user.ex:520 +#: lib/graphql/resolvers/user.ex:523 msgid "The password provided is invalid" msgstr "Le mot de passe fourni est invalide" +#, elixir-format #: lib/graphql/resolvers/user.ex:415 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" "Le mot de passe que vous avez choisi est trop court. Merci de vous assurer que votre mot de passe contienne au moins " "6 caractères." +#, elixir-format #: lib/graphql/resolvers/user.ex:274 msgid "This user can't reset their password" msgstr "Cet·te utilisateur·ice ne peut pas réinitialiser son mot de passe" +#, elixir-format #: lib/graphql/resolvers/user.ex:81 msgid "This user has been disabled" msgstr "Cet·te utilisateur·ice a été désactivé·e" +#, elixir-format #: lib/graphql/resolvers/user.ex:232 lib/graphql/resolvers/user.ex:237 msgid "Unable to validate user" msgstr "Impossible de valider l'utilisateur·ice" +#, elixir-format #: lib/graphql/resolvers/user.ex:501 msgid "User already disabled" msgstr "L'utilisateur·ice est déjà désactivé·e" +#, elixir-format #: lib/graphql/resolvers/user.ex:568 msgid "User requested is not logged-in" msgstr "L'utilisateur·ice demandé·e n'est pas connecté·e" +#, elixir-format #: lib/graphql/resolvers/group.ex:280 msgid "You are already a member of this group" msgstr "Vous êtes déjà membre de ce groupe" +#, elixir-format #: lib/graphql/resolvers/group.ex:315 msgid "You can't leave this group because you are the only administrator" msgstr "Vous ne pouvez pas quitter ce groupe car vous en êtes le ou la seul·e administrateur·ice" +#, elixir-format #: lib/graphql/resolvers/group.ex:277 msgid "You cannot join this group" msgstr "Vous ne pouvez pas rejoindre ce groupe" +#, elixir-format #: lib/graphql/resolvers/group.ex:112 msgid "You may not list groups unless moderator." msgstr "Vous ne pouvez pas lister les groupes sauf à être modérateur·ice." +#, elixir-format #: lib/graphql/resolvers/user.ex:466 msgid "You need to be logged-in to change your email" msgstr "Vous devez être connecté·e pour changer votre adresse e-mail" +#, elixir-format #: lib/graphql/resolvers/user.ex:423 msgid "You need to be logged-in to change your password" msgstr "Vous devez être connecté·e pour changer votre mot de passe" +#, elixir-format #: lib/graphql/resolvers/group.ex:254 msgid "You need to be logged-in to delete a group" msgstr "Vous devez être connecté·e pour supprimer un groupe" +#, elixir-format #: lib/graphql/resolvers/user.ex:528 msgid "You need to be logged-in to delete your account" msgstr "Vous devez être connecté·e pour supprimer votre compte" +#, elixir-format #: lib/graphql/resolvers/group.ex:285 msgid "You need to be logged-in to join a group" msgstr "Vous devez être connecté·e pour rejoindre un groupe" +#, elixir-format #: lib/graphql/resolvers/group.ex:320 msgid "You need to be logged-in to leave a group" msgstr "Vous devez être connecté·e pour quitter un groupe" +#, elixir-format #: lib/graphql/resolvers/group.ex:218 msgid "You need to be logged-in to update a group" msgstr "Vous devez être connecté·e pour mettre à jour un groupe" +#, elixir-format #: lib/graphql/resolvers/user.ex:112 msgid "You need to have an existing token to get a refresh token" msgstr "Vous devez avoir un jeton existant pour obtenir un jeton de rafraîchissement" +#, elixir-format #: lib/graphql/resolvers/user.ex:256 lib/graphql/resolvers/user.ex:281 msgid "You requested again a confirmation email too soon" msgstr "Vous avez à nouveau demandé un email de confirmation trop vite" +#, elixir-format #: lib/graphql/resolvers/user.ex:159 msgid "Your email is not on the allowlist" msgstr "Votre adresse e-mail n'est pas sur la liste d'autorisations" +#, elixir-format #: lib/graphql/resolvers/actor.ex:100 msgid "Error while performing background task" msgstr "Erreur lors de l'exécution d'une tâche d'arrière-plan" +#, elixir-format #: lib/graphql/resolvers/actor.ex:32 msgid "No profile found with this ID" msgstr "Aucun profil trouvé avec cet ID" +#, elixir-format #: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "Aucun profil distant trouvé avec cet ID" +#, elixir-format #: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "Seul·es les modérateur·ice et les administrateur·ices peuvent suspendre un profil" +#, elixir-format #: lib/graphql/resolvers/actor.ex:105 msgid "Only moderators and administrators can unsuspend a profile" msgstr "Seul·es les modérateur·ice et les administrateur·ices peuvent annuler la suspension d'un profil" +#, elixir-format #: lib/graphql/resolvers/actor.ex:29 msgid "Only remote profiles may be refreshed" msgstr "Seuls les profils distants peuvent être rafraîchis" +#, elixir-format #: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "Le profil est déjà suspendu" +#, elixir-format #: lib/graphql/resolvers/participant.ex:96 msgid "A valid email is required by your instance" msgstr "Une adresse e-mail valide est requise par votre instance" -#: lib/graphql/resolvers/participant.ex:90 lib/graphql/resolvers/participant.ex:143 +#, elixir-format +#: lib/graphql/resolvers/participant.ex:90 +#: lib/graphql/resolvers/participant.ex:143 msgid "Anonymous participation is not enabled" msgstr "La participation anonyme n'est pas activée" +#, elixir-format #: lib/graphql/resolvers/person.ex:210 msgid "Cannot remove the last administrator of a group" msgstr "Impossible de supprimer le ou la dernier·ère administrateur·ice d'un groupe" +#, elixir-format #: lib/graphql/resolvers/person.ex:207 msgid "Cannot remove the last identity of a user" msgstr "Impossible de supprimer le dernier profil d'un·e utilisateur·ice" +#, elixir-format #: lib/graphql/resolvers/comment.ex:126 msgid "Comment is already deleted" msgstr "Le commentaire est déjà supprimé" +#, elixir-format #: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "Discussion non trouvée" +#, elixir-format #: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 msgid "Error while saving report" msgstr "Erreur lors de la sauvegarde du signalement" +#, elixir-format #: lib/graphql/resolvers/report.ex:102 msgid "Error while updating report" msgstr "Erreur lors de la mise à jour du signalement" +#, elixir-format #: lib/graphql/resolvers/participant.ex:131 msgid "Event id not found" msgstr "ID de l'événement non trouvé" -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 lib/graphql/resolvers/event.ex:412 +#, elixir-format +#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "Événement non trouvé" -#: lib/graphql/resolvers/participant.ex:87 lib/graphql/resolvers/participant.ex:128 -#: lib/graphql/resolvers/participant.ex:155 lib/graphql/resolvers/participant.ex:336 +#, elixir-format +#: lib/graphql/resolvers/participant.ex:87 +#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "L'événement avec cet ID %{id} n'existe pas" +#, elixir-format #: lib/graphql/resolvers/participant.ex:103 msgid "Internal Error" msgstr "Erreur interne" +#, elixir-format #: lib/graphql/resolvers/discussion.ex:219 msgid "No discussion with ID %{id}" msgstr "Aucune discussion avec l'ID %{id}" -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 lib/graphql/resolvers/todos.ex:179 -#: lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#, elixir-format +#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "Aucun profil trouvé pour l'utilisateur modérateur" +#, elixir-format #: lib/graphql/resolvers/feed_token.ex:64 msgid "No such feed token" msgstr "Aucun jeton de flux correspondant" +#, elixir-format #: lib/graphql/resolvers/participant.ex:259 msgid "Participant already has role %{role}" msgstr "Le ou la participant·e a déjà le rôle %{role}" -#: lib/graphql/resolvers/participant.ex:187 lib/graphql/resolvers/participant.ex:220 -#: lib/graphql/resolvers/participant.ex:263 +#, elixir-format +#: lib/graphql/resolvers/participant.ex:187 +#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "Participant·e non trouvé·e" +#, elixir-format #: lib/graphql/resolvers/person.ex:32 msgid "Person with ID %{id} not found" msgstr "Personne avec l'ID %{id} non trouvé" +#, elixir-format #: lib/graphql/resolvers/person.ex:56 msgid "Person with username %{username} not found" msgstr "Personne avec le nom %{name} non trouvé" +#, elixir-format #: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "L'ID du billet n'est pas un ID valide" +#, elixir-format #: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "Le billet n'existe pas" +#, elixir-format #: lib/graphql/resolvers/member.ex:82 msgid "Profile invited doesn't exist" msgstr "Le profil invité n'existe pas" +#, elixir-format #: lib/graphql/resolvers/member.ex:91 lib/graphql/resolvers/member.ex:95 msgid "Profile is already a member of this group" msgstr "Ce profil est déjà membre de ce groupe" -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 lib/graphql/resolvers/post.ex:209 -#: lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 lib/graphql/resolvers/resource.ex:165 -#: lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 lib/graphql/resolvers/todos.ex:83 -#: lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 lib/graphql/resolvers/todos.ex:214 -#: lib/graphql/resolvers/todos.ex:246 +#, elixir-format +#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "Le profil n'est pas un·e membre du groupe" +#, elixir-format #: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "Profile non trouvé" +#, elixir-format #: lib/graphql/resolvers/report.ex:40 msgid "Report not found" msgstr "Groupe non trouvé" +#, elixir-format #: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "La ressource n'existe pas" +#, elixir-format #: lib/graphql/resolvers/participant.ex:124 msgid "The event has already reached its maximum capacity" msgstr "L'événement a déjà atteint sa capacité maximale" +#, elixir-format #: lib/graphql/resolvers/participant.ex:282 msgid "This token is invalid" msgstr "Ce jeton est invalide" +#, elixir-format #: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "Ce todo n'existe pas" -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 lib/graphql/resolvers/todos.ex:240 +#, elixir-format +#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "Cette todo-liste n'existe pas" +#, elixir-format #: lib/graphql/resolvers/feed_token.ex:73 msgid "Token does not exist" msgstr "Ce jeton n'existe pas" +#, elixir-format #: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "Ce jeton n'est pas un UUID valide" +#, elixir-format #: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 msgid "User not found" msgstr "Utilisateur·ice non trouvé·e" +#, elixir-format #: lib/graphql/resolvers/person.ex:310 msgid "You already have a profile for this user" msgstr "Vous avez déjà un profil pour cet utilisateur" +#, elixir-format #: lib/graphql/resolvers/participant.ex:134 msgid "You are already a participant of this event" msgstr "Vous êtes déjà un·e participant·e à cet événement" +#, elixir-format #: lib/graphql/resolvers/member.ex:85 msgid "You are not a member of this group" msgstr "Vous n'êtes pas membre de ce groupe" -#: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171 lib/graphql/resolvers/member.ex:186 +#, elixir-format +#: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171 +#: lib/graphql/resolvers/member.ex:186 msgid "You are not a moderator or admin for this group" msgstr "Vous n'êtes pas administrateur·ice ou modérateur·ice de ce groupe" +#, elixir-format #: lib/graphql/resolvers/comment.ex:59 msgid "You are not allowed to create a comment if not connected" msgstr "Vous n'êtes pas autorisé·e à créer un commentaire si non connecté·e" +#, elixir-format #: lib/graphql/resolvers/feed_token.ex:41 msgid "You are not allowed to create a feed token if not connected" msgstr "Vous n'êtes pas autorisé·e à créer un jeton de flux si non connecté·e" +#, elixir-format #: lib/graphql/resolvers/comment.ex:134 msgid "You are not allowed to delete a comment if not connected" msgstr "Vous n'êtes pas autorisé·e à supprimer un commentaire si non connecté·e" +#, elixir-format #: lib/graphql/resolvers/feed_token.ex:82 msgid "You are not allowed to delete a feed token if not connected" msgstr "Vous n'êtes pas autorisé·e à supprimer un jeton de flux si non connecté·e" +#, elixir-format #: lib/graphql/resolvers/comment.ex:93 msgid "You are not allowed to update a comment if not connected" msgstr "Vous n'êtes pas autorisé·e à mettre à jour un commentaire si non connecté·e" -#: lib/graphql/resolvers/participant.ex:181 lib/graphql/resolvers/participant.ex:214 +#, elixir-format +#: lib/graphql/resolvers/participant.ex:181 +#: lib/graphql/resolvers/participant.ex:214 msgid "You can't leave event because you're the only event creator participant" msgstr "Vous ne pouvez pas quitter cet événement car vous en êtes le ou la seule créateur·ice participant" +#, elixir-format #: lib/graphql/resolvers/member.ex:190 msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgstr "" "Vous ne pouvez pas vous définir avec un rôle de membre inférieur pour ce groupe car vous en êtes le ou la seul·e " "administrateur·ice" +#, elixir-format #: lib/graphql/resolvers/comment.ex:122 msgid "You cannot delete this comment" msgstr "Vous ne pouvez pas supprimer ce commentaire" +#, elixir-format #: lib/graphql/resolvers/event.ex:408 msgid "You cannot delete this event" msgstr "Vous ne pouvez pas supprimer cet événement" +#, elixir-format #: lib/graphql/resolvers/member.ex:88 msgid "You cannot invite to this group" msgstr "Vous ne pouvez pas rejoindre ce groupe" +#, elixir-format #: lib/graphql/resolvers/feed_token.ex:76 msgid "You don't have permission to delete this token" msgstr "Vous n'avez pas la permission de supprimer ce jeton" +#, elixir-format #: lib/graphql/resolvers/admin.ex:54 msgid "You need to be logged-in and a moderator to list action logs" msgstr "Vous devez être connecté·e et une modérateur·ice pour lister les journaux de modération" +#, elixir-format #: lib/graphql/resolvers/report.ex:28 msgid "You need to be logged-in and a moderator to list reports" msgstr "Vous devez être connecté·e et une modérateur·ice pour lister les signalements" +#, elixir-format #: lib/graphql/resolvers/report.ex:107 msgid "You need to be logged-in and a moderator to update a report" msgstr "Vous devez être connecté·e et une modérateur·ice pour modifier un signalement" +#, elixir-format #: lib/graphql/resolvers/report.ex:45 msgid "You need to be logged-in and a moderator to view a report" msgstr "Vous devez être connecté·e pour et une modérateur·ice pour visionner un signalement" +#, elixir-format #: lib/graphql/resolvers/admin.ex:255 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "Vous devez être connecté·e et un·e administrateur·ice pour accéder aux paramètres administrateur" +#, elixir-format #: lib/graphql/resolvers/admin.ex:239 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "Vous devez être connecté·e et un·e administrateur·ice pour accéder aux panneau de statistiques" +#, elixir-format #: lib/graphql/resolvers/admin.ex:281 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "Vous devez être connecté·e et un·e administrateur·ice pour sauvegarder les paramètres administrateur" +#, elixir-format #: lib/graphql/resolvers/discussion.ex:84 msgid "You need to be logged-in to access discussions" msgstr "Vous devez être connecté·e pour accéder aux discussions" +#, elixir-format #: lib/graphql/resolvers/resource.ex:96 msgid "You need to be logged-in to access resources" msgstr "Vous devez être connecté·e pour supprimer un groupe" +#, elixir-format #: lib/graphql/resolvers/event.ex:318 msgid "You need to be logged-in to create events" msgstr "Vous devez être connecté·e pour créer des événements" +#, elixir-format #: lib/graphql/resolvers/post.ex:141 msgid "You need to be logged-in to create posts" msgstr "Vous devez être connecté·e pour quitter un groupe" +#, elixir-format #: lib/graphql/resolvers/report.ex:79 msgid "You need to be logged-in to create reports" msgstr "Vous devez être connecté·e pour quitter un groupe" +#, elixir-format #: lib/graphql/resolvers/resource.ex:137 msgid "You need to be logged-in to create resources" msgstr "Vous devez être connecté·e pour quitter un groupe" +#, elixir-format #: lib/graphql/resolvers/event.ex:417 msgid "You need to be logged-in to delete an event" msgstr "Vous devez être connecté·e pour supprimer un groupe" +#, elixir-format #: lib/graphql/resolvers/post.ex:214 msgid "You need to be logged-in to delete posts" msgstr "Vous devez être connecté·e pour supprimer un groupe" +#, elixir-format #: lib/graphql/resolvers/resource.ex:204 msgid "You need to be logged-in to delete resources" msgstr "Vous devez être connecté·e pour supprimer un groupe" +#, elixir-format #: lib/graphql/resolvers/participant.ex:108 msgid "You need to be logged-in to join an event" msgstr "Vous devez être connecté·e pour rejoindre un événement" +#, elixir-format #: lib/graphql/resolvers/participant.ex:225 msgid "You need to be logged-in to leave an event" msgstr "Vous devez être connecté·e pour quitter un groupe" +#, elixir-format #: lib/graphql/resolvers/event.ex:374 msgid "You need to be logged-in to update an event" msgstr "Vous devez être connecté·e pour mettre à jour un groupe" +#, elixir-format #: lib/graphql/resolvers/post.ex:180 msgid "You need to be logged-in to update posts" msgstr "Vous devez être connecté·e pour mettre à jour un groupe" +#, elixir-format #: lib/graphql/resolvers/resource.ex:174 msgid "You need to be logged-in to update resources" msgstr "Vous devez être connecté·e pour mettre à jour un groupe" +#, elixir-format #: lib/graphql/resolvers/resource.ex:233 msgid "You need to be logged-in to view a resource preview" msgstr "Vous devez être connecté·e pour supprimer un groupe" +#, elixir-format #: lib/graphql/resolvers/resource.ex:129 msgid "Parent resource doesn't belong to this group" msgstr "La ressource parente n'appartient pas à ce groupe" +#, elixir-format #: lib/mobilizon/users/user.ex:114 msgid "The chosen password is too short." msgstr "Le mot de passe choisi est trop court." +#, elixir-format #: lib/mobilizon/users/user.ex:142 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "Le jeton d'inscription est déjà utilisé, cela ressemble à un problème de notre côté." +#, elixir-format #: lib/mobilizon/users/user.ex:108 msgid "This email is already used." msgstr "Cette adresse e-mail est déjà utilisée." +#, elixir-format #: lib/graphql/error.ex:97 msgid "Post not found" msgstr "Billet non trouvé" +#, elixir-format #: lib/graphql/error.ex:84 msgid "Invalid arguments passed" msgstr "Paramètres fournis invalides" +#, elixir-format #: lib/graphql/error.ex:90 msgid "Invalid credentials" msgstr "Identifiants invalides" +#, elixir-format #: lib/graphql/error.ex:88 msgid "Reset your password to login" msgstr "Réinitialiser votre mot de passe pour vous connecter" +#, elixir-format #: lib/graphql/error.ex:95 lib/graphql/error.ex:100 msgid "Resource not found" msgstr "Ressource non trouvée" +#, elixir-format #: lib/graphql/error.ex:102 msgid "Something went wrong" msgstr "Quelque chose s'est mal passé" +#, elixir-format #: lib/graphql/error.ex:83 msgid "Unknown Resource" msgstr "Ressource inconnue" +#, elixir-format #: lib/graphql/error.ex:93 msgid "You don't have permission to do this" msgstr "Vous n'avez pas la permission de faire ceci" +#, elixir-format #: lib/graphql/error.ex:85 msgid "You need to be logged in" msgstr "Vous devez être connecté·e" +#, elixir-format #: lib/graphql/resolvers/member.ex:116 msgid "You can't accept this invitation with this profile." msgstr "Vous ne pouvez pas accepter cette invitation avec ce profil." +#, elixir-format #: lib/graphql/resolvers/member.ex:137 msgid "You can't reject this invitation with this profile." msgstr "Vous ne pouvez pas rejeter cette invitation avec ce profil." +#, elixir-format #: lib/graphql/resolvers/media.ex:71 msgid "File doesn't have an allowed MIME type." msgstr "Le fichier n'a pas un type MIME autorisé." +#, elixir-format #: lib/graphql/resolvers/group.ex:213 msgid "Profile is not administrator for the group" msgstr "Le profil n'est pas administrateur·ice pour le groupe" +#, elixir-format #: lib/graphql/resolvers/event.ex:363 msgid "You can't edit this event." msgstr "Vous ne pouvez pas éditer cet événement." +#, elixir-format #: lib/graphql/resolvers/event.ex:366 msgid "You can't attribute this event to this profile." msgstr "Vous ne pouvez pas attribuer cet événement à ce profil." +#, elixir-format #: lib/graphql/resolvers/member.ex:140 msgid "This invitation doesn't exist." msgstr "Cette invitation n'existe pas." +#, elixir-format #: lib/graphql/resolvers/member.ex:215 msgid "This member already has been rejected." msgstr "Ce·tte membre a déjà été rejetté·e." +#, elixir-format #: lib/graphql/resolvers/member.ex:239 msgid "You don't have the right to remove this member." msgstr "Vous n'avez pas les droits pour supprimer ce·tte membre." -#: lib/mobilizon/actors/actor.ex:350 +#, elixir-format +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "Cet identifiant est déjà pris." +#, elixir-format #: lib/graphql/resolvers/discussion.ex:81 msgid "You must provide either an ID or a slug to access a discussion" msgstr "Vous devez fournir un ID ou bien un slug pour accéder à une discussion" +#, elixir-format #: lib/graphql/resolvers/event.ex:313 msgid "Organizer profile is not owned by the user" msgstr "Le profil de l'organisateur·ice n'appartient pas à l'utilisateur·ice" +#, elixir-format #: lib/graphql/resolvers/participant.ex:93 msgid "Profile ID provided is not the anonymous profile one" msgstr "L'ID du profil fourni n'est pas celui du profil anonyme" -#: lib/graphql/resolvers/group.ex:159 lib/graphql/resolvers/group.ex:201 lib/graphql/resolvers/person.ex:148 -#: lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#, elixir-format +#: lib/graphql/resolvers/group.ex:159 lib/graphql/resolvers/group.ex:201 +#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "L'image fournie est trop lourde" +#, elixir-format #: lib/web/views/utils.ex:34 msgid "Index file not found. You need to recompile the front-end." msgstr "Fichier d'index non trouvé. Vous devez recompiler le front-end." +#, elixir-format #: lib/graphql/resolvers/resource.ex:126 msgid "Error while creating resource" msgstr "Erreur lors de la création de la resource" +#, elixir-format #: lib/graphql/resolvers/user.ex:484 msgid "Invalid activation token" msgstr "Jeton d'activation invalide" +#, elixir-format #: lib/graphql/resolvers/resource.ex:223 msgid "Unable to fetch resource details from this URL." msgstr "Impossible de récupérer les détails de la ressource depuis cette URL." -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 lib/graphql/resolvers/participant.ex:328 +#, elixir-format +#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "Le profil modérateur fourni n'a pas de permissions sur cet événement" +#, elixir-format #: lib/graphql/resolvers/event.ex:299 msgid "Organizer profile doesn't have permission to create an event on behalf of this group" msgstr "Le profil de l'organisateur⋅ice n'a pas la permission de créer un événement au nom de ce groupe" +#, elixir-format #: lib/graphql/resolvers/event.ex:354 msgid "This profile doesn't have permission to update an event on behalf of this group" msgstr "Ce profil n'a pas la permission de mettre à jour un événement au nom du groupe" +#, elixir-format #: lib/graphql/resolvers/user.ex:163 msgid "Your e-mail has been denied registration or uses a disallowed e-mail provider" msgstr "Votre adresse e-mail a été refusée à l'inscription ou bien utilise un fournisseur d'e-mail interdit" +#, elixir-format #: lib/graphql/resolvers/comment.ex:129 msgid "Comment not found" msgstr "Commentaire non trouvé" +#, elixir-format #: lib/graphql/resolvers/discussion.ex:123 msgid "Error while creating a discussion" msgstr "Erreur lors de la création de la discussion" +#, elixir-format #: lib/graphql/resolvers/user.ex:607 msgid "Error while updating locale" msgstr "Erreur lors de la mise à jour des options linguistiques" +#, elixir-format #: lib/graphql/resolvers/person.ex:307 msgid "Error while uploading pictures" msgstr "Erreur lors du téléversement des images" +#, elixir-format #: lib/graphql/resolvers/participant.ex:190 msgid "Failed to leave the event" msgstr "Impossible de quitter l'événement" +#, elixir-format #: lib/graphql/resolvers/group.ex:209 msgid "Failed to update the group" msgstr "Impossible de mettre à jour le groupe" +#, elixir-format #: lib/graphql/resolvers/user.ex:448 msgid "Failed to update user email" msgstr "Impossible de mettre à jour l'adresse e-mail de utilisateur" +#, elixir-format #: lib/graphql/resolvers/user.ex:480 msgid "Failed to validate user email" msgstr "Impossible de valider l'adresse e-mail de l'utilisateur·ice" +#, elixir-format #: lib/graphql/resolvers/participant.ex:146 msgid "The anonymous actor ID is invalid" msgstr "L'ID de l'acteur anonyme est invalide" +#, elixir-format #: lib/graphql/resolvers/resource.ex:162 msgid "Unknown error while updating resource" msgstr "Erreur inconnue lors de la mise à jour de la resource" +#, elixir-format #: lib/graphql/resolvers/comment.ex:84 msgid "You are not the comment creator" msgstr "Vous n'êtes pas le ou la createur⋅ice du commentaire" +#, elixir-format #: lib/graphql/resolvers/user.ex:405 msgid "You cannot change your password." msgstr "Vous ne pouvez pas changer votre mot de passe." +#, elixir-format #: lib/graphql/resolvers/participant.ex:321 msgid "Format not supported" msgstr "Format non supporté" +#, elixir-format #: lib/graphql/resolvers/participant.ex:305 msgid "A dependency needed to export to %{format} is not installed" msgstr "Une dépendance nécessaire pour exporter en %{format} n'est pas installée" +#, elixir-format #: lib/graphql/resolvers/participant.ex:313 msgid "An error occured while saving export" msgstr "Une erreur est survenue lors de l'enregistrement de l'export" +#, elixir-format #: lib/web/controllers/export_controller.ex:30 msgid "Export to format %{format} is not enabled on this instance" msgstr "L'export au format %{format} n'est pas activé sur cette instance" +#, elixir-format #: lib/graphql/resolvers/group.ex:165 msgid "Only admins can create groups" msgstr "Seul⋅es les administrateur⋅ices peuvent créer des groupes" +#, elixir-format #: lib/graphql/resolvers/event.ex:306 msgid "Only groups can create events" msgstr "Seuls les groupes peuvent créer des événements" +#, elixir-format #: lib/graphql/resolvers/event.ex:292 msgid "Unknown error while creating event" msgstr "Erreur inconnue lors de la création de l'événement" +#, elixir-format #: lib/graphql/resolvers/user.ex:461 msgid "User cannot change email" msgstr "L'utilisateur ne peut changer son adresse e-mail" +#, elixir-format #: lib/graphql/resolvers/group.ex:364 msgid "Follow does not match your account" msgstr "L'abonnement ne correspond pas à votre compte" +#, elixir-format #: lib/graphql/resolvers/group.ex:368 msgid "Follow not found" msgstr "Abonnement non trouvé" +#, elixir-format #: lib/graphql/resolvers/user.ex:327 msgid "Profile with username %{username} not found" msgstr "Personne avec le nom %{name} non trouvé" +#, elixir-format #: lib/graphql/resolvers/user.ex:322 msgid "This profile does not belong to you" msgstr "Ce profil ne vous appartient pas" +#, elixir-format #: lib/graphql/resolvers/group.ex:338 msgid "You are already following this group" msgstr "Vous êtes déjà membre de ce groupe" +#, elixir-format #: lib/graphql/resolvers/group.ex:347 msgid "You need to be logged-in to follow a group" msgstr "Vous devez être connecté·e pour rejoindre un groupe" +#, elixir-format #: lib/graphql/resolvers/group.ex:396 msgid "You need to be logged-in to unfollow a group" msgstr "Vous devez être connecté·e pour rejoindre un groupe" +#, elixir-format #: lib/graphql/resolvers/group.ex:373 msgid "You need to be logged-in to update a group follow" msgstr "Vous devez être connecté·e pour mettre à jour un groupe" +#, elixir-format #: lib/graphql/resolvers/member.ex:208 msgid "This member does not exist" msgstr "Ce membre n'existe pas" +#, elixir-format #: lib/graphql/resolvers/member.ex:232 msgid "You don't have the role needed to remove this member." msgstr "Vous n'avez pas les droits pour supprimer ce·tte membre." +#, elixir-format #: lib/graphql/resolvers/member.ex:250 msgid "You must be logged-in to remove a member" msgstr "Vous devez être connecté⋅e pour supprimer un⋅e membre" diff --git a/priv/gettext/gd/LC_MESSAGES/default.po b/priv/gettext/gd/LC_MESSAGES/default.po index 1db2e4986..d8178e09c 100644 --- a/priv/gettext/gd/LC_MESSAGES/default.po +++ b/priv/gettext/gd/LC_MESSAGES/default.po @@ -773,16 +773,6 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -885,8 +875,8 @@ msgid "Location address was removed" msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "" @@ -997,8 +987,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" @@ -1525,7 +1515,7 @@ msgid "On the agenda this week" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1536,7 +1526,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1547,7 +1537,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1578,7 +1568,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1588,7 +1578,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1599,17 +1589,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -1675,12 +1665,22 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" diff --git a/priv/gettext/gd/LC_MESSAGES/errors.po b/priv/gettext/gd/LC_MESSAGES/errors.po index ab2ecf327..e7696a38a 100644 --- a/priv/gettext/gd/LC_MESSAGES/errors.po +++ b/priv/gettext/gd/LC_MESSAGES/errors.po @@ -809,7 +809,7 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" diff --git a/priv/gettext/gl/LC_MESSAGES/default.po b/priv/gettext/gl/LC_MESSAGES/default.po index 37751e910..209072e05 100644 --- a/priv/gettext/gl/LC_MESSAGES/default.po +++ b/priv/gettext/gl/LC_MESSAGES/default.po @@ -929,16 +929,6 @@ msgstr[1] "" "Desexas cancelar a túa participación nun ou en varios eventos, visita as " "páxinas a través das ligazóns superiores e preme no botón « Attending »." -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "Tes unha solicitude de participación pendente de atender:" -msgstr[1] "" -"Tes %{number_participation_requests} solicitudes de participación pendentes " -"de atender:" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -1057,8 +1047,8 @@ msgid "Location address was removed" msgstr "Eliminouse o enderezo da localización" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "Xestionar solicitudes pendentes" @@ -1175,8 +1165,8 @@ msgstr "" "páxina do evento na ligazón superior e preme no botón Participar." #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" "Recibes este email porque escolleches ser notificada sobre as solicitudes " @@ -1813,7 +1803,7 @@ msgid "On the agenda this week" msgstr "Un evento previsto nesta semana" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1824,7 +1814,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1835,7 +1825,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1866,7 +1856,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1876,7 +1866,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1887,17 +1877,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "Participación aprobada" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "Participación aprobada" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -1963,12 +1953,22 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "Tes unha solicitude de participación pendente de atender:" +msgstr[1] "" +"Tes %{number_participation_requests} solicitudes de participación pendentes " +"de atender:" diff --git a/priv/gettext/gl/LC_MESSAGES/errors.po b/priv/gettext/gl/LC_MESSAGES/errors.po index 71e741960..ed1ce38df 100644 --- a/priv/gettext/gl/LC_MESSAGES/errors.po +++ b/priv/gettext/gl/LC_MESSAGES/errors.po @@ -819,7 +819,7 @@ msgid "You don't have the right to remove this member." msgstr "Non tes permiso para eliminar este membro." #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "Este nome de usuaria xa está pillado." diff --git a/priv/gettext/hu/LC_MESSAGES/default.po b/priv/gettext/hu/LC_MESSAGES/default.po index c7f570e4d..417942c0a 100644 --- a/priv/gettext/hu/LC_MESSAGES/default.po +++ b/priv/gettext/hu/LC_MESSAGES/default.po @@ -812,14 +812,6 @@ msgid_plural "Would you wish to cancel your attendance to one or several events, msgstr[0] "" msgstr[1] "" -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "" -msgstr[1] "" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -922,8 +914,8 @@ msgid "Location address was removed" msgstr "A hely eltávolításra került" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "Függő kérések kezelése" @@ -1036,8 +1028,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" @@ -1564,7 +1556,7 @@ msgid "On the agenda this week" msgstr "Egy esemény tervezve a héten" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1575,7 +1567,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1586,7 +1578,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1617,7 +1609,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1627,7 +1619,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1638,17 +1630,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "Részvétel jóváhagyva" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "Részvétel jóváhagyva" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -1714,12 +1706,20 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "" +msgstr[1] "" diff --git a/priv/gettext/hu/LC_MESSAGES/errors.po b/priv/gettext/hu/LC_MESSAGES/errors.po index 7b0a91778..9ce08682a 100644 --- a/priv/gettext/hu/LC_MESSAGES/errors.po +++ b/priv/gettext/hu/LC_MESSAGES/errors.po @@ -842,7 +842,7 @@ msgid "You don't have the right to remove this member." msgstr "Nincs meg a jogosultsága a tag eltávolításához." #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "Ez a felhasználónév már foglalt." diff --git a/priv/gettext/id/LC_MESSAGES/default.po b/priv/gettext/id/LC_MESSAGES/default.po index a5d1db147..66cf03636 100644 --- a/priv/gettext/id/LC_MESSAGES/default.po +++ b/priv/gettext/id/LC_MESSAGES/default.po @@ -793,13 +793,6 @@ msgid "Would you wish to cancel your attendance, visit the event page through th msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -902,8 +895,8 @@ msgid "Location address was removed" msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "" @@ -1016,8 +1009,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" @@ -1547,7 +1540,7 @@ msgid "On the agenda this week" msgstr "%{nb_events} acara direncanakan pekan ini" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1558,7 +1551,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1569,7 +1562,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1600,7 +1593,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1610,7 +1603,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1621,17 +1614,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -1697,12 +1690,19 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "" diff --git a/priv/gettext/id/LC_MESSAGES/errors.po b/priv/gettext/id/LC_MESSAGES/errors.po index 3c69c150a..dd1227e35 100644 --- a/priv/gettext/id/LC_MESSAGES/errors.po +++ b/priv/gettext/id/LC_MESSAGES/errors.po @@ -798,7 +798,7 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" diff --git a/priv/gettext/it/LC_MESSAGES/default.po b/priv/gettext/it/LC_MESSAGES/default.po index f0f8d4804..07ae8bee0 100644 --- a/priv/gettext/it/LC_MESSAGES/default.po +++ b/priv/gettext/it/LC_MESSAGES/default.po @@ -954,16 +954,6 @@ msgstr[1] "" "pagine dell'evento attraverso il links sotto e seleziona il pulsante " "'Partecipo'." -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "Hai una richiesta di partecipazione in sospeso da esaminare:" -msgstr[1] "" -"Hai %{number_participation_requests} richieste di partecipazione in sospeso " -"da esaminare:" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -1083,8 +1073,8 @@ msgid "Location address was removed" msgstr "L'indirizzo del luogo è stato rimosso" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "Gestisci le richieste in sospeso" @@ -1205,8 +1195,8 @@ msgstr "" "pulsante Partecipanti." #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" "Hai ricevuto questa email perché hai scelto di ricevere notifiche per " @@ -1854,7 +1844,7 @@ msgid "On the agenda this week" msgstr "Un evento in programma questa settimana" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1865,7 +1855,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1876,7 +1866,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1907,7 +1897,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1917,7 +1907,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1928,17 +1918,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "Partecipazione approvata" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "Partecipazione approvata" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -2004,12 +1994,22 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "Hai una richiesta di partecipazione in sospeso da esaminare:" +msgstr[1] "" +"Hai %{number_participation_requests} richieste di partecipazione in sospeso " +"da esaminare:" diff --git a/priv/gettext/it/LC_MESSAGES/errors.po b/priv/gettext/it/LC_MESSAGES/errors.po index 0ad848a53..c476ade6e 100644 --- a/priv/gettext/it/LC_MESSAGES/errors.po +++ b/priv/gettext/it/LC_MESSAGES/errors.po @@ -817,7 +817,7 @@ msgid "You don't have the right to remove this member." msgstr "Non hai il diritto di rimuovere questo membro." #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "Questo nome utente è già in uso." diff --git a/priv/gettext/ja/LC_MESSAGES/default.po b/priv/gettext/ja/LC_MESSAGES/default.po index d6ad97c6a..da55cad49 100644 --- a/priv/gettext/ja/LC_MESSAGES/default.po +++ b/priv/gettext/ja/LC_MESSAGES/default.po @@ -758,13 +758,6 @@ msgid "Would you wish to cancel your attendance, visit the event page through th msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -867,8 +860,8 @@ msgid "Location address was removed" msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "" @@ -979,8 +972,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" @@ -1507,7 +1500,7 @@ msgid "On the agenda this week" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1518,7 +1511,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1529,7 +1522,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1560,7 +1553,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1570,7 +1563,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1581,17 +1574,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -1657,12 +1650,19 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "" diff --git a/priv/gettext/ja/LC_MESSAGES/errors.po b/priv/gettext/ja/LC_MESSAGES/errors.po index dd2e84012..165526d8f 100644 --- a/priv/gettext/ja/LC_MESSAGES/errors.po +++ b/priv/gettext/ja/LC_MESSAGES/errors.po @@ -791,7 +791,7 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" diff --git a/priv/gettext/nl/LC_MESSAGES/default.po b/priv/gettext/nl/LC_MESSAGES/default.po index 64cf1d6ff..740c0c6e4 100644 --- a/priv/gettext/nl/LC_MESSAGES/default.po +++ b/priv/gettext/nl/LC_MESSAGES/default.po @@ -779,14 +779,6 @@ msgstr[1] "" "Als u uw deelname moet annuleren, gaat u naar de pagina van het evenement " "via de link hierboven, en klikt u op de deelnameknop." -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "" -msgstr[1] "" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -891,8 +883,8 @@ msgid "Location address was removed" msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "" @@ -1003,8 +995,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" @@ -1532,7 +1524,7 @@ msgid "On the agenda this week" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1543,7 +1535,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1554,7 +1546,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1585,7 +1577,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1595,7 +1587,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1606,17 +1598,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "Deelname goedgekeurd" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "Deelname goedgekeurd" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -1682,12 +1674,20 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "" +msgstr[1] "" diff --git a/priv/gettext/nl/LC_MESSAGES/errors.po b/priv/gettext/nl/LC_MESSAGES/errors.po index a222d3c52..89759f2ce 100644 --- a/priv/gettext/nl/LC_MESSAGES/errors.po +++ b/priv/gettext/nl/LC_MESSAGES/errors.po @@ -797,7 +797,7 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" diff --git a/priv/gettext/nn/LC_MESSAGES/default.po b/priv/gettext/nn/LC_MESSAGES/default.po index b03ad1751..7cf119772 100644 --- a/priv/gettext/nn/LC_MESSAGES/default.po +++ b/priv/gettext/nn/LC_MESSAGES/default.po @@ -924,16 +924,6 @@ msgstr[1] "" "Viss du vil avbryta deltakinga di på ei eller fleire hendingar, kan du gå " "til hendingssidene via lenkene over og klikka på «deltek»-knappen." -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "Du har ein førespurnad om deltaking å handtera:" -msgstr[1] "" -"Du har %{number_participation_requests} førespurnader om deltaking å " -"handtera:" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -1052,8 +1042,8 @@ msgid "Location address was removed" msgstr "Adressa vart fjerna" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "Sjå over ventande førespurnader" @@ -1169,8 +1159,8 @@ msgstr "" "hendingssida med lenka over og klikka på Deltek-knappen." #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" "Du får denne eposten fordi du har valt å få varslingar når det er ventande " @@ -1812,7 +1802,7 @@ msgid "On the agenda this week" msgstr "Ei planlagd hending denne veka" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "Detaljar" @@ -1823,7 +1813,7 @@ msgid "From the %{start} to the %{end}" msgstr "Frå %{start} til %{end}" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "Styr deltakinga di" @@ -1834,7 +1824,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "%{date} frå %{start_time} til %{end_time}" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "Les meir" @@ -1865,7 +1855,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "Detaljar" @@ -1875,7 +1865,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "Styr deltakinga di" @@ -1886,17 +1876,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "Deltakar" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "Deltakar" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "Les meir" @@ -1962,12 +1952,22 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "Du har ein førespurnad om deltaking å handtera:" +msgstr[1] "" +"Du har %{number_participation_requests} førespurnader om deltaking å " +"handtera:" diff --git a/priv/gettext/nn/LC_MESSAGES/errors.po b/priv/gettext/nn/LC_MESSAGES/errors.po index 0f3e49cb0..f32d05f15 100644 --- a/priv/gettext/nn/LC_MESSAGES/errors.po +++ b/priv/gettext/nn/LC_MESSAGES/errors.po @@ -834,7 +834,7 @@ msgid "You don't have the right to remove this member." msgstr "Du har ikkje løyve til å fjerna denne medlemen." #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "Dette brukarnamnet er oppteke." diff --git a/priv/gettext/oc/LC_MESSAGES/default.po b/priv/gettext/oc/LC_MESSAGES/default.po index 2ea67e705..3849b468c 100644 --- a/priv/gettext/oc/LC_MESSAGES/default.po +++ b/priv/gettext/oc/LC_MESSAGES/default.po @@ -851,14 +851,6 @@ msgstr[1] "" "vos cal pas qu’accedir a las paginas dels eveniment via lo ligam çai-jos e " "clicar lo boton de participacion." -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "" -msgstr[1] "" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -964,8 +956,8 @@ msgid "Location address was removed" msgstr "L’adreça fisica es estada levada" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "Gerir las demandas de participacions en espèra" @@ -1079,8 +1071,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" @@ -1617,7 +1609,7 @@ msgid "On the agenda this week" msgstr "Un eveniment previst aquesta setmana" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1628,7 +1620,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1639,7 +1631,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1670,7 +1662,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1680,7 +1672,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1691,17 +1683,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "Participacion aprovada" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "Participacion aprovada" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -1767,12 +1759,20 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "" +msgstr[1] "" diff --git a/priv/gettext/oc/LC_MESSAGES/errors.po b/priv/gettext/oc/LC_MESSAGES/errors.po index 8b04c520c..b7d479690 100644 --- a/priv/gettext/oc/LC_MESSAGES/errors.po +++ b/priv/gettext/oc/LC_MESSAGES/errors.po @@ -809,7 +809,7 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" diff --git a/priv/gettext/pl/LC_MESSAGES/default.po b/priv/gettext/pl/LC_MESSAGES/default.po index 9ff926fe4..93f56e023 100644 --- a/priv/gettext/pl/LC_MESSAGES/default.po +++ b/priv/gettext/pl/LC_MESSAGES/default.po @@ -845,19 +845,6 @@ msgstr[2] "" "Jeżeli musisz anulować swoje uczestnictwo, przejdź na stronę wydarzenia " "używając powyższego przycisku i naciśnij przycisk zgłaszania udziału." -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "Masz jedną prośbę o zatwierdzenie uczestnictwa do przejrzenia:" -msgstr[1] "" -"Masz %{number_participation_requests} prośby o zatwierdzenie uczestnictwa do " -"przejrzenia:" -msgstr[2] "" -"Masz %{number_participation_requests} próśb o zatwierdzenie uczestnictwa do " -"przejrzenia:" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -975,8 +962,8 @@ msgid "Location address was removed" msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "Zarządzaj oczekującymi zgłoszeniami" @@ -1089,8 +1076,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" @@ -1631,7 +1618,7 @@ msgid "On the agenda this week" msgstr "Jedno wydarzenie zaplanowane na ten tydzień" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1642,7 +1629,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1653,7 +1640,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1684,7 +1671,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1694,7 +1681,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1705,17 +1692,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "Uczestnictwo przyjęte" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "Uczestnictwo przyjęte" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -1781,12 +1768,25 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "Masz jedną prośbę o zatwierdzenie uczestnictwa do przejrzenia:" +msgstr[1] "" +"Masz %{number_participation_requests} prośby o zatwierdzenie uczestnictwa do " +"przejrzenia:" +msgstr[2] "" +"Masz %{number_participation_requests} próśb o zatwierdzenie uczestnictwa do " +"przejrzenia:" diff --git a/priv/gettext/pl/LC_MESSAGES/errors.po b/priv/gettext/pl/LC_MESSAGES/errors.po index 28ab4c42b..512f03183 100644 --- a/priv/gettext/pl/LC_MESSAGES/errors.po +++ b/priv/gettext/pl/LC_MESSAGES/errors.po @@ -826,7 +826,7 @@ msgid "You don't have the right to remove this member." msgstr "Nie masz uprawnień do usunięcia tego członka." #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" diff --git a/priv/gettext/pt/LC_MESSAGES/default.po b/priv/gettext/pt/LC_MESSAGES/default.po index b582a975f..368baad49 100644 --- a/priv/gettext/pt/LC_MESSAGES/default.po +++ b/priv/gettext/pt/LC_MESSAGES/default.po @@ -762,14 +762,6 @@ msgid_plural "Would you wish to cancel your attendance to one or several events, msgstr[0] "" msgstr[1] "" -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "" -msgstr[1] "" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -872,8 +864,8 @@ msgid "Location address was removed" msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "" @@ -984,8 +976,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" @@ -1512,7 +1504,7 @@ msgid "On the agenda this week" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1523,7 +1515,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1534,7 +1526,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1565,7 +1557,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1575,7 +1567,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1586,17 +1578,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -1662,12 +1654,20 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "" +msgstr[1] "" diff --git a/priv/gettext/pt/LC_MESSAGES/errors.po b/priv/gettext/pt/LC_MESSAGES/errors.po index 40227ebb7..d77178185 100644 --- a/priv/gettext/pt/LC_MESSAGES/errors.po +++ b/priv/gettext/pt/LC_MESSAGES/errors.po @@ -797,7 +797,7 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" diff --git a/priv/gettext/pt_BR/LC_MESSAGES/default.po b/priv/gettext/pt_BR/LC_MESSAGES/default.po index 63040018c..9947a25c1 100644 --- a/priv/gettext/pt_BR/LC_MESSAGES/default.po +++ b/priv/gettext/pt_BR/LC_MESSAGES/default.po @@ -837,14 +837,6 @@ msgstr[1] "" "Se você precisar cancelar a sua participação apenas acesse a página do " "evento através do link acima e clique no botão participação." -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "" -msgstr[1] "" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -949,8 +941,8 @@ msgid "Location address was removed" msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "" @@ -1061,8 +1053,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" @@ -1624,7 +1616,7 @@ msgid "On the agenda this week" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1635,7 +1627,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1646,7 +1638,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1677,7 +1669,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1687,7 +1679,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1698,17 +1690,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "Participação aprovada" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "Participação aprovada" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -1774,12 +1766,20 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "" +msgstr[1] "" diff --git a/priv/gettext/pt_BR/LC_MESSAGES/errors.po b/priv/gettext/pt_BR/LC_MESSAGES/errors.po index 4081f9c12..5794111a7 100644 --- a/priv/gettext/pt_BR/LC_MESSAGES/errors.po +++ b/priv/gettext/pt_BR/LC_MESSAGES/errors.po @@ -797,7 +797,7 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" diff --git a/priv/gettext/ru/LC_MESSAGES/default.po b/priv/gettext/ru/LC_MESSAGES/default.po index 418568f2e..3f9d5debd 100644 --- a/priv/gettext/ru/LC_MESSAGES/default.po +++ b/priv/gettext/ru/LC_MESSAGES/default.po @@ -955,19 +955,6 @@ msgstr[2] "" "просто перейдите на страницы мероприятий по указанным выше ссылкам и нажмите " "кнопку « Я участвую »." -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "У вас есть ожидающий рассмотрения запрос на участие:" -msgstr[1] "" -"У вас есть %{number_participation_requests} ожидающих рассмотрения запроса " -"на участие:" -msgstr[2] "" -"У вас есть %{number_participation_requests} ожидающих рассмотрения запросов " -"на участие:" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -1087,8 +1074,8 @@ msgid "Location address was removed" msgstr "Адрес местоположения был удален" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "Управление запросами в ожидании" @@ -1203,8 +1190,8 @@ msgstr "" "страницу мероприятия по ссылке выше и нажмите кнопку « Я участвую »." #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" "Вы получили это письмо, потому что выбрали получение уведомлений об " @@ -1857,7 +1844,7 @@ msgid "On the agenda this week" msgstr "На этой неделе запланировано одно мероприятие" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "Подробности" @@ -1868,7 +1855,7 @@ msgid "From the %{start} to the %{end}" msgstr "От %{start} к %{end}" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "Управление своим участием" @@ -1879,7 +1866,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "%{date} с %{start_time} по %{end_time}" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "Подробнее" @@ -1910,7 +1897,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "Подробности" @@ -1920,7 +1907,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "Управление своим участием" @@ -1931,17 +1918,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "Участие одобрено" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "Участие одобрено" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "Подробнее" @@ -2007,12 +1994,25 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "У вас есть ожидающий рассмотрения запрос на участие:" +msgstr[1] "" +"У вас есть %{number_participation_requests} ожидающих рассмотрения запроса " +"на участие:" +msgstr[2] "" +"У вас есть %{number_participation_requests} ожидающих рассмотрения запросов " +"на участие:" diff --git a/priv/gettext/ru/LC_MESSAGES/errors.po b/priv/gettext/ru/LC_MESSAGES/errors.po index 8d52c6b95..e1c897b7f 100644 --- a/priv/gettext/ru/LC_MESSAGES/errors.po +++ b/priv/gettext/ru/LC_MESSAGES/errors.po @@ -846,7 +846,7 @@ msgid "You don't have the right to remove this member." msgstr "У вас нет прав на удаление этого участника." #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "Это имя пользователя уже занято." diff --git a/priv/gettext/sv/LC_MESSAGES/default.po b/priv/gettext/sv/LC_MESSAGES/default.po index 62b19e9e8..3942e4b9d 100644 --- a/priv/gettext/sv/LC_MESSAGES/default.po +++ b/priv/gettext/sv/LC_MESSAGES/default.po @@ -784,14 +784,6 @@ msgstr[1] "" "Om du behöver lämna återbud är det bara att gå till evenemangens sidor, via " "länkarna ovan, och klicka på deltagande-knappen." -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process:" -msgid_plural "You have %{number_participation_requests} attendance requests to process:" -msgstr[0] "" -msgstr[1] "" - #, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -897,8 +889,8 @@ msgid "Location address was removed" msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "" @@ -1009,8 +1001,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve msgstr "" #, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" @@ -1540,7 +1532,7 @@ msgid "On the agenda this week" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:11 +#: lib/web/templates/email/participation/event_card.html.heex:58 msgid "Details" msgstr "" @@ -1551,7 +1543,7 @@ msgid "From the %{start} to the %{end}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:70 +#: lib/web/templates/email/participation/event_card.html.heex:20 msgid "Manage your participation" msgstr "" @@ -1562,7 +1554,7 @@ msgid "On %{date} from %{start_time} to %{end_time}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.html.heex:19 +#: lib/web/templates/email/participation/event_card.html.heex:66 msgid "Read more" msgstr "" @@ -1593,7 +1585,7 @@ msgid "Date:" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:5 +#: lib/web/templates/email/participation/event_card.text.eex:7 msgid "Details:" msgstr "" @@ -1603,7 +1595,7 @@ msgid "Manage your notification settings" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Manage your participation:" msgstr "" @@ -1614,17 +1606,17 @@ msgid "Organizer: %{organizer}" msgstr "" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.html.heex:92 +#: lib/web/templates/email/participation/event_card.html.heex:42 msgid "Participate" msgstr "Ditt deltagande har godkänts" #, elixir-format -#: lib/web/templates/email/participation/card/_metadata.text.eex:4 +#: lib/web/templates/email/participation/event_card.text.eex:5 msgid "Participate:" msgstr "Ditt deltagande har godkänts" #, elixir-format -#: lib/web/templates/email/participation/event_card.text.eex:7 +#: lib/web/templates/email/participation/event_card.text.eex:9 msgid "Read more : %{url}" msgstr "" @@ -1690,12 +1682,20 @@ msgstr "" msgid "Your membership request for group %{link_start}%{group}%{link_end} has been rejected." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/web/templates/email/group_membership_approval.html.heex:38 msgid "Your membership request for group %{link_start}%{group}%{link_end} has been approved." msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "" +msgstr[1] "" diff --git a/priv/gettext/sv/LC_MESSAGES/errors.po b/priv/gettext/sv/LC_MESSAGES/errors.po index 79441c638..334c42d9f 100644 --- a/priv/gettext/sv/LC_MESSAGES/errors.po +++ b/priv/gettext/sv/LC_MESSAGES/errors.po @@ -804,7 +804,7 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:350 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" diff --git a/test/service/notifications/scheduler_test.exs b/test/service/notifications/scheduler_test.exs index 067eeac3d..3bdc5c9e4 100644 --- a/test/service/notifications/scheduler_test.exs +++ b/test/service/notifications/scheduler_test.exs @@ -353,6 +353,7 @@ defmodule Mobilizon.Service.Notifications.SchedulerTest do scheduled_at = DateTime.utc_now() + |> DateTime.add(3600) |> DateTime.shift_zone!("Europe/Paris") |> (&%{&1 | minute: 0, second: 0, microsecond: {0, 0}}).() diff --git a/test/service/workers/notification_test.exs b/test/service/workers/notification_test.exs index cdf84edfb..069d94491 100644 --- a/test/service/workers/notification_test.exs +++ b/test/service/workers/notification_test.exs @@ -318,6 +318,12 @@ defmodule Mobilizon.Service.Workers.NotificationTest do test "if there are participants to approve" do %User{id: user_id} = user = insert(:user) + settings = + insert(:settings, + user_id: user_id, + timezone: "Europe/Paris" + ) + %Event{id: event_id} = event = insert(:event) %Participant{} = insert(:participant, event: event, role: :not_approved) @@ -333,7 +339,7 @@ defmodule Mobilizon.Service.Workers.NotificationTest do assert_delivered_email( NotificationMailer.pending_participation_notification( - user, + %User{user | settings: settings}, event, 2 ) From d291a83cc935c4927bc3fcc9926d376acf6f7922 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 16 Nov 2021 11:38:17 +0100 Subject: [PATCH 06/18] Warn when registering with email containing uppercase characters Closes #884 and #803 Signed-off-by: Thomas Citharel --- js/src/i18n/en_US.json | 3 +- js/src/i18n/fr_FR.json | 3 +- js/src/types/apollo.ts | 5 ++ js/src/views/User/Register.vue | 96 ++++++++++++++++++++++------ lib/graphql/resolvers/user.ex | 32 ++++++++-- test/graphql/resolvers/user_test.exs | 15 +++++ 6 files changed, 125 insertions(+), 29 deletions(-) create mode 100644 js/src/types/apollo.ts diff --git a/js/src/i18n/en_US.json b/js/src/i18n/en_US.json index 8c2f768f0..e34bb1e44 100644 --- a/js/src/i18n/en_US.json +++ b/js/src/i18n/en_US.json @@ -1251,5 +1251,6 @@ "Approve member": "Approve member", "Reject member": "Reject member", "The membership request from {profile} was rejected": "The membership request from {profile} was rejected", - "The member was approved": "The member was approved" + "The member was approved": "The member was approved", + "Emails usually don't contain capitals, make sure you haven't made a typo.": "Emails usually don't contain capitals, make sure you haven't made a typo." } diff --git a/js/src/i18n/fr_FR.json b/js/src/i18n/fr_FR.json index 3d475c107..72ec50fa8 100644 --- a/js/src/i18n/fr_FR.json +++ b/js/src/i18n/fr_FR.json @@ -1355,5 +1355,6 @@ "Approve member": "Approuver le ou la membre", "Reject member": "Rejeter le ou la membre", "The membership request from {profile} was rejected": "La demande d'adhésion de {profile} a été rejetée", - "The member was approved": "Le ou la membre a été approuvée" + "The member was approved": "Le ou la membre a été approuvée", + "Emails usually don't contain capitals, make sure you haven't made a typo.": "Les emails ne contiennent d'ordinaire pas de capitales, assurez-vous de n'avoir pas fait de faute de frappe." } diff --git a/js/src/types/apollo.ts b/js/src/types/apollo.ts new file mode 100644 index 000000000..244b56005 --- /dev/null +++ b/js/src/types/apollo.ts @@ -0,0 +1,5 @@ +import { GraphQLError } from "graphql/error/GraphQLError"; + +export class AbsintheGraphQLError extends GraphQLError { + readonly field: string | undefined; +} diff --git a/js/src/views/User/Register.vue b/js/src/views/User/Register.vue index a1638a75d..bb7710963 100644 --- a/js/src/views/User/Register.vue +++ b/js/src/views/User/Register.vue @@ -83,8 +83,8 @@
- -
- {{ - error - }} -
@@ -191,13 +185,18 @@ @@ -302,4 +353,7 @@ p.create-account { margin: 1rem auto 2rem; } } +::v-deep .help.is-warning { + color: #755033; +} diff --git a/lib/graphql/resolvers/user.ex b/lib/graphql/resolvers/user.ex index 430bc6b48..afbd0909f 100644 --- a/lib/graphql/resolvers/user.ex +++ b/lib/graphql/resolvers/user.ex @@ -145,13 +145,17 @@ defmodule Mobilizon.GraphQL.Resolvers.User do """ @spec create_user(any, %{email: String.t()}, any) :: {:ok, User.t()} | {:error, String.t()} def create_user(_parent, %{email: email} = args, _resolution) do - with :registration_ok <- check_registration_config(email), + with {:ok, email} <- lowercase_domain(email), + :registration_ok <- check_registration_config(email), :not_deny_listed <- check_registration_denylist(email), - {:ok, %User{} = user} <- Users.register(args), + {:ok, %User{} = user} <- Users.register(%{args | email: email}), %Bamboo.Email{} <- Email.User.send_confirmation_email(user, Map.get(args, :locale, "en")) do {:ok, user} else + {:error, :invalid_email} -> + {:error, dgettext("errors", "Your email seems to be using an invalid format")} + :registration_closed -> {:error, dgettext("errors", "Registrations are not open")} @@ -190,24 +194,40 @@ defmodule Mobilizon.GraphQL.Resolvers.User do # Remove everything behind the + email = String.replace(email, ~r/(\+.*)(?=\@)/, "") - if email_in_list(email, Config.instance_registrations_denylist()), + if email_in_list?(email, Config.instance_registrations_denylist()), do: :deny_listed, else: :not_deny_listed end @spec check_allow_listed_email(String.t()) :: :registration_ok | :not_allowlisted defp check_allow_listed_email(email) do - if email_in_list(email, Config.instance_registrations_allowlist()), + if email_in_list?(email, Config.instance_registrations_allowlist()), do: :registration_ok, else: :not_allowlisted end - defp email_in_list(email, list) do - [_, domain] = String.split(email, "@", parts: 2, trim: true) + @spec email_in_list?(String.t(), list(String.t())) :: boolean() + defp email_in_list?(email, list) do + [_, domain] = split_email(email) domain in list or email in list end + # Domains should always be lower-case, so let's force that + @spec lowercase_domain(String.t()) :: {:ok, String.t()} | {:error, :invalid_email} + defp lowercase_domain(email) do + case split_email(email) do + [user_part, domain_part] -> + {:ok, "#{user_part}@#{String.downcase(domain_part)}"} + + _ -> + {:error, :invalid_email} + end + end + + @spec split_email(String.t()) :: list(String.t()) + defp split_email(email), do: String.split(email, "@", parts: 2, trim: true) + @doc """ Validate an user, get its actor and a token """ diff --git a/test/graphql/resolvers/user_test.exs b/test/graphql/resolvers/user_test.exs index 293fcb212..0f77eae21 100644 --- a/test/graphql/resolvers/user_test.exs +++ b/test/graphql/resolvers/user_test.exs @@ -454,6 +454,21 @@ defmodule Mobilizon.GraphQL.Resolvers.UserTest do Config.put([:instance, :registration_email_denylist], []) end + test "create_user/3 lowers domain part of email", + %{ + conn: conn + } do + res = + conn + |> AbsintheHelpers.graphql_query( + query: @create_user_mutation, + variables: Map.put(@user_creation, :email, "test+alias@DEMO.tld") + ) + + assert res["errors"] == nil + assert res["data"]["createUser"]["email"] == "test+alias@demo.tld" + end + test "register_person/3 doesn't register a profile from an unknown email", %{conn: conn} do conn |> put_req_header("accept-language", "fr") From 19794bde23970082a23e35a41062698db306dede Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 16 Nov 2021 11:40:22 +0100 Subject: [PATCH 07/18] Mention following groups on the registration page Signed-off-by: Thomas Citharel --- js/src/i18n/en_US.json | 3 ++- js/src/i18n/fr_FR.json | 3 ++- js/src/views/User/Register.vue | 7 +++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/js/src/i18n/en_US.json b/js/src/i18n/en_US.json index e34bb1e44..98b060feb 100644 --- a/js/src/i18n/en_US.json +++ b/js/src/i18n/en_US.json @@ -1252,5 +1252,6 @@ "Reject member": "Reject member", "The membership request from {profile} was rejected": "The membership request from {profile} was rejected", "The member was approved": "The member was approved", - "Emails usually don't contain capitals, make sure you haven't made a typo.": "Emails usually don't contain capitals, make sure you haven't made a typo." + "Emails usually don't contain capitals, make sure you haven't made a typo.": "Emails usually don't contain capitals, make sure you haven't made a typo.", + "To follow groups and be informed of their latest events": "To follow groups and be informed of their latest events" } diff --git a/js/src/i18n/fr_FR.json b/js/src/i18n/fr_FR.json index 72ec50fa8..ea54e3323 100644 --- a/js/src/i18n/fr_FR.json +++ b/js/src/i18n/fr_FR.json @@ -1356,5 +1356,6 @@ "Reject member": "Rejeter le ou la membre", "The membership request from {profile} was rejected": "La demande d'adhésion de {profile} a été rejetée", "The member was approved": "Le ou la membre a été approuvée", - "Emails usually don't contain capitals, make sure you haven't made a typo.": "Les emails ne contiennent d'ordinaire pas de capitales, assurez-vous de n'avoir pas fait de faute de frappe." + "Emails usually don't contain capitals, make sure you haven't made a typo.": "Les emails ne contiennent d'ordinaire pas de capitales, assurez-vous de n'avoir pas fait de faute de frappe.", + "To follow groups and be informed of their latest events": "Afin de suivre des groupes et être informé de leurs derniers événements" } diff --git a/js/src/views/User/Register.vue b/js/src/views/User/Register.vue index bb7710963..844d6fd9d 100644 --- a/js/src/views/User/Register.vue +++ b/js/src/views/User/Register.vue @@ -53,6 +53,13 @@ ) }} +
  • + {{ + $t( + "To follow groups and be informed of their latest events" + ) + }} +
  • From 20325863527aa6cd56a333cc5c2a82b22ef327dc Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 16 Nov 2021 11:44:13 +0100 Subject: [PATCH 08/18] Show the warning about casing on the login screen as well Signed-off-by: Thomas Citharel --- js/src/views/User/Login.vue | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/js/src/views/User/Login.vue b/js/src/views/User/Login.vue index 5d0700d4c..6a5322a24 100644 --- a/js/src/views/User/Login.vue +++ b/js/src/views/User/Login.vue @@ -45,7 +45,12 @@ {{ error }}
    - + @@ -284,4 +309,7 @@ export default class Login extends Vue { .container .columns { margin: 1rem auto 3rem; } +::v-deep .help.is-warning { + color: #755033; +} From 446c5f00ab5bac55a10e0dcc37b939bd11194592 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 16 Nov 2021 11:56:15 +0100 Subject: [PATCH 09/18] Add "formerType" and "delete" attributes on Tombstones objects Signed-off-by: Thomas Citharel --- lib/federation/activity_pub/types/actors.ex | 2 ++ lib/federation/activity_pub/types/comments.ex | 2 ++ lib/federation/activity_pub/types/discussions.ex | 2 ++ lib/federation/activity_pub/types/events.ex | 2 ++ lib/federation/activity_pub/types/posts.ex | 2 ++ lib/federation/activity_pub/types/resources.ex | 5 ++++- lib/federation/activity_pub/types/todo_lists.ex | 2 ++ lib/federation/activity_pub/types/todos.ex | 2 ++ 8 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/federation/activity_pub/types/actors.ex b/lib/federation/activity_pub/types/actors.ex index b08cccd47..773850676 100644 --- a/lib/federation/activity_pub/types/actors.ex +++ b/lib/federation/activity_pub/types/actors.ex @@ -98,6 +98,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Actors do "actor" => actor_url, "object" => %{ "type" => "Tombstone", + "formerType" => to_string(type), + "deleted" => DateTime.utc_now(), "id" => target_actor_url }, "id" => target_actor_url <> "/delete", diff --git a/lib/federation/activity_pub/types/comments.ex b/lib/federation/activity_pub/types/comments.ex index e510a537f..fbdd58a81 100644 --- a/lib/federation/activity_pub/types/comments.ex +++ b/lib/federation/activity_pub/types/comments.ex @@ -84,6 +84,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Comments do "actor" => actor.url, "object" => %{ "type" => "Tombstone", + "formerType" => "Note", + "deleted" => DateTime.utc_now(), "id" => url }, "id" => url <> "/delete", diff --git a/lib/federation/activity_pub/types/discussions.ex b/lib/federation/activity_pub/types/discussions.ex index 2644fb7ef..f1a30a127 100644 --- a/lib/federation/activity_pub/types/discussions.ex +++ b/lib/federation/activity_pub/types/discussions.ex @@ -117,6 +117,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Discussions do "actor" => actor.url, "object" => %{ "type" => "Tombstone", + "formerType" => "Note", + "deleted" => DateTime.utc_now(), "url" => url }, "id" => url <> "/delete", diff --git a/lib/federation/activity_pub/types/events.ex b/lib/federation/activity_pub/types/events.ex index f9ec1f13a..3b18912ee 100644 --- a/lib/federation/activity_pub/types/events.ex +++ b/lib/federation/activity_pub/types/events.ex @@ -84,6 +84,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Events do "actor" => actor.url, "object" => %{ "type" => "Tombstone", + "formerType" => "Event", + "deleted" => DateTime.utc_now(), "id" => url }, "to" => [actor.url <> "/followers", "https://www.w3.org/ns/activitystreams#Public"], diff --git a/lib/federation/activity_pub/types/posts.ex b/lib/federation/activity_pub/types/posts.ex index ed7642fbd..07345994f 100644 --- a/lib/federation/activity_pub/types/posts.ex +++ b/lib/federation/activity_pub/types/posts.ex @@ -79,6 +79,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Posts do "type" => "Delete", "object" => %{ "type" => "Tombstone", + "formerType" => "Article", + "deleted" => DateTime.utc_now(), "id" => url }, "id" => url <> "/delete", diff --git a/lib/federation/activity_pub/types/resources.ex b/lib/federation/activity_pub/types/resources.ex index a6d965922..f38d2c8ac 100644 --- a/lib/federation/activity_pub/types/resources.ex +++ b/lib/federation/activity_pub/types/resources.ex @@ -150,7 +150,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Resources do @spec delete(Resource.t(), Actor.t(), boolean, map()) :: {:ok, ActivityStream.t(), Actor.t(), Resource.t()} | {:error, Ecto.Changeset.t()} def delete( - %Resource{url: url, actor: %Actor{url: group_url, members_url: members_url}} = resource, + %Resource{url: url, type: type, actor: %Actor{url: group_url, members_url: members_url}} = + resource, %Actor{url: actor_url} = actor, _local, _additionnal @@ -163,6 +164,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Resources do "type" => "Delete", "object" => %{ "type" => "Tombstone", + "formerType" => if(type == :folder, do: "ResourceCollection", else: "Document"), + "deleted" => DateTime.utc_now(), "id" => url }, "id" => url <> "/delete", diff --git a/lib/federation/activity_pub/types/todo_lists.ex b/lib/federation/activity_pub/types/todo_lists.ex index c0b288afa..7202038ac 100644 --- a/lib/federation/activity_pub/types/todo_lists.ex +++ b/lib/federation/activity_pub/types/todo_lists.ex @@ -57,6 +57,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.TodoLists do "type" => "Delete", "object" => %{ "type" => "Tombstone", + "formerType" => "TodoList", + "deleted" => DateTime.utc_now(), "id" => url }, "id" => url <> "/delete", diff --git a/lib/federation/activity_pub/types/todos.ex b/lib/federation/activity_pub/types/todos.ex index 0e97835e1..5c8d34579 100644 --- a/lib/federation/activity_pub/types/todos.ex +++ b/lib/federation/activity_pub/types/todos.ex @@ -97,6 +97,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Todos do "type" => "Delete", "object" => %{ "type" => "Tombstone", + "formerType" => "Todo", + "deleted" => DateTime.utc_now(), "id" => url }, "id" => "#{url}/delete", From d7ef8f32806a26519058f93f83d953c1fd468e78 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 16 Nov 2021 15:43:53 +0100 Subject: [PATCH 10/18] Adding some debug logs Signed-off-by: Thomas Citharel --- lib/federation/activity_pub/actor.ex | 9 +++++++++ lib/federation/activity_pub/refresher.ex | 4 ++++ lib/web/plugs/mapped_signature_to_identity.ex | 2 ++ 3 files changed, 15 insertions(+) diff --git a/lib/federation/activity_pub/actor.ex b/lib/federation/activity_pub/actor.ex index 61dec80f0..578628cf3 100644 --- a/lib/federation/activity_pub/actor.ex +++ b/lib/federation/activity_pub/actor.ex @@ -29,6 +29,8 @@ defmodule Mobilizon.Federation.ActivityPub.Actor do end def get_or_fetch_actor_by_url(url, preload) do + Logger.debug("Getting or fetching actor by URL #{url}") + case Actors.get_actor_by_url(url, preload) do {:ok, %Actor{} = cached_actor} -> if Actors.needs_update?(cached_actor) do @@ -51,6 +53,8 @@ defmodule Mobilizon.Federation.ActivityPub.Actor do @spec make_actor_from_url(url :: String.t(), options :: Keyword.t()) :: {:ok, Actor.t()} | {:error, make_actor_errors | Ecto.Changeset.t()} def make_actor_from_url(url, options \\ []) do + Logger.debug("Making actor from url #{url}") + if are_same_origin?(url, Endpoint.url()) do {:error, :actor_is_local} else @@ -75,6 +79,8 @@ defmodule Mobilizon.Federation.ActivityPub.Actor do @spec find_or_make_actor_from_nickname(nickname :: String.t(), type :: atom() | nil) :: {:ok, Actor.t()} | {:error, make_actor_errors | WebFinger.finger_errors()} def find_or_make_actor_from_nickname(nickname, type \\ nil) do + Logger.debug("Finding or making actor from nickname #{nickname}") + case Actors.get_actor_by_name_with_preload(nickname, type) do %Actor{url: actor_url} = actor -> if Actors.needs_update?(actor) do @@ -98,8 +104,11 @@ defmodule Mobilizon.Federation.ActivityPub.Actor do @spec make_actor_from_nickname(nickname :: String.t(), preload :: boolean) :: {:ok, Actor.t()} | {:error, make_actor_errors | WebFinger.finger_errors()} def make_actor_from_nickname(nickname, preload \\ false) do + Logger.debug("Fingering actor from nickname #{nickname}") + case WebFinger.finger(nickname) do {:ok, url} when is_binary(url) -> + Logger.debug("Matched #{nickname} to URL #{url}, now making actor") make_actor_from_url(url, preload: preload) {:error, e} -> diff --git a/lib/federation/activity_pub/refresher.ex b/lib/federation/activity_pub/refresher.ex index 21a49781b..bfa4f6c16 100644 --- a/lib/federation/activity_pub/refresher.ex +++ b/lib/federation/activity_pub/refresher.ex @@ -36,6 +36,8 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do end def refresh_profile(%Actor{type: type, url: url}) when type in [:Person, :Application] do + Logger.debug("Refreshing profile #{url}") + case ActivityPubActor.make_actor_from_url(url) do {:error, error} -> {:error, error} @@ -52,6 +54,8 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do @spec fetch_group(String.t(), Actor.t()) :: :ok | {:error, fetch_actor_errors} def fetch_group(group_url, %Actor{} = on_behalf_of) do + Logger.debug("Fetching group #{group_url}") + case ActivityPubActor.make_actor_from_url(group_url, on_behalf_of: on_behalf_of) do {:error, err} when err in [:actor_deleted, :http_error, :json_decode_error, :actor_is_local] -> diff --git a/lib/web/plugs/mapped_signature_to_identity.ex b/lib/web/plugs/mapped_signature_to_identity.ex index 8c63b841c..550e1e6f9 100644 --- a/lib/web/plugs/mapped_signature_to_identity.ex +++ b/lib/web/plugs/mapped_signature_to_identity.ex @@ -34,6 +34,8 @@ defmodule Mobilizon.Web.Plugs.MappedSignatureToIdentity do @spec actor_from_key_id(Plug.Conn.t()) :: Actor.t() | nil defp actor_from_key_id(conn) do + Logger.debug("Determining actor from connection signature") + with key_actor_id when is_binary(key_actor_id) <- key_id_from_conn(conn), {:ok, %Actor{} = actor} <- ActivityPubActor.get_or_fetch_actor_by_url(key_actor_id) do actor From 88067bd217edab338d7c6d2a2f2203f77cdd2a9c Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 16 Nov 2021 15:45:05 +0100 Subject: [PATCH 11/18] Expose and fetch event contacts Close #829 Signed-off-by: Thomas Citharel --- lib/federation/activity_pub/audience.ex | 12 ++++++++- .../activity_stream/converter/event.ex | 27 ++++++++++++++++--- .../activity_stream/converter/utils.ex | 2 +- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/lib/federation/activity_pub/audience.ex b/lib/federation/activity_pub/audience.ex index 2f24035e3..540ba76e9 100644 --- a/lib/federation/activity_pub/audience.ex +++ b/lib/federation/activity_pub/audience.ex @@ -228,6 +228,14 @@ defmodule Mobilizon.Federation.ActivityPub.Audience do |> Enum.uniq() end + defp add_event_contacts(%Event{contacts: contacts}) do + contacts + |> Enum.map(& &1.url) + |> Enum.uniq() + end + + defp add_event_contacts(%Event{}), do: [] + defp process_mention({_, mentioned_actor}), do: mentioned_actor.url defp process_mention(%{actor_id: actor_id}) do @@ -255,7 +263,9 @@ defmodule Mobilizon.Federation.ActivityPub.Audience do {to, cc} = {to, Enum.uniq( - cc ++ add_comments_authors(event.comments) ++ add_shares_actors_followers(event.url) + cc ++ + add_comments_authors(event.comments) ++ + add_shares_actors_followers(event.url) ++ add_event_contacts(event) )} %{"to" => to, "cc" => cc} diff --git a/lib/federation/activity_stream/converter/event.ex b/lib/federation/activity_stream/converter/event.ex index 2d5fa9ff4..8aee195d7 100644 --- a/lib/federation/activity_stream/converter/event.ex +++ b/lib/federation/activity_stream/converter/event.ex @@ -18,6 +18,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do alias Mobilizon.Service.TimezoneDetector alias Mobilizon.Web.Endpoint + import Mobilizon.Federation.ActivityPub.Utils, only: [get_url: 1] + import Mobilizon.Federation.ActivityStream.Converter.Utils, only: [ fetch_tags: 1, @@ -25,7 +27,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do build_tags: 1, maybe_fetch_actor_and_attributed_to_id: 1, process_pictures: 2, - get_address: 1 + get_address: 1, + fetch_actor: 1 ] require Logger @@ -56,6 +59,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do visibility = get_visibility(object) options = get_options(object, address) metadata = get_metdata(object) + contacts = get_contacts(object) [description: description, picture_id: picture_id, medias: medias] = process_pictures(object, actor_id) @@ -86,7 +90,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do physical_address_id: if(address, do: address.id, else: nil), updated_at: object["updated"], publish_at: object["published"], - language: object["inLanguage"] + language: object["inLanguage"], + contacts: contacts } {:error, err} -> @@ -133,7 +138,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do "id" => event.url, "url" => event.url, "inLanguage" => event.language, - "timezone" => event.options.timezone + "timezone" => event.options.timezone, + "contacts" => Enum.map(event.contacts, & &1.url) } |> maybe_add_physical_address(event) |> maybe_add_event_picture(event) @@ -286,4 +292,19 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do %URI{host: local_domain} = URI.parse(Endpoint.url()) url_domain == local_domain end + + @spec get_contacts(map()) :: list(Actor.t()) + defp get_contacts(object) do + object + |> Map.get("contacts", []) + |> Enum.map(&get_contact/1) + |> Enum.filter(&match?({:ok, _}, &1)) + |> Enum.map(fn {:ok, contact} -> contact end) + end + + defp get_contact(contact) do + contact + |> get_url() + |> fetch_actor() + end end diff --git a/lib/federation/activity_stream/converter/utils.ex b/lib/federation/activity_stream/converter/utils.ex index f311f5414..34a08d4ab 100644 --- a/lib/federation/activity_stream/converter/utils.ex +++ b/lib/federation/activity_stream/converter/utils.ex @@ -179,7 +179,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Utils do def maybe_fetch_actor_and_attributed_to_id(_), do: {:error, :no_actor_found} @spec fetch_actor(String.t()) :: {:ok, Actor.t()} | {:error, atom()} - defp fetch_actor(actor_url) do + def fetch_actor(actor_url) do case ActivityPubActor.get_or_fetch_actor_by_url(actor_url) do {:ok, %Actor{suspended: false} = actor} -> {:ok, actor} From 84bd1ccfad02f09bfcd0f0011ac3447137af52b3 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 16 Nov 2021 15:46:23 +0100 Subject: [PATCH 12/18] Don't sign fetch when fetching actor for a given signature Otherwise it's doing a loop Signed-off-by: Thomas Citharel --- lib/federation/activity_pub/fetcher.ex | 4 ++-- lib/federation/activity_pub/utils.ex | 7 ++++--- lib/federation/http_signatures/signature.ex | 5 +++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/federation/activity_pub/fetcher.ex b/lib/federation/activity_pub/fetcher.ex index b5842f75a..479c2322c 100644 --- a/lib/federation/activity_pub/fetcher.ex +++ b/lib/federation/activity_pub/fetcher.ex @@ -13,7 +13,7 @@ defmodule Mobilizon.Federation.ActivityPub.Fetcher do alias Mobilizon.Service.HTTP.ActivityPub, as: ActivityPubClient import Mobilizon.Federation.ActivityPub.Utils, - only: [maybe_date_fetch: 2, sign_fetch: 4, origin_check?: 2] + only: [maybe_date_fetch: 2, sign_fetch: 5, origin_check?: 2] import Mobilizon.Service.Guards, only: [is_valid_string: 1] @@ -28,7 +28,7 @@ defmodule Mobilizon.Federation.ActivityPub.Fetcher do headers = [{:Accept, "application/activity+json"}] |> maybe_date_fetch(date) - |> sign_fetch(on_behalf_of, url, date) + |> sign_fetch(on_behalf_of, url, date, options) client = ActivityPubClient.client(headers: headers) diff --git a/lib/federation/activity_pub/utils.ex b/lib/federation/activity_pub/utils.ex index b74d87853..e6977fe79 100644 --- a/lib/federation/activity_pub/utils.ex +++ b/lib/federation/activity_pub/utils.ex @@ -650,9 +650,10 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do @doc """ Sign a request with an actor. """ - @spec sign_fetch(Enum.t(), Actor.t(), String.t(), String.t()) :: Enum.t() - def sign_fetch(headers, actor, id, date) do - if Mobilizon.Config.get([:activitypub, :sign_object_fetches]) do + @spec sign_fetch(Enum.t(), Actor.t(), String.t(), String.t(), Keyword.t()) :: Enum.t() + def sign_fetch(headers, actor, id, date, options \\ []) do + if Mobilizon.Config.get([:activitypub, :sign_object_fetches]) and + Keyword.get(options, :ignore_sign_object_fetches, false) == false do headers ++ make_signature(actor, id, date) else headers diff --git a/lib/federation/http_signatures/signature.ex b/lib/federation/http_signatures/signature.ex index e35d46fad..f99dad4ee 100644 --- a/lib/federation/http_signatures/signature.ex +++ b/lib/federation/http_signatures/signature.ex @@ -103,8 +103,9 @@ defmodule Mobilizon.Federation.HTTPSignatures.Signature do actor_id = key_id_to_actor_url(kid) Logger.debug("Refetching public key for #{actor_id}") - with {:ok, _actor} <- ActivityPubActor.make_actor_from_url(actor_id) do - get_public_key_for_url(actor_id) + with {:ok, %Actor{} = actor} <- + ActivityPubActor.make_actor_from_url(actor_url, ignore_sign_object_fetches: true) do + get_actor_public_key(actor) end end From 6f6d617ebae633762647edf9c27787a3bc7199e5 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 16 Nov 2021 15:47:14 +0100 Subject: [PATCH 13/18] Fix actor AP representation of avatar Signed-off-by: Thomas Citharel --- lib/federation/activity_stream/converter/actor.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/federation/activity_stream/converter/actor.ex b/lib/federation/activity_stream/converter/actor.ex index 863bfbe5c..37a279358 100644 --- a/lib/federation/activity_stream/converter/actor.ex +++ b/lib/federation/activity_stream/converter/actor.ex @@ -160,7 +160,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Actor do @spec maybe_add_avatar_picture(map(), ActorModel.t()) :: map() defp maybe_add_avatar_picture(actor_data, %ActorModel{avatar: %File{} = avatar}) do - Map.put(actor_data, "image", %{ + Map.put(actor_data, "icon", %{ "type" => "Image", "mediaType" => avatar.content_type, "url" => avatar.url From f35db6540bb9df342a88fce9bef7c674cadfad50 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 16 Nov 2021 15:47:53 +0100 Subject: [PATCH 14/18] Various HTTP signature code improvements Signed-off-by: Thomas Citharel --- lib/federation/http_signatures/signature.ex | 50 ++++++++++--------- lib/web/plugs/http_signatures.ex | 14 +++--- lib/web/plugs/mapped_signature_to_identity.ex | 35 ++++++++----- 3 files changed, 55 insertions(+), 44 deletions(-) diff --git a/lib/federation/http_signatures/signature.ex b/lib/federation/http_signatures/signature.ex index f99dad4ee..732738b61 100644 --- a/lib/federation/http_signatures/signature.ex +++ b/lib/federation/http_signatures/signature.ex @@ -10,10 +10,9 @@ defmodule Mobilizon.Federation.HTTPSignatures.Signature do @behaviour HTTPSignatures.Adapter + alias Mobilizon.Actors alias Mobilizon.Actors.Actor - alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor - alias Mobilizon.Service.ErrorReporting.Sentry require Logger @@ -52,36 +51,37 @@ defmodule Mobilizon.Federation.HTTPSignatures.Signature do # Gets a public key for a given ActivityPub actor ID (url). @spec get_public_key_for_url(String.t()) :: {:ok, String.t()} - | {:error, :actor_fetch_error | :pem_decode_error | :actor_not_fetchable} + | {:error, :actor_not_found | :pem_decode_error} defp get_public_key_for_url(url) do - case ActivityPubActor.get_or_fetch_actor_by_url(url) do - {:ok, %Actor{keys: keys}} -> - case prepare_public_key(keys) do - {:ok, public_key} -> - {:ok, public_key} + case Actors.get_actor_by_url(url) do + {:ok, %Actor{} = actor} -> + get_actor_public_key(actor) - {:error, :pem_decode_error} -> - Logger.error("Error while decoding PEM") - - {:error, :pem_decode_error} - end - - {:error, err} -> - Sentry.capture_message("Unable to fetch actor, so no keys for you", - extra: %{url: url} + {:error, :actor_not_found} -> + Logger.info( + "Unable to get actor from URL from local database, returning empty keys to trigger refreshment" ) - Logger.error("Unable to fetch actor, so no keys for you") - Logger.error(inspect(err)) + {:ok, ""} + end + end - {:error, :actor_fetch_error} + @spec get_actor_public_key(Actor.t()) :: {:ok, String.t()} | {:error, :pem_decode_error} + defp get_actor_public_key(%Actor{keys: keys}) do + case prepare_public_key(keys) do + {:ok, public_key} -> + {:ok, public_key} + + {:error, :pem_decode_error} -> + Logger.error("Error while decoding PEM") + + {:error, :pem_decode_error} end end @spec fetch_public_key(Plug.Conn.t()) :: {:ok, String.t()} - | {:error, - :actor_fetch_error | :actor_not_fetchable | :pem_decode_error | :no_signature_in_conn} + | {:error, :actor_not_found | :pem_decode_error | :no_signature_in_conn} def fetch_public_key(conn) do case HTTPSignatures.signature_for_conn(conn) do %{"keyId" => kid} -> @@ -100,8 +100,8 @@ defmodule Mobilizon.Federation.HTTPSignatures.Signature do :actor_is_local} def refetch_public_key(conn) do %{"keyId" => kid} = HTTPSignatures.signature_for_conn(conn) - actor_id = key_id_to_actor_url(kid) - Logger.debug("Refetching public key for #{actor_id}") + actor_url = key_id_to_actor_url(kid) + Logger.debug("Refetching public key for #{actor_url}") with {:ok, %Actor{} = actor} <- ActivityPubActor.make_actor_from_url(actor_url, ignore_sign_object_fetches: true) do @@ -134,6 +134,8 @@ defmodule Mobilizon.Federation.HTTPSignatures.Signature do @spec generate_date_header(NaiveDateTime.t()) :: String.t() def generate_date_header(%NaiveDateTime{} = date) do + # We make sure the format is correct + # TODO: Remove Timex, as this is the only usage (with parsing) Timex.lformat!(date, "{WDshort}, {0D} {Mshort} {YYYY} {h24}:{m}:{s} GMT", "en") end diff --git a/lib/web/plugs/http_signatures.ex b/lib/web/plugs/http_signatures.ex index 48866fef8..3d0bfd6c3 100644 --- a/lib/web/plugs/http_signatures.ex +++ b/lib/web/plugs/http_signatures.ex @@ -36,14 +36,7 @@ defmodule Mobilizon.Web.Plugs.HTTPSignatures do "(request-target)", String.downcase("#{conn.method}") <> " #{conn.request_path}" ) - - conn = - if conn.assigns[:digest] do - conn - |> put_req_header("digest", conn.assigns[:digest]) - else - conn - end + |> maybe_put_digest_header() signature_valid = HTTPSignatures.validate_conn(conn) Logger.debug("Is signature valid ? #{inspect(signature_valid)}") @@ -53,6 +46,11 @@ defmodule Mobilizon.Web.Plugs.HTTPSignatures do end end + defp maybe_put_digest_header(%Plug.Conn{assigns: %{digest: digest}} = conn), + do: put_req_header(conn, "digest", digest) + + defp maybe_put_digest_header(%Plug.Conn{} = conn), do: conn + @spec date_valid?(Plug.Conn.t()) :: boolean() defp date_valid?(conn) do date = conn |> get_req_header("date") |> List.first() diff --git a/lib/web/plugs/mapped_signature_to_identity.ex b/lib/web/plugs/mapped_signature_to_identity.ex index 550e1e6f9..351daba34 100644 --- a/lib/web/plugs/mapped_signature_to_identity.ex +++ b/lib/web/plugs/mapped_signature_to_identity.ex @@ -11,7 +11,6 @@ defmodule Mobilizon.Web.Plugs.MappedSignatureToIdentity do import Plug.Conn alias Mobilizon.Actors.Actor - alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor alias Mobilizon.Federation.ActivityPub.Utils alias Mobilizon.Federation.HTTPSignatures.Signature @@ -32,16 +31,20 @@ defmodule Mobilizon.Web.Plugs.MappedSignatureToIdentity do end end - @spec actor_from_key_id(Plug.Conn.t()) :: Actor.t() | nil + @spec actor_from_key_id(Plug.Conn.t()) :: + {:ok, Actor.t()} | {:error, :actor_not_found | :no_key_in_conn} defp actor_from_key_id(conn) do Logger.debug("Determining actor from connection signature") - with key_actor_id when is_binary(key_actor_id) <- key_id_from_conn(conn), - {:ok, %Actor{} = actor} <- ActivityPubActor.get_or_fetch_actor_by_url(key_actor_id) do - actor - else - _ -> - nil + case key_id_from_conn(conn) do + key_actor_id when is_binary(key_actor_id) -> + # We don't need to call refreshment here since + # the Mobilizon.Federation.HTTPSignatures.Signature plug + # should already have refreshed the actor if needed + ActivityPubActor.make_actor_from_url(key_actor_id, ignore_sign_object_fetches: true) + + nil -> + {:error, :no_key_in_conn} end end @@ -51,7 +54,7 @@ defmodule Mobilizon.Web.Plugs.MappedSignatureToIdentity do # if this has payload make sure it is signed by the same actor that made it def call(%{assigns: %{valid_signature: true}, params: %{"actor" => actor}} = conn, _opts) do with actor_id when actor_id != nil <- Utils.get_url(actor), - {:actor, %Actor{} = actor} <- {:actor, actor_from_key_id(conn)}, + {:ok, %Actor{} = actor} <- actor_from_key_id(conn), {:actor_match, true} <- {:actor_match, actor.url == actor_id} do Logger.debug("Mapped identity to #{actor.url} from actor param") assign(conn, :actor, actor) @@ -61,8 +64,12 @@ defmodule Mobilizon.Web.Plugs.MappedSignatureToIdentity do Logger.debug("key_id=#{key_id_from_conn(conn)}, actor=#{actor}") assign(conn, :valid_signature, false) + {:error, :no_key_in_conn} -> + Logger.debug("There was no key in conn") + conn + # TODO: remove me once testsuite uses mapped capabilities instead of what we do now - {:actor, nil} -> + {:error, :actor_not_found} -> Logger.debug("Failed to map identity from signature (lookup failure)") Logger.debug("key_id=#{key_id_from_conn(conn)}, actor=#{actor}") conn @@ -72,11 +79,15 @@ defmodule Mobilizon.Web.Plugs.MappedSignatureToIdentity do # no payload, probably a signed fetch def call(%{assigns: %{valid_signature: true}} = conn, _opts) do case actor_from_key_id(conn) do - %Actor{} = actor -> + {:ok, %Actor{} = actor} -> Logger.debug("Mapped identity to #{actor.url} from signed fetch") assign(conn, :actor, actor) - _ -> + {:error, :no_key_in_conn} -> + Logger.debug("There was no key in conn") + assign(conn, :valid_signature, false) + + {:error, :actor_not_found} -> Logger.debug("Failed to map identity from signature (no payload actor mismatch)") Logger.debug("key_id=#{key_id_from_conn(conn)}") assign(conn, :valid_signature, false) From 5b85d96e06a11d3087a29fe888ed05d91b46a012 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 16 Nov 2021 15:48:09 +0100 Subject: [PATCH 15/18] Handle errors when fetching actor pictures Signed-off-by: Thomas Citharel --- lib/federation/activity_stream/converter/actor.ex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/federation/activity_stream/converter/actor.ex b/lib/federation/activity_stream/converter/actor.ex index 37a279358..d564f162c 100644 --- a/lib/federation/activity_stream/converter/actor.ex +++ b/lib/federation/activity_stream/converter/actor.ex @@ -149,6 +149,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Actor do name <- name || Parser.get_filename_from_response(response_headers, url) || default_name, {:ok, file} <- Upload.store(%{body: body, name: name}) do Map.take(file, [:content_type, :name, :url, :size]) + else + _ -> nil end end From 702c7fa6d4efd912e263939e824b17e2caad366d Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 16 Nov 2021 15:48:34 +0100 Subject: [PATCH 16/18] Rename is_local to is_local? Signed-off-by: Thomas Citharel --- lib/federation/activity_stream/converter/event.ex | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/federation/activity_stream/converter/event.ex b/lib/federation/activity_stream/converter/event.ex index 8aee195d7..62801441f 100644 --- a/lib/federation/activity_stream/converter/event.ex +++ b/lib/federation/activity_stream/converter/event.ex @@ -76,7 +76,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do category: object["category"], visibility: visibility, join_options: Map.get(object, "joinMode", "free"), - local: is_local(object["id"]), + local: is_local?(object["id"]), options: options, metadata: metadata, status: object |> Map.get("ical:status", "CONFIRMED") |> String.downcase(), @@ -287,7 +287,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do ) end - defp is_local(url) do + @spec is_local?(String.t()) :: boolean() + defp is_local?(url) do %URI{host: url_domain} = URI.parse(url) %URI{host: local_domain} = URI.parse(Endpoint.url()) url_domain == local_domain From d1f0a9224a122319b6d07f763e7d22d02b94b8fd Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 16 Nov 2021 15:48:44 +0100 Subject: [PATCH 17/18] Cleanup some dead code Signed-off-by: Thomas Citharel --- lib/mobilizon/actors/actors.ex | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lib/mobilizon/actors/actors.ex b/lib/mobilizon/actors/actors.ex index 512a44d02..35ca6ee12 100644 --- a/lib/mobilizon/actors/actors.ex +++ b/lib/mobilizon/actors/actors.ex @@ -261,11 +261,6 @@ defmodule Mobilizon.Actors do data, preload \\ false ) do - # data = - # data - # |> Map.put(:avatar, transform_media_file(data.avatar)) - # |> Map.put(:banner, transform_media_file(data.banner)) - insert = data |> Actor.remote_actor_creation_changeset() From 0cae2bb84d5a931e2ceacd4c304194fbbe18e89c Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 16 Nov 2021 16:03:13 +0100 Subject: [PATCH 18/18] Fix return from EventDelayedNotificationWorker being nil Signed-off-by: Thomas Citharel --- lib/web/email/event.ex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/web/email/event.ex b/lib/web/email/event.ex index 551479299..b6112a8fe 100644 --- a/lib/web/email/event.ex +++ b/lib/web/email/event.ex @@ -91,6 +91,8 @@ defmodule Mobilizon.Web.Email.Event do &send_notification_for_event_update_to_participant(&1, old_event, event, diff) ) end) + else + {:ok, :ok} end end