From 4ca831a5b3d3abae850700814962e424418dfc87 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 12 Oct 2021 11:10:16 +0200 Subject: [PATCH 01/22] Federate timezone Signed-off-by: Thomas Citharel --- lib/federation/activity_pub/utils.ex | 6 +- .../activity_stream/converter/event.ex | 58 ++++++++++++++----- 2 files changed, 48 insertions(+), 16 deletions(-) diff --git a/lib/federation/activity_pub/utils.ex b/lib/federation/activity_pub/utils.ex index 9c6f28443..a0672373e 100644 --- a/lib/federation/activity_pub/utils.ex +++ b/lib/federation/activity_pub/utils.ex @@ -114,7 +114,11 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do "PropertyValue" => "sc:PropertyValue", "value" => "sc:value", "propertyID" => "sc:propertyID", - "inLanguage" => "sc:inLanguage" + "inLanguage" => "sc:inLanguage", + "timezone" => %{ + "@id" => "mz:timezone", + "@type" => "sc:Text" + } } ] } diff --git a/lib/federation/activity_stream/converter/event.ex b/lib/federation/activity_stream/converter/event.ex index d9193efe7..9521a7fc7 100644 --- a/lib/federation/activity_stream/converter/event.ex +++ b/lib/federation/activity_stream/converter/event.ex @@ -16,6 +16,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do alias Mobilizon.Federation.ActivityStream.Converter.Address, as: AddressConverter alias Mobilizon.Federation.ActivityStream.Converter.EventMetadata, as: EventMetadataConverter alias Mobilizon.Federation.ActivityStream.Converter.Media, as: MediaConverter + alias Mobilizon.Service.TimezoneDetector alias Mobilizon.Web.Endpoint import Mobilizon.Federation.ActivityStream.Converter.Utils, @@ -49,11 +50,11 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do def as_to_model_data(object) do case maybe_fetch_actor_and_attributed_to_id(object) do {:ok, %Actor{id: actor_id}, attributed_to} -> - address_id = get_address(object["location"]) + address = get_address(object["location"]) tags = fetch_tags(object["tag"]) mentions = fetch_mentions(object["tag"]) visibility = get_visibility(object) - options = get_options(object) + options = get_options(object, address) metadata = get_metdata(object) [description: description, picture_id: picture_id, medias: medias] = @@ -82,7 +83,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do uuid: object["uuid"], tags: tags, mentions: mentions, - physical_address_id: address_id, + physical_address_id: if(address, do: address.id, else: nil), updated_at: object["updated"], publish_at: object["published"], language: object["inLanguage"] @@ -118,9 +119,9 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do "published" => (event.publish_at || event.inserted_at) |> date_to_string(), "updated" => event.updated_at |> date_to_string(), "mediaType" => "text/html", - "startTime" => event.begins_on |> date_to_string(), + "startTime" => event.begins_on |> shift_tz(event.options.timezone) |> date_to_string(), "joinMode" => to_string(event.join_options), - "endTime" => event.ends_on |> date_to_string(), + "endTime" => event.ends_on |> shift_tz(event.options.timezone) |> date_to_string(), "tag" => event.tags |> build_tags(), "maximumAttendeeCapacity" => event.options.maximum_attendee_capacity, "repliesModerationOption" => event.options.comment_moderation, @@ -131,7 +132,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do "ical:status" => event.status |> to_string |> String.upcase(), "id" => event.url, "url" => event.url, - "inLanguage" => event.language + "inLanguage" => event.language, + "timezone" => event.options.timezone } |> maybe_add_physical_address(event) |> maybe_add_event_picture(event) @@ -149,8 +151,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do end # Get only elements that we have in EventOptions - @spec get_options(map) :: map - defp get_options(object) do + @spec get_options(map, Address.t() | nil) :: map + defp get_options(object, address) do %{ maximum_attendee_capacity: object["maximumAttendeeCapacity"], anonymous_participation: object["anonymousParticipationEnabled"], @@ -159,10 +161,29 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do object, "repliesModerationOption", if(Map.get(object, "commentsEnabled", true), do: :allow_all, else: :closed) - ) + ), + timezone: calculate_timezone(object, address) } end + defp calculate_timezone(%{"timezone" => timezone}, %Address{geom: geom}) do + TimezoneDetector.detect( + timezone, + geom, + "Etc/UTC" + ) + end + + defp calculate_timezone(_object, nil), do: nil + + defp calculate_timezone(_object, %Address{geom: geom}) do + TimezoneDetector.detect( + nil, + geom, + "Etc/UTC" + ) + end + defp get_metdata(%{"attachment" => attachments}) do attachments |> Enum.filter(&(&1["type"] == "PropertyValue")) @@ -171,7 +192,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do defp get_metdata(_), do: [] - @spec get_address(map | binary | nil) :: integer | nil + @spec get_address(map | binary | nil) :: Address.t() | nil defp get_address(address_url) when is_binary(address_url) do get_address(%{"id" => address_url}) end @@ -180,8 +201,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do Logger.debug("Address with an URL, let's check against our own database") case Addresses.get_address_by_url(url) do - %Address{id: address_id} -> - address_id + %Address{} = address -> + address _ -> Logger.debug("not in our database, let's try to create it") @@ -196,13 +217,13 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do defp get_address(nil), do: nil - @spec do_get_address(map) :: integer | nil + @spec do_get_address(map) :: Address.t() | nil defp do_get_address(map) do map = AddressConverter.as_to_model_data(map) case Addresses.create_address(map) do - {:ok, %Address{id: address_id}} -> - address_id + {:ok, %Address{} = address} -> + address _ -> nil @@ -217,6 +238,13 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do defp date_to_string(nil), do: nil defp date_to_string(%DateTime{} = date), do: DateTime.to_iso8601(date) + @spec shift_tz(DateTime.t(), String.t() | nil) :: DateTime.t() + defp shift_tz(%DateTime{} = date, timezone) when is_binary(timezone) do + DateTime.shift_zone!(date, timezone) + end + + defp shift_tz(datetime, _tz), do: datetime + defp get_online_address(attachments) do Enum.find_value(attachments, fn attachment -> case attachment do From cd89efa1e3041ed62661f1df5a366635a48e9ab3 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 12 Oct 2021 11:53:54 +0200 Subject: [PATCH 02/22] Export timezone in ICS files Signed-off-by: Thomas Citharel --- lib/service/export/icalendar.ex | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/service/export/icalendar.ex b/lib/service/export/icalendar.ex index 83125bdeb..40e5e2a90 100644 --- a/lib/service/export/icalendar.ex +++ b/lib/service/export/icalendar.ex @@ -5,7 +5,7 @@ defmodule Mobilizon.Service.Export.ICalendar do alias Mobilizon.Addresses.Address alias Mobilizon.{Config, Events} - alias Mobilizon.Events.Event + alias Mobilizon.Events.{Event, EventOptions} alias Mobilizon.Service.Export.Common alias Mobilizon.Service.Formatter.HTML @@ -114,9 +114,9 @@ defmodule Mobilizon.Service.Export.ICalendar do defp do_export_event(%Event{} = event) do %ICalendar.Event{ summary: event.title, - dtstart: event.begins_on, + dtstart: begins_on(event), dtstamp: event.publish_at || DateTime.utc_now(), - dtend: event.ends_on, + dtend: ends_on(event), description: HTML.strip_tags(event.description), uid: event.uuid, url: event.url, @@ -130,4 +130,18 @@ defmodule Mobilizon.Service.Export.ICalendar do defp vendor do "Mobilizon #{Config.instance_version()}" end + + defp begins_on(%Event{begins_on: begins_on, options: %EventOptions{timezone: timezone}}) do + shift_tz(begins_on, timezone) + end + + defp ends_on(%Event{ends_on: ends_on, options: %EventOptions{timezone: timezone}}) do + shift_tz(ends_on, timezone) + end + + defp shift_tz(%DateTime{} = date, timezone) when is_binary(timezone) do + DateTime.shift_zone!(date, timezone) + end + + defp shift_tz(%DateTime{} = date, _), do: date end From a9e36aaacb6e58d8c6fd0b7923217dd9ea34c01d Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 13 Oct 2021 12:52:38 +0200 Subject: [PATCH 03/22] Show correct timezone in event-related emails Signed-off-by: Thomas Citharel --- .../templates/email/event_updated.html.heex | 16 +- .../templates/email/event_updated.text.eex | 7 +- priv/gettext/ar/LC_MESSAGES/default.po | 38 +- priv/gettext/ar/LC_MESSAGES/errors.po | 2 +- priv/gettext/be/LC_MESSAGES/default.po | 38 +- priv/gettext/be/LC_MESSAGES/errors.po | 2 +- priv/gettext/ca/LC_MESSAGES/default.po | 38 +- priv/gettext/ca/LC_MESSAGES/errors.po | 2 +- priv/gettext/cs/LC_MESSAGES/default.po | 38 +- priv/gettext/cs/LC_MESSAGES/errors.po | 2 +- priv/gettext/de/LC_MESSAGES/default.po | 38 +- priv/gettext/de/LC_MESSAGES/errors.po | 2 +- priv/gettext/default.pot | 38 +- priv/gettext/en/LC_MESSAGES/default.po | 38 +- priv/gettext/en/LC_MESSAGES/errors.po | 2 +- priv/gettext/es/LC_MESSAGES/default.po | 24 +- priv/gettext/fi/LC_MESSAGES/default.po | 38 +- priv/gettext/fi/LC_MESSAGES/errors.po | 2 +- priv/gettext/fr/LC_MESSAGES/default.po | 476 ++++-------------- priv/gettext/fr/LC_MESSAGES/errors.po | 226 ++++++++- priv/gettext/gl/LC_MESSAGES/default.po | 38 +- priv/gettext/gl/LC_MESSAGES/errors.po | 2 +- priv/gettext/hu/LC_MESSAGES/default.po | 38 +- priv/gettext/hu/LC_MESSAGES/errors.po | 2 +- priv/gettext/id/LC_MESSAGES/default.po | 38 +- priv/gettext/id/LC_MESSAGES/errors.po | 2 +- priv/gettext/it/LC_MESSAGES/default.po | 38 +- priv/gettext/it/LC_MESSAGES/errors.po | 2 +- priv/gettext/ja/LC_MESSAGES/default.po | 38 +- priv/gettext/ja/LC_MESSAGES/errors.po | 2 +- priv/gettext/nl/LC_MESSAGES/default.po | 38 +- priv/gettext/nl/LC_MESSAGES/errors.po | 2 +- priv/gettext/nn/LC_MESSAGES/default.po | 38 +- priv/gettext/nn/LC_MESSAGES/errors.po | 2 +- priv/gettext/oc/LC_MESSAGES/default.po | 38 +- priv/gettext/oc/LC_MESSAGES/errors.po | 2 +- priv/gettext/pl/LC_MESSAGES/default.po | 38 +- priv/gettext/pl/LC_MESSAGES/errors.po | 2 +- priv/gettext/pt/LC_MESSAGES/default.po | 38 +- priv/gettext/pt/LC_MESSAGES/errors.po | 2 +- priv/gettext/pt_BR/LC_MESSAGES/default.po | 38 +- priv/gettext/pt_BR/LC_MESSAGES/errors.po | 2 +- priv/gettext/ru/LC_MESSAGES/default.po | 38 +- priv/gettext/ru/LC_MESSAGES/errors.po | 2 +- priv/gettext/sv/LC_MESSAGES/default.po | 38 +- priv/gettext/sv/LC_MESSAGES/errors.po | 2 +- 46 files changed, 962 insertions(+), 625 deletions(-) diff --git a/lib/web/templates/email/event_updated.html.heex b/lib/web/templates/email/event_updated.html.heex index 4f0d11e41..db700b522 100644 --- a/lib/web/templates/email/event_updated.html.heex +++ b/lib/web/templates/email/event_updated.html.heex @@ -74,7 +74,21 @@ <%= gettext "Start" %> - <%= @event.begins_on |> datetime_tz_convert(@timezone) |> datetime_to_string(@locale) %> + <%= if @event.options.timezone == nil do %> + <%= @event.begins_on |> datetime_tz_convert(@timezone) |> datetime_to_string(@locale) %> + <% else %> + + <%= if @event.options.timezone != @timezone do %> + <%# Event with different timezone than user %> + <%= @event.begins_on |> datetime_tz_convert(@event.options.timezone) |> datetime_to_string(@locale) %>
+ <%= gettext "🌐 %{timezone} %{offset}", timezone: @event.options.timezone, offset: @event.begins_on |> datetime_tz_convert(@event.options.timezone) |> Cldr.DateTime.Formatter.zone_gmt() %> + <% else %> + <%# Event with same timezone than user %> + <%= @event.begins_on |> datetime_tz_convert(@event.options.timezone) |> datetime_to_string(@locale) %>
+ <%= gettext "In your timezone (%{timezone} %{offset})", timezone: @event.options.timezone, offset: @event.begins_on |> datetime_tz_convert(@event.options.timezone) |> Cldr.DateTime.Formatter.zone_gmt() %> + <% end %> +
+ <% end %> <% end %> diff --git a/lib/web/templates/email/event_updated.text.eex b/lib/web/templates/email/event_updated.text.eex index 676cbae61..26184e592 100644 --- a/lib/web/templates/email/event_updated.text.eex +++ b/lib/web/templates/email/event_updated.text.eex @@ -14,9 +14,14 @@ <%= if MapSet.member?(@changes, :title) do %> <%= gettext "New title: %{title}", title: @event.title %> <% end %> -<%= if MapSet.member?(@changes, :begins_on) do %> +<%= if MapSet.member?(@changes, :begins_on) do %><%= cond do %><% @event.options.timezone != nil and @event.options.timezone != @timezone -> %><%# Event with different timezone than user %> + <%= gettext "Start %{begins_on} (🌐 %{timezone} %{offset})", begins_on: @event.begins_on |> datetime_tz_convert(@event.options.timezone) |> datetime_to_string(@locale), timezone: @event.options.timezone, offset: @event.begins_on |> datetime_tz_convert(@event.options.timezone) |> Cldr.DateTime.Formatter.zone_gmt() %> +<%# Event with same timezone than user %><% @event.options.timezone != nil and @event.options.timezone == @timezone -> %> + <%= gettext "Start %{begins_on} (your timezone)", begins_on: @event.begins_on |> datetime_tz_convert(@event.options.timezone) |> datetime_to_string(@locale) %> +<%# Event with no timezone (show in user timezone) %><% true -> %> <%= gettext "Start %{begins_on}", begins_on: @event.begins_on |> datetime_tz_convert(@timezone) |> datetime_to_string(@locale) %> <% end %> +<% end %> <%= if MapSet.member?(@changes, :ends_on) && !is_nil(@event.ends_on) do %> <%= gettext "End %{ends_on}", ends_on: @event.ends_on |> datetime_tz_convert(@timezone) |> datetime_to_string(@locale) %> <% end %> diff --git a/priv/gettext/ar/LC_MESSAGES/default.po b/priv/gettext/ar/LC_MESSAGES/default.po index 35d9f9573..c7faa2132 100644 --- a/priv/gettext/ar/LC_MESSAGES/default.po +++ b/priv/gettext/ar/LC_MESSAGES/default.po @@ -776,8 +776,8 @@ msgstr "" #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -830,12 +830,12 @@ msgid "Confirm new email" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "" @@ -897,13 +897,13 @@ msgid "Learn more about Mobilizon here!" msgstr "تعلّم المزيد عن Mobilizon." #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "" @@ -947,7 +947,7 @@ msgid "Start" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "" @@ -1002,12 +1002,12 @@ msgid "Visit event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "" @@ -1534,3 +1534,23 @@ msgstr "تم قبول المشاركة" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/ar/LC_MESSAGES/errors.po b/priv/gettext/ar/LC_MESSAGES/errors.po index f75cda0f1..2258826a9 100644 --- a/priv/gettext/ar/LC_MESSAGES/errors.po +++ b/priv/gettext/ar/LC_MESSAGES/errors.po @@ -982,7 +982,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "" diff --git a/priv/gettext/be/LC_MESSAGES/default.po b/priv/gettext/be/LC_MESSAGES/default.po index 61d86aeea..a8c82d64a 100644 --- a/priv/gettext/be/LC_MESSAGES/default.po +++ b/priv/gettext/be/LC_MESSAGES/default.po @@ -758,8 +758,8 @@ msgstr "" #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -806,12 +806,12 @@ msgid "Confirm new email" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "" @@ -873,13 +873,13 @@ msgid "Learn more about Mobilizon here!" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "" @@ -923,7 +923,7 @@ msgid "Start" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "" @@ -978,12 +978,12 @@ msgid "Visit event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "" @@ -1510,3 +1510,23 @@ msgstr "" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/be/LC_MESSAGES/errors.po b/priv/gettext/be/LC_MESSAGES/errors.po index 2a4d64f3b..3b9e48df0 100644 --- a/priv/gettext/be/LC_MESSAGES/errors.po +++ b/priv/gettext/be/LC_MESSAGES/errors.po @@ -956,7 +956,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "" diff --git a/priv/gettext/ca/LC_MESSAGES/default.po b/priv/gettext/ca/LC_MESSAGES/default.po index 24d359924..075ff5409 100644 --- a/priv/gettext/ca/LC_MESSAGES/default.po +++ b/priv/gettext/ca/LC_MESSAGES/default.po @@ -925,8 +925,8 @@ msgstr "No ho facis servir més que proves, sisplau" #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -977,12 +977,12 @@ msgid "Confirm new email" msgstr "Confirma la nova adreça" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "Final" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "Final %{ends_on}" @@ -1061,13 +1061,13 @@ msgid "Learn more about Mobilizon here!" msgstr "Per aprendre més de Mobilizon." #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "Ubicació" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "L'adreça postal ha estat esborrada" @@ -1111,7 +1111,7 @@ msgid "Start" msgstr "Inici" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "Inici %{starts_on}" @@ -1168,12 +1168,12 @@ msgid "Visit event page" msgstr "Vés a la pàgina d'activitat" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "Vés a la pàgina d'activitat actualitzada" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "Vés a l'activitat actualitzada a %{link}" @@ -1766,3 +1766,23 @@ msgstr "S'ha aprovat la participació" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "Inici %{starts_on}" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "Inici %{starts_on}" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/ca/LC_MESSAGES/errors.po b/priv/gettext/ca/LC_MESSAGES/errors.po index e8b0cec87..2125d1738 100644 --- a/priv/gettext/ca/LC_MESSAGES/errors.po +++ b/priv/gettext/ca/LC_MESSAGES/errors.po @@ -957,7 +957,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "" diff --git a/priv/gettext/cs/LC_MESSAGES/default.po b/priv/gettext/cs/LC_MESSAGES/default.po index 1fc987561..bd4ee2566 100644 --- a/priv/gettext/cs/LC_MESSAGES/default.po +++ b/priv/gettext/cs/LC_MESSAGES/default.po @@ -758,8 +758,8 @@ msgstr "" #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -806,12 +806,12 @@ msgid "Confirm new email" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "" @@ -873,13 +873,13 @@ msgid "Learn more about Mobilizon here!" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "" @@ -923,7 +923,7 @@ msgid "Start" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "" @@ -978,12 +978,12 @@ msgid "Visit event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "" @@ -1510,3 +1510,23 @@ msgstr "" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/cs/LC_MESSAGES/errors.po b/priv/gettext/cs/LC_MESSAGES/errors.po index ed0138293..d36470700 100644 --- a/priv/gettext/cs/LC_MESSAGES/errors.po +++ b/priv/gettext/cs/LC_MESSAGES/errors.po @@ -956,7 +956,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "" diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po index 4248898fb..9f53933da 100644 --- a/priv/gettext/de/LC_MESSAGES/default.po +++ b/priv/gettext/de/LC_MESSAGES/default.po @@ -958,8 +958,8 @@ msgstr "Bitte verwenden Sie es nicht für reale Zwecke." #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -1009,12 +1009,12 @@ msgid "Confirm new email" msgstr "Neue E-Mail bestätigen" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "Ende" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "Ende %{ends_on}" @@ -1094,13 +1094,13 @@ msgid "Learn more about Mobilizon here!" msgstr "Lerne mehr über Mobilizon!" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "Ort" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "Adresse wurde entfernt" @@ -1146,7 +1146,7 @@ msgid "Start" msgstr "Start" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "Start %{begins_on}" @@ -1206,12 +1206,12 @@ msgid "Visit event page" msgstr "Besuche die Event Seite" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "Besuchen Sie die aktualisierte Veranstaltungsseite" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "Zeige die aktualisierte Veranstaltung unter: %{link}" @@ -1878,3 +1878,23 @@ msgstr "Teilnahme bestätigt" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "Start %{begins_on}" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "Start %{begins_on}" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/de/LC_MESSAGES/errors.po b/priv/gettext/de/LC_MESSAGES/errors.po index de87da763..b13f0d565 100644 --- a/priv/gettext/de/LC_MESSAGES/errors.po +++ b/priv/gettext/de/LC_MESSAGES/errors.po @@ -986,7 +986,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "" diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index 78bdd8d4c..6390880f4 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -739,8 +739,8 @@ msgstr "" #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -785,12 +785,12 @@ msgid "Confirm new email" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "" @@ -852,13 +852,13 @@ msgid "Learn more about Mobilizon here!" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "" @@ -902,7 +902,7 @@ msgid "Start" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "" @@ -957,12 +957,12 @@ msgid "Visit event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "" @@ -1489,3 +1489,23 @@ msgstr "" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index 41b18213c..67bf89b5c 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -792,8 +792,8 @@ msgstr "Please do not use it in any real way" #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -838,12 +838,12 @@ msgid "Confirm new email" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "" @@ -905,13 +905,13 @@ msgid "Learn more about Mobilizon here!" msgstr "Learn more about Mobilizon." #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "" @@ -955,7 +955,7 @@ msgid "Start" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "" @@ -1010,12 +1010,12 @@ msgid "Visit event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "View the updated event on: %{link}" @@ -1542,3 +1542,23 @@ msgstr "Participant" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/errors.po b/priv/gettext/en/LC_MESSAGES/errors.po index 0ec638e90..d4eba484d 100644 --- a/priv/gettext/en/LC_MESSAGES/errors.po +++ b/priv/gettext/en/LC_MESSAGES/errors.po @@ -960,7 +960,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "" diff --git a/priv/gettext/es/LC_MESSAGES/default.po b/priv/gettext/es/LC_MESSAGES/default.po index 41eae5d7c..2aae21e08 100644 --- a/priv/gettext/es/LC_MESSAGES/default.po +++ b/priv/gettext/es/LC_MESSAGES/default.po @@ -937,8 +937,8 @@ msgid "Please do not use it for real purposes." msgstr "Por favor no lo use de ninguna manera real." #: 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 #, elixir-format @@ -1837,3 +1837,23 @@ msgstr "Participación aprobada" #, elixir-format msgid "Anonymous participant" msgstr "Participante anónimo" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "Inicio %{begins_on}" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "Inicio %{begins_on}" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/fi/LC_MESSAGES/default.po b/priv/gettext/fi/LC_MESSAGES/default.po index de7d59f92..b4261d596 100644 --- a/priv/gettext/fi/LC_MESSAGES/default.po +++ b/priv/gettext/fi/LC_MESSAGES/default.po @@ -920,8 +920,8 @@ msgstr "Älä käytä todellisiin tarkoituksiin." #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -971,12 +971,12 @@ msgid "Confirm new email" msgstr "Vahvista sähköpostiosoite" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "Päättyy" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "Päättyy %{ends_on}" @@ -1054,13 +1054,13 @@ msgid "Learn more about Mobilizon here!" msgstr "Lue lisää Mobilizonista." #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "Paikka" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "Käyntiosoite poistettiin" @@ -1104,7 +1104,7 @@ msgid "Start" msgstr "Alkaa" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "Alkaa %{begins_on}" @@ -1161,12 +1161,12 @@ msgid "Visit event page" msgstr "Käy tapahtumasivulla" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "Käy päivitetyllä tapahtumasivulla" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "Katso päivitetty tapahtuma: %{linkki}" @@ -1804,3 +1804,23 @@ msgstr "Osallistuminen hyväksytty" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "Alkaa %{begins_on}" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "Alkaa %{begins_on}" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/fi/LC_MESSAGES/errors.po b/priv/gettext/fi/LC_MESSAGES/errors.po index 2c84196a3..6d7bb0cb2 100644 --- a/priv/gettext/fi/LC_MESSAGES/errors.po +++ b/priv/gettext/fi/LC_MESSAGES/errors.po @@ -963,7 +963,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "" diff --git a/priv/gettext/fr/LC_MESSAGES/default.po b/priv/gettext/fr/LC_MESSAGES/default.po index 9eaa7190e..d2d8a01f8 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-10-04 10:13+0200\n" +"PO-Revision-Date: 2021-10-12 17:42+0200\n" "Last-Translator: Thomas Citharel \n" "Language-Team: French \n" "Language: fr\n" @@ -20,1162 +20,919 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Poedit 3.0\n" -#, 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 vous n'avez pas demandé ceci, vous pouvez ignorer cet email. Votre mot de passe ne changera pas tant que vous n'en créerez pas un nouveau en cliquant sur le lien ci-dessous." -#, elixir-format #: lib/web/templates/email/report.html.heex:74 msgid "%{title} by %{creator}" msgstr "%{title} par %{creator}" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.heex:58 msgid "Activate my account" msgstr "Activer mon compte" -#, elixir-format -#: lib/web/templates/email/email.html.heex:118 -#: lib/web/templates/email/email.text.eex:9 +#: lib/web/templates/email/email.html.heex:118 lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Demander à la communauté sur Framacolibri" -#, elixir-format #: lib/web/templates/email/report.text.eex:15 msgid "Comments" msgstr "Commentaires" -#, elixir-format -#: lib/web/templates/email/report.html.heex:72 -#: lib/web/templates/email/report.text.eex:11 +#: lib/web/templates/email/report.html.heex:72 lib/web/templates/email/report.text.eex:11 msgid "Event" msgstr "Événement" -#, elixir-format #: lib/web/email/user.ex:48 msgid "Instructions to reset your password on %{instance}" msgstr "Instructions pour réinitialiser votre mot de passe sur %{instance}" -#, elixir-format #: lib/web/templates/email/report.text.eex:21 msgid "Reason" msgstr "Raison" -#, elixir-format #: lib/web/templates/email/password_reset.html.heex:61 msgid "Reset Password" msgstr "Réinitialiser mon mot de passe" -#, 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 "Réinitialiser votre mot de passe est facile. Cliquez simplement sur le bouton et suivez les inscriptions. Vous serez opérationnel en un rien de temps." -#, elixir-format #: lib/web/email/user.ex:28 msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Instructions pour confirmer votre compte Mobilizon sur %{instance}" -#, elixir-format #: lib/web/email/admin.ex:24 msgid "New report on Mobilizon instance %{instance}" msgstr "Nouveau signalement sur l'instance Mobilizon %{instance}" -#, elixir-format -#: lib/web/templates/email/before_event_notification.html.heex:51 -#: lib/web/templates/email/before_event_notification.text.eex:4 +#: lib/web/templates/email/before_event_notification.html.heex:51 lib/web/templates/email/before_event_notification.text.eex:4 msgid "Go to event page" msgstr "Aller à la page de l'événement" -#, elixir-format #: lib/web/templates/email/report.text.eex:1 msgid "New report from %{reporter} on %{instance}" msgstr "Nouveau signalement sur %{instance}" -#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:1 msgid "Participation approved" msgstr "Participation approuvée" -#, elixir-format -#: lib/web/templates/email/password_reset.html.heex:13 -#: lib/web/templates/email/password_reset.text.eex:1 +#: lib/web/templates/email/password_reset.html.heex:13 lib/web/templates/email/password_reset.text.eex:1 msgid "Password reset" msgstr "Réinitialisation du mot de passe" -#, 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 "Réinitialiser votre mot de passe est facile. Cliquez simplement sur le bouton et suivez les instructions. Vous serez opérationnel en un rien de temps." -#, 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 "Vous avez créé un compte sur %{host} avec cette adresse email. Vous êtes à un clic de l'activer." -#, elixir-format #: lib/web/email/participation.ex:108 msgid "Your participation to event %{title} has been approved" msgstr "Votre participation à l'événement %{title} a été approuvée" -#, elixir-format #: lib/web/email/participation.ex:68 msgid "Your participation to event %{title} has been rejected" msgstr "Votre participation à l'événement %{title} a été rejetée" -#, elixir-format #: lib/web/email/event.ex:36 msgid "Event %{title} has been updated" msgstr "L'événement %{title} a été mis à jour" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:15 msgid "New title: %{title}" msgstr "Nouveau titre : %{title}" -#, elixir-format #: lib/web/templates/email/password_reset.text.eex:5 msgid "You requested a new password for your account on %{instance}." msgstr "Vous avez demandé un nouveau mot de passe pour votre compte sur %{instance}." -#, elixir-format #: lib/web/templates/email/email.html.heex:86 msgid "Warning" msgstr "Attention" -#, elixir-format #: lib/web/email/participation.ex:131 msgid "Confirm your participation to event %{title}" msgstr "Confirmer ma participation à l'événement %{title}" -#, elixir-format #: lib/web/templates/api/privacy.html.heex:75 msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "Une identité interne pour l'identité sélectionnée actuellement" -#, elixir-format #: lib/web/templates/api/privacy.html.heex:74 msgctxt "terms" msgid "An internal user ID" msgstr "Une identité utilisateur·ice interne" -#, 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 "Les informations que nous vous nous fournissez pourront être utilisées ainsi :" -#, elixir-format #: lib/web/templates/api/privacy.html.heex:9 msgctxt "terms" msgid "Basic account information" msgstr "Informations basiques du compte" -#, elixir-format #: lib/web/templates/api/privacy.html.heex:25 msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "Ne partagez aucune information sensible à l'aide de Mobilizon." -#, elixir-format #: lib/web/templates/api/privacy.html.heex:90 msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "Partageons-nous des informations à des tiers ?" -#, elixir-format #: lib/web/templates/api/privacy.html.heex:68 msgctxt "terms" msgid "Do we use cookies?" msgstr "Utilisons-nous des cookies ?" -#, elixir-format #: lib/web/templates/api/privacy.html.heex:51 msgctxt "terms" msgid "How do we protect your information?" msgstr "Comment protégeons-nous vos informations ?" -#, elixir-format #: lib/web/templates/api/privacy.html.heex:29 msgctxt "terms" msgid "IPs and other metadata" msgstr "Adresses IP et autres métadonnées" -#, elixir-format #: lib/web/templates/api/privacy.html.heex:17 msgctxt "terms" msgid "Published events and comments" msgstr "Événements publiés et commentaires" -#, 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 "Ne pas conserver les adresses IP associées aux utilisateur·ices enregistrés pas plus de 12 mois." -#, elixir-format #: lib/web/templates/api/privacy.html.heex:76 msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Jetons pour vous identifier" -#, 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 "Nous pouvons également conserver les données d'authentification y compris les adresses IP de toutes les requêtes de notre serveur." -#, 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 "Nous conservons les informations suivantes sur votre appareil lorsque vous vous connectez :" -#, elixir-format #: lib/web/templates/api/privacy.html.heex:58 msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Nous mettrons tout en possible pour :" -#, elixir-format #: lib/web/templates/api/privacy.html.heex:35 msgctxt "terms" msgid "What do we use your information for?" msgstr "Comment utilisons-nous vos informations ?" -#, elixir-format #: lib/web/templates/api/privacy.html.heex:57 msgctxt "terms" msgid "What is our data retention policy?" msgstr "Quelle est notre politique de conservation des données ?" -#, elixir-format #: lib/web/templates/api/privacy.html.heex:67 msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Vous pouvez supprimer votre compte à tout moment de façon irréversible." -#, elixir-format #: lib/web/templates/api/privacy.html.heex:115 msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Modifications de notre politique de confidentialité" -#, 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 "Si ce serveur est dans l'Union Européenne ou dans l'Espace Economique Européen : nos sites, produits et services sont tous destinés aux personnes âgées de plus de 16 ans. Si vous avez moins de 16 ans, suivant le RGPD (Règlement général sur la protection des données), n'utilisez pas ce site." -#, 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 "Si le serveur est situé aux Etats-Unis : Notre site, nos produits et services sont tous à destination de personnes agées d'au moins 13 ans. Si vous avez moins de 13 ans, d'après les recommandations de COOPA (Children's Online Privacy Protection Act) n'utilisez pas ce site." -#, 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 nous décidons de changer notre politique de confidentialité, nous présenterons ces changements sur cette page." -#, 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 "Les conditions juridiques peuvent différer si le serveur est sous une autre juridiction." -#, elixir-format #: lib/web/templates/api/privacy.html.heex:103 msgctxt "terms" msgid "Site usage by children" msgstr "Utilisation du site par des mineurs" -#, 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." +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 "" "L'adresse électronique que vous nous fournissez peut être utilisée pour vous envoyer des informations, des mises à jour et des notifications concernant d'autres personnes\n" "qui interagissent avec vos contenus ou vous envoient des messages et pour répondre à des demandes,\n" "et/ou à d'autres requêtes ou questions." -#, 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." +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 "" "Afin d'aider à la modération de la communauté, par exemple en comparant votre adresse IP avec d'autres adresses connues\n" "dans le but de détecter des tentatives de contournement d'un bannissement ou d'autres violations." -#, 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." +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 "" "Fournir la fonctionnalité de base de Mobilizon. Selon la politique de cette instance, vous ne pourrez interagir\n" "avec le contenu d'autres personnes et publier votre propre contenu que si vous êtes connecté." -#, elixir-format #: lib/web/templates/api/privacy.html.heex:6 msgctxt "terms" msgid "What information do we collect?" msgstr "Quelles informations collectons-nous ?" -#, elixir-format #: lib/web/email/user.ex:175 msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon sur %{instance} : confirmez votre adresse email" -#, elixir-format #: lib/web/email/user.ex:155 msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon sur %{instance} : adresse email modifiée" -#, elixir-format #: lib/web/email/notification.ex:49 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un événement prévu aujourd'hui" msgstr[1] "%{nb_events} événements prévus aujourd'hui" -#, elixir-format -#: lib/web/templates/email/on_day_notification.html.heex:38 -#: lib/web/templates/email/on_day_notification.text.eex:4 +#: lib/web/templates/email/on_day_notification.html.heex:38 lib/web/templates/email/on_day_notification.text.eex:4 msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Vous avez un événement aujourd'hui :" msgstr[1] "Vous avez %{total} événements aujourd'hui :" -#, elixir-format #: lib/web/templates/email/group_invite.text.eex:3 msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} vient de vous inviter à rejoindre son groupe %{group}" -#, elixir-format -#: lib/web/templates/email/group_invite.html.heex:13 -#: lib/web/templates/email/group_invite.text.eex:1 +#: lib/web/templates/email/group_invite.html.heex:13 lib/web/templates/email/group_invite.text.eex:1 msgid "Come along!" msgstr "Rejoignez-nous !" -#, elixir-format #: lib/web/email/notification.ex:24 msgid "Don't forget to go to %{title}" msgstr "N'oubliez pas de vous rendre à %{title}" -#, elixir-format -#: lib/web/templates/email/before_event_notification.html.heex:38 -#: lib/web/templates/email/before_event_notification.text.eex:3 +#: lib/web/templates/email/before_event_notification.html.heex:38 lib/web/templates/email/before_event_notification.text.eex:3 msgid "Get ready for %{title}" msgstr "Préparez vous pour %{title}" -#, elixir-format #: lib/web/templates/email/group_invite.html.heex:59 msgid "See my groups" msgstr "Voir mes groupes" -#, elixir-format -#: lib/web/templates/email/group_invite.html.heex:45 -#: lib/web/templates/email/group_invite.text.eex:5 +#: lib/web/templates/email/group_invite.html.heex:45 lib/web/templates/email/group_invite.text.eex:5 msgid "To accept this invitation, head over to your groups." msgstr "Pour accepter cette invitation, rendez-vous dans vos groupes." -#, elixir-format #: lib/web/templates/email/before_event_notification.text.eex:5 msgid "View the event on: %{link}" msgstr "Voir l'événement mis à jour sur : %{link}" -#, elixir-format #: lib/web/email/group.ex:31 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "Vous avez été invité par %{inviter} à rejoindre le groupe %{group}" -#, elixir-format #: lib/web/email/notification.ex:75 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un événement prévu cette semaine" msgstr[1] "%{nb_events} événements prévus cette semaine" -#, elixir-format #: lib/web/email/notification.ex:98 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Une demande de participation à l'événement %{title} à traiter" msgstr[1] "%{number_participation_requests} demandes de participation à l'événement %{title} à traiter" -#, elixir-format -#: lib/web/templates/email/notification_each_week.html.heex:38 -#: lib/web/templates/email/notification_each_week.text.eex:3 +#: lib/web/templates/email/notification_each_week.html.heex:38 lib/web/templates/email/notification_each_week.text.eex:3 msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Vous avez un événement aujourd'hui :" msgstr[1] "Vous avez %{total} événements aujourd'hui :" -#, elixir-format #: lib/service/metadata/utils.ex:53 msgid "The event organizer didn't add any description." msgstr "L'organisateur·ice de l'événement n'a pas ajouté de description." -#, 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 "Nous utilisons plusieurs mesures de sécurité pour assurer la confidentialité de vos informations personnelles lorsque vous soumettez ou accédez à vos informations. Entre autres, votre session de navigateur et la connexion entre vos applications et l'API sont sécurisés par SSL/TLS, et votre mot de passe est haché avec un algorithme fort à sens unique." -#, 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 "Non. Nous ne vendons, n’échangeons ou ne transférons d’une quelque manière que soit des informations permettant de vous identifier personnellement. Cela n’inclut pas les tierces parties de confiance qui nous aident à opérer ce site, à conduire nos activités commerciales ou à vous servir, tant qu’elles acceptent de garder ces informations confidentielles. Nous sommes également susceptibles de partager vos informations quand nous pensons que c’est nécessaire pour nous conformer à la loi, pour appliquer les politiques de notre site ainsi que pour défendre nos droits, notre propriété, notre sécurité et celles et ceux d’autres personnes." -#, elixir-format #: lib/web/templates/api/terms.html.heex:23 msgctxt "terms" msgid "Accepting these Terms" msgstr "Acceptation de ces Conditions" -#, elixir-format #: lib/web/templates/api/terms.html.heex:27 msgctxt "terms" msgid "Changes to these Terms" msgstr "Modifications de ces Conditions d'Utilisation" -#, 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 "Une grande partie du contenu du Service provient de vous et d'autres personnes, et nous ne l'examinons, ne le vérifions ni ne l'authentifions, et il peut contenir des inexactitudes ou de fausses informations. Nous ne faisons aucune déclaration, garantie ou assurance concernant la qualité, la pertinence, la véracité, l'exactitude ou l'exhaustivité de tout contenu du Service. Vous reconnaissez être seul responsable et assumez tous les risques découlant de votre utilisation ou de votre confiance dans tout contenu." -#, 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 "De plus, vous acceptez de ne pas faire ce qui suit en relation avec le Service ou les autres utilisateur·ices :" -#, 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 "Contourner ou tenter de contourner tout filtrage, mesures de sécurité, limites d'accès ou autres caractéristiques destinées à protéger le Service, les utilisateur·ices du Service ou des tiers." -#, 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 "Recueillir des informations personnelles sur les autres utilisateur·ices, ou intimider, menacer, traquer ou harceler de toute autre manière les autres utilisateurs du Service ;" -#, 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 "Du contenu qui est illégal ou illicite, qui autrement entraînerait une responsabilité ;" -#, 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 "Du contenu susceptible d'enfreindre ou de violer un brevet, une marque de commerce, un secret commercial, un droit d'auteur, un droit à la vie privée, un droit de publicité ou tout autre droit intellectuel ou autre de toute partie ;" -#, elixir-format #: lib/web/templates/api/terms.html.heex:42 msgctxt "terms" msgid "Creating Accounts" msgstr "Création de compte" -#, elixir-format #: lib/web/templates/api/terms.html.heex:89 msgctxt "terms" msgid "Entire Agreement" msgstr "Accord complet" -#, elixir-format #: lib/web/templates/api/terms.html.heex:92 msgctxt "terms" msgid "Feedback" msgstr "Commentaires" -#, elixir-format #: lib/web/templates/api/terms.html.heex:83 msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Liens hypertexte et contenu tiers" -#, 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 vous enfreignez l'une de ces Conditions, nous avons le droit de suspendre ou de désactiver votre accès ou votre utilisation du Service." -#, 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 "Usurper l'identité d'une personne ou d'une entité ou afficher au nom d'une personne ou d'une entité, ou encore présenter de manière inexacte votre affiliation à une personne ou une entité ;" -#, 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 "Notre Service vous permet, ainsi qu'à d'autres utilisateur·ices, de publier, d'établir des liens et de mettre à disposition du contenu. Vous êtes responsable du contenu que vous mettez à la disposition du service, y compris de sa légalité, de sa fiabilité et de sa pertinence." -#, elixir-format #: lib/web/templates/api/terms.html.heex:39 msgctxt "terms" msgid "Privacy Policy" msgstr "Politique de confidentialité" -#, elixir-format #: lib/web/templates/api/terms.html.heex:95 msgctxt "terms" msgid "Questions & Contact Information" msgstr "Questions et coordonnées" -#, elixir-format #: lib/web/templates/api/terms.html.heex:87 msgctxt "terms" msgid "Termination" msgstr "Résiliation" -#, 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 "Utiliser le Service de toute manière qui pourrait interférer, perturber, affecter négativement ou empêcher d'autres utilisateur·ices de profiter pleinement du Service ou qui pourrait endommager, désactiver, surcharger ou altérer le fonctionnement du Service ;" -#, elixir-format #: lib/web/templates/api/terms.html.heex:47 msgctxt "terms" msgid "Your Content & Conduct" msgstr "Votre contenu et votre conduite" -#, 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 "%{instance_name} ne fait aucune revendication et n'accepte aucune responsabilité concernant les sites web de tiers accessibles par lien hypertexte depuis le Service ou les sites web liés au Service. Lorsque vous quittez le Service, vous devez savoir que les présentes Conditions et nos politiques de confidentialité ne sont plus applicables. L'inclusion d'un lien n'implique pas l'approbation par %{instance_name} du site. L'utilisation de tout site web lié est aux risques et périls de l'utilisateur·ice." -#, 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 "Enfin, votre utilisation du Service est également soumise à l'acceptation des règles spécifiques de l'instance concernant le code de conduite et les règles de modération. Le non-respect de ces règles peut également entraîner la désactivation ou la suspension de votre compte." -#, elixir-format #: lib/web/templates/api/terms.html.heex:81 msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "Pour plus de détails sur le logiciel Mobilizon voir ici." -#, 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 "Voici les points importants que vous devez savoir sur l'accès et l'utilisation du site web et du Service %{instance_name} (%{instance_url}) (conjointement, \"Service\"). Ce sont nos conditions de service (\"Conditions\"). Veuillez les lire attentivement." -#, 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 "Si nous apportons des changements majeurs, nous en informerons nos utilisateur·ices de manière claire et visible. Il est possible que les changements mineurs ne soient mis en évidence que dans le pied de page de cette page. Il est de votre responsabilité de vérifier régulièrement sur le site web si des modifications ont été apportées aux présentes Conditions." -#, 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 "Afin de faire de %{instance_name} un endroit idéal pour nous toutes et tous, nous vous prions de ne pas publier, relier ou rendre disponible sur ou par le biais du Service l'un des éléments suivants :" -#, 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 "Les informations privées de toute personne tierce (par exemple, les adresses, les numéros de téléphone, les adresses électroniques, les numéros de sécurité sociale et les numéros de carte de crédit) ; et" -#, 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 "Mobilizon étant un réseau distribué, il est possible, en fonction des règles de visibilité définies pour votre contenu, que celui-ci ait été distribué à d'autres instances de Mobilizon. Lorsque vous supprimez votre contenu, nous demandons à ces autres instances de supprimer également le contenu. Notre responsabilité quant au contenu supprimé de ces autres instances s'arrête ici. Si, pour une raison quelconque, une autre instance ne supprime pas le contenu, nous ne pouvons être tenus responsables." -#, 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 "Les présentes Conditions constituent l'intégralité de l'accord entre vous et %{instance_name} concernant l'utilisation du Service, remplaçant tout accord préalable entre vous et %{instance_name} relatif à votre utilisation du Service." -#, 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 "Ce Service fonctionne sur une instance de Mobilizon. Ce code source est sous licence AGPLv3 ce qui signifie que vous êtes autorisé et même encouragé à prendre le code source, le modifier et l'utiliser." -#, 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, données corrompues ou autres fichiers ou codes nuisibles, perturbateurs ou destructeurs." -#, 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 "Vous pouvez supprimer le contenu que vous avez publié en le supprimant. Une fois que vous avez supprimé votre contenu, il n'apparaîtra plus sur le Service, mais des copies de votre contenu supprimé peuvent rester dans notre système ou des sauvegardes pendant un certain temps. Les journaux d'accès au serveur web peuvent également être stockés pendant un certain temps dans le système." -#, 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 "Les questions ou commentaires concernant le Service peuvent nous être adressés à %{contact}" -#, elixir-format #: lib/web/templates/api/terms.html.heex:79 msgctxt "terms" msgid "Source code" msgstr "Code source" -#, 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 "Nous aimons les retours d'information. N'hésitez pas à nous faire savoir ce que vous pensez du Service, des présentes Conditions et, en général, de %{instance_name}." -#, 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 "Les administrateurs d'instance (et les modérateurs de la communauté, sous réserve d'un accès approprié) sont chargés de surveiller et d'agir sur les contenus signalés et autres rapports d'utilisateur·ices, et ont le droit et la responsabilité de supprimer ou de modifier les contenus qui ne sont pas conformes aux règles de cette d'instance, ou de suspendre, bloquer ou interdire (temporairement ou définitivement) tout compte, communauté ou instance pour violation de ces conditions, ou pour d'autres comportements qu'ils jugent inappropriés, menaçants, offensants ou nuisibles." -#, 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} n'utilisera pas ni ne transmettra ou revendra vos données" -#, 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 "Si vous découvrez ou soupçonnez des failles de sécurité du Service, veuillez nous en informer dès que possible. Pour les failles de sécurité dans le logiciel Mobilizon lui-même, veuillez contacter directement ses contributeur·ices." -#, 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 "Les administrateur·ices d'instance doivent s'assurer que chaque communauté hébergée sur l'instance est correctement modérée conformément aux règles définies." -#, 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 "Adaptée à l'origine des politiques de confidentialité de Diaspora* et App.net, aussi sous licence CC BY-SA." -#, 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 "Adaptée à l'origine des politiques de confidentialité de Mastodon et Discourse, aussi sous licence CC BY-SA." -#, elixir-format #: lib/web/templates/api/terms.html.heex:3 msgctxt "terms" msgid "Short version" msgstr "Version courte" -#, 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 "Le service est fourni sans garanties et ces conditions peuvent changer dans le futur" -#, 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 "Ce document est sous licence CC BY-SA. La dernière mise à jour date du 18 juin 2020." -#, 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 "Ce document est sous licence CC BY-SA. La dernière mise à jour date du 22 juin 2020." -#, 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 "Vous devez respecter les autres et les règles de %{instance_name} lorsque vous utilisez le service" -#, elixir-format #: lib/web/templates/api/terms.html.heex:7 msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "Vous devez respecter la loi lorsque vous utilisez %{instance_name}" -#, elixir-format #: lib/web/templates/api/terms.html.heex:5 msgctxt "terms" msgid "Your content is yours" msgstr "Votre contenu vous appartient" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:51 msgid "Confirm my e-mail address" msgstr "Confirmer mon adresse email" -#, elixir-format -#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:13 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 +#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:13 lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 msgid "Confirm your e-mail" msgstr "Confirmez votre adresse email" -#, 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 "Salut ! Vous venez de vous enregistrer pour rejoindre cet événement : « %{title} ». Merci de confirmer l'adresse email que vous avez fournie :" -#, elixir-format -#: lib/web/templates/email/email.html.heex:115 -#: lib/web/templates/email/email.text.eex:8 +#: lib/web/templates/email/email.html.heex:115 lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "Besoin d'aide ? Quelque chose ne fonctionne pas correctement ?" -#, 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 "Vous avez créé un compte sur %{host} avec cette adresse email. Vous êtes à un clic de l'activer." -#, elixir-format #: lib/web/templates/email/report.html.heex:13 msgid "New report on %{instance}" msgstr "Nouveau signalement sur %{instance}" -#, 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 "L'adresse email pour votre compte sur %{host} est en train d'être changée pour :" -#, elixir-format #: lib/web/templates/email/password_reset.html.heex:38 msgid "You requested a new password for your account on %{instance}." msgstr "Vous avez demandé un nouveau mot de passe pour votre compte sur %{instance}." -#, elixir-format #: lib/web/templates/email/email.text.eex:5 msgid "Please do not use it for real purposes." msgstr "Veuillez ne pas l'utiliser pour un cas réel." -#, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 -#: lib/web/templates/email/on_day_notification.text.eex:14 +#: 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:147 lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 lib/web/templates/email/on_day_notification.text.eex:14 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] "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 »." -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 +#: 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 :" -#, elixir-format #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} est une instance Mobilizon." -#, elixir-format #: lib/web/templates/email/email.html.heex:143 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} est une instance Mobilizon." -#, elixir-format -#: lib/web/templates/email/pending_participation_notification.html.heex:13 -#: lib/web/templates/email/pending_participation_notification.text.eex:1 +#: 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 !" -#, elixir-format -#: lib/web/templates/email/before_event_notification.html.heex:13 -#: lib/web/templates/email/before_event_notification.text.eex:1 +#: 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!" msgstr "Un événement est à venir !" -#, elixir-format -#: lib/web/templates/email/email_changed_new.html.heex:13 -#: lib/web/templates/email/email_changed_new.text.eex:1 +#: lib/web/templates/email/email_changed_new.html.heex:13 lib/web/templates/email/email_changed_new.text.eex:1 msgid "Confirm new email" msgstr "Confirmez votre adresse email" -#, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "Fin" -#, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "Fin %{ends_on}" -#, elixir-format -#: lib/web/templates/email/event_updated.html.heex:13 -#: lib/web/templates/email/event_updated.text.eex:1 +#: lib/web/templates/email/event_updated.html.heex:13 lib/web/templates/email/event_updated.text.eex:1 msgid "Event update!" msgstr "Événement mis à jour !" -#, elixir-format #: lib/web/templates/email/report.html.heex:88 msgid "Flagged comments" msgstr "Commentaires signalés" -#, elixir-format -#: lib/web/templates/email/event_participation_approved.html.heex:45 -#: lib/web/templates/email/event_participation_approved.text.eex:7 +#: lib/web/templates/email/event_participation_approved.html.heex:45 lib/web/templates/email/event_participation_approved.text.eex:7 msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "Bonne nouvelle : un·e des organisateur·ices de l'événement vient d'approuver votre demande. Mettez à jour votre agenda, car vous êtes maintenant un·e participant·e !" -#, elixir-format -#: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 +#: lib/web/templates/email/email_changed_new.html.heex:38 lib/web/templates/email/email_changed_new.text.eex:3 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 "Salut ! Il semblerait que vous avez demandé la modification de l'adresse e-mail liée à votre compte sur %{instance}. Si vous voulez toujours effectuer ce changement, merci de cliquer sur le bouton ci-dessous pour confirmer la modification. Vous pourrez alors vous connecter à %{instance} avec cette nouvelle adresse." -#, 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 "Salut ! Juste un petite note pour confirmer que l'adresse e-mail liée à votre compte sur %{host} a été changée depuis celle-ci à :" -#, elixir-format -#: lib/web/templates/email/email_changed_old.html.heex:62 -#: lib/web/templates/email/email_changed_old.text.eex:5 +#: lib/web/templates/email/email_changed_old.html.heex:62 lib/web/templates/email/email_changed_old.text.eex:5 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 vous n'avez pas effectué cette modification vous-même, il est probable que quelqu'un ait eu accès à votre compte %{host}. Veuillez vous connecter et changer immédiatement votre mot de passe. Si vous ne pouvez pas vous connecter, contactez l'administrateur·ice sur %{host}." -#, 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 vous n'êtes pas à l'origine de cette modification, merci d'ignorer ce message. Votre mot de passe ne sera pas modifié tant que vous ne cliquerez pas le lien ci-dessus." -#, 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 +#: 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 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Si vous n'avez pas déclenché cette alerte, vous pouvez ignorer cet e-mail sans souci." -#, elixir-format -#: lib/web/templates/email/before_event_notification.html.heex:63 -#: lib/web/templates/email/before_event_notification.text.eex:6 +#: lib/web/templates/email/before_event_notification.html.heex:63 lib/web/templates/email/before_event_notification.text.eex:6 msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "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 »." -#, elixir-format -#: lib/web/templates/email/email.html.heex:144 -#: lib/web/templates/email/email.text.eex:11 +#: lib/web/templates/email/email.html.heex:144 lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "En apprendre plus à propos de Mobilizon ici !" -#, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 -#: lib/web/templates/export/event_participants.html.heex:129 +#: lib/web/templates/email/event_updated.html.heex:108 lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "Localisation" -#, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "L'adresse physique a été enlevée" -#, 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:51 lib/web/templates/email/pending_participation_notification.text.eex:6 msgid "Manage pending requests" msgstr "Gérer les demandes de participation en attente" -#, elixir-format -#: lib/web/templates/email/registration_confirmation.html.heex:13 -#: lib/web/templates/email/registration_confirmation.text.eex:1 +#: lib/web/templates/email/registration_confirmation.html.heex:13 lib/web/templates/email/registration_confirmation.text.eex:1 msgid "Nearly there!" msgstr "Vous y êtes presque !" -#, elixir-format -#: lib/web/templates/email/email_changed_old.html.heex:13 -#: lib/web/templates/email/email_changed_old.text.eex:1 +#: lib/web/templates/email/email_changed_old.html.heex:13 lib/web/templates/email/email_changed_old.text.eex:1 msgid "New email confirmation" msgstr "Confirmation de nouvel e-mail" -#, elixir-format #: lib/web/templates/email/report.html.heex:106 msgid "Reasons for report" msgstr "Raisons du signalement" -#, elixir-format #: lib/web/templates/email/report.html.heex:39 msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "Une personne de %{instance} a signalé le contenu suivant :" -#, elixir-format -#: lib/web/templates/email/event_participation_rejected.html.heex:13 -#: lib/web/templates/email/event_participation_rejected.text.eex:1 +#: lib/web/templates/email/event_participation_rejected.html.heex:13 lib/web/templates/email/event_participation_rejected.text.eex:1 msgid "Sorry! You're not going." msgstr "Désolé ! Vous n'y allez pas." -#, elixir-format #: lib/web/templates/email/event_updated.html.heex:74 msgid "Start" msgstr "Début" -#, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "Début %{begins_on}" -#, 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 "Il y a eu des changements pour %{title} donc nous avons pensé que nous vous le ferions savoir." -#, elixir-format -#: lib/web/templates/email/event_updated.html.heex:55 -#: lib/web/templates/email/event_updated.text.eex:11 +#: lib/web/templates/email/event_updated.html.heex:55 lib/web/templates/email/event_updated.text.eex:11 msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Cet événement a été annulé par ses organisateur·ices. Désolé !" -#, elixir-format -#: lib/web/templates/email/event_updated.html.heex:51 -#: lib/web/templates/email/event_updated.text.eex:7 +#: lib/web/templates/email/event_updated.html.heex:51 lib/web/templates/email/event_updated.text.eex:7 msgid "This event has been confirmed" msgstr "L'événement a été confirmé" -#, elixir-format -#: lib/web/templates/email/event_updated.html.heex:53 -#: lib/web/templates/email/event_updated.text.eex:9 +#: lib/web/templates/email/event_updated.html.heex:53 lib/web/templates/email/event_updated.text.eex:9 msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "Cet événement doit encore être confirmé : les organisateur·ices vous feront savoir si l'événement est confirmé." -#, elixir-format -#: lib/web/templates/email/event_participation_rejected.html.heex:45 -#: lib/web/templates/email/event_participation_rejected.text.eex:7 +#: lib/web/templates/email/event_participation_rejected.html.heex:45 lib/web/templates/email/event_participation_rejected.text.eex:7 msgid "Unfortunately, the organizers rejected your request." msgstr "Malheureusement, les organisateur⋅ices ont rejeté votre demande de participation." -#, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:51 msgid "Verify your email address" msgstr "Vérifier l'adresse email" -#, elixir-format #: lib/web/templates/email/report.html.heex:126 msgid "View report" msgstr "Voir le signalement" -#, elixir-format #: lib/web/templates/email/report.text.eex:24 msgid "View report:" msgstr "Voir le signalement :" -#, 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 +#: 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 msgid "Visit event page" msgstr "Voir la page de l'événement" -#, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "Voir la page de l'événement mis à jour" -#, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "Voir l'événement mis à jour sur : %{link}" -#, elixir-format -#: lib/web/templates/email/notification_each_week.html.heex:13 -#: lib/web/templates/email/notification_each_week.text.eex:1 +#: lib/web/templates/email/notification_each_week.html.heex:13 lib/web/templates/email/notification_each_week.text.eex:1 msgid "What's up this week?" msgstr "Quoi de neuf cette semaine ?" -#, elixir-format -#: lib/web/templates/email/on_day_notification.html.heex:13 -#: lib/web/templates/email/on_day_notification.text.eex:1 +#: lib/web/templates/email/on_day_notification.html.heex:13 lib/web/templates/email/on_day_notification.text.eex:1 msgid "What's up today?" msgstr "Quoi de neuf aujourd'hui ?" -#, 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 +#: 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 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." -#, 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:64 lib/web/templates/email/pending_participation_notification.text.eex:8 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 »." -#, elixir-format #: lib/web/templates/email/event_participation_rejected.text.eex:5 msgid "You issued a request to attend %{title}." msgstr "Vous avez effectué une demande de participation à %{title}." -#, elixir-format -#: lib/web/templates/email/event_participation_approved.text.eex:5 -#: lib/web/templates/email/event_participation_confirmed.text.eex:3 +#: lib/web/templates/email/event_participation_approved.text.eex:5 lib/web/templates/email/event_participation_confirmed.text.eex:3 msgid "You recently requested to attend %{title}." msgstr "Vous avez demandé à participer à l'événement %{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 +#: 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 msgid "You're going!" msgstr "Vous y allez !" -#, elixir-format -#: lib/web/templates/email/email_changed_new.html.heex:64 -#: lib/web/templates/email/email_changed_new.text.eex:5 +#: lib/web/templates/email/email_changed_new.html.heex:64 lib/web/templates/email/email_changed_new.text.eex:5 msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "Si vous n'êtes pas à l'origine de cette modification, merci d'ignorer ce message." -#, elixir-format #: lib/web/templates/email/email.html.heex:90 msgid "Please do not use it for real purposes." msgstr "Veuillez ne pas l'utiliser pour un cas réel." -#, elixir-format -#: lib/web/templates/email/group_member_removal.html.heex:45 -#: lib/web/templates/email/group_member_removal.text.eex:5 +#: lib/web/templates/email/group_member_removal.html.heex:45 lib/web/templates/email/group_member_removal.text.eex:5 msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "Si vous pensez qu'il s'agit d'une erreur, vous pouvez contacter les administrateurs du groupe afin qu'ils vous réintègrent." -#, elixir-format -#: lib/web/templates/email/group_member_removal.html.heex:13 -#: lib/web/templates/email/group_member_removal.text.eex:1 +#: lib/web/templates/email/group_member_removal.html.heex:13 lib/web/templates/email/group_member_removal.text.eex:1 msgid "So long, and thanks for the fish!" msgstr "Salut, et encore merci pour le poisson !" -#, elixir-format #: lib/web/email/group.ex:61 msgid "You have been removed from group %{group}" msgstr "Vous avez été enlevé du groupe %{group}" -#, 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 "Vous avez été enlevé du groupe %{group}. Vous ne serez plus en mesure d'accéder au contenu privé du groupe." -#, 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} vient de vous inviter à rejoindre son groupe %{link_start}%{group}%{link_end}" -#, 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 "Vous avez été enlevé du groupe %{link_start}%{group}%{link_end}. Vous ne serez plus en mesure d'accéder au contenu privé du groupe." -#, elixir-format -#: lib/web/templates/email/group_suspension.html.heex:54 -#: lib/web/templates/email/group_suspension.text.eex:7 +#: lib/web/templates/email/group_suspension.html.heex:54 lib/web/templates/email/group_suspension.text.eex:7 msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "Comme ce groupe était originaire d'une autre instance, il continuera à fonctionner pour d'autres instances que celle-ci." -#, elixir-format -#: lib/web/templates/email/group_suspension.html.heex:46 -#: lib/web/templates/email/group_suspension.text.eex:5 +#: lib/web/templates/email/group_suspension.html.heex:46 lib/web/templates/email/group_suspension.text.eex:5 msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "Comme ce groupe était originaire de cette instance, toutes ses données ont été irrémédiablement détruites." -#, elixir-format -#: lib/web/templates/email/group_suspension.html.heex:13 -#: lib/web/templates/email/group_suspension.text.eex:1 +#: lib/web/templates/email/group_suspension.html.heex:13 lib/web/templates/email/group_suspension.text.eex:1 msgid "The group %{group} has been suspended on %{instance}!" msgstr "Le groupe %{group} a été suspendu sur %{instance} !" -#, 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 "L'équipe de modération de votre instance a décidé de suspendre %{group_name} (%{group_address}). Vous n'êtes désormais plus membre de ce groupe." -#, elixir-format #: lib/web/email/group.ex:95 msgid "The group %{group} has been suspended on %{instance}" msgstr "Le groupe %{group} a été suspendu sur %{instance}" -#, 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 "Si vous accédez au Service ou utilisez le Service, cela signifie que vous acceptez d'être lié·e par toutes les Conditions ci-dessous. Si une condition n'a pas de sens pour vous, veuillez nous le faire savoir en contactant %{contact}." -#, 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 "Pour savoir comment nous recueillons et utilisons les informations sur les utilisateur·ice·s du Service, veuillez consulter notre politique de confidentialité." -#, 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 vous continuez à utiliser le Service après l'entrée en vigueur des Conditions révisées, vous acceptez les conditions révisées." -#, 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 vous supprimez ces informations, vous devrez vous connecter de nouveau." -#, 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 "Si vous n'êtes pas connecté·e, nous ne conserverons aucune information sur votre appareil, sauf si vous participez anonymement à un événement. Dans ce cas spécifique nous conservons le hash d'un identifiant unique pour l'événement et les statuts de participation dans votre navigateur pour pouvoir les afficher. Supprimer ces informations aura pour seule conséquence que votre participation ne sera plus affichée dans votre navigateur." -#, 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 "Attention : Ces informations sont conservées dans votre stockage local et non vos cookies." -#, elixir-format #: lib/web/templates/api/terms.html.heex:71 msgctxt "terms" msgid "Our responsibility" msgstr "Notre responsabilité" -#, 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 "Conserver les journaux du serveur contenant l'adresse IP de toutes les demandes adressées à ce serveur, dans la mesure où ces journaux sont conservés, pas plus de 90 jours." -#, elixir-format -#: lib/web/templates/api/privacy.html.heex:3 -#: lib/web/templates/api/terms.html.heex:15 +#: lib/web/templates/api/privacy.html.heex:3 lib/web/templates/api/terms.html.heex:15 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 "Certains termes, techniques ou non, utilisés dans le texte ci-dessous peuvent recouvrir des concepts difficiles à appréhender. Nous vous proposons un glossaire qui pourra vous aider à mieux les comprendre." -#, 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 "Nous ne sommes pas responsables des pertes que vous pourriez subir si quelqu'un d'autre utilise votre adresse électronique ou votre mot de passe, à votre insu ou non." -#, 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 "Nous ne pouvons être tenus responsables si une erreur de programmation ou d'administration rend votre contenu visible à un public plus large que celui que vous aviez prévu. Outre notre droit limité sur votre contenu, vous conservez tous vos droits sur le contenu que vous publiez, mettez en lien et rendez disponible sur ou via le Service." -#, 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." @@ -1183,340 +940,283 @@ msgstr "" "Nous collectons des informations sur vous lorsque vous vous inscrivez sur cette instance et récupérons des données lorsque vous utilisez la plateforme en lisant, écrivant, et en interagissant avec les contenus partagés. Si vous vous inscrivez sur cette instance, nous vous demanderons une adresse courriel, un mot de passe (haché) et au moins un nom d'utilisateur.ice. Votre adresse courriel sera vérifiée par l'envoi d'un courriel de confirmation contenant un lien unique. Si ce lien est activé, nous saurons que vous contrôlez cette adresse courriel. Vous pouvez également entrer des informations supplémentaires au profil, comme un pseudonyme, une biographie, une image de profil et une image d'en-tête. Le nom d'utilisateur, le pseudonyme affiché, la " "biographie, les images de profil et d'en-tête sont toujours publiques. Vous pouvez toutefois utiliser ce serveur sans vous inscrire." -#, 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 "Nous nous réservons le droit de modifier ces Conditions à tout moment. Par exemple, nous pouvons être amenés à modifier ces Conditions si nous proposons une nouvelle fonctionnalité." -#, 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 "Lorsque nous disons « nous », « notre » ou « nos » dans ce document, nous faisons référence aux propriétaires, opérateur·ices et administrateur·ices de cette instance de Mobilizon. Le logiciel Mobilizon est fourni par l'équipe des contributeur·ices de Mobilizon, soutenue par Framasoft, une organisation française d'éducation populaire à but non lucratif qui défend les logiciels libres. Sauf mention explicite, cette instance de Mobilizon est un service indépendant utilisant le code source de Mobilizon. Vous pouvez trouver plus d'informations sur cette instance sur la page « A propos de cette instance »." -#, 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 "Lorsque vous créez un compte, vous acceptez également de maintenir la sécurité et la confidentialité de votre mot de passe et vous acceptez tous les risques d'accès non autorisé aux données de votre compte et à toute autre information que vous fournissez à %{instance_name}." -#, 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 "Lorsque vous publiez, liez ou mettez à disposition un contenu sur le Service, vous nous accordez le droit et la licence d'afficher et de distribuer votre contenu sur ou via le Service (y compris via des applications). Nous pouvons formater votre contenu pour l'afficher dans le Service, mais nous ne modifierons pas ou ne réviserons pas la substance de votre contenu lui-même. L'affichage et la distribution de votre contenu se fait strictement selon les règles de visibilité que vous avez définies pour le contenu. Nous ne modifierons pas la visibilité du contenu que vous avez défini." -#, 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 "Vos événements et commentaires sont transmis aux instances qui suivent la vôtre, ce qui signifie que d'autres instances posséderont des copies de ces contenus. Lorsque vous supprimez un événement ou un commentaire, ceci est transmis de la même façon aux autres instances. Toutes les interactions liées aux fonctionnalités des événements - comme rejoindre un événement - ou bien aux fonctionnalités de groupes - comme gérer ses ressources - sont également fédérées. Veuillez noter que les administrateur·ices de cette instance et de toutes les instances fédérées peuvent voir ces messages, et que les destinataires peuvent les copier, en faire des captures d'écran et les repartager de différentes façons." -#, 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 "Votre contenu peut être téléchargé par d'autres instances du réseau. Vos événements publics et commentaires sont transmis aux instances abonnées à votre instance. Le contenu créé à travers un groupe est transmis à toutes les instances de tous les membres du groupe, si celleux-ci sont inscrit·e·s sur une autre instance que la vôtre." -#, 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 "Vous avez confirmé votre participation. Mettez à jour votre agenda, car vous êtes maintenant sur la liste des invités !" -#, elixir-format -#: lib/web/templates/email/event_participation_approved.html.heex:38 -#: lib/web/templates/email/event_participation_confirmed.html.heex:38 +#: lib/web/templates/email/event_participation_approved.html.heex:38 lib/web/templates/email/event_participation_confirmed.html.heex:38 msgid "You recently requested to attend %{title}." msgstr "Vous avez demandé à participer à l'événement %{title}." -#, elixir-format #: lib/web/email/participation.ex:88 msgid "Your participation to event %{title} has been confirmed" msgstr "Votre participation à l'événement %{title} a été approuvée" -#, elixir-format #: lib/web/templates/email/report.html.heex:41 msgid "%{reporter} reported the following content." msgstr "%{reporter} a signalé le contenu suivant." -#, elixir-format #: lib/web/templates/email/report.text.eex:5 msgid "Group %{group} was reported" msgstr "Le groupe %{group} a été signalé" -#, elixir-format #: lib/web/templates/email/report.html.heex:51 msgid "Group reported" msgstr "Groupe signalé" -#, elixir-format #: lib/web/templates/email/report.text.eex:7 msgid "Profile %{profile} was reported" msgstr "Le profil %{profile} a été signalé" -#, elixir-format #: lib/web/templates/email/report.html.heex:56 msgid "Profile reported" msgstr "Profil signalé" -#, 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 "Vous avez maintenant confirmé votre participation. Mettez à jour votre agenda, car vous êtes maintenant sur la liste des invités !" -#, elixir-format #: lib/mobilizon/posts/post.ex:99 msgid "A text is required for the post" msgstr "Un texte est requis pour le billet" -#, elixir-format #: lib/mobilizon/posts/post.ex:98 msgid "A title is required for the post" msgstr "Un titre est requis pour le billet" -#, elixir-format #: lib/web/templates/email/instance_follow.text.eex:3 msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "%{name} (%{domain}) vient de demander à suivre votre instance." -#, elixir-format #: lib/web/email/follow.ex:54 msgid "%{name} requests to follow your instance" msgstr "%{name} demande à suivre votre instance" -#, 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}) vient de demander à suivre votre instance. Si vous acceptez, leur instance recevra tous les événements publics de votre instance." -#, 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 vous acceptez, leur instance recevra tous les événements publics de votre instance." -#, elixir-format #: lib/web/email/follow.ex:48 msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "L'instance %{name} (%{domain}) demande à suivre votre instance" -#, elixir-format #: lib/web/templates/email/instance_follow.html.heex:66 msgid "See the federation settings" msgstr "Voir les paramètres de fédération" -#, elixir-format -#: lib/web/templates/email/instance_follow.html.heex:52 -#: lib/web/templates/email/instance_follow.text.eex:6 +#: lib/web/templates/email/instance_follow.html.heex:52 lib/web/templates/email/instance_follow.text.eex:6 msgid "To accept this invitation, head over to the instance's admin settings." msgstr "Pour accepter cette invitation, rendez-vous dans vos groupes." -#, elixir-format -#: lib/web/templates/email/instance_follow.html.heex:13 -#: lib/web/templates/email/instance_follow.text.eex:1 +#: lib/web/templates/email/instance_follow.html.heex:13 lib/web/templates/email/instance_follow.text.eex:1 msgid "Want to connect?" msgstr "Voulez-vous vous connecter ?" -#, elixir-format -#: lib/web/templates/email/instance_follow.html.heex:45 -#: lib/web/templates/email/instance_follow.text.eex:5 +#: lib/web/templates/email/instance_follow.html.heex:45 lib/web/templates/email/instance_follow.text.eex:5 msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "Note : le fait que %{name} (%{domain}) vous suive n'implique pas nécessairement que vous suivez cette instance, mais vous pouvez demander à les suivre également." -#, 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 "Salut ! Vous venez de vous enregistrer pour rejoindre cet événement : « %{title} ». Merci de confirmer l'adresse email que vous avez fournie :" -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.heex:38 msgid "You issued a request to attend %{title}." msgstr "Vous avez effectué une demande de participation à %{title}." -#, elixir-format #: lib/web/templates/email/event_updated.html.heex:64 msgid "Event title" msgstr "Titre de l'événement" -#, 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 "Il y a eu des changements pour %{title} donc nous avons pensé que nous vous le ferions savoir." -#, elixir-format #: lib/web/templates/error/500_page.html.heex:7 msgid "This page is not correct" msgstr "Cette page n’est pas correcte" -#, elixir-format #: lib/web/templates/error/500_page.html.heex:50 msgid "We're sorry, but something went wrong on our end." msgstr "Nous sommes désolé·e·s, mais quelque chose s’est mal passé de notre côté." -#, elixir-format -#: lib/web/templates/email/email.html.heex:89 -#: lib/web/templates/email/email.text.eex:4 +#: lib/web/templates/email/email.html.heex:89 lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Ceci est un site de démonstration permettant de tester Mobilizon." -#, elixir-format -#: lib/service/metadata/actor.ex:67 lib/service/metadata/actor.ex:75 -#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60 +#: lib/service/metadata/actor.ex:67 lib/service/metadata/actor.ex:75 lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60 msgid "%{name}'s feed" msgstr "Flux de %{name}" -#, elixir-format #: lib/service/export/feed.ex:115 msgid "%{actor}'s private events feed on %{instance}" msgstr "Flux privé des événements de %{actor} sur %{instance}" -#, elixir-format #: lib/service/export/feed.ex:110 msgid "%{actor}'s public events feed on %{instance}" msgstr "Flux public des événements de %{actor} sur %{instance}" -#, elixir-format #: lib/service/export/feed.ex:219 msgid "Feed for %{email} on %{instance}" msgstr "Flux pour %{email} sur %{instance}" -#, 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 le problème persiste, vous pouvez contacter l'administrateur⋅ice du serveur à %{contact}." -#, 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 le problème persiste, vous pouvez essayer de contacter l'administrateur⋅ice du serveur." -#, elixir-format #: lib/web/templates/error/500_page.html.heex:68 msgid "Technical details" msgstr "Détails techniques" -#, elixir-format #: lib/web/templates/error/500_page.html.heex:52 msgid "The Mobilizon server %{instance} seems to be temporarily down." msgstr "Le serveur Mobilizon %{instance} semble être temporairement hors-service." -#, elixir-format #: lib/service/export/feed.ex:67 msgid "Public feed for %{instance}" msgstr "Flux public pour %{instance}" -#, 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 "Le mot de passe que vous avez choisi est trop court. Assurez-vous que votre mot de passe contienne au moins 6 caractères." -#, 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 "Le jeton que vous avez fourni est invalide. Assurez-vous que l'URL est exactement la même que celle contenue dans le message que vous avez reçu." -#, elixir-format #: lib/web/email/actor.ex:44 msgid "Your participation to %{event} has been cancelled!" msgstr "Votre participation à l'événement %{title} a été annulée !" -#, elixir-format -#: lib/web/templates/email/actor_suspension_participants.html.heex:38 -#: lib/web/templates/email/actor_suspension_participants.text.eex:3 +#: lib/web/templates/email/actor_suspension_participants.html.heex:38 lib/web/templates/email/actor_suspension_participants.text.eex:3 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 "L'équipe de modération de votre instance a décidé de suspendre %{actor_name} (%{actor_address}). Tous leurs événements ont été supprimés et votre participation à %{event} annulée." -#, 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 "L'équipe de modération de votre instance a décidé de suspendre %{group_name} (%{group_address}). Vous n'êtes désormais plus membre de ce groupe." -#, elixir-format -#: lib/web/templates/email/actor_suspension_participants.html.heex:13 -#: lib/web/templates/email/actor_suspension_participants.text.eex:1 +#: lib/web/templates/email/actor_suspension_participants.html.heex:13 lib/web/templates/email/actor_suspension_participants.text.eex:1 msgid "Your participation to %{event} on %{instance} has been cancelled!" msgstr "Votre participation à l'événement %{event} sur %{instance} a été annulée !" #. 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:79 lib/service/export/participants/pdf.ex:93 +#: lib/service/export/participants/csv.ex:73 lib/service/export/participants/ods.ex:79 lib/service/export/participants/pdf.ex:93 msgid "%{event}_participants" msgstr "%{event}_participants" -#, elixir-format #: lib/service/export/participants/common.ex:61 msgid "Participant message" msgstr "Message du participant" -#, elixir-format #: lib/service/export/participants/common.ex:61 msgid "Participant name" msgstr "Nom du participant" -#, elixir-format #: lib/service/export/participants/common.ex:61 msgid "Participant status" msgstr "Statut du participant" -#, elixir-format #: lib/service/export/participants/common.ex:52 msgid "Administrator" msgstr "Administrateur⋅ice" -#, elixir-format #: lib/service/export/participants/common.ex:55 msgid "Creator" msgstr "Créateur⋅ice" -#, elixir-format #: lib/service/export/participants/common.ex:49 msgid "Moderator" msgstr "Modérateur⋅ice" -#, elixir-format #: lib/service/export/participants/common.ex:37 msgid "Not approved" msgstr "Non approuvé⋅e" -#, elixir-format #: lib/service/export/participants/common.ex:40 msgid "Not confirmed" msgstr "Non confirmé⋅e" -#, elixir-format #: lib/service/export/participants/common.ex:46 msgid "Participant" msgstr "Participant⋅e" -#, elixir-format #: lib/service/export/participants/common.ex:43 msgid "Rejected" msgstr "Rejeté⋅e" -#, elixir-format #: lib/web/templates/export/event_participants.html.heex:122 msgid "Begins on" msgstr "Débute le" -#, elixir-format #: lib/web/templates/export/event_participants.html.heex:125 msgid "Ends on" msgstr "Finit le" -#, elixir-format #: lib/web/templates/export/event_participants.html.heex:132 msgid "Number of participants" msgstr "Nombre de participant⋅es" -#, elixir-format #: lib/web/templates/export/event_participants.html.heex:120 msgid "Participants for %{event}" msgstr "Participant⋅es pour %{event}" -#, elixir-format #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "Participant⋅e anonyme" + +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "Dans votre fuseau horaire (%{timezone} %{offset})" + +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "Début %{begins_on} (votre fuseau horaire)" + +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "Début %{begins_on} (🌐 %{timezone} %{offset})" + +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "🌐 %{timezone} %{offset}" diff --git a/priv/gettext/fr/LC_MESSAGES/errors.po b/priv/gettext/fr/LC_MESSAGES/errors.po index af13885fb..5484e2e83 100644 --- a/priv/gettext/fr/LC_MESSAGES/errors.po +++ b/priv/gettext/fr/LC_MESSAGES/errors.po @@ -96,701 +96,879 @@ 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:592 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/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/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 +#, 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 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:407 msgid "The current password is invalid" msgstr "Le mot de passe actuel est invalid" +#, elixir-format #: lib/graphql/resolvers/user.ex:450 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:453 msgid "The new email must be different" msgstr "La nouvelle adresse e-mail doit être différente" +#, elixir-format #: lib/graphql/resolvers/user.ex:410 msgid "The new password must be different" msgstr "Le nouveau mot de passe doit être différent" -#: lib/graphql/resolvers/user.ex:457 lib/graphql/resolvers/user.ex:519 lib/graphql/resolvers/user.ex:522 +#, elixir-format +#: lib/graphql/resolvers/user.ex:457 lib/graphql/resolvers/user.ex:519 +#: lib/graphql/resolvers/user.ex:522 msgid "The password provided is invalid" msgstr "Le mot de passe fourni est invalide" +#, elixir-format #: lib/graphql/resolvers/user.ex:414 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:500 msgid "User already disabled" msgstr "L'utilisateur·ice est déjà désactivé·e" +#, elixir-format #: lib/graphql/resolvers/user.ex:567 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:465 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:422 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:527 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:75 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:355 lib/graphql/resolvers/event.ex:407 +#, elixir-format +#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:355 +#: lib/graphql/resolvers/event.ex:407 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:225 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:415 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" +#, elixir-format #: lib/graphql/resolvers/member.ex:155 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:159 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:403 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:246 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:230 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:272 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:90 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:313 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:412 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:369 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:358 msgid "You can't edit this event." msgstr "Vous ne pouvez pas éditer cet événement." +#, elixir-format #: lib/graphql/resolvers/event.ex:361 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:185 msgid "This member already has been rejected." msgstr "Ce·tte membre a déjà été rejetté·e." +#, elixir-format #: lib/graphql/resolvers/member.ex:192 msgid "You don't have the right to remove this member." msgstr "Vous n'avez pas les droits pour supprimer ce·tte membre." +#, elixir-format #: lib/mobilizon/actors/actor.ex:349 msgid "This username is already taken." msgstr "Cet identifiant est déjà pris." +#, elixir-format #: lib/graphql/resolvers/discussion.ex:87 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:308 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:483 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:173 lib/graphql/resolvers/participant.ex:253 lib/graphql/resolvers/participant.ex:328 +#, elixir-format +#: lib/graphql/resolvers/event.ex:173 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:294 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:349 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:129 msgid "Error while creating a discussion" msgstr "Erreur lors de la création de la discussion" +#, elixir-format #: lib/graphql/resolvers/user.ex:606 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:447 msgid "Failed to update user email" msgstr "Impossible de mettre à jour l'adresse e-mail de utilisateur" +#, elixir-format #: lib/graphql/resolvers/user.ex:479 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:404 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:301 msgid "Only groups can create events" msgstr "Seuls les groupes peuvent créer des événements" +#, elixir-format #: lib/graphql/resolvers/event.ex:287 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:460 msgid "User cannot change email" msgstr "L'utilisateur ne peut changer son adresse e-mail" diff --git a/priv/gettext/gl/LC_MESSAGES/default.po b/priv/gettext/gl/LC_MESSAGES/default.po index 30b68e112..9e36eea36 100644 --- a/priv/gettext/gl/LC_MESSAGES/default.po +++ b/priv/gettext/gl/LC_MESSAGES/default.po @@ -916,8 +916,8 @@ msgstr "Por favor, non o utilices nun entorno de produción." #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -968,12 +968,12 @@ msgid "Confirm new email" msgstr "Confirma o novo email" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "Fin" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "Remata o %{ends_on}" @@ -1051,13 +1051,13 @@ msgid "Learn more about Mobilizon here!" msgstr "Coñece máis acerca de Mobilizon!" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "Localización" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "Eliminouse o enderezo da localización" @@ -1103,7 +1103,7 @@ msgid "Start" msgstr "Inicio" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "Comeza en %{begins_on}" @@ -1160,12 +1160,12 @@ msgid "Visit event page" msgstr "Visitar páxina do evento" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "Visita a páxina do evento actualizada" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "Visita a páxina do evento actualizada: %{link}" @@ -1804,3 +1804,23 @@ msgstr "Participación aprobada" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "Comeza en %{begins_on}" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "Comeza en %{begins_on}" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/gl/LC_MESSAGES/errors.po b/priv/gettext/gl/LC_MESSAGES/errors.po index b86ed9bfd..96acc3010 100644 --- a/priv/gettext/gl/LC_MESSAGES/errors.po +++ b/priv/gettext/gl/LC_MESSAGES/errors.po @@ -977,7 +977,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "" diff --git a/priv/gettext/hu/LC_MESSAGES/default.po b/priv/gettext/hu/LC_MESSAGES/default.po index 5be9b17a9..77853da2c 100644 --- a/priv/gettext/hu/LC_MESSAGES/default.po +++ b/priv/gettext/hu/LC_MESSAGES/default.po @@ -803,8 +803,8 @@ msgstr "" #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -849,12 +849,12 @@ msgid "Confirm new email" msgstr "Új e-mail-cím megerősítése" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "Befejezés" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "Befejezés: %{ends_on}" @@ -916,13 +916,13 @@ msgid "Learn more about Mobilizon here!" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "Hely" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "A hely eltávolításra került" @@ -968,7 +968,7 @@ msgid "Start" msgstr "Kezdés" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "Kezdés: %{begins_on}" @@ -1023,12 +1023,12 @@ msgid "Visit event page" msgstr "Eseményoldal felkeresése" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "A frissített eseményoldal felkeresése" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "A frissített eseményoldal felkeresése: %{link}" @@ -1555,3 +1555,23 @@ msgstr "Részvétel jóváhagyva" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "Kezdés: %{begins_on}" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "Kezdés: %{begins_on}" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/hu/LC_MESSAGES/errors.po b/priv/gettext/hu/LC_MESSAGES/errors.po index 2ee8fe089..0627a84c4 100644 --- a/priv/gettext/hu/LC_MESSAGES/errors.po +++ b/priv/gettext/hu/LC_MESSAGES/errors.po @@ -997,7 +997,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "" diff --git a/priv/gettext/id/LC_MESSAGES/default.po b/priv/gettext/id/LC_MESSAGES/default.po index 03f6055f1..bf3790389 100644 --- a/priv/gettext/id/LC_MESSAGES/default.po +++ b/priv/gettext/id/LC_MESSAGES/default.po @@ -785,8 +785,8 @@ msgstr "" #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -829,12 +829,12 @@ msgid "Confirm new email" msgstr "Konfirmasi surel baru" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "" @@ -896,13 +896,13 @@ msgid "Learn more about Mobilizon here!" msgstr "Pelajari lebih lanjut tentang Mobilizon di sini!" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "Lokasi" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "" @@ -946,7 +946,7 @@ msgid "Start" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "" @@ -1003,12 +1003,12 @@ msgid "Visit event page" msgstr "Kunjungi halaman acara" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "Kunjungi halaman acara yang sudah diperbarui" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "Kunjungi halaman acara yang sudah diperbarui: %{link}" @@ -1538,3 +1538,23 @@ msgstr "" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/id/LC_MESSAGES/errors.po b/priv/gettext/id/LC_MESSAGES/errors.po index cbcf9c022..b98e6d163 100644 --- a/priv/gettext/id/LC_MESSAGES/errors.po +++ b/priv/gettext/id/LC_MESSAGES/errors.po @@ -951,7 +951,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "" diff --git a/priv/gettext/it/LC_MESSAGES/default.po b/priv/gettext/it/LC_MESSAGES/default.po index 9524ae7de..7073e8089 100644 --- a/priv/gettext/it/LC_MESSAGES/default.po +++ b/priv/gettext/it/LC_MESSAGES/default.po @@ -940,8 +940,8 @@ msgstr "Si prega di non usarlo per scopi reali." #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -993,12 +993,12 @@ msgid "Confirm new email" msgstr "Conferma il nuovo indirizzo e-mail" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "Fine" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "Fine %{ends_on}" @@ -1077,13 +1077,13 @@ msgid "Learn more about Mobilizon here!" msgstr "Scopri di più su Mobilizon qui!" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "Posizione" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "L'indirizzo del luogo è stato rimosso" @@ -1129,7 +1129,7 @@ msgid "Start" msgstr "Inizio" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "Inizio %{begins_on}" @@ -1189,12 +1189,12 @@ msgid "Visit event page" msgstr "Visualizza la pagina dell'evento" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "Visita la pagina dell'evento aggiornata" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "Visita la pagina dell'evento aggiornata:% {link}" @@ -1845,3 +1845,23 @@ msgstr "Partecipazione approvata" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "Inizio %{begins_on}" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "Inizio %{begins_on}" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/it/LC_MESSAGES/errors.po b/priv/gettext/it/LC_MESSAGES/errors.po index 5bbdcf3b1..a14b905c2 100644 --- a/priv/gettext/it/LC_MESSAGES/errors.po +++ b/priv/gettext/it/LC_MESSAGES/errors.po @@ -974,7 +974,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "" diff --git a/priv/gettext/ja/LC_MESSAGES/default.po b/priv/gettext/ja/LC_MESSAGES/default.po index b4ebd5fd6..309bb4026 100644 --- a/priv/gettext/ja/LC_MESSAGES/default.po +++ b/priv/gettext/ja/LC_MESSAGES/default.po @@ -750,8 +750,8 @@ msgstr "" #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -794,12 +794,12 @@ msgid "Confirm new email" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "" @@ -861,13 +861,13 @@ msgid "Learn more about Mobilizon here!" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "" @@ -911,7 +911,7 @@ msgid "Start" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "" @@ -966,12 +966,12 @@ msgid "Visit event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "" @@ -1498,3 +1498,23 @@ msgstr "" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/ja/LC_MESSAGES/errors.po b/priv/gettext/ja/LC_MESSAGES/errors.po index b9cf02a37..e88f1dd2b 100644 --- a/priv/gettext/ja/LC_MESSAGES/errors.po +++ b/priv/gettext/ja/LC_MESSAGES/errors.po @@ -944,7 +944,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "" diff --git a/priv/gettext/nl/LC_MESSAGES/default.po b/priv/gettext/nl/LC_MESSAGES/default.po index 2990323e9..df7770525 100644 --- a/priv/gettext/nl/LC_MESSAGES/default.po +++ b/priv/gettext/nl/LC_MESSAGES/default.po @@ -766,8 +766,8 @@ msgstr "" #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -816,12 +816,12 @@ msgid "Confirm new email" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "" @@ -885,13 +885,13 @@ msgid "Learn more about Mobilizon here!" msgstr "Leer meer over Mobilizon." #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "" @@ -935,7 +935,7 @@ msgid "Start" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "" @@ -990,12 +990,12 @@ msgid "Visit event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "Bekijk het bijgewerkte evenement op: %{link}" @@ -1523,3 +1523,23 @@ msgstr "Deelname goedgekeurd" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/nl/LC_MESSAGES/errors.po b/priv/gettext/nl/LC_MESSAGES/errors.po index 1dbb070c8..fcca90372 100644 --- a/priv/gettext/nl/LC_MESSAGES/errors.po +++ b/priv/gettext/nl/LC_MESSAGES/errors.po @@ -950,7 +950,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "" diff --git a/priv/gettext/nn/LC_MESSAGES/default.po b/priv/gettext/nn/LC_MESSAGES/default.po index f952f8e0c..04ddd2b07 100644 --- a/priv/gettext/nn/LC_MESSAGES/default.po +++ b/priv/gettext/nn/LC_MESSAGES/default.po @@ -911,8 +911,8 @@ msgstr "Ikkje bruk han på ordentleg." #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -963,12 +963,12 @@ msgid "Confirm new email" msgstr "Stadfest ny epostadresse" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "Slutt" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "Slutt %{ends_on}" @@ -1046,13 +1046,13 @@ msgid "Learn more about Mobilizon here!" msgstr "Lær meir om Mobilizon her!" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "Stad" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "Adressa vart fjerna" @@ -1097,7 +1097,7 @@ msgid "Start" msgstr "Start" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "Startar %{begins_on}" @@ -1154,12 +1154,12 @@ msgid "Visit event page" msgstr "Sjå på hendingssida" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "Sjå på den oppdaterte hendingssida" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "Sjå på den oppdaterte hendingssida: %{link}" @@ -1803,3 +1803,23 @@ msgstr "Deltakinga er godkjend" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "Anonym deltakar" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "Startar %{begins_on}" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "Startar %{begins_on}" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/nn/LC_MESSAGES/errors.po b/priv/gettext/nn/LC_MESSAGES/errors.po index 52454a67d..c34de9466 100644 --- a/priv/gettext/nn/LC_MESSAGES/errors.po +++ b/priv/gettext/nn/LC_MESSAGES/errors.po @@ -994,7 +994,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "Det var ein ukjend feil då ressursen vart oppdatert" diff --git a/priv/gettext/oc/LC_MESSAGES/default.po b/priv/gettext/oc/LC_MESSAGES/default.po index 607b095c7..795fe4319 100644 --- a/priv/gettext/oc/LC_MESSAGES/default.po +++ b/priv/gettext/oc/LC_MESSAGES/default.po @@ -836,8 +836,8 @@ msgstr "Mercés de l’utilizar pas d’un biais 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -888,12 +888,12 @@ msgid "Confirm new email" msgstr "Confirmatz vòstra adreça electronica" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "Fin" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "Fin %{ends_on}" @@ -958,13 +958,13 @@ msgid "Learn more about Mobilizon here!" msgstr "Ne saber mai tocant Mobilizon." #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "Localizacion" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "L’adreça fisica es estada levada" @@ -1008,7 +1008,7 @@ msgid "Start" msgstr "Debuta" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "Debuta %{begins_on}" @@ -1066,12 +1066,12 @@ msgid "Visit event page" msgstr "Veire la pagina de l'eveniment" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "Veire la pagina de l'eveniment mes a jorn" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "Veire l’eveniment actualizat sus : %{link}" @@ -1608,3 +1608,23 @@ msgstr "Participacion aprovada" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "Debuta %{begins_on}" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "Debuta %{begins_on}" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/oc/LC_MESSAGES/errors.po b/priv/gettext/oc/LC_MESSAGES/errors.po index 5f8da1151..b96fad1ea 100644 --- a/priv/gettext/oc/LC_MESSAGES/errors.po +++ b/priv/gettext/oc/LC_MESSAGES/errors.po @@ -962,7 +962,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "" diff --git a/priv/gettext/pl/LC_MESSAGES/default.po b/priv/gettext/pl/LC_MESSAGES/default.po index 453673cda..aea9d58ff 100644 --- a/priv/gettext/pl/LC_MESSAGES/default.po +++ b/priv/gettext/pl/LC_MESSAGES/default.po @@ -829,8 +829,8 @@ msgstr "Nie używaj go do żadnych rzeczywistych celów" #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -887,12 +887,12 @@ msgid "Confirm new email" msgstr "Potwierdź nowy e-mail" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "Koniec" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "Koniec %{ends_on}" @@ -969,13 +969,13 @@ msgid "Learn more about Mobilizon here!" msgstr "Dowiedz się więcej o Mobilizon." #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "Miejsce" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "" @@ -1019,7 +1019,7 @@ msgid "Start" msgstr "Początek" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "Początek %{begins_on}" @@ -1076,12 +1076,12 @@ msgid "Visit event page" msgstr "Odwiedź stronę wydarzenia" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "Odwiedź zaktualizowaną stronę wydarzenia" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "Zobacz zaktualizowane wydarzenie na %{link}" @@ -1622,3 +1622,23 @@ msgstr "Uczestnictwo przyjęte" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "Początek %{begins_on}" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "Początek %{begins_on}" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/pl/LC_MESSAGES/errors.po b/priv/gettext/pl/LC_MESSAGES/errors.po index 050896668..3e63dd10c 100644 --- a/priv/gettext/pl/LC_MESSAGES/errors.po +++ b/priv/gettext/pl/LC_MESSAGES/errors.po @@ -979,7 +979,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "" diff --git a/priv/gettext/pt/LC_MESSAGES/default.po b/priv/gettext/pt/LC_MESSAGES/default.po index 6ba33b2c4..18df89688 100644 --- a/priv/gettext/pt/LC_MESSAGES/default.po +++ b/priv/gettext/pt/LC_MESSAGES/default.po @@ -753,8 +753,8 @@ msgstr "" #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -799,12 +799,12 @@ msgid "Confirm new email" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "" @@ -866,13 +866,13 @@ msgid "Learn more about Mobilizon here!" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "" @@ -916,7 +916,7 @@ msgid "Start" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "" @@ -971,12 +971,12 @@ msgid "Visit event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "" @@ -1503,3 +1503,23 @@ msgstr "" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/pt/LC_MESSAGES/errors.po b/priv/gettext/pt/LC_MESSAGES/errors.po index 8c0d7db6e..a2510dafe 100644 --- a/priv/gettext/pt/LC_MESSAGES/errors.po +++ b/priv/gettext/pt/LC_MESSAGES/errors.po @@ -950,7 +950,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "" diff --git a/priv/gettext/pt_BR/LC_MESSAGES/default.po b/priv/gettext/pt_BR/LC_MESSAGES/default.po index b844b59d1..0751aa926 100644 --- a/priv/gettext/pt_BR/LC_MESSAGES/default.po +++ b/priv/gettext/pt_BR/LC_MESSAGES/default.po @@ -824,8 +824,8 @@ msgstr "Por favor não utilize este serviço em nenhum caso 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -874,12 +874,12 @@ msgid "Confirm new email" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "" @@ -943,13 +943,13 @@ msgid "Learn more about Mobilizon here!" msgstr "Aprenda mais sobre Mobilizon." #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "" @@ -993,7 +993,7 @@ msgid "Start" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "" @@ -1048,12 +1048,12 @@ msgid "Visit event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "Veja o evento atualizado em: %{link}" @@ -1615,3 +1615,23 @@ msgstr "Participação aprovada" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/pt_BR/LC_MESSAGES/errors.po b/priv/gettext/pt_BR/LC_MESSAGES/errors.po index 990efd01d..1696f565b 100644 --- a/priv/gettext/pt_BR/LC_MESSAGES/errors.po +++ b/priv/gettext/pt_BR/LC_MESSAGES/errors.po @@ -950,7 +950,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "" diff --git a/priv/gettext/ru/LC_MESSAGES/default.po b/priv/gettext/ru/LC_MESSAGES/default.po index 6530c8d38..7220756da 100644 --- a/priv/gettext/ru/LC_MESSAGES/default.po +++ b/priv/gettext/ru/LC_MESSAGES/default.po @@ -937,8 +937,8 @@ msgstr "Пожалуйста, используйте это только для #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -997,12 +997,12 @@ msgid "Confirm new email" msgstr "Подтвердите новый адрес электронной почты" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "Конец" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "Конец %{ends_on}" @@ -1081,13 +1081,13 @@ msgid "Learn more about Mobilizon here!" msgstr "Узнайте больше о Mobilizon!" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "Местонахождение" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "Адрес местоположения был удален" @@ -1131,7 +1131,7 @@ msgid "Start" msgstr "Начало" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "Начало %{begins_on}" @@ -1188,12 +1188,12 @@ msgid "Visit event page" msgstr "Посетите страницу мероприятия" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "Посетите обновленную страницу мероприятия" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "Посетите обновленную страницу мероприятия: %{link}" @@ -1848,3 +1848,23 @@ msgstr "" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "Начало %{begins_on}" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "Начало %{begins_on}" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/ru/LC_MESSAGES/errors.po b/priv/gettext/ru/LC_MESSAGES/errors.po index 439eb4a39..7de65ae41 100644 --- a/priv/gettext/ru/LC_MESSAGES/errors.po +++ b/priv/gettext/ru/LC_MESSAGES/errors.po @@ -1005,7 +1005,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "Неизвестная ошибка при обновлении ресурса" diff --git a/priv/gettext/sv/LC_MESSAGES/default.po b/priv/gettext/sv/LC_MESSAGES/default.po index 5a9942a9d..15c2e5519 100644 --- a/priv/gettext/sv/LC_MESSAGES/default.po +++ b/priv/gettext/sv/LC_MESSAGES/default.po @@ -771,8 +771,8 @@ msgstr "" #, 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:24 lib/web/templates/email/notification_each_week.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:147 +#: lib/web/templates/email/event_updated.text.eex:29 lib/web/templates/email/notification_each_week.html.heex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -821,12 +821,12 @@ msgid "Confirm new email" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:84 +#: lib/web/templates/email/event_updated.html.heex:98 msgid "End" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:21 +#: lib/web/templates/email/event_updated.text.eex:26 msgid "End %{ends_on}" msgstr "" @@ -891,13 +891,13 @@ msgid "Learn more about Mobilizon here!" msgstr "Läs mer om Mobilizon här!" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/email/event_updated.html.heex:108 #: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:104 +#: lib/web/templates/email/event_updated.html.heex:118 msgid "Location address was removed" msgstr "" @@ -941,7 +941,7 @@ msgid "Start" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:18 +#: lib/web/templates/email/event_updated.text.eex:22 msgid "Start %{begins_on}" msgstr "" @@ -996,12 +996,12 @@ msgid "Visit event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.html.heex:121 +#: lib/web/templates/email/event_updated.html.heex:135 msgid "Visit the updated event page" msgstr "" #, elixir-format -#: lib/web/templates/email/event_updated.text.eex:23 +#: lib/web/templates/email/event_updated.text.eex:28 msgid "Visit the updated event page: %{link}" msgstr "Visa det uppdaterade evenemanget på %{link}" @@ -1531,3 +1531,23 @@ msgstr "Ditt deltagande har godkänts" #: lib/service/export/participants/common.ex:88 msgid "Anonymous participant" msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:88 +msgid "In your timezone (%{timezone} %{offset})" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:20 +msgid "Start %{begins_on} (your timezone)" +msgstr "" + +#, elixir-format, fuzzy +#: lib/web/templates/email/event_updated.text.eex:18 +msgid "Start %{begins_on} (🌐 %{timezone} %{offset})" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "🌐 %{timezone} %{offset}" +msgstr "" diff --git a/priv/gettext/sv/LC_MESSAGES/errors.po b/priv/gettext/sv/LC_MESSAGES/errors.po index 8b108a3e0..1d4cb7b94 100644 --- a/priv/gettext/sv/LC_MESSAGES/errors.po +++ b/priv/gettext/sv/LC_MESSAGES/errors.po @@ -957,7 +957,7 @@ msgstr "" msgid "Only groups can create events" msgstr "" -#, elixir-format, fuzzy +#, elixir-format #: lib/graphql/resolvers/event.ex:287 msgid "Unknown error while creating event" msgstr "" From 44f90c7b0b23e9e42b8fc66e8c814ff56447bd69 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 13 Oct 2021 12:52:57 +0200 Subject: [PATCH 04/22] Fix focustarget in some cases Signed-off-by: Thomas Citharel --- js/src/App.vue | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/js/src/App.vue b/js/src/App.vue index bcda04912..237ab57d9 100644 --- a/js/src/App.vue +++ b/js/src/App.vue @@ -216,16 +216,18 @@ export default class App extends Vue { // Set the focus to the router view // https://marcus.io/blog/accessible-routing-vuejs setTimeout(() => { - const focusTarget = this.routerView.$el as HTMLElement; - // Make focustarget programmatically focussable - focusTarget.setAttribute("tabindex", "-1"); + const focusTarget = this.routerView?.$el as HTMLElement; + if (focusTarget) { + // Make focustarget programmatically focussable + focusTarget.setAttribute("tabindex", "-1"); - // Focus element - focusTarget.focus(); + // Focus element + focusTarget.focus(); - // Remove tabindex from focustarget. - // Reason: https://axesslab.com/skip-links/#update-3-a-comment-from-gov-uk - focusTarget.removeAttribute("tabindex"); + // Remove tabindex from focustarget. + // Reason: https://axesslab.com/skip-links/#update-3-a-comment-from-gov-uk + focusTarget.removeAttribute("tabindex"); + } }, 0); } From 4de78f58e01191ad758385e25c393d06eb1c0619 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 13 Oct 2021 12:55:49 +0200 Subject: [PATCH 05/22] Allow anonymous participants to have timezone metadata Signed-off-by: Thomas Citharel --- .../ParticipationWithoutAccount.vue | 1 + js/src/graphql/event.ts | 2 ++ lib/graphql/schema/events/participant.ex | 1 + lib/mobilizon/events/participant_metadata.ex | 3 +- lib/web/email/event.ex | 29 ++++++++++++++----- lib/web/email/participation.ex | 9 ++++-- test/graphql/resolvers/event_test.exs | 6 ++-- 7 files changed, 38 insertions(+), 13 deletions(-) diff --git a/js/src/components/Participation/ParticipationWithoutAccount.vue b/js/src/components/Participation/ParticipationWithoutAccount.vue index 3337c51e0..ae26b2e65 100644 --- a/js/src/components/Participation/ParticipationWithoutAccount.vue +++ b/js/src/components/Participation/ParticipationWithoutAccount.vue @@ -200,6 +200,7 @@ export default class ParticipationWithoutAccount extends Vue { email: this.anonymousParticipation.email, message: this.anonymousParticipation.message, locale: this.$i18n.locale, + timezone: Intl.DateTimeFormat().resolvedOptions().timeZone, }, update: ( store: ApolloCache<{ joinEvent: IParticipant }>, diff --git a/js/src/graphql/event.ts b/js/src/graphql/event.ts index 4e9a8baba..8be02ff0c 100644 --- a/js/src/graphql/event.ts +++ b/js/src/graphql/event.ts @@ -380,6 +380,7 @@ export const JOIN_EVENT = gql` $email: String $message: String $locale: String + $timezone: String ) { joinEvent( eventId: $eventId @@ -387,6 +388,7 @@ export const JOIN_EVENT = gql` email: $email message: $message locale: $locale + timezone: $timezone ) { ...ParticipantQuery } diff --git a/lib/graphql/schema/events/participant.ex b/lib/graphql/schema/events/participant.ex index 34093014e..d34d1c64a 100644 --- a/lib/graphql/schema/events/participant.ex +++ b/lib/graphql/schema/events/participant.ex @@ -91,6 +91,7 @@ defmodule Mobilizon.GraphQL.Schema.Events.ParticipantType do arg(:email, :string, description: "The anonymous participant's email") arg(:message, :string, description: "The anonymous participant's message") arg(:locale, :string, description: "The anonymous participant's locale") + arg(:timezone, :string, description: "The anonymous participant's timezone") resolve(&Participant.actor_join_event/3) end diff --git a/lib/mobilizon/events/participant_metadata.ex b/lib/mobilizon/events/participant_metadata.ex index 279575f9b..8b002d095 100644 --- a/lib/mobilizon/events/participant_metadata.ex +++ b/lib/mobilizon/events/participant_metadata.ex @@ -15,7 +15,7 @@ defmodule Mobilizon.Events.Participant.Metadata do locale: String.t() } - @attrs [:email, :confirmation_token, :cancellation_token, :message, :locale] + @attrs [:email, :confirmation_token, :cancellation_token, :message, :locale, :timezone] @derive Jason.Encoder embedded_schema do @@ -24,6 +24,7 @@ defmodule Mobilizon.Events.Participant.Metadata do field(:cancellation_token, :string) field(:message, :string) field(:locale, :string) + field(:timezone, :string) end @doc false diff --git a/lib/web/email/event.ex b/lib/web/email/event.ex index 120f1d577..dd0a0b1c5 100644 --- a/lib/web/email/event.ex +++ b/lib/web/email/event.ex @@ -14,15 +14,24 @@ defmodule Mobilizon.Web.Email.Event do alias Mobilizon.Events.{Event, Participant} alias Mobilizon.Storage.Repo alias Mobilizon.Users.{Setting, User} - alias Mobilizon.Web.Email + alias Mobilizon.Web.JsonLD.ObjectView @important_changes [:title, :begins_on, :ends_on, :status, :physical_address] - @spec event_updated(String.t(), Actor.t(), Event.t(), Event.t(), MapSet.t(), String.t()) :: + @spec event_updated( + Participant.t(), + String.t(), + Actor.t(), + Event.t(), + Event.t(), + MapSet.t(), + String.t() + ) :: Bamboo.Email.t() def event_updated( email, + %Participant{} = participant, %Actor{} = actor, %Event{} = old_event, %Event{} = event, @@ -83,13 +92,14 @@ defmodule Mobilizon.Web.Email.Event do MapSet.t() ) :: Bamboo.Email.t() defp send_notification_for_event_update_to_participant( - {%Participant{} = _participant, %Actor{} = actor, + {%Participant{} = participant, %Actor{} = actor, %User{locale: locale, email: email} = _user, %Setting{timezone: timezone}}, %Event{} = old_event, %Event{} = event, diff ) do do_send_notification_for_event_update_to_participant( + participant, email, actor, old_event, @@ -101,13 +111,14 @@ defmodule Mobilizon.Web.Email.Event do end defp send_notification_for_event_update_to_participant( - {%Participant{} = _participant, %Actor{} = actor, + {%Participant{} = participant, %Actor{} = actor, %User{locale: locale, email: email} = _user, nil}, %Event{} = old_event, %Event{} = event, diff ) do do_send_notification_for_event_update_to_participant( + participant, email, actor, old_event, @@ -119,7 +130,8 @@ defmodule Mobilizon.Web.Email.Event do end defp send_notification_for_event_update_to_participant( - {%Participant{metadata: %{email: email}} = _participant, %Actor{} = actor, nil, nil}, + {%Participant{metadata: %{email: email} = participant_metadata} = participant, + %Actor{} = actor, nil, nil}, %Event{} = old_event, %Event{} = event, diff @@ -128,17 +140,19 @@ defmodule Mobilizon.Web.Email.Event do locale = Gettext.get_locale() do_send_notification_for_event_update_to_participant( + participant, email, actor, old_event, event, diff, - "Etc/UTC", + Map.get(participant_metadata, :timezone, "Etc/UTC"), locale ) end @spec do_send_notification_for_event_update_to_participant( + Participant.t(), String.t(), Actor.t(), Event.t(), @@ -148,6 +162,7 @@ defmodule Mobilizon.Web.Email.Event do String.t() ) :: Bamboo.Email.t() defp do_send_notification_for_event_update_to_participant( + participant, email, actor, old_event, @@ -157,7 +172,7 @@ defmodule Mobilizon.Web.Email.Event do locale ) do email - |> Email.Event.event_updated(actor, old_event, event, diff, timezone, locale) + |> Email.Event.event_updated(participant, actor, old_event, event, diff, timezone, locale) |> Email.Mailer.send_email_later() end end diff --git a/lib/web/email/participation.ex b/lib/web/email/participation.ex index 7fea008fb..c363c1a9e 100644 --- a/lib/web/email/participation.ex +++ b/lib/web/email/participation.ex @@ -59,7 +59,7 @@ defmodule Mobilizon.Web.Email.Participation do def participation_updated( email, - %Participant{event: event, role: :rejected}, + %Participant{event: event, role: :rejected} = participant, locale ) do Gettext.put_locale(locale) @@ -73,13 +73,15 @@ defmodule Mobilizon.Web.Email.Participation do Email.base_email(to: email, subject: subject) |> assign(:locale, locale) |> assign(:event, event) + |> assign(:jsonLDMetadata, json_ld(participant)) |> assign(:subject, subject) |> render(:event_participation_rejected) end def participation_updated( email, - %Participant{event: %Event{join_options: :free} = event, role: :participant}, + %Participant{event: %Event{join_options: :free} = event, role: :participant} = + participant, locale ) do Gettext.put_locale(locale) @@ -94,12 +96,13 @@ defmodule Mobilizon.Web.Email.Participation do |> assign(:locale, locale) |> assign(:event, event) |> assign(:subject, subject) + |> assign(:jsonLDMetadata, json_ld(participant)) |> render(:event_participation_confirmed) end def participation_updated( email, - %Participant{event: event, role: :participant}, + %Participant{event: event, role: :participant} = participant, locale ) do Gettext.put_locale(locale) diff --git a/test/graphql/resolvers/event_test.exs b/test/graphql/resolvers/event_test.exs index b426ea8ea..6ec807077 100644 --- a/test/graphql/resolvers/event_test.exs +++ b/test/graphql/resolvers/event_test.exs @@ -932,11 +932,11 @@ defmodule Mobilizon.Web.Resolvers.EventTest do test "update_event/3 updates an event", %{conn: conn, actor: actor, user: user} do event = insert(:event, organizer_actor: actor) - _creator = insert(:participant, event: event, actor: actor, role: :creator) + creator = insert(:participant, event: event, actor: actor, role: :creator) participant_user = insert(:user) participant_actor = insert(:actor, user: participant_user) - _participant = + participant = insert(:participant, event: event, actor: participant_actor, role: :participant) address = insert(:address) @@ -1009,6 +1009,7 @@ defmodule Mobilizon.Web.Resolvers.EventTest do assert_delivered_email( Email.Event.event_updated( + creator, user.email, actor, event, @@ -1019,6 +1020,7 @@ defmodule Mobilizon.Web.Resolvers.EventTest do assert_delivered_email( Email.Event.event_updated( + participant, participant_user.email, participant_actor, event, From 555ae867ea553a47df0e99157dafb7146590e02d Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 13 Oct 2021 12:57:35 +0200 Subject: [PATCH 06/22] Add code to participants Signed-off-by: Thomas Citharel --- lib/mobilizon/events/participant.ex | 27 ++++++++++++++++++- ...0211013090405_add_code_to_participants.exs | 9 +++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 priv/repo/migrations/20211013090405_add_code_to_participants.exs diff --git a/lib/mobilizon/events/participant.ex b/lib/mobilizon/events/participant.ex index a6eb24f9f..550b04609 100644 --- a/lib/mobilizon/events/participant.ex +++ b/lib/mobilizon/events/participant.ex @@ -17,6 +17,7 @@ defmodule Mobilizon.Events.Participant do @type t :: %__MODULE__{ id: String.t(), role: ParticipantRole.t(), + code: String.t(), url: String.t(), event: Event.t(), actor: Actor.t(), @@ -24,7 +25,8 @@ defmodule Mobilizon.Events.Participant do } @required_attrs [:url, :role, :event_id, :actor_id] - @attrs @required_attrs + @optional_attrs [:code] + @attrs @required_attrs ++ @optional_attrs @timestamps_opts [type: :utc_datetime] @@ -32,6 +34,7 @@ defmodule Mobilizon.Events.Participant do schema "participants" do field(:role, ParticipantRole, default: :participant) field(:url, :string) + field(:code, :string) embeds_one(:metadata, Metadata, on_replace: :delete) @@ -64,6 +67,7 @@ defmodule Mobilizon.Events.Participant do |> cast(attrs, @attrs) |> cast_embed(:metadata) |> ensure_url() + |> add_code() |> validate_required(@required_attrs) |> unique_constraint(:actor_id, name: :participants_event_id_actor_id_index) end @@ -93,4 +97,25 @@ defmodule Mobilizon.Events.Participant do @spec generate_url(String.t()) :: String.t() defp generate_url(uuid), do: "#{Endpoint.url()}/join/event/#{uuid}" + + @spec add_code(Ecto.Changeset.t()) :: Ecto.Changeset.t() + defp add_code(%Ecto.Changeset{} = changeset) do + case fetch_field(changeset, :code) do + {:data, nil} -> put_change(changeset, :code, generate_code()) + {_, _code} -> changeset + :error -> put_change(changeset, :code, generate_code()) + end + end + + # No lookalike symbols + @symbols '6789BCDFGHJKLMNPQRTW' + @symbol_count Enum.count(@symbols) + @code_length 6 + + @spec generate_code :: String.t() + defp generate_code do + for _ <- 1..@code_length, + into: "", + do: <> + end end diff --git a/priv/repo/migrations/20211013090405_add_code_to_participants.exs b/priv/repo/migrations/20211013090405_add_code_to_participants.exs new file mode 100644 index 000000000..2d6fcead4 --- /dev/null +++ b/priv/repo/migrations/20211013090405_add_code_to_participants.exs @@ -0,0 +1,9 @@ +defmodule Mobilizon.Storage.Repo.Migrations.AddCodeToParticipants do + use Ecto.Migration + + def change do + alter table(:participants) do + add(:code, :string) + end + end +end From 676fab787146c907fd9419a50926f585cec95eaf Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 13 Oct 2021 12:57:54 +0200 Subject: [PATCH 07/22] Embed json-ld metadata on events in emails Signed-off-by: Thomas Citharel --- lib/web/email/email.ex | 1 + lib/web/email/event.ex | 6 ++++ lib/web/email/participation.ex | 14 +++++++-- lib/web/templates/email/email.html.heex | 3 ++ lib/web/views/json_ld/object_view.ex | 39 ++++++++++++++++++++++++- 5 files changed, 60 insertions(+), 3 deletions(-) diff --git a/lib/web/email/email.ex b/lib/web/email/email.ex index c80bd854d..51782d06e 100644 --- a/lib/web/email/email.ex +++ b/lib/web/email/email.ex @@ -18,6 +18,7 @@ defmodule Mobilizon.Web.Email do |> put_header("Reply-To", Config.instance_email_reply_to()) |> maybe_put_date_header() |> maybe_put_message_id() + |> assign(:jsonLDMetadata, nil) |> assign(:instance_name, Config.instance_name()) |> put_html_layout({EmailView, "email.html"}) |> put_text_layout({EmailView, "email.text"}) diff --git a/lib/web/email/event.ex b/lib/web/email/event.ex index dd0a0b1c5..13a627d7c 100644 --- a/lib/web/email/event.ex +++ b/lib/web/email/event.ex @@ -47,6 +47,11 @@ defmodule Mobilizon.Web.Email.Event do title: old_event.title ) + json_ld = + "participation.json" + |> ObjectView.render(%{participant: %Participant{participant | event: event, actor: actor}}) + |> Jason.encode!() + Email.base_email(to: {Actor.display_name(actor), email}, subject: subject) |> assign(:locale, locale) |> assign(:event, event) @@ -54,6 +59,7 @@ defmodule Mobilizon.Web.Email.Event do |> assign(:changes, changes) |> assign(:subject, subject) |> assign(:timezone, timezone) + |> assign(:jsonLDMetadata, json_ld) |> Email.add_event_attachment(event) |> render(:event_updated) end diff --git a/lib/web/email/participation.ex b/lib/web/email/participation.ex index c363c1a9e..5b48205eb 100644 --- a/lib/web/email/participation.ex +++ b/lib/web/email/participation.ex @@ -8,11 +8,11 @@ defmodule Mobilizon.Web.Email.Participation do import Mobilizon.Web.Gettext alias Mobilizon.Actors.Actor - alias Mobilizon.Config + alias Mobilizon.{Config, Events, Users} alias Mobilizon.Events.{Event, Participant} - alias Mobilizon.Users alias Mobilizon.Users.User alias Mobilizon.Web.Email + alias Mobilizon.Web.JsonLD.ObjectView @doc """ Send participation emails to local user @@ -117,6 +117,7 @@ defmodule Mobilizon.Web.Email.Participation do |> assign(:locale, locale) |> assign(:event, event) |> assign(:subject, subject) + |> assign(:jsonLDMetadata, json_ld(participant)) |> Email.add_event_attachment(event) |> render(:event_participation_approved) end @@ -139,7 +140,16 @@ defmodule Mobilizon.Web.Email.Participation do Email.base_email(to: email, subject: subject) |> assign(:locale, locale) |> assign(:participant, participant) + |> assign(:jsonLDMetadata, json_ld(participant)) |> assign(:subject, subject) |> render(:anonymous_participation_confirmation) end + + defp json_ld(participant) do + event = Events.get_event_with_preload!(participant.event_id) + + "participation.json" + |> ObjectView.render(%{participant: %Participant{participant | event: event}}) + |> Jason.encode!() + end end diff --git a/lib/web/templates/email/email.html.heex b/lib/web/templates/email/email.html.heex index e7e34bf0b..e2248ca8d 100644 --- a/lib/web/templates/email/email.html.heex +++ b/lib/web/templates/email/email.html.heex @@ -41,6 +41,9 @@ /* ANDROID CENTER FIX */ div[style*="margin: 16px 0;"] { margin: 0 !important; } + <%= if @jsonLDMetadata do %> + + <% end %> diff --git a/lib/web/views/json_ld/object_view.ex b/lib/web/views/json_ld/object_view.ex index cc41e511b..f4de971fc 100644 --- a/lib/web/views/json_ld/object_view.ex +++ b/lib/web/views/json_ld/object_view.ex @@ -3,10 +3,11 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do alias Mobilizon.Actors.Actor alias Mobilizon.Addresses.Address - alias Mobilizon.Events.Event + alias Mobilizon.Events.{Event, Participant, ParticipantRole} alias Mobilizon.Posts.Post alias Mobilizon.Web.Endpoint alias Mobilizon.Web.JsonLD.ObjectView + alias Mobilizon.Web.Router.Helpers, as: Routes @spec render(String.t(), map()) :: map() def render("group.json", %{group: %Actor{} = group}) do @@ -25,6 +26,13 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do "name" => Actor.display_name(event.organizer_actor) } + organizer = + if event.organizer_actor.avatar do + Map.put(organizer, "image", event.organizer_actor.avatar.url) + else + organizer + end + json_ld = %{ "@context" => "https://schema.org", "@type" => "Event", @@ -94,6 +102,35 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do } end + def render("participation.json", %{ + participant: %Participant{} = participant + }) do + res = %{ + "@context" => "http://schema.org", + "@type" => "EventReservation", + "underName" => %{ + "@type" => "Person", + "name" => participant.actor.name || participant.actor.preferred_username + }, + "reservationFor" => render("event.json", %{event: participant.event}), + "reservationStatus" => reservation_status(participant.role), + "modifiedTime" => participant.updated_at, + "modifyReservationUrl" => Routes.page_url(Endpoint, :event, participant.event.uuid) + } + + if participant.code do + Map.put(res, "reservationNumber", participant.code) + else + res + end + end + + @spec reservation_status(ParticipantRole.t()) :: String.t() + defp reservation_status(:rejected), do: "https://schema.org/ReservationCancelled" + defp reservation_status(:not_confirmed), do: "https://schema.org/ReservationPending" + 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) From 8a1dfb06120f191bedb94486c8d5682e5526cacb Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 13 Oct 2021 14:49:29 +0200 Subject: [PATCH 08/22] Extract vue-announcer and vue-skip-to styles (so that they're nt inline) Signed-off-by: Thomas Citharel --- js/src/common.scss | 2 + js/src/styles/vue-announcer.scss | 15 ++++++++ js/src/styles/vue-skip-to.scss | 63 ++++++++++++++++++++++++++++++++ 3 files changed, 80 insertions(+) create mode 100644 js/src/styles/vue-announcer.scss create mode 100644 js/src/styles/vue-skip-to.scss diff --git a/js/src/common.scss b/js/src/common.scss index 66979923b..30160e383 100644 --- a/js/src/common.scss +++ b/js/src/common.scss @@ -3,6 +3,8 @@ @import "~bulma"; @import "~bulma-divider"; @import "~buefy/src/scss/buefy"; +@import "styles/vue-announcer.scss"; +@import "styles/vue-skip-to.scss"; // a { // color: $violet-2; diff --git a/js/src/styles/vue-announcer.scss b/js/src/styles/vue-announcer.scss new file mode 100644 index 000000000..0f3e06fcd --- /dev/null +++ b/js/src/styles/vue-announcer.scss @@ -0,0 +1,15 @@ +/** + * Taken from https://github.com/vue-a11y/vue-announcer/blob/master/src/vue-announcer.vue because styles are inlined there + */ + +.announcer { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} diff --git a/js/src/styles/vue-skip-to.scss b/js/src/styles/vue-skip-to.scss new file mode 100644 index 000000000..fdb62d8f2 --- /dev/null +++ b/js/src/styles/vue-skip-to.scss @@ -0,0 +1,63 @@ +@import "../variables.scss"; + +/** + * Taken from https://github.com/vue-a11y/vue-skip-to/blob/master/src/VueSkipTo.vue because styles are inlined there + */ + +.vue-skip-to { + position: fixed; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; + + * { + padding: 0; + margin: 0; + box-sizing: border-box; + } + + &.focused, + &:hover { + left: 0; + top: 0; + clip: auto; + height: auto; + width: auto; + background-color: $white; + border: 2px solid $violet-3; + } + + &, + &__nav-list { + list-style-type: none; + } + + &__nav > span, + &__link { + display: block; + padding: 8px 16px; + color: $violet-3; + font-size: 18px; + } + + &__nav > span { + border-bottom: 2px solid $violet-3; + font-weight: bold; + } + + &, + &__link { + text-decoration: none; + } + + &__link:focus { + outline: none; + background-color: $violet-3; + color: #f2f2f2; + } +} From 88e9ae8214aecf0557b0b18c61418603b783bf95 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 15 Oct 2021 16:01:22 +0200 Subject: [PATCH 09/22] Rollback eblurhash to 1.2.0 Signed-off-by: Thomas Citharel --- mix.exs | 2 +- mix.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mix.exs b/mix.exs index 555f0b984..f8606899c 100644 --- a/mix.exs +++ b/mix.exs @@ -201,7 +201,7 @@ defmodule Mobilizon.Mixfile do {:html_entities, "~> 0.5"}, {:sweet_xml, "~> 0.7"}, {:web_push_encryption, "~> 0.3"}, - {:eblurhash, "~> 1.2"}, + {:eblurhash, "1.2.0"}, {:struct_access, "~> 1.1.2"}, {:paasaa, "~> 0.5.0"}, {:nimble_csv, "~> 1.1"}, diff --git a/mix.lock b/mix.lock index a396dba5a..03907afcd 100644 --- a/mix.lock +++ b/mix.lock @@ -20,18 +20,18 @@ "cowlib": {:hex, :cowlib, "2.11.0", "0b9ff9c346629256c42ebe1eeb769a83c6cb771a6ee5960bd110ab0b9b872063", [:make, :rebar3], [], "hexpm", "2b3e9da0b21c4565751a6d4901c20d1b4cc25cbb7fd50d91d2ab6dd287bc86a9"}, "credo": {:hex, :credo, "1.5.6", "e04cc0fdc236fefbb578e0c04bd01a471081616e741d386909e527ac146016c6", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "4b52a3e558bd64e30de62a648518a5ea2b6e3e5d2b164ef5296244753fc7eb17"}, "dataloader": {:hex, :dataloader, "1.0.7", "58351b335673cf40601429bfed6c11fece6ce7ad169b2ac0f0fe83e716587391", [:mix], [{:ecto, ">= 0.0.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "12bf66478e4a5085d09dc96932d058c206ee8c219cc7691d12a40dc35c8cefaa"}, - "db_connection": {:hex, :db_connection, "2.4.0", "d04b1b73795dae60cead94189f1b8a51cc9e1f911c234cc23074017c43c031e5", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ad416c21ad9f61b3103d254a71b63696ecadb6a917b36f563921e0de00d7d7c8"}, + "db_connection": {:hex, :db_connection, "2.4.1", "6411f6e23f1a8b68a82fa3a36366d4881f21f47fc79a9efb8c615e62050219da", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ea36d226ec5999781a9a8ad64e5d8c4454ecedc7a4d643e4832bf08efca01f00"}, "decimal": {:hex, :decimal, "2.0.0", "a78296e617b0f5dd4c6caf57c714431347912ffb1d0842e998e9792b5642d697", [:mix], [], "hexpm", "34666e9c55dea81013e77d9d87370fe6cb6291d1ef32f46a1600230b1d44f577"}, "dialyxir": {:hex, :dialyxir, "1.1.0", "c5aab0d6e71e5522e77beff7ba9e08f8e02bad90dfbeffae60eaf0cb47e29488", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "07ea8e49c45f15264ebe6d5b93799d4dd56a44036cf42d0ad9c960bc266c0b9a"}, "doctor": {:hex, :doctor, "0.18.0", "114934c1740239953208a39db617699b7e2660770e81129d7f95cdf7837ab766", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "829c88c365f72c0666e443ea670ffb6f180de7b90c23d536edabdd8c722b88f4"}, "earmark": {:hex, :earmark, "1.4.16", "2188754e590a3c379fdd2783bb44eedd8c54968fa0256b6f336f6d56b089d793", [:mix], [{:earmark_parser, ">= 1.4.16", [hex: :earmark_parser, repo: "hexpm", optional: false]}], "hexpm", "46f853f7ae10bee06923430dca522ba9dcbdc6b7a9729748e8dd5344d21b8418"}, "earmark_parser": {:hex, :earmark_parser, "1.4.16", "607709303e1d4e3e02f1444df0c821529af1c03b8578dfc81bb9cf64553d02b9", [:mix], [], "hexpm", "69fcf696168f5a274dd012e3e305027010658b2d1630cef68421d6baaeaccead"}, - "eblurhash": {:hex, :eblurhash, "1.2.1", "36b187459244f5374bb7f47fd0b3001ee3f74d72b18bb04b00cdb7080cdf70f2", [:rebar3], [], "hexpm", "c0b168e734562f8edf1f0abf145b95f93e7657187e1bfaacc32a5714921e920b"}, + "eblurhash": {:hex, :eblurhash, "1.2.0", "ff461979542fcb1bfd428aaba6ee56e544975f6d657aa3dfcf3e314b1d1c2517", [:rebar3], [], "hexpm", "8fa6b740f1630adc0a3e425dbbb4ff92d036e62eb973e7a06676226137a10aa7"}, "ecto": {:hex, :ecto, "3.7.1", "a20598862351b29f80f285b21ec5297da1181c0442687f9b8329f0445d228892", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d36e5b39fc479e654cffd4dbe1865d9716e4a9b6311faff799b6f90ab81b8638"}, "ecto_autoslug_field": {:hex, :ecto_autoslug_field, "3.0.0", "37fbc2f07e6691136afff246f2cf5b159ad395b665a55d06db918975fd2397db", [:mix], [{:ecto, ">= 3.7.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:slugger, ">= 0.3.0", [hex: :slugger, repo: "hexpm", optional: false]}], "hexpm", "8ec252c7cf85f13132062f56a484d6a0ef1f981f7be9ce4ad7e9546dd8c0cc0f"}, "ecto_enum": {:hex, :ecto_enum, "1.4.0", "d14b00e04b974afc69c251632d1e49594d899067ee2b376277efd8233027aec8", [:mix], [{:ecto, ">= 3.0.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "> 3.0.0", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:mariaex, ">= 0.0.0", [hex: :mariaex, repo: "hexpm", optional: true]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "8fb55c087181c2b15eee406519dc22578fa60dd82c088be376d0010172764ee4"}, "ecto_shortuuid": {:hex, :ecto_shortuuid, "0.1.3", "d36aede64edf256e4b769be2ad15a8ad5d9d1ff8ad46befe39e8cb4489abcd05", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:shortuuid, "~> 2.1.1", [hex: :shortuuid, repo: "hexpm", optional: false]}], "hexpm", "d215c8ced7125265de94d55abc696125942caef33439cf281fafded9744a4294"}, - "ecto_sql": {:hex, :ecto_sql, "3.7.0", "2fcaad4ab0c8d76a5afbef078162806adbe709c04160aca58400d5cbbe8eeac6", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.4.0 or ~> 0.5.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a26135dfa1d99bf87a928c464cfa25bba6535a4fe761eefa56077a4febc60f70"}, + "ecto_sql": {:hex, :ecto_sql, "3.7.1", "8de624ef50b2a8540252d8c60506379fbbc2707be1606853df371cf53df5d053", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.4.0 or ~> 0.5.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "2b42a32e2ce92f64aba5c88617891ab3b0ba34f3f3a503fa20009eae1a401c81"}, "elixir_feed_parser": {:hex, :elixir_feed_parser, "2.1.0", "bb96fb6422158dc7ad59de62ef211cc69d264acbbe63941a64a5dce97bbbc2e6", [:mix], [{:timex, "~> 3.4", [hex: :timex, repo: "hexpm", optional: false]}], "hexpm", "2d3c62fe7b396ee3b73d7160bc8fadbd78bfe9597c98c7d79b3f1038d9cba28f"}, "elixir_make": {:hex, :elixir_make, "0.6.2", "7dffacd77dec4c37b39af867cedaabb0b59f6a871f89722c25b28fcd4bd70530", [:mix], [], "hexpm", "03e49eadda22526a7e5279d53321d1cced6552f344ba4e03e619063de75348d9"}, "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, @@ -85,7 +85,7 @@ "junit_formatter": {:hex, :junit_formatter, "3.3.0", "bd7914d92885f7cf949dbe1dc6bacf76badfb2c1f5f7b3f9433c20e5b6ec42c8", [:mix], [], "hexpm", "4d040410925324b155ae4c7d41e884a0cdebe53b917bee4f22adf152e987a666"}, "linkify": {:hex, :linkify, "0.5.1", "6dc415cbc948b2f6ecec7cb226aab7ba9d3a1815bb501ae33e042334d707ecee", [:mix], [], "hexpm", "a3128c7e22fada4aa7214009501d8131e1fa3faf2f0a68b33dba379dc84ff944"}, "makeup": {:hex, :makeup, "1.0.5", "d5a830bc42c9800ce07dd97fa94669dfb93d3bf5fcf6ea7a0c67b2e0e4a7f26c", [:mix], [{:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cfa158c02d3f5c0c665d0af11512fed3fba0144cf1aadee0f2ce17747fba2ca9"}, - "makeup_elixir": {:hex, :makeup_elixir, "0.15.1", "b5888c880d17d1cc3e598f05cdb5b5a91b7b17ac4eaf5f297cb697663a1094dd", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.1", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "db68c173234b07ab2a07f645a5acdc117b9f99d69ebf521821d89690ae6c6ec8"}, + "makeup_elixir": {:hex, :makeup_elixir, "0.15.2", "dc72dfe17eb240552857465cc00cce390960d9a0c055c4ccd38b70629227e97c", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.1", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "fd23ae48d09b32eff49d4ced2b43c9f086d402ee4fd4fcb2d7fad97fa8823e75"}, "makeup_erlang": {:hex, :makeup_erlang, "0.1.1", "3fcb7f09eb9d98dc4d208f49cc955a34218fc41ff6b84df7c75b3e6e533cc65f", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "174d0809e98a4ef0b3309256cbf97101c6ec01c4ab0b23e926a9e17df2077cbb"}, "meck": {:hex, :meck, "0.9.2", "85ccbab053f1db86c7ca240e9fc718170ee5bda03810a6292b5306bf31bae5f5", [:rebar3], [], "hexpm", "81344f561357dc40a8344afa53767c32669153355b626ea9fcbc8da6b3045826"}, "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"}, From d2ccc21f91619c55a8b8d4fd58f385e81ddafa9a Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 15 Oct 2021 15:59:08 +0200 Subject: [PATCH 10/22] Add tz_world.update to release scripts Signed-off-by: Thomas Citharel --- .gitlab-ci.yml | 2 +- docker/production/Dockerfile | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index df71cd174..4c266fe24 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -213,7 +213,7 @@ package-app: script: &release-script - mix local.hex --force - mix local.rebar --force - - mix deps.get + - mix deps.get && mix tz_world.update - mix phx.digest - mix release --path release/mobilizon - cd release/mobilizon && ln -s lib/mobilizon-*/priv priv diff --git a/docker/production/Dockerfile b/docker/production/Dockerfile index 5d09d0b9c..780cb44ad 100644 --- a/docker/production/Dockerfile +++ b/docker/production/Dockerfile @@ -16,7 +16,8 @@ COPY mix.exs mix.lock ./ ENV MIX_ENV=prod RUN mix local.hex --force \ && mix local.rebar --force \ - && mix deps.get + && mix deps.get \ + && mix tz_world.update COPY lib ./lib COPY priv ./priv From 7ecf2e1da07bb5094a7bfd0fc87b3988e27ea1fd Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 15 Oct 2021 15:59:49 +0200 Subject: [PATCH 11/22] Add isOnline event option to mark event as fully online Signed-off-by: Thomas Citharel --- .../components/Event/EventMetadataSidebar.vue | 1 + .../Event/FullAddressAutoComplete.vue | 2 ++ js/src/graphql/event.ts | 1 + js/src/i18n/en_US.json | 5 +-- js/src/i18n/fr_FR.json | 5 +-- js/src/types/event-options.model.ts | 3 ++ js/src/views/Event/Edit.vue | 34 ++++++++++++++++--- lib/graphql/schema/event.ex | 4 +++ lib/mobilizon/events/event_options.ex | 7 ++-- 9 files changed, 52 insertions(+), 10 deletions(-) diff --git a/js/src/components/Event/EventMetadataSidebar.vue b/js/src/components/Event/EventMetadataSidebar.vue index 1f94d5d05..19be9ab3a 100644 --- a/js/src/components/Event/EventMetadataSidebar.vue +++ b/js/src/components/Event/EventMetadataSidebar.vue @@ -1,6 +1,7 @@