refactor: use dedicated email for event announcements

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel 2023-11-21 15:28:56 +01:00
parent 18314956ca
commit b97f1c997f
No known key found for this signature in database
GPG Key ID: A061B9DDE0CA0773
9 changed files with 431 additions and 1711 deletions

View File

@ -104,6 +104,7 @@ defmodule Mobilizon.Conversations do
|> join(:inner, [_cp, _c, _e, _a, _lc, _oc, p], ap in Actor, on: p.actor_id == ap.id)
|> where([_cp, c], c.event_id == ^event_id)
|> where([cp], cp.actor_id == ^actor_id)
|> order_by([cp], desc: cp.unread, desc: cp.updated_at)
|> preload([_cp, c, e, a, lc, oc, p, ap],
actor: a,
conversation:

View File

@ -38,7 +38,7 @@ defmodule Mobilizon.Service.Activity.Conversation do
%Conversation{
id: conversation_id
} = conversation,
%Comment{actor_id: actor_id},
%Comment{actor_id: actor_id, text: last_comment_text},
_options
)
when subject in [
@ -50,27 +50,33 @@ defmodule Mobilizon.Service.Activity.Conversation do
conversation_id
|> Conversations.list_conversation_participants_for_conversation()
|> Enum.each(fn %ConversationParticipant{id: conversation_participant_id} =
|> Enum.each(fn %ConversationParticipant{
id: conversation_participant_id,
actor_id: conversation_participant_actor_id
} =
conversation_participant ->
LegacyNotifierBuilder.enqueue(
:legacy_notify,
%{
"subject" => subject,
"subject_params" =>
Map.merge(
%{
conversation_id: conversation_id,
conversation_participant_id: conversation_participant_id
},
event_subject_params(conversation)
),
"type" => :conversation,
"object_type" => :conversation,
"author_id" => actor_id,
"object_id" => to_string(conversation_id),
"participant" => Map.take(conversation_participant, [:id, :actor_id])
}
)
if actor_id != conversation_participant_actor_id do
LegacyNotifierBuilder.enqueue(
:legacy_notify,
%{
"subject" => subject,
"subject_params" =>
Map.merge(
%{
conversation_id: conversation_id,
conversation_participant_id: conversation_participant_id,
conversation_text: last_comment_text
},
event_subject_params(conversation)
),
"type" => :conversation,
"object_type" => :conversation,
"author_id" => actor_id,
"object_id" => to_string(conversation_id),
"participant" => Map.take(conversation_participant, [:id, :actor_id])
}
)
end
end)
{:ok, :enqueued}

View File

@ -13,25 +13,35 @@ defmodule Mobilizon.Service.Workers.LegacyNotifierBuilder do
use Mobilizon.Service.Workers.Helper, queue: "activity"
@impl Oban.Worker
def perform(%Job{args: args}) do
def perform(%Job{args: %{"op" => "legacy_notify"} = args}) do
{"legacy_notify", args} = Map.pop(args, "op")
activity = build_activity(args)
Logger.debug("Handling activity #{activity.subject} to notify in LegacyNotifierBuilder")
if args["subject"] == "participation_event_comment" do
notify_anonymous_participants(get_in(args, ["subject_params", "event_id"]), activity)
if args["subject"] in ["participation_event_comment", "conversation_created"] do
special_handling(args["subject"], args, activity)
:ok
else
args
|> users_to_notify(author_id: args["author_id"], group_id: Map.get(args, "group_id"))
|> Enum.each(&notify_user(&1, activity))
end
end
if args["subject"] == "conversation_created" do
notify_anonymous_participants(
get_in(args, ["subject_params", "conversation_event_id"]),
activity
)
end
defp special_handling("participation_event_comment", args, activity) do
notify_participants(
get_in(args, ["subject_params", "event_id"]),
activity,
args["author_id"]
)
end
args
|> users_to_notify(author_id: args["author_id"], group_id: Map.get(args, "group_id"))
|> Enum.each(&notify_user(&1, activity))
defp special_handling("conversation_created", args, activity) do
notify_participants(
get_in(args, ["subject_params", "conversation_event_id"]),
activity,
args["author_id"]
)
end
defp build_activity(args) do
@ -117,6 +127,22 @@ defmodule Mobilizon.Service.Workers.LegacyNotifierBuilder do
|> Enum.map(&Users.get_user_with_activity_settings!/1)
end
defp notify_participants(nil, _activity, _author_id), do: :ok
defp notify_participants(event_id, activity, author_id) do
event_id
|> Events.list_actors_participants_for_event()
|> Enum.map(& &1.id)
|> users_from_actor_ids(author_id)
|> Enum.each(fn user ->
Notifier.Email.send_anonymous_activity(user.email, activity,
locale: Map.get(user, :locale, "en")
)
end)
notify_anonymous_participants(event_id, activity)
end
defp notify_anonymous_participants(nil, _activity), do: :ok
defp notify_anonymous_participants(event_id, activity) do

View File

@ -46,6 +46,7 @@ defmodule Mobilizon.Web.Email.Activity do
options
) do
locale = Keyword.get(options, :locale, "en")
Gettext.put_locale(locale)
subject =
dgettext(
@ -54,8 +55,6 @@ defmodule Mobilizon.Web.Email.Activity do
event: subject_params["conversation_event_title"]
)
conversation = Mobilizon.Conversations.get_conversation(activity.object_id)
Logger.debug("Going to send anonymous activity of type #{activity.type} to #{email}")
[to: email, subject: subject]
@ -63,15 +62,13 @@ defmodule Mobilizon.Web.Email.Activity do
|> render_body(:email_anonymous_activity, %{
subject: subject,
activity: activity,
locale: locale,
extra: %{
"conversation" => conversation
}
locale: locale
})
end
def anonymous_activity(email, %Activity{subject_params: subject_params} = activity, options) do
locale = Keyword.get(options, :locale, "en")
Gettext.put_locale(locale)
subject =
dgettext(

View File

@ -113,9 +113,7 @@
event:
"<a href=\"#{Routes.page_url(Mobilizon.Web.Endpoint,
:event,
@activity.subject_params["conversation_event_uuid"]) |> URI.decode()}\">
#{escape_html(@activity.subject_params["conversation_event_title"])}
</a>"
@activity.subject_params["conversation_event_uuid"]) |> URI.decode()}\">#{escape_html(@activity.subject_params["conversation_event_title"])}</a>"
}
)
|> raw %>
@ -137,7 +135,7 @@
<tr>
<td align="center">
<blockquote style="border-left-width: 0.25rem;border-left-color: #e2e8f0;border-left-style: solid;padding-left: 1em;margin: 0;text-align: start;color: #474467;font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 16px; font-weight: 400;line-height: 25px;">
<%= @extra["conversation"].last_comment.text
<%= @activity.subject_params["conversation_text"]
|> sanitize_to_basic_html()
|> raw() %>
</blockquote>

View File

@ -21,7 +21,7 @@
--
<%= @extra["conversation"].last_comment.text |> html_to_text() |> mail_quote() %>
<%= @activity.subject_params["conversation_text"] |> html_to_text() |> mail_quote() %>
--

View File

@ -10,533 +10,395 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-10-18 15:45+0000\n"
"PO-Revision-Date: 2023-11-21 14:57+0100\n"
"Last-Translator: Thomas Citharel <thomas.citharel@framasoft.org>\n"
"Language-Team: French <https://weblate.framasoft.org/projects/mobilizon/"
"activity/fr/>\n"
"Language-Team: French <https://weblate.framasoft.org/projects/mobilizon/activity/fr/>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.14.1\n"
"X-Generator: Poedit 3.4\n"
#: lib/web/templates/email/activity/_member_activity_item.html.heex:14
#: lib/web/templates/email/activity/_member_activity_item.text.eex:12
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:14 lib/web/templates/email/activity/_member_activity_item.text.eex:12
msgid "%{member} accepted the invitation to join the group."
msgstr "%{member} a accepté l'invitation à rejoindre le groupe."
#: lib/web/templates/email/activity/_member_activity_item.html.heex:19
#: lib/web/templates/email/activity/_member_activity_item.text.eex:17
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:17
msgid "%{member} rejected the invitation to join the group."
msgstr "%{member} a refusé l'invitation à rejoindre le groupe."
#: lib/web/templates/email/activity/_member_activity_item.html.heex:3
#: lib/web/templates/email/activity/_member_activity_item.text.eex:1
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:3 lib/web/templates/email/activity/_member_activity_item.text.eex:1
msgid "%{member} requested to join the group."
msgstr "%{member} a demandé à rejoindre le groupe."
#: lib/web/templates/email/activity/_member_activity_item.html.heex:8
#: lib/web/templates/email/activity/_member_activity_item.text.eex:6
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:8 lib/web/templates/email/activity/_member_activity_item.text.eex:6
msgid "%{member} was invited by %{profile}."
msgstr "%{member} a été invité⋅e par %{profile}."
#: lib/web/templates/email/activity/_member_activity_item.html.heex:30
#: lib/web/templates/email/activity/_member_activity_item.text.eex:27
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:30 lib/web/templates/email/activity/_member_activity_item.text.eex:27
msgid "%{profile} added the member %{member}."
msgstr "%{profile} a ajouté le ou la membre %{member}."
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:27
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:19
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:27 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19
msgid "%{profile} archived the discussion %{discussion}."
msgstr "%{profile} a archivé la discussion %{discussion}."
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:3
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:3 lib/web/templates/email/activity/_discussion_activity_item.text.eex:1
msgid "%{profile} created the discussion %{discussion}."
msgstr "%{profile} a créé la discussion %{discussion}."
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:4
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:2
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:4 lib/web/templates/email/activity/_resource_activity_item.text.eex:2
msgid "%{profile} created the folder %{resource}."
msgstr "%{profile} a créé le dossier %{resource}."
#: lib/web/templates/email/activity/_group_activity_item.html.heex:3
#: lib/web/templates/email/activity/_group_activity_item.text.eex:1
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_group_activity_item.html.heex:3 lib/web/templates/email/activity/_group_activity_item.text.eex:1
msgid "%{profile} created the group %{group}."
msgstr "%{profile} a créé le groupe %{group}."
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:15
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:8
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:15 lib/web/templates/email/activity/_resource_activity_item.text.eex:8
msgid "%{profile} created the resource %{resource}."
msgstr "%{profile} a créé la resource %{resource}."
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:35
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:25
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:35 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25
msgid "%{profile} deleted the discussion %{discussion}."
msgstr "%{profile} a créé la discussion %{discussion}."
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:88
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:40
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:88 lib/web/templates/email/activity/_resource_activity_item.text.eex:40
msgid "%{profile} deleted the folder %{resource}."
msgstr "%{profile} a supprimé le dossier %{resource}."
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:94
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:45
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:94 lib/web/templates/email/activity/_resource_activity_item.text.eex:45
msgid "%{profile} deleted the resource %{resource}."
msgstr "%{profile} a supprimé la resource %{resource}."
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48
#: lib/web/templates/email/activity/_member_activity_item.text.eex:45
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} excluded member %{member}."
msgstr "%{profile} a exclu le ou la membre %{member}."
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:64
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:28
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:64 lib/web/templates/email/activity/_resource_activity_item.text.eex:28
msgid "%{profile} moved the folder %{resource}."
msgstr "%{profile} a déplacé le dossier %{resource}."
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:75
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:34
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:75 lib/web/templates/email/activity/_resource_activity_item.text.eex:34
msgid "%{profile} moved the resource %{resource}."
msgstr "%{profile} a déplacé la ressource %{resource}."
#: lib/web/templates/email/activity/_member_activity_item.html.heex:54
#: lib/web/templates/email/activity/_member_activity_item.text.eex:51
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:54 lib/web/templates/email/activity/_member_activity_item.text.eex:51
msgid "%{profile} quit the group."
msgstr "%{profile} a quitté le groupe."
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:19
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:13
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:19 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13
msgid "%{profile} renamed the discussion %{discussion}."
msgstr "%{profile} a renommé la discussion %{discussion}."
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:28
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:14
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:28 lib/web/templates/email/activity/_resource_activity_item.text.eex:14
msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}."
msgstr "%{profile} a renommé le dossier %{old_resource_title} en %{resource}."
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:45
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:21
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:45 lib/web/templates/email/activity/_resource_activity_item.text.eex:21
msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}."
msgstr "%{profile} a renommé la resource %{old_resource_title} en %{resource}."
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:11
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:11 lib/web/templates/email/activity/_discussion_activity_item.text.eex:7
msgid "%{profile} replied to the discussion %{discussion}."
msgstr "%{profile} a répondu à la discussion %{discussion}."
#: lib/web/templates/email/activity/_group_activity_item.html.heex:14
#: lib/web/templates/email/activity/_group_activity_item.text.eex:7
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_group_activity_item.html.heex:14 lib/web/templates/email/activity/_group_activity_item.text.eex:7
msgid "%{profile} updated the group %{group}."
msgstr "%{profile} a mis à jour le groupe %{group}."
#: lib/web/templates/email/activity/_member_activity_item.html.heex:42
#: lib/web/templates/email/activity/_member_activity_item.text.eex:39
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:42 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} updated the member %{member}."
msgstr "%{profile} a mis à jour le membre %{member}."
#: lib/service/activity/renderer/event.ex:23
#: lib/web/templates/email/activity/_event_activity_item.html.heex:3
#: lib/service/activity/renderer/event.ex:23 lib/web/templates/email/activity/_event_activity_item.html.heex:3
#: lib/web/templates/email/activity/_event_activity_item.text.eex:1
#, elixir-autogen, elixir-format
msgid "The event %{event} was created by %{profile}."
msgstr "L'événement %{event} a été créé par %{profile}."
#: lib/service/activity/renderer/event.ex:43
#: lib/web/templates/email/activity/_event_activity_item.html.heex:25
#: lib/service/activity/renderer/event.ex:43 lib/web/templates/email/activity/_event_activity_item.html.heex:25
#: lib/web/templates/email/activity/_event_activity_item.text.eex:13
#, elixir-autogen, elixir-format
msgid "The event %{event} was deleted by %{profile}."
msgstr "L'événement %{event} a été supprimé par %{profile}."
#: lib/service/activity/renderer/event.ex:33
#: lib/web/templates/email/activity/_event_activity_item.html.heex:14
#: lib/service/activity/renderer/event.ex:33 lib/web/templates/email/activity/_event_activity_item.html.heex:14
#: lib/web/templates/email/activity/_event_activity_item.text.eex:7
#, elixir-autogen, elixir-format
msgid "The event %{event} was updated by %{profile}."
msgstr "L'événement %{event} a été mis à jour par %{profile}."
#: lib/web/templates/email/activity/_post_activity_item.html.heex:3
#: lib/web/templates/email/activity/_post_activity_item.text.eex:1
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:3 lib/web/templates/email/activity/_post_activity_item.text.eex:1
msgid "The post %{post} was created by %{profile}."
msgstr "Le billet %{post} a été créé par %{profile}."
#: lib/web/templates/email/activity/_post_activity_item.html.heex:25
#: lib/web/templates/email/activity/_post_activity_item.text.eex:13
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:25 lib/web/templates/email/activity/_post_activity_item.text.eex:13
msgid "The post %{post} was deleted by %{profile}."
msgstr "Le billet %{post} a été supprimé par %{profile}."
#: lib/web/templates/email/activity/_post_activity_item.html.heex:14
#: lib/web/templates/email/activity/_post_activity_item.text.eex:7
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:14 lib/web/templates/email/activity/_post_activity_item.text.eex:7
msgid "The post %{post} was updated by %{profile}."
msgstr "Le billet %{post} a été mis à jour par %{profile}."
#: lib/web/templates/email/activity/_member_activity_item.html.heex:24
#: lib/web/templates/email/activity/_member_activity_item.text.eex:22
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:24 lib/web/templates/email/activity/_member_activity_item.text.eex:22
msgid "%{member} joined the group."
msgstr "%{member} a rejoint le groupe."
#: lib/service/activity/renderer/event.ex:63
#: lib/web/templates/email/activity/_event_activity_item.html.heex:43
#: lib/service/activity/renderer/event.ex:63 lib/web/templates/email/activity/_event_activity_item.html.heex:43
#: lib/web/templates/email/activity/_event_activity_item.text.eex:25
#, elixir-autogen, elixir-format
msgid "%{profile} posted a comment on the event %{event}."
msgstr "%{profile} a posté un commentaire sur l'événement %{event}."
#: lib/service/activity/renderer/event.ex:54
#: lib/web/templates/email/activity/_event_activity_item.html.heex:32
#: lib/service/activity/renderer/event.ex:54 lib/web/templates/email/activity/_event_activity_item.html.heex:32
#: lib/web/templates/email/activity/_event_activity_item.text.eex:19
#, elixir-autogen, elixir-format
msgid "%{profile} replied to a comment on the event %{event}."
msgstr "%{profile} a répondu à un commentaire sur l'événement %{event}."
#: lib/web/templates/email/email_direct_activity.text.eex:27
#, elixir-autogen, elixir-format
msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings."
msgstr "Vous ne voulez pas recevoir de notifications d'activité ? Vous pouvez changer leur fréquence ou les désactiver dans vos préférences."
#: lib/web/templates/email/email_direct_activity.html.heex:222
#: lib/web/templates/email/email_direct_activity.text.eex:23
#, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:222 lib/web/templates/email/email_direct_activity.text.eex:23
msgid "View one more activity"
msgid_plural "View %{count} more activities"
msgstr[0] "Voir une activité de plus"
msgstr[1] "Voir %{count} activités de plus"
#: lib/web/templates/email/email_direct_activity.html.heex:53
#: lib/web/templates/email/email_direct_activity.html.heex:60
#: lib/web/templates/email/email_direct_activity.text.eex:6
#: lib/web/templates/email/email_direct_activity.text.eex:7
#, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:53 lib/web/templates/email/email_direct_activity.html.heex:60
#: lib/web/templates/email/email_direct_activity.text.eex:6 lib/web/templates/email/email_direct_activity.text.eex:7
msgid "There has been an activity!"
msgid_plural "There has been some activity!"
msgstr[0] "Il y a eu une activité !"
msgstr[1] "Il y a eu de l'activité !"
#: lib/service/activity/renderer/renderer.ex:46
#, elixir-autogen, elixir-format
msgid "Activity on %{instance}"
msgstr "Activité sur %{instance}"
#: lib/service/activity/renderer/comment.ex:38
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:14
#: lib/service/activity/renderer/comment.ex:38 lib/web/templates/email/activity/_comment_activity_item.html.heex:14
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7
#, elixir-autogen, elixir-format
msgid "%{profile} has posted an announcement under event %{event}."
msgstr "%{profile} a posté une annonce sous l'événement %{event}."
#: lib/service/activity/renderer/comment.ex:24
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:3
#: lib/service/activity/renderer/comment.ex:24 lib/web/templates/email/activity/_comment_activity_item.html.heex:3
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1
#, elixir-autogen, elixir-format
msgid "%{profile} mentionned you in a comment under event %{event}."
msgstr "%{profile} vous a mentionné dans un commentaire sous l'événement %{event}."
#: lib/web/templates/email/email_direct_activity.html.heex:252
#, elixir-autogen, elixir-format
msgid "Don't want to receive activity notifications? You may change frequency or disable them in %{tag_start}your settings%{tag_end}."
msgstr ""
"Vous ne voulez pas recevoir de notifications d'activité ? Vous pouvez changer leur fréquence ou les désactiver dans %{tag_start}vos préférences"
"%{tag_end}."
"Vous ne voulez pas recevoir de notifications d'activité ? Vous pouvez changer leur fréquence ou les désactiver dans %{tag_start}vos "
"préférences%{tag_end}."
#: lib/web/templates/email/email_direct_activity.html.heex:51
#: lib/web/templates/email/email_direct_activity.text.eex:5
#, elixir-autogen, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:51 lib/web/templates/email/email_direct_activity.text.eex:5
msgid "Here's your weekly activity recap"
msgstr "Voici votre récapitulatif hebdomadaire d'activité"
#: lib/web/email/activity.ex:154
#: lib/web/email/activity.ex:175
#, elixir-autogen, elixir-format
#: lib/web/email/activity.ex:154 lib/web/email/activity.ex:175
msgid "Activity notification for %{instance}"
msgstr "Notification d'activité sur %{instance}"
#: lib/web/email/activity.ex:161
#, elixir-autogen, elixir-format
msgid "Daily activity recap for %{instance}"
msgstr "Récapitulatif quotidien d'activité sur %{instance}"
#: lib/web/templates/email/email_direct_activity.html.heex:49
#: lib/web/templates/email/email_direct_activity.text.eex:4
#, elixir-autogen, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:49 lib/web/templates/email/email_direct_activity.text.eex:4
msgid "Here's your daily activity recap"
msgstr "Voici votre récapitulatif quotidien d'activité"
#: lib/web/email/activity.ex:168
#, elixir-autogen, elixir-format
msgid "Weekly activity recap for %{instance}"
msgstr "Récapitulatif hebdomadaire d'activité sur %{instance}"
#: lib/service/activity/renderer/comment.ex:66
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:37
#: lib/service/activity/renderer/comment.ex:66 lib/web/templates/email/activity/_comment_activity_item.html.heex:37
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19
#, elixir-autogen, elixir-format
msgid "%{profile} has posted a new comment under your event %{event}."
msgstr "%{profile} a posté un nouveau commentaire sous votre événement %{event}."
#: lib/service/activity/renderer/comment.ex:53
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:26
#: lib/service/activity/renderer/comment.ex:53 lib/web/templates/email/activity/_comment_activity_item.html.heex:26
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13
#, elixir-autogen, elixir-format
msgid "%{profile} has posted a new reply under your event %{event}."
msgstr "%{profile} a posté une nouvelle réponse sous votre événement %{event}."
#: lib/web/email/activity.ex:77
#, elixir-autogen, elixir-format
msgid "Announcement for your event %{event}"
msgstr "Annonce pour votre événement %{event}"
#: lib/service/activity/renderer/group.ex:23
#, elixir-autogen, elixir-format
msgid "The group %{group} was updated by %{profile}."
msgstr "Le groupe %{group} a été mis à jour par %{profile}."
#: lib/service/activity/renderer/post.ex:47
#, elixir-autogen, elixir-format
msgid "The post %{post} from group %{group} was deleted by %{profile}."
msgstr "Le billet %{post} du groupe %{group} a été supprimé par %{profile}."
#: lib/service/activity/renderer/post.ex:31
#, elixir-autogen, elixir-format
msgid "The post %{post} from group %{group} was published by %{profile}."
msgstr "Le billet %{post} du groupe %{group} a été publié par %{profile}."
#: lib/service/activity/renderer/post.ex:39
#, elixir-autogen, elixir-format
msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "Le billet %{post} du groupe %{group} a été mis à jour par %{profile}."
#: lib/service/activity/renderer/member.ex:39
#, elixir-autogen, elixir-format
msgid "%{member} accepted the invitation to join the group %{group}."
msgstr "%{member} a accepté l'invitation à rejoindre le groupe %{group}."
#: lib/service/activity/renderer/member.ex:47
#, elixir-autogen, elixir-format
msgid "%{member} joined the group %{group}."
msgstr "%{member} a rejoint le groupe %{group}."
#: lib/service/activity/renderer/member.ex:43
#, elixir-autogen, elixir-format
msgid "%{member} rejected the invitation to join the group %{group}."
msgstr "%{member} a refusé l'invitation à rejoindre le groupe %{group}."
#: lib/service/activity/renderer/member.ex:31
#, elixir-autogen, elixir-format
msgid "%{member} requested to join the group %{group}."
msgstr "%{member} a demandé à rejoindre le groupe %{group}."
#: lib/service/activity/renderer/member.ex:35
#, elixir-autogen, elixir-format
msgid "%{member} was invited by %{profile} to group %{group}."
msgstr "%{member} a été invité⋅e par %{profile} au groupe %{group}."
#: lib/service/activity/renderer/member.ex:51
#, elixir-autogen, elixir-format
msgid "%{profile} added the member %{member} to group %{group}."
msgstr "%{profile} a ajouté le ou la membre %{member} au groupe %{group}."
#: lib/service/activity/renderer/member.ex:55
#, elixir-autogen, elixir-format
msgid "%{profile} approved the membership request from %{member} for group %{group}."
msgstr "%{profile} a approuvé la demande d'adhésion de %{member} au groupe %{group}."
#: lib/service/activity/renderer/resource.ex:33
#, elixir-autogen, elixir-format
msgid "%{profile} created the folder %{resource} in group %{group}."
msgstr "%{profile} a créé le dossier %{resource} du groupe %{group}."
#: lib/service/activity/renderer/resource.ex:69
#, elixir-autogen, elixir-format
msgid "%{profile} deleted the folder %{resource} in group %{group}."
msgstr "%{profile} a supprimé le dossier %{resource} du groupe %{group}."
#: lib/service/activity/renderer/resource.ex:71
#, elixir-autogen, elixir-format
msgid "%{profile} deleted the resource %{resource} in group %{group}."
msgstr "%{profile} a supprimé la ressource %{resource} du groupe %{group}."
#: lib/service/activity/renderer/member.ex:75
#, elixir-autogen, elixir-format
msgid "%{profile} excluded member %{member} from the group %{group}."
msgstr "%{profile} a exclu le ou la membre %{member} du groupe %{group}."
#: lib/service/activity/renderer/resource.ex:61
#, elixir-autogen, elixir-format
msgid "%{profile} moved the folder %{resource} in group %{group}."
msgstr "%{profile} a déplacé le dossier %{resource} du groupe %{group}."
#: lib/service/activity/renderer/resource.ex:63
#, elixir-autogen, elixir-format
msgid "%{profile} moved the resource %{resource} in group %{group}."
msgstr "%{profile} a déplacé la ressource %{resource} du groupe %{group}."
#: lib/service/activity/renderer/member.ex:79
#, elixir-autogen, elixir-format
msgid "%{profile} quit the group %{group}."
msgstr "%{profile} a quitté le groupe %{group}."
#: lib/service/activity/renderer/member.ex:63
#, elixir-autogen, elixir-format
msgid "%{profile} rejected the membership request from %{member} for group %{group}."
msgstr "%{profile} a rejeté la demande d'adhésion de %{member} pour le groupe %{group}."
#: lib/service/activity/renderer/resource.ex:45
#, elixir-autogen, elixir-format
msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource} in group %{group}."
msgstr "%{profile} a renommé le dossier %{old_resource_title} en %{resource} dans le groupe %{group}."
#: lib/service/activity/renderer/resource.ex:51
#, elixir-autogen, elixir-format
msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource} in group %{group}."
msgstr "%{profile} a renommé la ressource %{old_resource_title} en %{resource} dans le groupe %{group}."
#: lib/service/activity/renderer/member.ex:71
#, elixir-autogen, elixir-format
msgid "%{profile} updated the member %{member} in group %{group}."
msgstr "%{profile} a mis à jour le membre %{member} dans le groupe %{group}."
#: lib/service/activity/renderer/resource.ex:35
#, elixir-autogen, elixir-format
msgid "%{profile} created the resource %{resource} in group %{group}."
msgstr "%{profile} a créé la ressource %{resource} dans le groupe %{group}."
#: lib/service/activity/renderer/discussion.ex:86
#, elixir-autogen, elixir-format
msgid "%{profile} archived the discussion %{discussion} in group %{group}."
msgstr "%{profile} a archivé la discussion %{discussion} du groupe %{group}."
#: lib/service/activity/renderer/discussion.ex:26
#, elixir-autogen, elixir-format
msgid "%{profile} created the discussion %{discussion} in group %{group}."
msgstr "%{profile} a créé la discussion %{discussion} du groupe %{group}."
#: lib/service/activity/renderer/discussion.ex:101
#, elixir-autogen, elixir-format
msgid "%{profile} deleted the discussion %{discussion} in group %{group}."
msgstr "%{profile} a créé la discussion %{discussion} dans le groupe %{group}."
#: lib/service/activity/renderer/discussion.ex:56
#, elixir-autogen, elixir-format
msgid "%{profile} mentionned you in the discussion %{discussion} in group %{group}."
msgstr "%{profile} vous a mentionné dans la discussion %{discussion} du groupe %{group}."
#: lib/service/activity/renderer/discussion.ex:71
#, elixir-autogen, elixir-format
msgid "%{profile} renamed the discussion %{discussion} in group %{group}."
msgstr "%{profile} a renommé la discussion %{discussion} du groupe %{group}."
#: lib/service/activity/renderer/discussion.ex:41
#, elixir-autogen, elixir-format
msgid "%{profile} replied to the discussion %{discussion} in group %{group}."
msgstr "%{profile} a répondu à la discussion %{discussion} du groupe %{group}."
#: lib/web/templates/email/activity/_member_activity_item.html.heex:36
#: lib/web/templates/email/activity/_member_activity_item.text.eex:33
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:36 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} approved the member %{member}."
msgstr "%{profile} a ajouté le ou la membre %{member}."
#: lib/service/activity/renderer/event.ex:74
#: lib/web/templates/email/activity/_event_activity_item.html.heex:55
#: lib/service/activity/renderer/event.ex:74 lib/web/templates/email/activity/_event_activity_item.html.heex:55
#: lib/web/templates/email/activity/_event_activity_item.text.eex:31
#, elixir-autogen, elixir-format
msgid "%{profile} joined your event %{event}."
msgstr ""
msgstr "%{profile} a rejoint votre événement %{event}."
#: lib/web/views/email_view.ex:61
#, elixir-autogen, elixir-format
msgid "An anonymous profile"
msgstr ""
msgstr "Un profil anonyme"
#: lib/web/templates/email/email_anonymous_activity.html.heex:107
#: lib/web/templates/email/email_anonymous_activity.text.eex:14
#, elixir-autogen, elixir-format, fuzzy
#: lib/web/templates/email/email_anonymous_activity.html.heex:107 lib/web/templates/email/email_anonymous_activity.text.eex:14
msgid "%{profile} has posted a private announcement about event %{event}."
msgstr "%{profile} a posté une annonce sous l'événement %{event}."
msgstr "%{profile} a posté une annonce privée à propos de l'événement %{event}."
#: lib/web/templates/email/email_anonymous_activity.html.heex:50
#: lib/web/templates/email/email_anonymous_activity.text.eex:6
#, elixir-autogen, elixir-format, fuzzy
#: lib/web/templates/email/email_anonymous_activity.html.heex:50 lib/web/templates/email/email_anonymous_activity.text.eex:6
msgid "%{profile} has posted a public announcement under event %{event}."
msgstr "%{profile} a posté une annonce sous l'événement %{event}."
msgstr "%{profile} a posté une annonce publique sous l'événement %{event}."
#: lib/web/templates/email/activity/_conversation_activity_item.html.heex:3
#, elixir-autogen, elixir-format, fuzzy
msgid "%{profile} mentionned you in a %{conversation}."
msgstr "%{profile} vous a mentionné dans un commentaire sous l'événement %{event}."
msgstr "%{profile} vous a mentionné dans une conversation %{conversation}."
#: lib/web/templates/email/activity/_conversation_activity_item.text.eex:1
#, elixir-autogen, elixir-format, fuzzy
msgid "%{profile} mentionned you in a conversation."
msgstr "%{profile} vous a mentionné dans un commentaire sous l'événement %{event}."
msgstr "%{profile} vous a mentionné dans une conversation."
#: lib/service/activity/renderer/conversation.ex:37
#, elixir-autogen, elixir-format
msgid "%{profile} replied to your message"
msgstr ""
msgstr "%{profile} a répondu à votre message"
#: lib/web/templates/email/activity/_conversation_activity_item.html.heex:12
#, elixir-autogen, elixir-format, fuzzy
msgid "%{profile} replied you in a %{conversation}."
msgstr "%{profile} a répondu à la discussion %{discussion}."
msgstr "%{profile} vous a répondu dans une %{conversation}."
#: lib/web/templates/email/activity/_conversation_activity_item.text.eex:6
#, elixir-autogen, elixir-format
msgid "%{profile} replied you in a conversation."
msgstr ""
msgstr "%{profile} vous a répondu dans une conversation."
#: lib/service/activity/renderer/conversation.ex:50
#, elixir-autogen, elixir-format
msgid "%{profile} sent a private message about event %{event}"
msgstr ""
msgstr "%{profile} a envoyé un message privé à propos de l'événement %{event}"
#: lib/service/activity/renderer/conversation.ex:24
#, elixir-autogen, elixir-format
msgid "%{profile} sent you a message"
msgstr ""
msgstr "%{profile} vous a envoyé un message"
#: lib/web/email/activity.ex:51
#, elixir-autogen, elixir-format
msgid "Informations about your event %{event}"
msgstr ""
msgstr "Informations sur votre événement %{event}"
#: lib/web/templates/email/email_anonymous_activity.html.heex:122
#: lib/web/templates/email/email_anonymous_activity.text.eex:20
#, elixir-autogen, elixir-format
#: lib/web/templates/email/email_anonymous_activity.html.heex:122 lib/web/templates/email/email_anonymous_activity.text.eex:20
msgid "It might give details on how to join the event, so make sure to read it appropriately."
msgstr ""
msgstr "Elle peut donner des détails sur la manière de participer à l'événement, veillez donc à la lire attentivement."
#: lib/web/templates/email/email_anonymous_activity.html.heex:160
#: lib/web/templates/email/email_anonymous_activity.text.eex:28
#, elixir-autogen, elixir-format
#: lib/web/templates/email/email_anonymous_activity.html.heex:160 lib/web/templates/email/email_anonymous_activity.text.eex:28
msgid "This information is sent privately to you as a person who registered for this event. Share the informations above with other people with caution."
msgstr ""
"Ces informations vous sont envoyées en privé en tant que personne inscrite à cet événement. Partagez les informations ci-dessus avec d'autres "
"personnes avec prudence."

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff