Merge branch 'bugs' into 'main'

Various bugs

Closes #803, #884 et #829

See merge request framasoft/mobilizon!1111
This commit is contained in:
Thomas Citharel 2021-11-16 16:13:16 +00:00
commit 5489c54f10
94 changed files with 1933 additions and 1393 deletions

View File

@ -299,12 +299,13 @@ multi-arch-release:
- docker buildx build --platform linux/${ARCH} --output type=local,dest=releases --build-arg APP_ASSET=${APP_ASSET} -f docker/multiarch/Dockerfile . - docker buildx build --platform linux/${ARCH} --output type=local,dest=releases --build-arg APP_ASSET=${APP_ASSET} -f docker/multiarch/Dockerfile .
- ls -alh releases/mobilizon/ - ls -alh releases/mobilizon/
- du -sh releases/mobilizon/${APP_ASSET} - du -sh releases/mobilizon/${APP_ASSET}
- mv releases/mobilizon/${APP_ASSET} .
tags: tags:
- "privileged" - "privileged"
artifacts: artifacts:
expire_in: 30 days expire_in: 30 days
paths: paths:
- releases/mobilizon/${APP_ASSET} - ${APP_ASSET}
parallel: parallel:
matrix: matrix:
- ARCH: ["arm", "arm64"] - ARCH: ["arm", "arm64"]

View File

@ -1251,5 +1251,7 @@
"Approve member": "Approve member", "Approve member": "Approve member",
"Reject member": "Reject member", "Reject member": "Reject member",
"The membership request from {profile} was rejected": "The membership request from {profile} was rejected", "The membership request from {profile} was rejected": "The membership request from {profile} was rejected",
"The member was approved": "The member was approved" "The member was approved": "The member was approved",
"Emails usually don't contain capitals, make sure you haven't made a typo.": "Emails usually don't contain capitals, make sure you haven't made a typo.",
"To follow groups and be informed of their latest events": "To follow groups and be informed of their latest events"
} }

View File

@ -1355,5 +1355,7 @@
"Approve member": "Approuver le ou la membre", "Approve member": "Approuver le ou la membre",
"Reject member": "Rejeter le ou la membre", "Reject member": "Rejeter le ou la membre",
"The membership request from {profile} was rejected": "La demande d'adhésion de {profile} a été rejetée", "The membership request from {profile} was rejected": "La demande d'adhésion de {profile} a été rejetée",
"The member was approved": "Le ou la membre a été approuvée" "The member was approved": "Le ou la membre a été approuvée",
"Emails usually don't contain capitals, make sure you haven't made a typo.": "Les emails ne contiennent d'ordinaire pas de capitales, assurez-vous de n'avoir pas fait de faute de frappe.",
"To follow groups and be informed of their latest events": "Afin de suivre des groupes et être informé de leurs derniers événements"
} }

5
js/src/types/apollo.ts Normal file
View File

@ -0,0 +1,5 @@
import { GraphQLError } from "graphql/error/GraphQLError";
export class AbsintheGraphQLError extends GraphQLError {
readonly field: string | undefined;
}

View File

@ -45,7 +45,12 @@
{{ error }} {{ error }}
</b-message> </b-message>
<form @submit="loginAction"> <form @submit="loginAction">
<b-field :label="$t('Email')" label-for="email"> <b-field
:label="$t('Email')"
label-for="email"
:message="caseWarningText"
:type="caseWarningType"
>
<b-input <b-input
aria-required="true" aria-required="true"
required required
@ -277,6 +282,26 @@ export default class Login extends Vue {
return this.$router.push("/"); return this.$router.push("/");
} }
} }
get hasCaseWarning(): boolean {
return this.credentials.email !== this.credentials.email.toLowerCase();
}
get caseWarningText(): string | undefined {
if (this.hasCaseWarning) {
return this.$t(
"Emails usually don't contain capitals, make sure you haven't made a typo."
) as string;
}
return undefined;
}
get caseWarningType(): string | undefined {
if (this.hasCaseWarning) {
return "is-warning";
}
return undefined;
}
} }
</script> </script>
@ -284,4 +309,7 @@ export default class Login extends Vue {
.container .columns { .container .columns {
margin: 1rem auto 3rem; margin: 1rem auto 3rem;
} }
::v-deep .help.is-warning {
color: #755033;
}
</style> </style>

View File

@ -53,6 +53,13 @@
) )
}} }}
</li> </li>
<li v-if="config.features.groups">
{{
$t(
"To follow groups and be informed of their latest events"
)
}}
</li>
</ul> </ul>
</div> </div>
</div> </div>
@ -83,8 +90,8 @@
<form v-on:submit.prevent="submit()"> <form v-on:submit.prevent="submit()">
<b-field <b-field
:label="$t('Email')" :label="$t('Email')"
:type="errors.email ? 'is-danger' : null" :type="errorEmailType"
:message="errors.email" :message="errorEmailMessages"
label-for="email" label-for="email"
> >
<b-input <b-input
@ -100,8 +107,8 @@
<b-field <b-field
:label="$t('Password')" :label="$t('Password')"
:type="errors.password ? 'is-danger' : null" :type="errorPasswordType"
:message="errors.password" :message="errorPasswordMessages"
label-for="password" label-for="password"
> >
<b-input <b-input
@ -178,12 +185,6 @@
<auth-providers :oauthProviders="config.auth.oauthProviders" /> <auth-providers :oauthProviders="config.auth.oauthProviders" />
</div> </div>
</form> </form>
<div v-if="errors.length > 0">
<b-message type="is-danger" v-for="error in errors" :key="error">{{
error
}}</b-message>
</div>
</div> </div>
</div> </div>
</section> </section>
@ -191,13 +192,18 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { Component, Prop, Vue } from "vue-property-decorator"; import { Component, Prop, Vue, Watch } from "vue-property-decorator";
import { CREATE_USER } from "../../graphql/user"; import { CREATE_USER } from "../../graphql/user";
import RouteName from "../../router/name"; import RouteName from "../../router/name";
import { IConfig } from "../../types/config.model"; import { IConfig } from "../../types/config.model";
import { CONFIG } from "../../graphql/config"; import { CONFIG } from "../../graphql/config";
import Subtitle from "../../components/Utils/Subtitle.vue"; import Subtitle from "../../components/Utils/Subtitle.vue";
import AuthProviders from "../../components/User/AuthProviders.vue"; import AuthProviders from "../../components/User/AuthProviders.vue";
import { AbsintheGraphQLError } from "../../types/apollo";
type errorType = "is-danger" | "is-warning";
type errorMessage = { type: errorType; message: string };
type credentials = { email: string; password: string; locale: string };
@Component({ @Component({
components: { Subtitle, AuthProviders }, components: { Subtitle, AuthProviders },
@ -218,13 +224,14 @@ export default class Register extends Vue {
@Prop({ type: String, required: false, default: "" }) password!: string; @Prop({ type: String, required: false, default: "" }) password!: string;
credentials = { credentials: credentials = {
email: this.email, email: this.email,
password: this.password, password: this.password,
locale: "en", locale: "en",
}; };
errors: string[] = []; emailErrors: errorMessage[] = [];
passwordErrors: errorMessage[] = [];
sendingForm = false; sendingForm = false;
@ -245,7 +252,8 @@ export default class Register extends Vue {
this.sendingForm = true; this.sendingForm = true;
this.credentials.locale = this.$i18n.locale; this.credentials.locale = this.$i18n.locale;
try { try {
this.errors = []; this.emailErrors = [];
this.passwordErrors = [];
await this.$apollo.mutate({ await this.$apollo.mutate({
mutation: CREATE_USER, mutation: CREATE_USER,
@ -257,17 +265,67 @@ export default class Register extends Vue {
params: { email: this.credentials.email }, params: { email: this.credentials.email },
}); });
} catch (error: any) { } catch (error: any) {
console.error(error); error.graphQLErrors.forEach(
this.errors = error.graphQLErrors.reduce( ({ field, message }: AbsintheGraphQLError) => {
(acc: string[], localError: any) => { switch (field) {
acc.push(localError.message); case "email":
return acc; this.emailErrors.push({
}, type: "is-danger" as errorType,
[] message: message[0] as string,
});
break;
case "password":
this.passwordErrors.push({
type: "is-danger" as errorType,
message: message[0] as string,
});
break;
default:
}
}
); );
this.sendingForm = false; this.sendingForm = false;
} }
} }
@Watch("credentials", { deep: true })
watchCredentials(credentials: credentials): void {
if (credentials.email !== credentials.email.toLowerCase()) {
const error = {
type: "is-warning" as errorType,
message: this.$t(
"Emails usually don't contain capitals, make sure you haven't made a typo."
) as string,
};
this.emailErrors = [error];
this.$forceUpdate();
}
}
maxErrorType(errors: errorMessage[]): errorType | undefined {
if (!errors || errors.length === 0) return undefined;
return errors.reduce<errorType>((acc, error) => {
if (error.type === "is-danger" || acc === "is-danger") return "is-danger";
return "is-warning";
}, "is-warning");
}
get errorEmailType(): errorType | undefined {
return this.maxErrorType(this.emailErrors);
}
get errorPasswordType(): errorType | undefined {
return this.maxErrorType(this.passwordErrors);
}
get errorEmailMessages(): string[] {
return this.emailErrors.map(({ message }) => message);
}
get errorPasswordMessages(): string[] {
return this.passwordErrors?.map(({ message }) => message);
}
} }
</script> </script>
@ -302,4 +360,7 @@ p.create-account {
margin: 1rem auto 2rem; margin: 1rem auto 2rem;
} }
} }
::v-deep .help.is-warning {
color: #755033;
}
</style> </style>

View File

@ -29,6 +29,8 @@ defmodule Mobilizon.Federation.ActivityPub.Actor do
end end
def get_or_fetch_actor_by_url(url, preload) do def get_or_fetch_actor_by_url(url, preload) do
Logger.debug("Getting or fetching actor by URL #{url}")
case Actors.get_actor_by_url(url, preload) do case Actors.get_actor_by_url(url, preload) do
{:ok, %Actor{} = cached_actor} -> {:ok, %Actor{} = cached_actor} ->
if Actors.needs_update?(cached_actor) do if Actors.needs_update?(cached_actor) do
@ -51,6 +53,8 @@ defmodule Mobilizon.Federation.ActivityPub.Actor do
@spec make_actor_from_url(url :: String.t(), options :: Keyword.t()) :: @spec make_actor_from_url(url :: String.t(), options :: Keyword.t()) ::
{:ok, Actor.t()} | {:error, make_actor_errors | Ecto.Changeset.t()} {:ok, Actor.t()} | {:error, make_actor_errors | Ecto.Changeset.t()}
def make_actor_from_url(url, options \\ []) do def make_actor_from_url(url, options \\ []) do
Logger.debug("Making actor from url #{url}")
if are_same_origin?(url, Endpoint.url()) do if are_same_origin?(url, Endpoint.url()) do
{:error, :actor_is_local} {:error, :actor_is_local}
else else
@ -75,6 +79,8 @@ defmodule Mobilizon.Federation.ActivityPub.Actor do
@spec find_or_make_actor_from_nickname(nickname :: String.t(), type :: atom() | nil) :: @spec find_or_make_actor_from_nickname(nickname :: String.t(), type :: atom() | nil) ::
{:ok, Actor.t()} | {:error, make_actor_errors | WebFinger.finger_errors()} {:ok, Actor.t()} | {:error, make_actor_errors | WebFinger.finger_errors()}
def find_or_make_actor_from_nickname(nickname, type \\ nil) do def find_or_make_actor_from_nickname(nickname, type \\ nil) do
Logger.debug("Finding or making actor from nickname #{nickname}")
case Actors.get_actor_by_name_with_preload(nickname, type) do case Actors.get_actor_by_name_with_preload(nickname, type) do
%Actor{url: actor_url} = actor -> %Actor{url: actor_url} = actor ->
if Actors.needs_update?(actor) do if Actors.needs_update?(actor) do
@ -98,8 +104,11 @@ defmodule Mobilizon.Federation.ActivityPub.Actor do
@spec make_actor_from_nickname(nickname :: String.t(), preload :: boolean) :: @spec make_actor_from_nickname(nickname :: String.t(), preload :: boolean) ::
{:ok, Actor.t()} | {:error, make_actor_errors | WebFinger.finger_errors()} {:ok, Actor.t()} | {:error, make_actor_errors | WebFinger.finger_errors()}
def make_actor_from_nickname(nickname, preload \\ false) do def make_actor_from_nickname(nickname, preload \\ false) do
Logger.debug("Fingering actor from nickname #{nickname}")
case WebFinger.finger(nickname) do case WebFinger.finger(nickname) do
{:ok, url} when is_binary(url) -> {:ok, url} when is_binary(url) ->
Logger.debug("Matched #{nickname} to URL #{url}, now making actor")
make_actor_from_url(url, preload: preload) make_actor_from_url(url, preload: preload)
{:error, e} -> {:error, e} ->

View File

@ -228,6 +228,14 @@ defmodule Mobilizon.Federation.ActivityPub.Audience do
|> Enum.uniq() |> Enum.uniq()
end end
defp add_event_contacts(%Event{contacts: contacts}) do
contacts
|> Enum.map(& &1.url)
|> Enum.uniq()
end
defp add_event_contacts(%Event{}), do: []
defp process_mention({_, mentioned_actor}), do: mentioned_actor.url defp process_mention({_, mentioned_actor}), do: mentioned_actor.url
defp process_mention(%{actor_id: actor_id}) do defp process_mention(%{actor_id: actor_id}) do
@ -255,7 +263,9 @@ defmodule Mobilizon.Federation.ActivityPub.Audience do
{to, cc} = {to, cc} =
{to, {to,
Enum.uniq( Enum.uniq(
cc ++ add_comments_authors(event.comments) ++ add_shares_actors_followers(event.url) cc ++
add_comments_authors(event.comments) ++
add_shares_actors_followers(event.url) ++ add_event_contacts(event)
)} )}
%{"to" => to, "cc" => cc} %{"to" => to, "cc" => cc}

View File

@ -13,7 +13,7 @@ defmodule Mobilizon.Federation.ActivityPub.Fetcher do
alias Mobilizon.Service.HTTP.ActivityPub, as: ActivityPubClient alias Mobilizon.Service.HTTP.ActivityPub, as: ActivityPubClient
import Mobilizon.Federation.ActivityPub.Utils, import Mobilizon.Federation.ActivityPub.Utils,
only: [maybe_date_fetch: 2, sign_fetch: 4, origin_check?: 2] only: [maybe_date_fetch: 2, sign_fetch: 5, origin_check?: 2]
import Mobilizon.Service.Guards, only: [is_valid_string: 1] import Mobilizon.Service.Guards, only: [is_valid_string: 1]
@ -28,7 +28,7 @@ defmodule Mobilizon.Federation.ActivityPub.Fetcher do
headers = headers =
[{:Accept, "application/activity+json"}] [{:Accept, "application/activity+json"}]
|> maybe_date_fetch(date) |> maybe_date_fetch(date)
|> sign_fetch(on_behalf_of, url, date) |> sign_fetch(on_behalf_of, url, date, options)
client = ActivityPubClient.client(headers: headers) client = ActivityPubClient.client(headers: headers)

View File

@ -36,6 +36,8 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do
end end
def refresh_profile(%Actor{type: type, url: url}) when type in [:Person, :Application] do def refresh_profile(%Actor{type: type, url: url}) when type in [:Person, :Application] do
Logger.debug("Refreshing profile #{url}")
case ActivityPubActor.make_actor_from_url(url) do case ActivityPubActor.make_actor_from_url(url) do
{:error, error} -> {:error, error} ->
{:error, error} {:error, error}
@ -52,6 +54,8 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do
@spec fetch_group(String.t(), Actor.t()) :: :ok | {:error, fetch_actor_errors} @spec fetch_group(String.t(), Actor.t()) :: :ok | {:error, fetch_actor_errors}
def fetch_group(group_url, %Actor{} = on_behalf_of) do def fetch_group(group_url, %Actor{} = on_behalf_of) do
Logger.debug("Fetching group #{group_url}")
case ActivityPubActor.make_actor_from_url(group_url, on_behalf_of: on_behalf_of) do case ActivityPubActor.make_actor_from_url(group_url, on_behalf_of: on_behalf_of) do
{:error, err} {:error, err}
when err in [:actor_deleted, :http_error, :json_decode_error, :actor_is_local] -> when err in [:actor_deleted, :http_error, :json_decode_error, :actor_is_local] ->

View File

@ -98,6 +98,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Actors do
"actor" => actor_url, "actor" => actor_url,
"object" => %{ "object" => %{
"type" => "Tombstone", "type" => "Tombstone",
"formerType" => to_string(type),
"deleted" => DateTime.utc_now(),
"id" => target_actor_url "id" => target_actor_url
}, },
"id" => target_actor_url <> "/delete", "id" => target_actor_url <> "/delete",

View File

@ -84,6 +84,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Comments do
"actor" => actor.url, "actor" => actor.url,
"object" => %{ "object" => %{
"type" => "Tombstone", "type" => "Tombstone",
"formerType" => "Note",
"deleted" => DateTime.utc_now(),
"id" => url "id" => url
}, },
"id" => url <> "/delete", "id" => url <> "/delete",

View File

@ -117,6 +117,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Discussions do
"actor" => actor.url, "actor" => actor.url,
"object" => %{ "object" => %{
"type" => "Tombstone", "type" => "Tombstone",
"formerType" => "Note",
"deleted" => DateTime.utc_now(),
"url" => url "url" => url
}, },
"id" => url <> "/delete", "id" => url <> "/delete",

View File

@ -84,6 +84,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Events do
"actor" => actor.url, "actor" => actor.url,
"object" => %{ "object" => %{
"type" => "Tombstone", "type" => "Tombstone",
"formerType" => "Event",
"deleted" => DateTime.utc_now(),
"id" => url "id" => url
}, },
"to" => [actor.url <> "/followers", "https://www.w3.org/ns/activitystreams#Public"], "to" => [actor.url <> "/followers", "https://www.w3.org/ns/activitystreams#Public"],
@ -231,6 +233,7 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Events do
Mobilizon.Events.get_default_participant_role(event) == :not_approved && Mobilizon.Events.get_default_participant_role(event) == :not_approved &&
role == :not_approved -> role == :not_approved ->
Logger.debug("Scheduling a notification to notify of a new pending participation")
Scheduler.pending_participation_notification(event) Scheduler.pending_participation_notification(event)
{:ok, activity_data, participant} {:ok, activity_data, participant}

View File

@ -79,6 +79,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Posts do
"type" => "Delete", "type" => "Delete",
"object" => %{ "object" => %{
"type" => "Tombstone", "type" => "Tombstone",
"formerType" => "Article",
"deleted" => DateTime.utc_now(),
"id" => url "id" => url
}, },
"id" => url <> "/delete", "id" => url <> "/delete",

View File

@ -150,7 +150,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Resources do
@spec delete(Resource.t(), Actor.t(), boolean, map()) :: @spec delete(Resource.t(), Actor.t(), boolean, map()) ::
{:ok, ActivityStream.t(), Actor.t(), Resource.t()} | {:error, Ecto.Changeset.t()} {:ok, ActivityStream.t(), Actor.t(), Resource.t()} | {:error, Ecto.Changeset.t()}
def delete( def delete(
%Resource{url: url, actor: %Actor{url: group_url, members_url: members_url}} = resource, %Resource{url: url, type: type, actor: %Actor{url: group_url, members_url: members_url}} =
resource,
%Actor{url: actor_url} = actor, %Actor{url: actor_url} = actor,
_local, _local,
_additionnal _additionnal
@ -163,6 +164,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Resources do
"type" => "Delete", "type" => "Delete",
"object" => %{ "object" => %{
"type" => "Tombstone", "type" => "Tombstone",
"formerType" => if(type == :folder, do: "ResourceCollection", else: "Document"),
"deleted" => DateTime.utc_now(),
"id" => url "id" => url
}, },
"id" => url <> "/delete", "id" => url <> "/delete",

View File

@ -57,6 +57,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.TodoLists do
"type" => "Delete", "type" => "Delete",
"object" => %{ "object" => %{
"type" => "Tombstone", "type" => "Tombstone",
"formerType" => "TodoList",
"deleted" => DateTime.utc_now(),
"id" => url "id" => url
}, },
"id" => url <> "/delete", "id" => url <> "/delete",

View File

@ -97,6 +97,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Todos do
"type" => "Delete", "type" => "Delete",
"object" => %{ "object" => %{
"type" => "Tombstone", "type" => "Tombstone",
"formerType" => "Todo",
"deleted" => DateTime.utc_now(),
"id" => url "id" => url
}, },
"id" => "#{url}/delete", "id" => "#{url}/delete",

View File

@ -650,9 +650,10 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do
@doc """ @doc """
Sign a request with an actor. Sign a request with an actor.
""" """
@spec sign_fetch(Enum.t(), Actor.t(), String.t(), String.t()) :: Enum.t() @spec sign_fetch(Enum.t(), Actor.t(), String.t(), String.t(), Keyword.t()) :: Enum.t()
def sign_fetch(headers, actor, id, date) do def sign_fetch(headers, actor, id, date, options \\ []) do
if Mobilizon.Config.get([:activitypub, :sign_object_fetches]) do if Mobilizon.Config.get([:activitypub, :sign_object_fetches]) and
Keyword.get(options, :ignore_sign_object_fetches, false) == false do
headers ++ make_signature(actor, id, date) headers ++ make_signature(actor, id, date)
else else
headers headers

View File

@ -149,6 +149,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Actor do
name <- name || Parser.get_filename_from_response(response_headers, url) || default_name, name <- name || Parser.get_filename_from_response(response_headers, url) || default_name,
{:ok, file} <- Upload.store(%{body: body, name: name}) do {:ok, file} <- Upload.store(%{body: body, name: name}) do
Map.take(file, [:content_type, :name, :url, :size]) Map.take(file, [:content_type, :name, :url, :size])
else
_ -> nil
end end
end end
@ -160,7 +162,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Actor do
@spec maybe_add_avatar_picture(map(), ActorModel.t()) :: map() @spec maybe_add_avatar_picture(map(), ActorModel.t()) :: map()
defp maybe_add_avatar_picture(actor_data, %ActorModel{avatar: %File{} = avatar}) do defp maybe_add_avatar_picture(actor_data, %ActorModel{avatar: %File{} = avatar}) do
Map.put(actor_data, "image", %{ Map.put(actor_data, "icon", %{
"type" => "Image", "type" => "Image",
"mediaType" => avatar.content_type, "mediaType" => avatar.content_type,
"url" => avatar.url "url" => avatar.url

View File

@ -18,6 +18,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do
alias Mobilizon.Service.TimezoneDetector alias Mobilizon.Service.TimezoneDetector
alias Mobilizon.Web.Endpoint alias Mobilizon.Web.Endpoint
import Mobilizon.Federation.ActivityPub.Utils, only: [get_url: 1]
import Mobilizon.Federation.ActivityStream.Converter.Utils, import Mobilizon.Federation.ActivityStream.Converter.Utils,
only: [ only: [
fetch_tags: 1, fetch_tags: 1,
@ -25,7 +27,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do
build_tags: 1, build_tags: 1,
maybe_fetch_actor_and_attributed_to_id: 1, maybe_fetch_actor_and_attributed_to_id: 1,
process_pictures: 2, process_pictures: 2,
get_address: 1 get_address: 1,
fetch_actor: 1
] ]
require Logger require Logger
@ -56,6 +59,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do
visibility = get_visibility(object) visibility = get_visibility(object)
options = get_options(object, address) options = get_options(object, address)
metadata = get_metdata(object) metadata = get_metdata(object)
contacts = get_contacts(object)
[description: description, picture_id: picture_id, medias: medias] = [description: description, picture_id: picture_id, medias: medias] =
process_pictures(object, actor_id) process_pictures(object, actor_id)
@ -72,7 +76,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do
category: object["category"], category: object["category"],
visibility: visibility, visibility: visibility,
join_options: Map.get(object, "joinMode", "free"), join_options: Map.get(object, "joinMode", "free"),
local: is_local(object["id"]), local: is_local?(object["id"]),
options: options, options: options,
metadata: metadata, metadata: metadata,
status: object |> Map.get("ical:status", "CONFIRMED") |> String.downcase(), status: object |> Map.get("ical:status", "CONFIRMED") |> String.downcase(),
@ -86,7 +90,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do
physical_address_id: if(address, do: address.id, else: nil), physical_address_id: if(address, do: address.id, else: nil),
updated_at: object["updated"], updated_at: object["updated"],
publish_at: object["published"], publish_at: object["published"],
language: object["inLanguage"] language: object["inLanguage"],
contacts: contacts
} }
{:error, err} -> {:error, err} ->
@ -133,7 +138,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do
"id" => event.url, "id" => event.url,
"url" => event.url, "url" => event.url,
"inLanguage" => event.language, "inLanguage" => event.language,
"timezone" => event.options.timezone "timezone" => event.options.timezone,
"contacts" => Enum.map(event.contacts, & &1.url)
} }
|> maybe_add_physical_address(event) |> maybe_add_physical_address(event)
|> maybe_add_event_picture(event) |> maybe_add_event_picture(event)
@ -281,9 +287,25 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do
) )
end end
defp is_local(url) do @spec is_local?(String.t()) :: boolean()
defp is_local?(url) do
%URI{host: url_domain} = URI.parse(url) %URI{host: url_domain} = URI.parse(url)
%URI{host: local_domain} = URI.parse(Endpoint.url()) %URI{host: local_domain} = URI.parse(Endpoint.url())
url_domain == local_domain url_domain == local_domain
end end
@spec get_contacts(map()) :: list(Actor.t())
defp get_contacts(object) do
object
|> Map.get("contacts", [])
|> Enum.map(&get_contact/1)
|> Enum.filter(&match?({:ok, _}, &1))
|> Enum.map(fn {:ok, contact} -> contact end)
end
defp get_contact(contact) do
contact
|> get_url()
|> fetch_actor()
end
end end

View File

@ -179,7 +179,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Utils do
def maybe_fetch_actor_and_attributed_to_id(_), do: {:error, :no_actor_found} def maybe_fetch_actor_and_attributed_to_id(_), do: {:error, :no_actor_found}
@spec fetch_actor(String.t()) :: {:ok, Actor.t()} | {:error, atom()} @spec fetch_actor(String.t()) :: {:ok, Actor.t()} | {:error, atom()}
defp fetch_actor(actor_url) do def fetch_actor(actor_url) do
case ActivityPubActor.get_or_fetch_actor_by_url(actor_url) do case ActivityPubActor.get_or_fetch_actor_by_url(actor_url) do
{:ok, %Actor{suspended: false} = actor} -> {:ok, %Actor{suspended: false} = actor} ->
{:ok, actor} {:ok, actor}

View File

@ -10,10 +10,9 @@ defmodule Mobilizon.Federation.HTTPSignatures.Signature do
@behaviour HTTPSignatures.Adapter @behaviour HTTPSignatures.Adapter
alias Mobilizon.Actors
alias Mobilizon.Actors.Actor alias Mobilizon.Actors.Actor
alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Service.ErrorReporting.Sentry
require Logger require Logger
@ -52,36 +51,37 @@ defmodule Mobilizon.Federation.HTTPSignatures.Signature do
# Gets a public key for a given ActivityPub actor ID (url). # Gets a public key for a given ActivityPub actor ID (url).
@spec get_public_key_for_url(String.t()) :: @spec get_public_key_for_url(String.t()) ::
{:ok, String.t()} {:ok, String.t()}
| {:error, :actor_fetch_error | :pem_decode_error | :actor_not_fetchable} | {:error, :actor_not_found | :pem_decode_error}
defp get_public_key_for_url(url) do defp get_public_key_for_url(url) do
case ActivityPubActor.get_or_fetch_actor_by_url(url) do case Actors.get_actor_by_url(url) do
{:ok, %Actor{keys: keys}} -> {:ok, %Actor{} = actor} ->
case prepare_public_key(keys) do get_actor_public_key(actor)
{:ok, public_key} ->
{:ok, public_key}
{:error, :pem_decode_error} -> {:error, :actor_not_found} ->
Logger.error("Error while decoding PEM") Logger.info(
"Unable to get actor from URL from local database, returning empty keys to trigger refreshment"
{:error, :pem_decode_error}
end
{:error, err} ->
Sentry.capture_message("Unable to fetch actor, so no keys for you",
extra: %{url: url}
) )
Logger.error("Unable to fetch actor, so no keys for you") {:ok, ""}
Logger.error(inspect(err)) end
end
{:error, :actor_fetch_error} @spec get_actor_public_key(Actor.t()) :: {:ok, String.t()} | {:error, :pem_decode_error}
defp get_actor_public_key(%Actor{keys: keys}) do
case prepare_public_key(keys) do
{:ok, public_key} ->
{:ok, public_key}
{:error, :pem_decode_error} ->
Logger.error("Error while decoding PEM")
{:error, :pem_decode_error}
end end
end end
@spec fetch_public_key(Plug.Conn.t()) :: @spec fetch_public_key(Plug.Conn.t()) ::
{:ok, String.t()} {:ok, String.t()}
| {:error, | {:error, :actor_not_found | :pem_decode_error | :no_signature_in_conn}
:actor_fetch_error | :actor_not_fetchable | :pem_decode_error | :no_signature_in_conn}
def fetch_public_key(conn) do def fetch_public_key(conn) do
case HTTPSignatures.signature_for_conn(conn) do case HTTPSignatures.signature_for_conn(conn) do
%{"keyId" => kid} -> %{"keyId" => kid} ->
@ -100,11 +100,12 @@ defmodule Mobilizon.Federation.HTTPSignatures.Signature do
:actor_is_local} :actor_is_local}
def refetch_public_key(conn) do def refetch_public_key(conn) do
%{"keyId" => kid} = HTTPSignatures.signature_for_conn(conn) %{"keyId" => kid} = HTTPSignatures.signature_for_conn(conn)
actor_id = key_id_to_actor_url(kid) actor_url = key_id_to_actor_url(kid)
Logger.debug("Refetching public key for #{actor_id}") Logger.debug("Refetching public key for #{actor_url}")
with {:ok, _actor} <- ActivityPubActor.make_actor_from_url(actor_id) do with {:ok, %Actor{} = actor} <-
get_public_key_for_url(actor_id) ActivityPubActor.make_actor_from_url(actor_url, ignore_sign_object_fetches: true) do
get_actor_public_key(actor)
end end
end end
@ -133,6 +134,8 @@ defmodule Mobilizon.Federation.HTTPSignatures.Signature do
@spec generate_date_header(NaiveDateTime.t()) :: String.t() @spec generate_date_header(NaiveDateTime.t()) :: String.t()
def generate_date_header(%NaiveDateTime{} = date) do def generate_date_header(%NaiveDateTime{} = date) do
# We make sure the format is correct
# TODO: Remove Timex, as this is the only usage (with parsing)
Timex.lformat!(date, "{WDshort}, {0D} {Mshort} {YYYY} {h24}:{m}:{s} GMT", "en") Timex.lformat!(date, "{WDshort}, {0D} {Mshort} {YYYY} {h24}:{m}:{s} GMT", "en")
end end

View File

@ -145,13 +145,17 @@ defmodule Mobilizon.GraphQL.Resolvers.User do
""" """
@spec create_user(any, %{email: String.t()}, any) :: {:ok, User.t()} | {:error, String.t()} @spec create_user(any, %{email: String.t()}, any) :: {:ok, User.t()} | {:error, String.t()}
def create_user(_parent, %{email: email} = args, _resolution) do def create_user(_parent, %{email: email} = args, _resolution) do
with :registration_ok <- check_registration_config(email), with {:ok, email} <- lowercase_domain(email),
:registration_ok <- check_registration_config(email),
:not_deny_listed <- check_registration_denylist(email), :not_deny_listed <- check_registration_denylist(email),
{:ok, %User{} = user} <- Users.register(args), {:ok, %User{} = user} <- Users.register(%{args | email: email}),
%Bamboo.Email{} <- %Bamboo.Email{} <-
Email.User.send_confirmation_email(user, Map.get(args, :locale, "en")) do Email.User.send_confirmation_email(user, Map.get(args, :locale, "en")) do
{:ok, user} {:ok, user}
else else
{:error, :invalid_email} ->
{:error, dgettext("errors", "Your email seems to be using an invalid format")}
:registration_closed -> :registration_closed ->
{:error, dgettext("errors", "Registrations are not open")} {:error, dgettext("errors", "Registrations are not open")}
@ -190,24 +194,40 @@ defmodule Mobilizon.GraphQL.Resolvers.User do
# Remove everything behind the + # Remove everything behind the +
email = String.replace(email, ~r/(\+.*)(?=\@)/, "") email = String.replace(email, ~r/(\+.*)(?=\@)/, "")
if email_in_list(email, Config.instance_registrations_denylist()), if email_in_list?(email, Config.instance_registrations_denylist()),
do: :deny_listed, do: :deny_listed,
else: :not_deny_listed else: :not_deny_listed
end end
@spec check_allow_listed_email(String.t()) :: :registration_ok | :not_allowlisted @spec check_allow_listed_email(String.t()) :: :registration_ok | :not_allowlisted
defp check_allow_listed_email(email) do defp check_allow_listed_email(email) do
if email_in_list(email, Config.instance_registrations_allowlist()), if email_in_list?(email, Config.instance_registrations_allowlist()),
do: :registration_ok, do: :registration_ok,
else: :not_allowlisted else: :not_allowlisted
end end
defp email_in_list(email, list) do @spec email_in_list?(String.t(), list(String.t())) :: boolean()
[_, domain] = String.split(email, "@", parts: 2, trim: true) defp email_in_list?(email, list) do
[_, domain] = split_email(email)
domain in list or email in list domain in list or email in list
end end
# Domains should always be lower-case, so let's force that
@spec lowercase_domain(String.t()) :: {:ok, String.t()} | {:error, :invalid_email}
defp lowercase_domain(email) do
case split_email(email) do
[user_part, domain_part] ->
{:ok, "#{user_part}@#{String.downcase(domain_part)}"}
_ ->
{:error, :invalid_email}
end
end
@spec split_email(String.t()) :: list(String.t())
defp split_email(email), do: String.split(email, "@", parts: 2, trim: true)
@doc """ @doc """
Validate an user, get its actor and a token Validate an user, get its actor and a token
""" """

View File

@ -261,11 +261,6 @@ defmodule Mobilizon.Actors do
data, data,
preload \\ false preload \\ false
) do ) do
# data =
# data
# |> Map.put(:avatar, transform_media_file(data.avatar))
# |> Map.put(:banner, transform_media_file(data.banner))
insert = insert =
data data
|> Actor.remote_actor_creation_changeset() |> Actor.remote_actor_creation_changeset()

View File

@ -64,7 +64,8 @@ defmodule Mobilizon.Events.Event do
tags: [Tag.t()], tags: [Tag.t()],
participants: [Actor.t()], participants: [Actor.t()],
contacts: [Actor.t()], contacts: [Actor.t()],
language: String.t() language: String.t(),
metadata: [EventMetadata.t()]
} }
@update_required_attrs [:title, :begins_on, :organizer_actor_id] @update_required_attrs [:title, :begins_on, :organizer_actor_id]

View File

@ -19,7 +19,6 @@ defmodule Mobilizon.Events do
alias Mobilizon.Events.{ alias Mobilizon.Events.{
Event, Event,
EventOptions,
EventParticipantStats, EventParticipantStats,
FeedToken, FeedToken,
Participant, Participant,
@ -328,38 +327,29 @@ defmodule Mobilizon.Events do
@spec build_changes(map()) :: map() @spec build_changes(map()) :: map()
defp build_changes(changes) do defp build_changes(changes) do
changes changes
|> Map.take(Event.__schema__(:fields)) |> maybe_add_field(:physical_address)
|> maybe_add_address(changes) |> maybe_add_field(:options)
|> maybe_add_options(changes) |> maybe_add_field(:metadata)
|> Map.drop(Event.__schema__(:associations) -- [:physical_address, :options, :metadata])
end end
@spec maybe_add_address(map(), map()) :: map() @spec maybe_add_field(map(), atom()) :: map()
defp maybe_add_address(changes, %{physical_address: %Ecto.Changeset{} = changeset}), defp maybe_add_field(changes, field) do
do: case Map.get(changes, field) do
Map.put( %Ecto.Changeset{} = changeset ->
changes, Map.put(
:physical_address, changes,
changeset field,
|> Ecto.Changeset.apply_changes() changeset
|> Map.from_struct() |> Ecto.Changeset.apply_changes()
|> Map.take(Address.__schema__(:fields)) |> Map.from_struct()
) |> Map.take(Address.__schema__(:fields))
)
defp maybe_add_address(changes, _), do: Map.drop(changes, [:physical_address]) _ ->
Map.drop(changes, [field])
@spec maybe_add_options(map(), map()) :: map() end
defp maybe_add_options(changes, %{options: %Ecto.Changeset{} = changeset}), end
do:
Map.put(
changes,
:options,
changeset
|> Ecto.Changeset.apply_changes()
|> Map.from_struct()
|> Map.take(EventOptions.__schema__(:fields))
)
defp maybe_add_options(changes, _), do: Map.drop(changes, [:options])
@doc """ @doc """
Deletes an event. Deletes an event.

View File

@ -29,7 +29,7 @@ defmodule Mobilizon.Service.Metadata.Utils do
* Slices it to a limit and add an ellipsis character * Slices it to a limit and add an ellipsis character
* Returns a default description if text is empty * Returns a default description if text is empty
""" """
@spec process_description(String.t(), String.t(), integer()) :: String.t() @spec process_description(String.t(), String.t(), integer() | nil) :: String.t()
def process_description(description, locale \\ "en", limit \\ @slice_limit) def process_description(description, locale \\ "en", limit \\ @slice_limit)
def process_description(nil, locale, limit), do: process_description("", locale, limit) def process_description(nil, locale, limit), do: process_description("", locale, limit)
@ -56,6 +56,8 @@ defmodule Mobilizon.Service.Metadata.Utils do
defdelegate datetime_to_string(datetime, locale \\ "en", format \\ :medium), to: DateTime defdelegate datetime_to_string(datetime, locale \\ "en", format \\ :medium), to: DateTime
defdelegate render_address(address), to: Address defdelegate render_address(address), to: Address
defp maybe_slice(description, nil), do: description
defp maybe_slice(description, limit) do defp maybe_slice(description, limit) do
if String.length(description) > limit do if String.length(description) > limit do
description description

View File

@ -182,20 +182,39 @@ defmodule Mobilizon.Service.Notifications.Scheduler do
event_id: event_id event_id: event_id
} }
Logger.debug("Determining when we should send the pending participation notification")
cond do cond do
# Sending directly # Sending directly
send_at == :direct -> send_at == :direct ->
Notification.enqueue(:pending_participation_notification, params) Logger.debug("The notification will be sent straight away!")
{:ok, %Oban.Job{id: job_id}} =
Notification.enqueue(:pending_participation_notification, params)
Logger.debug("Job scheduled with ID #{job_id}")
# Not sending # Not sending
is_nil(send_at) -> is_nil(send_at) ->
Logger.debug("We will not send any notification")
{:ok, nil} {:ok, nil}
# Sending to calculated time # Sending to calculated time
DateTime.compare(begins_on, send_at) == :gt -> DateTime.compare(begins_on, send_at) == :gt ->
Notification.enqueue(:pending_participation_notification, params, scheduled_at: send_at) Logger.debug("We will send the notification on #{send_at}")
{:ok, %Oban.Job{id: job_id}} =
Notification.enqueue(:pending_participation_notification, params,
scheduled_at: send_at
)
Logger.debug("Job scheduled with ID #{job_id}")
true -> true ->
Logger.debug(
"Something went wrong when determining when to send the pending participation notification"
)
{:ok, nil} {:ok, nil}
end end
else else
@ -302,6 +321,7 @@ defmodule Mobilizon.Service.Notifications.Scheduler do
:one_hour -> :one_hour ->
compare_to compare_to
|> DateTime.add(3600)
|> DateTime.shift_zone!(timezone) |> DateTime.shift_zone!(timezone)
|> (&%{&1 | minute: 0, second: 0, microsecond: {0, 0}}).() |> (&%{&1 | minute: 0, second: 0, microsecond: {0, 0}}).()
end end

View File

@ -9,6 +9,7 @@ defmodule Mobilizon.Service.Workers.Notification do
alias Mobilizon.Storage.Page alias Mobilizon.Storage.Page
alias Mobilizon.Users.{Setting, User} alias Mobilizon.Users.{Setting, User}
alias Mobilizon.Web.Email.{Mailer, Notification} alias Mobilizon.Web.Email.{Mailer, Notification}
require Logger
import Mobilizon.Service.DateTime, import Mobilizon.Service.DateTime,
only: [ only: [
@ -114,7 +115,7 @@ defmodule Mobilizon.Service.Workers.Notification do
"event_id" => event_id "event_id" => event_id
} }
}) do }) do
with %User{} = user <- Users.get_user(user_id), with %User{} = user <- Users.get_user_with_settings!(user_id),
{:ok, %Event{} = event} <- Events.get_event_with_preload(event_id), {:ok, %Event{} = event} <- Events.get_event_with_preload(event_id),
%Page{total: total} when total > 0 <- %Page{total: total} when total > 0 <-
Events.list_participants_for_event(event_id, [:not_approved]) do Events.list_participants_for_event(event_id, [:not_approved]) do
@ -125,8 +126,8 @@ defmodule Mobilizon.Service.Workers.Notification do
:ok :ok
else else
err -> err ->
require Logger
Logger.debug(inspect(err)) Logger.debug(inspect(err))
err
end end
end end

View File

@ -91,6 +91,8 @@ defmodule Mobilizon.Web.Email.Event do
&send_notification_for_event_update_to_participant(&1, old_event, event, diff) &send_notification_for_event_update_to_participant(&1, old_event, event, diff)
) )
end) end)
else
{:ok, :ok}
end end
end end

View File

@ -92,7 +92,7 @@ defmodule Mobilizon.Web.Email.Notification do
@spec pending_participation_notification(User.t(), Event.t(), pos_integer()) :: Bamboo.Email.t() @spec pending_participation_notification(User.t(), Event.t(), pos_integer()) :: Bamboo.Email.t()
def pending_participation_notification( def pending_participation_notification(
%User{locale: locale, email: email}, %User{locale: locale, email: email, settings: %Setting{timezone: timezone}},
%Event{} = event, %Event{} = event,
total total
) do ) do
@ -111,6 +111,7 @@ defmodule Mobilizon.Web.Email.Notification do
|> assign(:locale, locale) |> assign(:locale, locale)
|> assign(:event, event) |> assign(:event, event)
|> assign(:total, total) |> assign(:total, total)
|> assign(:timezone, timezone)
|> assign(:subject, subject) |> assign(:subject, subject)
|> render(:pending_participation_notification) |> render(:pending_participation_notification)
end end

View File

@ -36,14 +36,7 @@ defmodule Mobilizon.Web.Plugs.HTTPSignatures do
"(request-target)", "(request-target)",
String.downcase("#{conn.method}") <> " #{conn.request_path}" String.downcase("#{conn.method}") <> " #{conn.request_path}"
) )
|> maybe_put_digest_header()
conn =
if conn.assigns[:digest] do
conn
|> put_req_header("digest", conn.assigns[:digest])
else
conn
end
signature_valid = HTTPSignatures.validate_conn(conn) signature_valid = HTTPSignatures.validate_conn(conn)
Logger.debug("Is signature valid ? #{inspect(signature_valid)}") Logger.debug("Is signature valid ? #{inspect(signature_valid)}")
@ -53,6 +46,11 @@ defmodule Mobilizon.Web.Plugs.HTTPSignatures do
end end
end end
defp maybe_put_digest_header(%Plug.Conn{assigns: %{digest: digest}} = conn),
do: put_req_header(conn, "digest", digest)
defp maybe_put_digest_header(%Plug.Conn{} = conn), do: conn
@spec date_valid?(Plug.Conn.t()) :: boolean() @spec date_valid?(Plug.Conn.t()) :: boolean()
defp date_valid?(conn) do defp date_valid?(conn) do
date = conn |> get_req_header("date") |> List.first() date = conn |> get_req_header("date") |> List.first()

View File

@ -11,7 +11,6 @@ defmodule Mobilizon.Web.Plugs.MappedSignatureToIdentity do
import Plug.Conn import Plug.Conn
alias Mobilizon.Actors.Actor alias Mobilizon.Actors.Actor
alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Federation.ActivityPub.Utils alias Mobilizon.Federation.ActivityPub.Utils
alias Mobilizon.Federation.HTTPSignatures.Signature alias Mobilizon.Federation.HTTPSignatures.Signature
@ -32,14 +31,20 @@ defmodule Mobilizon.Web.Plugs.MappedSignatureToIdentity do
end end
end end
@spec actor_from_key_id(Plug.Conn.t()) :: Actor.t() | nil @spec actor_from_key_id(Plug.Conn.t()) ::
{:ok, Actor.t()} | {:error, :actor_not_found | :no_key_in_conn}
defp actor_from_key_id(conn) do defp actor_from_key_id(conn) do
with key_actor_id when is_binary(key_actor_id) <- key_id_from_conn(conn), Logger.debug("Determining actor from connection signature")
{:ok, %Actor{} = actor} <- ActivityPubActor.get_or_fetch_actor_by_url(key_actor_id) do
actor case key_id_from_conn(conn) do
else key_actor_id when is_binary(key_actor_id) ->
_ -> # We don't need to call refreshment here since
nil # the Mobilizon.Federation.HTTPSignatures.Signature plug
# should already have refreshed the actor if needed
ActivityPubActor.make_actor_from_url(key_actor_id, ignore_sign_object_fetches: true)
nil ->
{:error, :no_key_in_conn}
end end
end end
@ -49,7 +54,7 @@ defmodule Mobilizon.Web.Plugs.MappedSignatureToIdentity do
# if this has payload make sure it is signed by the same actor that made it # if this has payload make sure it is signed by the same actor that made it
def call(%{assigns: %{valid_signature: true}, params: %{"actor" => actor}} = conn, _opts) do def call(%{assigns: %{valid_signature: true}, params: %{"actor" => actor}} = conn, _opts) do
with actor_id when actor_id != nil <- Utils.get_url(actor), with actor_id when actor_id != nil <- Utils.get_url(actor),
{:actor, %Actor{} = actor} <- {:actor, actor_from_key_id(conn)}, {:ok, %Actor{} = actor} <- actor_from_key_id(conn),
{:actor_match, true} <- {:actor_match, actor.url == actor_id} do {:actor_match, true} <- {:actor_match, actor.url == actor_id} do
Logger.debug("Mapped identity to #{actor.url} from actor param") Logger.debug("Mapped identity to #{actor.url} from actor param")
assign(conn, :actor, actor) assign(conn, :actor, actor)
@ -59,8 +64,12 @@ defmodule Mobilizon.Web.Plugs.MappedSignatureToIdentity do
Logger.debug("key_id=#{key_id_from_conn(conn)}, actor=#{actor}") Logger.debug("key_id=#{key_id_from_conn(conn)}, actor=#{actor}")
assign(conn, :valid_signature, false) assign(conn, :valid_signature, false)
{:error, :no_key_in_conn} ->
Logger.debug("There was no key in conn")
conn
# TODO: remove me once testsuite uses mapped capabilities instead of what we do now # TODO: remove me once testsuite uses mapped capabilities instead of what we do now
{:actor, nil} -> {:error, :actor_not_found} ->
Logger.debug("Failed to map identity from signature (lookup failure)") Logger.debug("Failed to map identity from signature (lookup failure)")
Logger.debug("key_id=#{key_id_from_conn(conn)}, actor=#{actor}") Logger.debug("key_id=#{key_id_from_conn(conn)}, actor=#{actor}")
conn conn
@ -70,11 +79,15 @@ defmodule Mobilizon.Web.Plugs.MappedSignatureToIdentity do
# no payload, probably a signed fetch # no payload, probably a signed fetch
def call(%{assigns: %{valid_signature: true}} = conn, _opts) do def call(%{assigns: %{valid_signature: true}} = conn, _opts) do
case actor_from_key_id(conn) do case actor_from_key_id(conn) do
%Actor{} = actor -> {:ok, %Actor{} = actor} ->
Logger.debug("Mapped identity to #{actor.url} from signed fetch") Logger.debug("Mapped identity to #{actor.url} from signed fetch")
assign(conn, :actor, actor) assign(conn, :actor, actor)
_ -> {:error, :no_key_in_conn} ->
Logger.debug("There was no key in conn")
assign(conn, :valid_signature, false)
{:error, :actor_not_found} ->
Logger.debug("Failed to map identity from signature (no payload actor mismatch)") Logger.debug("Failed to map identity from signature (no payload actor mismatch)")
Logger.debug("key_id=#{key_id_from_conn(conn)}") Logger.debug("key_id=#{key_id_from_conn(conn)}")
assign(conn, :valid_signature, false) assign(conn, :valid_signature, false)

View File

@ -16,7 +16,7 @@
<tbody style="vertical-align: baseline; margin: 0; padding: 0; border: 0;"> <tbody style="vertical-align: baseline; margin: 0; padding: 0; border: 0;">
<!-- row for datetime --> <!-- row for datetime -->
<tr style="vertical-align: baseline; margin: 0; padding: 0; border: 0;" align="left"> <tr style="vertical-align: baseline; margin: 0; padding: 0; border: 0;" align="left">
<td style="word-wrap: break-word; border-collapse: collapse; color: rgb(10,10,10); font-family: Helvetica,Arial,sans-serif; font-weight: normal; line-height: 1.3; font-size: 16px; margin: 0; padding: 0 12px 12px 0; border: 0;" valign="baseline" align="left"> <td style="word-wrap: break-word; border-collapse: collapse; color: rgb(10,10,10); font-family: Helvetica,Arial,sans-serif; font-weight: normal; line-height: 1.3; font-size: 16px; margin: 0; padding: 0 12px 0 0; border: 0;" valign="baseline" align="left">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAABgAAAAYADwa0LPAAAAf0lEQVRIx2NgGEDwH4opUsdEa1eiW+DNwMDwBM1F/wlgZHWPGRgYPPFZ+JgIAwnhR8gGMmIJT2oAuLl0jwOqAxZCXiQRYATx0A+iAYsDfABbUsYZZ0M/iIa+BeREMkmZkO5B9ARKk1tUMzBAinycwJOBsjrhEQMDgwetQ2WYAQCSDEUsvZlgYAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMS0xMC0xNFQxNDo1MTowNyswMDowMCvAzKIAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjEtMTAtMTRUMTQ6NTE6MDcrMDA6MDBanXQeAAAAAElFTkSuQmCC" style="outline: none; text-decoration: none; width: 21px; max-width: 100%; clear: both; display: block; vertical-align: baseline; margin: 0; padding: 0; border: 0;"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAABgAAAAYADwa0LPAAAAf0lEQVRIx2NgGEDwH4opUsdEa1eiW+DNwMDwBM1F/wlgZHWPGRgYPPFZ+JgIAwnhR8gGMmIJT2oAuLl0jwOqAxZCXiQRYATx0A+iAYsDfABbUsYZZ0M/iIa+BeREMkmZkO5B9ARKk1tUMzBAinycwJOBsjrhEQMDgwetQ2WYAQCSDEUsvZlgYAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMS0xMC0xNFQxNDo1MTowNyswMDowMCvAzKIAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjEtMTAtMTRUMTQ6NTE6MDcrMDA6MDBanXQeAAAAAElFTkSuQmCC" style="outline: none; text-decoration: none; width: 21px; max-width: 100%; clear: both; display: block; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
</td> </td>
<td style="word-wrap: break-word; border-collapse: collapse; color: rgb(10,10,10); font-family: Helvetica,Arial,sans-serif; font-weight: normal; line-height: 1.3; font-size: 16px; margin: 0; padding: 0 0 12px; border: 0;" valign="top" align="left"> <td style="word-wrap: break-word; border-collapse: collapse; color: rgb(10,10,10); font-family: Helvetica,Arial,sans-serif; font-weight: normal; line-height: 1.3; font-size: 16px; margin: 0; padding: 0 0 12px; border: 0;" valign="top" align="left">
@ -29,7 +29,7 @@
<%= if @event.physical_address do %> <%= if @event.physical_address do %>
<!-- venue block --> <!-- venue block -->
<tr style="vertical-align: baseline; margin: 0; padding: 0; border: 0;" align="left"> <tr style="vertical-align: baseline; margin: 0; padding: 0; border: 0;" align="left">
<td style="word-wrap: break-word; border-collapse: collapse; color: rgb(10,10,10); font-family: Helvetica,Arial,sans-serif; font-weight: normal; line-height: 1.3; font-size: 16px; margin: 0; padding: 0 12px 12px 0; border: 0;" valign="baseline" align="left"> <td style="word-wrap: break-word; border-collapse: collapse; color: rgb(10,10,10); font-family: Helvetica,Arial,sans-serif; font-weight: normal; line-height: 1.3; font-size: 16px; margin: 0; padding: 0 12px 0 0; border: 0;" valign="baseline" align="left">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAABgAAAAYADwa0LPAAABHklEQVRIx+XUsUoDQRQF0EMUtNPGYGsULMTeNuonqJ8SsNZ/kLSW/kEaLQykMvoJNoKdGkWCQrTYDS6b3c1O1i4XbjHz3rt35u2+YR5Qxznu8RGzj7M4VgnHGOAnhwMcVREfFYiPOZrFpD7l5Gm+YS1LaCHH4BSHqb1XXOIOW1hOxJYwxE3ZGzykTviCjUS8ERsmc/ohLXpPFV9k5LRNfvAJ1HIMvkrk1abUFKKX0aJGIr6Z0aJeltBijsEt9hLrVVGPr+L1CVYyakpjR/lfdMzdEAPoBoh3Q8XhIMBgfxYD6JQQ78wqTjSxnwXiQ2xXMYBWgUGrqjjRQGW16lr+WxaMOp4S4s9Y/y/xMZr4jtksWxRyxUfRk9HxN9FzgF/m1ZTuGrd6hAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMS0xMC0xNFQxNDo1Mjo0NyswMDowMES9eVsAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjEtMTAtMTRUMTQ6NTI6NDcrMDA6MDA14MHnAAAAAElFTkSuQmCC" style="outline: none; text-decoration: none; width: 21px; max-width: 100%; clear: both; display: block; vertical-align: baseline; margin: 0; padding: 0; border: 0;"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAABgAAAAYADwa0LPAAABHklEQVRIx+XUsUoDQRQF0EMUtNPGYGsULMTeNuonqJ8SsNZ/kLSW/kEaLQykMvoJNoKdGkWCQrTYDS6b3c1O1i4XbjHz3rt35u2+YR5Qxznu8RGzj7M4VgnHGOAnhwMcVREfFYiPOZrFpD7l5Gm+YS1LaCHH4BSHqb1XXOIOW1hOxJYwxE3ZGzykTviCjUS8ERsmc/ohLXpPFV9k5LRNfvAJ1HIMvkrk1abUFKKX0aJGIr6Z0aJeltBijsEt9hLrVVGPr+L1CVYyakpjR/lfdMzdEAPoBoh3Q8XhIMBgfxYD6JQQ78wqTjSxnwXiQ2xXMYBWgUGrqjjRQGW16lr+WxaMOp4S4s9Y/y/xMZr4jtksWxRyxUfRk9HxN9FzgF/m1ZTuGrd6hAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMS0xMC0xNFQxNDo1Mjo0NyswMDowMES9eVsAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjEtMTAtMTRUMTQ6NTI6NDcrMDA6MDA14MHnAAAAAElFTkSuQmCC" style="outline: none; text-decoration: none; width: 21px; max-width: 100%; clear: both; display: block; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
</td> </td>
<td class="m_8261046153705514309event__content_local" style="word-wrap: break-word; border-collapse: collapse; color: rgb(10,10,10); font-family: Helvetica,Arial,sans-serif; font-weight: normal; line-height: 1.3; font-size: 16px; margin: 0; padding: 0; border: 0;" valign="top" align="left"> <td class="m_8261046153705514309event__content_local" style="word-wrap: break-word; border-collapse: collapse; color: rgb(10,10,10); font-family: Helvetica,Arial,sans-serif; font-weight: normal; line-height: 1.3; font-size: 16px; margin: 0; padding: 0; border: 0;" valign="top" align="left">
@ -42,7 +42,7 @@
<% end %> <% end %>
<%= if @event.options.is_online do %> <%= if @event.options.is_online do %>
<tr style="vertical-align: baseline; margin: 0; padding: 0; border: 0;" align="left"> <tr style="vertical-align: baseline; margin: 0; padding: 0; border: 0;" align="left">
<td style="word-wrap: break-word; border-collapse: collapse; color: rgb(10,10,10); font-family: Helvetica,Arial,sans-serif; font-weight: normal; line-height: 1.3; font-size: 16px; margin: 0; padding: 0 12px 12px 0; border: 0;" valign="baseline" align="left"> <td style="word-wrap: break-word; border-collapse: collapse; color: rgb(10,10,10); font-family: Helvetica,Arial,sans-serif; font-weight: normal; line-height: 1.3; font-size: 16px; margin: 0; padding: 0 12px 0 0; border: 0;" valign="baseline" align="left">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAABgAAAAYADwa0LPAAABWUlEQVRIx+WUP04CURDGf5pIQsROOAMHsNSgVmpp9AZ6AG1MiA1CsZ6DCxiwMx5BtKNQGs2uLf9aFov9DC8s++ftNiZOMpmdnW/mm8x78+A/SAVoAa/AVNoDmorlknNgDMwjdAyc5Snuq9ADUAM2pftARzE/C0nF6PwmBlcXZgSUbQhaRucABeAe8AAXcPQPoCvsnQ3Bm5Jq8h3C83cUO5DfsyGYKKkk31tB8K3YFosDD8l6BME8wQeYya7FYCIJBrI7su0VmPYSZoCFNNVRR36BYOYu4UN+FLZhQ2Be03oM7laYIbBtQwDB8vwuWpfgtpSkh0bnPnBqW9wkGRH9VAzzFC/KlgmW6IXg+k703TDGUrQtfgK8A7spsHvAh3JSyQbQN8bwBFwAVRaPXRW4BJ4NXF+5iXIdM/MkvUpD4OUgcJeLrdrkGdklVe4x8JWh+0/gKEdzf1R+ADQolKDXzQqjAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTEwLTE1VDEzOjA5OjAzKzAwOjAwbhSTzgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0xMC0xNVQxMzowOTowMyswMDowMB9JK3IAAAAASUVORK5CYII=" style="outline: none; text-decoration: none; width: 21px; max-width: 100%; clear: both; display: block; vertical-align: baseline; margin: 0; padding: 0; border: 0;"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAABgAAAAYADwa0LPAAABWUlEQVRIx+WUP04CURDGf5pIQsROOAMHsNSgVmpp9AZ6AG1MiA1CsZ6DCxiwMx5BtKNQGs2uLf9aFov9DC8s++ftNiZOMpmdnW/mm8x78+A/SAVoAa/AVNoDmorlknNgDMwjdAyc5Snuq9ADUAM2pftARzE/C0nF6PwmBlcXZgSUbQhaRucABeAe8AAXcPQPoCvsnQ3Bm5Jq8h3C83cUO5DfsyGYKKkk31tB8K3YFosDD8l6BME8wQeYya7FYCIJBrI7su0VmPYSZoCFNNVRR36BYOYu4UN+FLZhQ2Be03oM7laYIbBtQwDB8vwuWpfgtpSkh0bnPnBqW9wkGRH9VAzzFC/KlgmW6IXg+k703TDGUrQtfgK8A7spsHvAh3JSyQbQN8bwBFwAVRaPXRW4BJ4NXF+5iXIdM/MkvUpD4OUgcJeLrdrkGdklVe4x8JWh+0/gKEdzf1R+ADQolKDXzQqjAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTEwLTE1VDEzOjA5OjAzKzAwOjAwbhSTzgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0xMC0xNVQxMzowOTowMyswMDowMB9JK3IAAAAASUVORK5CYII=" style="outline: none; text-decoration: none; width: 21px; max-width: 100%; clear: both; display: block; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
</td> </td>
<td class="m_8261046153705514309event__content_local" style="word-wrap: break-word; border-collapse: collapse; color: rgb(10,10,10); font-family: Helvetica,Arial,sans-serif; font-weight: normal; line-height: 1.3; font-size: 16px; margin: 0; padding: 0; border: 0;" valign="top" align="left"> <td class="m_8261046153705514309event__content_local" style="word-wrap: break-word; border-collapse: collapse; color: rgb(10,10,10); font-family: Helvetica,Arial,sans-serif; font-weight: normal; line-height: 1.3; font-size: 16px; margin: 0; padding: 0; border: 0;" valign="top" align="left">
@ -55,52 +55,6 @@
</tbody> </tbody>
</table> </table>
</div> </div>
<%= case @action do %>
<% "participation" -> %>
<div class="event__content_attend" style="vertical-align: middle; margin: 0; padding: 0; border: 0;">
<table class="button btn-attend event__content_position" style="border-spacing: 0; border-collapse: collapse; vertical-align: baseline; text-align: left; width: auto; margin: 0; padding: 0; border: 0;">
<tbody style="vertical-align: baseline; margin: 0; padding: 0; border: 0;">
<tr style="vertical-align: baseline; margin: 0; padding: 0; border: 0;" align="left">
<td style="word-wrap: break-word; border-collapse: collapse; color: rgb(10,10,10); font-family: Helvetica,Arial,sans-serif; font-weight: normal; line-height: 1.3; font-size: 16px; margin: 0; padding: 0; border: 0;" valign="baseline" align="left">
<table style="border-spacing: 0; border-collapse: collapse; vertical-align: baseline; text-align: left; margin: 0; padding: 0; border: 0;">
<tbody style="vertical-align: baseline; margin: 0; padding: 0; border: 0;">
<tr style="vertical-align: baseline; margin: 0; padding: 0; border: 0;" align="left">
<td style="word-wrap: break-word; border-collapse: collapse; color: rgb(255,255,255); font-family: Helvetica,Arial,sans-serif; font-weight: 500; line-height: 1.3; font-size: 16px; border-radius: 4px; margin: 0; padding: 0px; border: none;" valign="middle" bgcolor="FE3859" align="center">
<a href={Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid)} style="color: rgb(255,255,255); font-family: Helvetica,Arial,sans-serif; font-weight: bold; text-align: left; line-height: 14px; text-decoration: none; vertical-align: baseline; font-size: 16px; display: inline-block; border-radius: 3px; white-space: nowrap; margin: 0; padding: 12px 32px; border: none;" target="_blank">
<%= gettext("Manage your participation") %>
</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
<% "event" -> %>
<div class="event__content_attend" style="vertical-align: middle; margin: 0; padding: 0; border: 0;">
<table class="button btn-attend event__content_position" style="border-spacing: 0; border-collapse: collapse; vertical-align: baseline; text-align: left; width: auto; margin: 0; padding: 0; border: 0;">
<tbody style="vertical-align: baseline; margin: 0; padding: 0; border: 0;">
<tr style="vertical-align: baseline; margin: 0; padding: 0; border: 0;" align="left">
<td style="word-wrap: break-word; border-collapse: collapse; color: rgb(10,10,10); font-family: Helvetica,Arial,sans-serif; font-weight: normal; line-height: 1.3; font-size: 16px; margin: 0; padding: 0; border: 0;" valign="baseline" align="left">
<table style="border-spacing: 0; border-collapse: collapse; vertical-align: baseline; text-align: left; margin: 0; padding: 0; border: 0;">
<tbody style="vertical-align: baseline; margin: 0; padding: 0; border: 0;">
<tr style="vertical-align: baseline; margin: 0; padding: 0; border: 0;" align="left">
<td style="word-wrap: break-word; border-collapse: collapse; color: rgb(255,255,255); font-family: Helvetica,Arial,sans-serif; font-weight: 500; line-height: 1.3; font-size: 16px; border-radius: 4px; margin: 0; padding: 0px; border: none;" valign="middle" bgcolor="FE3859" align="center">
<a href={Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid)} style="color: rgb(255,255,255); font-family: Helvetica,Arial,sans-serif; font-weight: bold; text-align: left; line-height: 14px; text-decoration: none; vertical-align: baseline; font-size: 16px; display: inline-block; border-radius: 3px; white-space: nowrap; margin: 0; padding: 12px 32px; border: none;" target="_blank">
<%= gettext("Participate") %>
</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
<% end %>
</div> </div>
</td> </td>
</tr> </tr>

View File

@ -1,4 +1,2 @@
<%= gettext("Date:") %> <%= render("date/event_tz_date_range.text", event: @event, start_date: datetime_tz_convert(@event.begins_on, @event.options.timezone), end_date: datetime_tz_convert(@event.ends_on, @event.options.timezone), timezone: @timezone, locale: @locale) %> <%= gettext("Date:") %> <%= render("date/event_tz_date_range.text", event: @event, start_date: datetime_tz_convert(@event.begins_on, @event.options.timezone), end_date: datetime_tz_convert(@event.ends_on, @event.options.timezone), timezone: @timezone, locale: @locale) %>
<%= gettext("Address:") %> <%= if @event.physical_address do %><%= render_address(@event.physical_address) %><% end %><%= if @event.options.is_online do %><%= gettext "Online event" %><% end %> <%= gettext("Address:") %> <%= if @event.physical_address do %><%= render_address(@event.physical_address) %><% end %><%= if @event.options.is_online do %><%= gettext "Online event" %><% end %>
<%= case @action do %><% "participation" -> %><%= gettext("Manage your participation:") %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid) %><% "event" -> %><%= gettext("Participate:") %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid) %><% end %>

View File

@ -5,7 +5,54 @@
<% end %> <% end %>
<%= render("participation/card/_title.html", event: @event) %> <%= render("participation/card/_title.html", event: @event) %>
<%= render("participation/card/_metadata.html", event: @event, timezone: @timezone, locale: @locale, action: @action) %> <%= render("participation/card/_metadata.html", event: @event, timezone: @timezone, locale: @locale, action: @action) %>
<%= if @event.description do %> <%= case @action do %>
<% "participation" -> %>
<div class="event__content_attend" style="vertical-align: middle; margin: 0; padding: 0; border: 0;">
<table class="button btn-attend event__content_position" style="border-spacing: 0; border-collapse: collapse; vertical-align: baseline; text-align: left; width: auto; margin: 0; padding: 0; border: 0;">
<tbody style="vertical-align: baseline; margin: 0; padding: 0; border: 0;">
<tr style="vertical-align: baseline; margin: 0; padding: 0; border: 0;" align="left">
<td style="word-wrap: break-word; border-collapse: collapse; color: rgb(10,10,10); font-family: Helvetica,Arial,sans-serif; font-weight: normal; line-height: 1.3; font-size: 16px; margin: 0; padding: 0; border: 0;" valign="baseline" align="left">
<table style="border-spacing: 0; border-collapse: collapse; vertical-align: baseline; text-align: left; margin: 0; padding: 0; border: 0;">
<tbody style="vertical-align: baseline; margin: 0; padding: 0; border: 0;">
<tr style="vertical-align: baseline; margin: 0; padding: 0; border: 0;" align="left">
<td style="word-wrap: break-word; border-collapse: collapse; color: rgb(255,255,255); font-family: Helvetica,Arial,sans-serif; font-weight: 500; line-height: 1.3; font-size: 16px; border-radius: 4px; margin: 0; padding: 0px; border: none;" valign="middle" bgcolor="FE3859" align="center">
<a href={Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid)} style="color: rgb(255,255,255); font-family: Helvetica,Arial,sans-serif; font-weight: bold; text-align: left; line-height: 14px; text-decoration: none; vertical-align: baseline; font-size: 16px; display: inline-block; border-radius: 3px; white-space: nowrap; margin: 0; padding: 12px 32px; border: none;" target="_blank">
<%= gettext("Manage your participation") %>
</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
<% "event" -> %>
<div class="event__content_attend" style="vertical-align: middle; margin: 0; padding: 0; border: 0;">
<table class="button btn-attend event__content_position" style="border-spacing: 0; border-collapse: collapse; vertical-align: baseline; text-align: left; width: auto; margin: 0; padding: 0; border: 0;">
<tbody style="vertical-align: baseline; margin: 0; padding: 0; border: 0;">
<tr style="vertical-align: baseline; margin: 0; padding: 0; border: 0;" align="left">
<td style="word-wrap: break-word; border-collapse: collapse; color: rgb(10,10,10); font-family: Helvetica,Arial,sans-serif; font-weight: normal; line-height: 1.3; font-size: 16px; margin: 0; padding: 0; border: 0;" valign="baseline" align="left">
<table style="border-spacing: 0; border-collapse: collapse; vertical-align: baseline; text-align: left; margin: 0; padding: 0; border: 0;">
<tbody style="vertical-align: baseline; margin: 0; padding: 0; border: 0;">
<tr style="vertical-align: baseline; margin: 0; padding: 0; border: 0;" align="left">
<td style="word-wrap: break-word; border-collapse: collapse; color: rgb(255,255,255); font-family: Helvetica,Arial,sans-serif; font-weight: 500; line-height: 1.3; font-size: 16px; border-radius: 4px; margin: 0; padding: 0px; border: none;" valign="middle" bgcolor="FE3859" align="center">
<a href={Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid)} style="color: rgb(255,255,255); font-family: Helvetica,Arial,sans-serif; font-weight: bold; text-align: left; line-height: 14px; text-decoration: none; vertical-align: baseline; font-size: 16px; display: inline-block; border-radius: 3px; white-space: nowrap; margin: 0; padding: 12px 32px; border: none;" target="_blank">
<%= gettext("Participate") %>
</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
<% nil -> %>
<% end %>
<%= if @event.description && @action != nil do %>
<div class="event-working" style="vertical-align: baseline; margin: 0 0 0 10px; padding: 7.5px 0 15px; border: 0;"> <div class="event-working" style="vertical-align: baseline; margin: 0 0 0 10px; padding: 7.5px 0 15px; border: 0;">
<p style="color: rgb(46,62,72); font-family: Helvetica,Arial,sans-serif; font-weight: 700; line-height: 1.5; font-size: 16px; vertical-align: baseline; margin: 0; padding: 0 0 7.5px; border: 0;" align="left"> <p style="color: rgb(46,62,72); font-family: Helvetica,Arial,sans-serif; font-weight: 700; line-height: 1.5; font-size: 16px; vertical-align: baseline; margin: 0; padding: 0 0 7.5px; border: 0;" align="left">
<%= gettext("Details") %> <%= gettext("Details") %>

View File

@ -2,6 +2,8 @@
<%= render("participation/card/_metadata.text", event: @event, timezone: @timezone, locale: @locale, action: @action) %> <%= render("participation/card/_metadata.text", event: @event, timezone: @timezone, locale: @locale, action: @action) %>
<%= case @action do %><% "participation" -> %><%= gettext("Manage your participation:") %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid) %><% "event" -> %><%= gettext("Participate:") %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid) %><% nil -> %><% end %>
<%= if @event.description do %><%= gettext("Details:") %> <%= if @event.description do %><%= gettext("Details:") %>
<%= process_description(@event.description) %> <%= process_description(@event.description) %>
<%= if String.length(@event.description) > 200 do %><%= gettext("Read more : %{url}", url: Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid)) |> raw %><% end %><% end %> <%= if String.length(@event.description) > 200 do %><%= gettext("Read more : %{url}", url: Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid)) |> raw %><% end %><% end %>

View File

@ -35,15 +35,20 @@
<tr> <tr>
<td bgcolor="#ffffff" align="left" style="padding: 20px 30px 0px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" > <td bgcolor="#ffffff" align="left" style="padding: 20px 30px 0px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" >
<p style="margin: 0;"> <p style="margin: 0;">
<%= ngettext "You have one pending attendance request to process:", "You have %{number_participation_requests} attendance requests to process:", @total, number_participation_requests: @total %> <%= ngettext "You have one pending attendance request to process for the following event:", "You have %{number_participation_requests} attendance requests to process for the following event:", @total, number_participation_requests: @total %>
</p> </p>
</td> </td>
</tr> </tr>
<tr>
<td bgcolor="#ffffff" align="left" style="padding: 20px 30px 0px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" >
<%= render("participation/event_card.html", event: @event, timezone: @timezone, locale: @locale, action: nil) %>
</td>
</tr>
<tr> <tr>
<td bgcolor="#ffffff" align="left" style="padding: 20px 30px 0px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" > <td bgcolor="#ffffff" align="left" style="padding: 20px 30px 0px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" >
<table width="100%" border="0" cellspacing="0" cellpadding="0"> <table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr> <tr>
<td bgcolor="#ffffff" align="center" style="padding: 20px 30px 60px 30px;"> <td bgcolor="#ffffff" align="center" style="padding: 20px 30px 30px 30px;">
<table border="0" cellspacing="0" cellpadding="0"> <table border="0" cellspacing="0" cellpadding="0">
<tr> <tr>
<td align="center" style="border-radius: 3px;" bgcolor="#3C376E"> <td align="center" style="border-radius: 3px;" bgcolor="#3C376E">

View File

@ -1,7 +1,9 @@
<%= gettext "A request is pending!" %> <%= gettext "A request is pending!" %>
== ==
<%= ngettext "You have one pending attendance request to process:", "You have %{number_participation_requests} attendance requests to process:", @total, number_participation_requests: @total %> <%= ngettext "You have one pending attendance request to process for the following event:", "You have %{number_participation_requests} attendance requests to process for the following event:", @total, number_participation_requests: @total %>
<%= render("participation/event_card.text", event: @event, timezone: @timezone, locale: @locale, action: nil) %>
<%= gettext "Manage pending requests" %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid) <> "/participations" %> <%= gettext "Manage pending requests" %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid) <> "/participations" %>

View File

@ -3,12 +3,15 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do
alias Mobilizon.Actors.Actor alias Mobilizon.Actors.Actor
alias Mobilizon.Addresses.Address alias Mobilizon.Addresses.Address
alias Mobilizon.Events.{Event, Participant, ParticipantRole} alias Mobilizon.Events.{Event, EventOptions, Participant, ParticipantRole}
alias Mobilizon.Posts.Post alias Mobilizon.Posts.Post
alias Mobilizon.Web.Endpoint alias Mobilizon.Web.Endpoint
alias Mobilizon.Web.JsonLD.ObjectView alias Mobilizon.Web.JsonLD.ObjectView
alias Mobilizon.Web.Router.Helpers, as: Routes alias Mobilizon.Web.Router.Helpers, as: Routes
import Mobilizon.Service.Metadata.Utils,
only: [process_description: 3]
@spec render(String.t(), map()) :: map() @spec render(String.t(), map()) :: map()
def render("group.json", %{group: %Actor{} = group}) do def render("group.json", %{group: %Actor{} = group}) do
res = %{ res = %{
@ -54,11 +57,12 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do
"@context" => "https://schema.org", "@context" => "https://schema.org",
"@type" => "Event", "@type" => "Event",
"name" => event.title, "name" => event.title,
"description" => event.description, "description" => process_description(event.description, "en", nil),
# We assume for now performer == organizer # We assume for now performer == organizer
"performer" => organizer, "performer" => organizer,
"organizer" => organizer, "organizer" => organizer,
"location" => render_location(event), "location" => render_all_locations(event),
"eventAttendanceMode" => event |> attendance_mode() |> event_attendance_mode(),
"eventStatus" => "eventStatus" =>
if(event.status == :cancelled, if(event.status == :cancelled,
do: "https://schema.org/EventCancelled", do: "https://schema.org/EventCancelled",
@ -163,23 +167,66 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do
defp reservation_status(:not_approved), do: "https://schema.org/ReservationHold" defp reservation_status(:not_approved), do: "https://schema.org/ReservationHold"
defp reservation_status(_), do: "https://schema.org/ReservationConfirmed" defp reservation_status(_), do: "https://schema.org/ReservationConfirmed"
@spec render_location(map()) :: map() | nil defp render_all_locations(%Event{} = event) do
defp render_location(%{physical_address: %Address{} = address}), []
do: render_one(address, ObjectView, "place.json", as: :address) |> render_location(event)
|> render_virtual_location(event)
end
@spec render_location(list(), map()) :: list()
defp render_location(locations, %{physical_address: %Address{} = address}),
do: locations ++ [render_one(address, ObjectView, "place.json", as: :address)]
defp render_location(locations, _), do: locations
# For now the Virtual Location of an event is it's own URL, # For now the Virtual Location of an event is it's own URL,
# but in the future it will be a special field # but in the future it will be a special field
defp render_location(%Event{url: event_url}) do defp render_virtual_location(locations, %Event{
%{ url: event_url,
"@type" => "VirtualLocation", metadata: metadata,
"url" => event_url options: %EventOptions{is_online: is_online}
} }) do
links = virtual_location_links(metadata)
fallback_links = if is_online, do: [event_url], else: []
links = if length(links) > 0, do: Enum.map(links, & &1.value), else: fallback_links
locations ++
Enum.map(
links,
&%{
"@type" => "VirtualLocation",
"url" => &1
}
)
end end
defp render_location(_), do: nil defp render_virtual_location(locations, _), do: locations
defp render_address(%{physical_address: %Address{} = address}), defp render_address(%{physical_address: %Address{} = address}),
do: render_one(address, ObjectView, "address.json", as: :address) do: render_one(address, ObjectView, "address.json", as: :address)
defp render_address(_), do: nil defp render_address(_), do: nil
defp event_attendance_mode(:online), do: "https://schema.org/OnlineEventAttendanceMode"
defp event_attendance_mode(:offline), do: "https://schema.org/OfflineEventAttendanceMode"
defp event_attendance_mode(:mixed), do: "https://schema.org/MixedEventAttendanceMode"
defp attendance_mode(%Event{options: %EventOptions{is_online: true}}),
do: :online
defp attendance_mode(%Event{physical_address: %Address{}, metadata: metadata}) do
if metadata |> virtual_location_links() |> length() > 0 do
:mixed
else
:offline
end
end
defp attendance_mode(%Event{}),
do: :offline
@livestream_keys ["mz:live", "mz:visio"]
@spec virtual_location_links(list()) :: list()
defp virtual_location_links(metadata),
do: Enum.filter(metadata, &String.contains?(&1.key, @livestream_keys))
end end

View File

@ -789,18 +789,6 @@ msgstr[3] ""
msgstr[4] "" msgstr[4] ""
msgstr[5] "" msgstr[5] ""
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgstr[4] ""
msgstr[5] ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -903,8 +891,8 @@ msgid "Location address was removed"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "" msgstr ""
@ -1015,8 +1003,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
@ -1543,7 +1531,7 @@ msgid "On the agenda this week"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1554,7 +1542,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1565,7 +1553,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1596,7 +1584,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1606,7 +1594,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1617,17 +1605,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "تم قبول المشاركة" msgstr "تم قبول المشاركة"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "تم قبول المشاركة" msgstr "تم قبول المشاركة"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -1693,12 +1681,24 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgstr[4] ""
msgstr[5] ""

View File

@ -829,7 +829,7 @@ msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "" msgstr ""

View File

@ -768,15 +768,6 @@ msgstr[0] ""
msgstr[1] "" msgstr[1] ""
msgstr[2] "" msgstr[2] ""
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -879,8 +870,8 @@ msgid "Location address was removed"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "" msgstr ""
@ -991,8 +982,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
@ -1519,7 +1510,7 @@ msgid "On the agenda this week"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1530,7 +1521,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1541,7 +1532,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1572,7 +1563,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1582,7 +1573,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1593,17 +1584,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -1669,12 +1660,21 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""

View File

@ -803,7 +803,7 @@ msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "" msgstr ""

View File

@ -938,16 +938,6 @@ msgstr[1] ""
"Si has de canceŀlar la teva participació, accedeix a l'activitat per " "Si has de canceŀlar la teva participació, accedeix a l'activitat per "
"l'enllaç de dalt i clica al botó de participació." "l'enllaç de dalt i clica al botó de participació."
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] "Tens una soŀlicitud de participació pendent de resoldre:"
msgstr[1] ""
"Tens %{number_participation_requests} soŀlicituds de participació pendents "
"de resoldre:"
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -1067,8 +1057,8 @@ msgid "Location address was removed"
msgstr "L'adreça postal ha estat esborrada" msgstr "L'adreça postal ha estat esborrada"
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "Gestiona les soŀlicituds pendents" msgstr "Gestiona les soŀlicituds pendents"
@ -1183,8 +1173,8 @@ msgstr ""
"de l'activitat amb l'enllaç d'amunt i clica al botó de participació." "de l'activitat amb l'enllaç d'amunt i clica al botó de participació."
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
"Has rebut aquest correu perquè tens configurat de rebre notificacions per a " "Has rebut aquest correu perquè tens configurat de rebre notificacions per a "
@ -1775,7 +1765,7 @@ msgid "On the agenda this week"
msgstr "Una activitat planificada per aquesta setmana" msgstr "Una activitat planificada per aquesta setmana"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1786,7 +1776,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1797,7 +1787,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1828,7 +1818,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1838,7 +1828,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1849,17 +1839,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "S'ha aprovat la participació" msgstr "S'ha aprovat la participació"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "S'ha aprovat la participació" msgstr "S'ha aprovat la participació"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -1925,12 +1915,22 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] "Tens una soŀlicitud de participació pendent de resoldre:"
msgstr[1] ""
"Tens %{number_participation_requests} soŀlicituds de participació pendents "
"de resoldre:"

View File

@ -804,7 +804,7 @@ msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "" msgstr ""

View File

@ -768,15 +768,6 @@ msgstr[0] ""
msgstr[1] "" msgstr[1] ""
msgstr[2] "" msgstr[2] ""
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -879,8 +870,8 @@ msgid "Location address was removed"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "" msgstr ""
@ -991,8 +982,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
@ -1519,7 +1510,7 @@ msgid "On the agenda this week"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1530,7 +1521,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1541,7 +1532,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1572,7 +1563,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1582,7 +1573,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1593,17 +1584,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -1669,12 +1660,21 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""

View File

@ -803,7 +803,7 @@ msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "" msgstr ""

View File

@ -972,14 +972,6 @@ msgstr[1] ""
"gehe einfach über obenstehenden Link auf die Veranstaltungs-Seite und klicke " "gehe einfach über obenstehenden Link auf die Veranstaltungs-Seite und klicke "
"auf den Teilnahme-Button." "auf den Teilnahme-Button."
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] "Sie haben eine ausstehende Anwesenheitsanforderung zu bearbeiten:"
msgstr[1] "Sie haben %{Anzahl_Teilnahmeanträge} Teilnahmeanträge zu bearbeiten:"
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -1100,8 +1092,8 @@ msgid "Location address was removed"
msgstr "Adresse wurde entfernt" msgstr "Adresse wurde entfernt"
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "Ausstehende Anfragen verwalten" msgstr "Ausstehende Anfragen verwalten"
@ -1222,8 +1214,8 @@ msgstr ""
"Schaltfläche \"Teilnehmen\"." "Schaltfläche \"Teilnehmen\"."
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
"Sie erhalten diese E-Mail, weil Sie sich dafür entschieden haben, " "Sie erhalten diese E-Mail, weil Sie sich dafür entschieden haben, "
@ -1887,7 +1879,7 @@ msgid "On the agenda this week"
msgstr "Ein Event ist für diese Woche geplant" msgstr "Ein Event ist für diese Woche geplant"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1898,7 +1890,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1909,7 +1901,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1940,7 +1932,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1950,7 +1942,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1961,17 +1953,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "Teilnahme bestätigt" msgstr "Teilnahme bestätigt"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "Teilnahme bestätigt" msgstr "Teilnahme bestätigt"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -2037,12 +2029,20 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] "Sie haben eine ausstehende Anwesenheitsanforderung zu bearbeiten:"
msgstr[1] "Sie haben %{Anzahl_Teilnahmeanträge} Teilnahmeanträge zu bearbeiten:"

View File

@ -831,7 +831,7 @@ msgid "You don't have the right to remove this member."
msgstr "Sie haben nicht das Recht, dieses Mitglied zu entfernen." msgstr "Sie haben nicht das Recht, dieses Mitglied zu entfernen."
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "Dieser Benutzername ist bereits vergeben." msgstr "Dieser Benutzername ist bereits vergeben."

View File

@ -748,14 +748,6 @@ msgid_plural "Would you wish to cancel your attendance to one or several events,
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] ""
msgstr[1] ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -858,8 +850,8 @@ msgid "Location address was removed"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "" msgstr ""
@ -970,8 +962,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
@ -1498,7 +1490,7 @@ msgid "On the agenda this week"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1509,7 +1501,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1520,7 +1512,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1551,7 +1543,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1561,7 +1553,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1572,17 +1564,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -1657,3 +1649,11 @@ msgstr ""
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] ""
msgstr[1] ""

View File

@ -801,14 +801,6 @@ msgid_plural "Would you wish to cancel your attendance to one or several events,
msgstr[0] "If you need to cancel your participation, just access the event page through link above and click on the participation button." msgstr[0] "If you need to cancel your participation, just access the event page through link above and click on the participation button."
msgstr[1] "If you need to cancel your participation, just access the event page through link above and click on the participation button." msgstr[1] "If you need to cancel your participation, just access the event page through link above and click on the participation button."
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] ""
msgstr[1] ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -911,8 +903,8 @@ msgid "Location address was removed"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "" msgstr ""
@ -1023,8 +1015,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
@ -1551,7 +1543,7 @@ msgid "On the agenda this week"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1562,7 +1554,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1573,7 +1565,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1604,7 +1596,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1614,7 +1606,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1625,17 +1617,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "Participant" msgstr "Participant"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "Participant" msgstr "Participant"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -1701,12 +1693,20 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] ""
msgstr[1] ""

View File

@ -807,7 +807,7 @@ msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "" msgstr ""

View File

@ -804,7 +804,7 @@ msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "" msgstr ""

View File

@ -18,324 +18,324 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.8.1\n" "X-Generator: Weblate 4.8.1\n"
#, elixir-format
#: lib/service/activity/renderer/member.ex:38 #: lib/service/activity/renderer/member.ex:38
#: lib/web/templates/email/activity/_member_activity_item.html.heex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 #: lib/web/templates/email/activity/_member_activity_item.html.heex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12
#, elixir-format
msgid "%{member} accepted the invitation to join the group." msgid "%{member} accepted the invitation to join the group."
msgstr "%{member} aceptó la invitación para unirse al grupo." msgstr "%{member} aceptó la invitación para unirse al grupo."
#, elixir-format
#: lib/service/activity/renderer/member.ex:42 #: lib/service/activity/renderer/member.ex:42
#: lib/web/templates/email/activity/_member_activity_item.html.heex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 #: lib/web/templates/email/activity/_member_activity_item.html.heex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17
#, elixir-format
msgid "%{member} rejected the invitation to join the group." msgid "%{member} rejected the invitation to join the group."
msgstr "%{member} rechazó la invitación para unirse al grupo." msgstr "%{member} rechazó la invitación para unirse al grupo."
#, elixir-format
#: lib/service/activity/renderer/member.ex:30 #: lib/service/activity/renderer/member.ex:30
#: lib/web/templates/email/activity/_member_activity_item.html.heex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 #: lib/web/templates/email/activity/_member_activity_item.html.heex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1
#, elixir-format
msgid "%{member} requested to join the group." msgid "%{member} requested to join the group."
msgstr "%{member} solicitó unirse al grupo." msgstr "%{member} solicitó unirse al grupo."
#, elixir-format
#: lib/service/activity/renderer/member.ex:34 #: lib/service/activity/renderer/member.ex:34
#: lib/web/templates/email/activity/_member_activity_item.html.heex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 #: lib/web/templates/email/activity/_member_activity_item.html.heex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6
#, elixir-format
msgid "%{member} was invited by %{profile}." msgid "%{member} was invited by %{profile}."
msgstr "%{member} fue invitado por %{profile}." msgstr "%{member} fue invitado por %{profile}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:50 #: lib/service/activity/renderer/member.ex:50
#: lib/web/templates/email/activity/_member_activity_item.html.heex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 #: lib/web/templates/email/activity/_member_activity_item.html.heex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27
#, elixir-format
msgid "%{profile} added the member %{member}." msgid "%{profile} added the member %{member}."
msgstr "%{profile} agregó el miembro %{member}." msgstr "%{profile} agregó el miembro %{member}."
#, elixir-format
#: lib/service/activity/renderer/discussion.ex:65 #: lib/service/activity/renderer/discussion.ex:65
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19
#, elixir-format
msgid "%{profile} archived the discussion %{discussion}." msgid "%{profile} archived the discussion %{discussion}."
msgstr "%{profile} archivó la discusión %{discussion}." msgstr "%{profile} archivó la discusión %{discussion}."
#, elixir-format
#: lib/service/activity/renderer/discussion.ex:25 #: lib/service/activity/renderer/discussion.ex:25
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:4 lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:4 lib/web/templates/email/activity/_discussion_activity_item.text.eex:1
#, elixir-format
msgid "%{profile} created the discussion %{discussion}." msgid "%{profile} created the discussion %{discussion}."
msgstr "%{profile} creó la discusión %{discussion}." msgstr "%{profile} creó la discusión %{discussion}."
#, elixir-format
#: lib/service/activity/renderer/resource.ex:24 #: lib/service/activity/renderer/resource.ex:24
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2
#, elixir-format
msgid "%{profile} created the folder %{resource}." msgid "%{profile} created the folder %{resource}."
msgstr "%{profile} creó la carpeta %{resource}." msgstr "%{profile} creó la carpeta %{resource}."
#, elixir-format
#: lib/web/templates/email/activity/_group_activity_item.html.heex:4 #: lib/web/templates/email/activity/_group_activity_item.html.heex:4
#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 #: lib/web/templates/email/activity/_group_activity_item.text.eex:1
#, elixir-format
msgid "%{profile} created the group %{group}." msgid "%{profile} created the group %{group}."
msgstr "%{profile} crfeó el grupo %{group}." msgstr "%{profile} crfeó el grupo %{group}."
#, elixir-format
#: lib/service/activity/renderer/resource.ex:33 #: lib/service/activity/renderer/resource.ex:33
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8
#, elixir-format
msgid "%{profile} created the resource %{resource}." msgid "%{profile} created the resource %{resource}."
msgstr "%{profile} creó el recurso %{resource}." msgstr "%{profile} creó el recurso %{resource}."
#, elixir-format
#: lib/service/activity/renderer/discussion.ex:75 #: lib/service/activity/renderer/discussion.ex:75
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25
#, elixir-format
msgid "%{profile} deleted the discussion %{discussion}." msgid "%{profile} deleted the discussion %{discussion}."
msgstr "%{profile} eliminó la discusión %{discussion}." msgstr "%{profile} eliminó la discusión %{discussion}."
#, elixir-format
#: lib/service/activity/renderer/resource.ex:97 #: lib/service/activity/renderer/resource.ex:97
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40
#, elixir-format
msgid "%{profile} deleted the folder %{resource}." msgid "%{profile} deleted the folder %{resource}."
msgstr "%{profile} borró la carpeta %{resource}." msgstr "%{profile} borró la carpeta %{resource}."
#, elixir-format
#: lib/service/activity/renderer/resource.ex:106 #: lib/service/activity/renderer/resource.ex:106
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45
#, elixir-format
msgid "%{profile} deleted the resource %{resource}." msgid "%{profile} deleted the resource %{resource}."
msgstr "%{profile} eliminado el recurso %{resource}." msgstr "%{profile} eliminado el recurso %{resource}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:66 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
#, elixir-format
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "%{profile }miembro excluido %{member}." msgstr "%{profile }miembro excluido %{member}."
#, elixir-format
#: lib/service/activity/renderer/resource.ex:76 #: lib/service/activity/renderer/resource.ex:76
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28
#, elixir-format
msgid "%{profile} moved the folder %{resource}." msgid "%{profile} moved the folder %{resource}."
msgstr "%{profile} movió la carpeta %{resource}." msgstr "%{profile} movió la carpeta %{resource}."
#, elixir-format
#: lib/service/activity/renderer/resource.ex:85 #: lib/service/activity/renderer/resource.ex:85
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34
#, elixir-format
msgid "%{profile} moved the resource %{resource}." msgid "%{profile} moved the resource %{resource}."
msgstr "%{profile} movió el recurso %{resource}." msgstr "%{profile} movió el recurso %{resource}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:70 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
#, elixir-format
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "%{profile} abandona el grupo." msgstr "%{profile} abandona el grupo."
#, elixir-format
#: lib/service/activity/renderer/discussion.ex:55 #: lib/service/activity/renderer/discussion.ex:55
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13
#, elixir-format
msgid "%{profile} renamed the discussion %{discussion}." msgid "%{profile} renamed the discussion %{discussion}."
msgstr "%{profile} renombrado la discusión %{discussion}." msgstr "%{profile} renombrado la discusión %{discussion}."
#, elixir-format
#: lib/service/activity/renderer/resource.ex:45 #: lib/service/activity/renderer/resource.ex:45
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14
#, elixir-format
msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}."
msgstr "" msgstr ""
"%{profile} ha renombrado la carpeta de %{old_resource_title} a %{resource}." "%{profile} ha renombrado la carpeta de %{old_resource_title} a %{resource}."
#, elixir-format
#: lib/service/activity/renderer/resource.ex:59 #: lib/service/activity/renderer/resource.ex:59
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21
#, elixir-format
msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}."
msgstr "" msgstr ""
"%{profile} ha renombrado el recurso de %{old_resource_title} a %{resource}." "%{profile} ha renombrado el recurso de %{old_resource_title} a %{resource}."
#, elixir-format
#: lib/service/activity/renderer/discussion.ex:35 #: lib/service/activity/renderer/discussion.ex:35
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:18 lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:18 lib/web/templates/email/activity/_discussion_activity_item.text.eex:7
#, elixir-format
msgid "%{profile} replied to the discussion %{discussion}." msgid "%{profile} replied to the discussion %{discussion}."
msgstr "%{profile} respondió a la discusión %{discussion}." msgstr "%{profile} respondió a la discusión %{discussion}."
#, elixir-format
#: lib/web/templates/email/activity/_group_activity_item.html.heex:19 #: lib/web/templates/email/activity/_group_activity_item.html.heex:19
#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 #: lib/web/templates/email/activity/_group_activity_item.text.eex:7
#, elixir-format
msgid "%{profile} updated the group %{group}." msgid "%{profile} updated the group %{group}."
msgstr "%{profile} actualizó el grupo %{group}." msgstr "%{profile} actualizó el grupo %{group}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
#, elixir-format
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "%{profile} actualizado el miembro %{member}." msgstr "%{profile} actualizado el miembro %{member}."
#, elixir-format
#: lib/service/activity/renderer/event.ex:23 #: lib/service/activity/renderer/event.ex:23
#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 #: lib/web/templates/email/activity/_event_activity_item.html.heex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1
#, elixir-format
msgid "The event %{event} was created by %{profile}." msgid "The event %{event} was created by %{profile}."
msgstr "El evento %{event} fue creado por %{profile}." msgstr "El evento %{event} fue creado por %{profile}."
#, elixir-format
#: lib/service/activity/renderer/event.ex:43 #: lib/service/activity/renderer/event.ex:43
#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 #: lib/web/templates/email/activity/_event_activity_item.html.heex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13
#, elixir-format
msgid "The event %{event} was deleted by %{profile}." msgid "The event %{event} was deleted by %{profile}."
msgstr "El evento% {event} fue eliminado por % {profile}." msgstr "El evento% {event} fue eliminado por % {profile}."
#, elixir-format
#: lib/service/activity/renderer/event.ex:33 #: lib/service/activity/renderer/event.ex:33
#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 #: lib/web/templates/email/activity/_event_activity_item.html.heex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7
#, elixir-format
msgid "The event %{event} was updated by %{profile}." msgid "The event %{event} was updated by %{profile}."
msgstr "El evento %{event} fue actualizado por %{profile}." msgstr "El evento %{event} fue actualizado por %{profile}."
#, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:4 #: lib/web/templates/email/activity/_post_activity_item.html.heex:4
#: lib/web/templates/email/activity/_post_activity_item.text.eex:1 #: lib/web/templates/email/activity/_post_activity_item.text.eex:1
#, elixir-format
msgid "The post %{post} was created by %{profile}." msgid "The post %{post} was created by %{profile}."
msgstr "El cargo %{post} fue creado por %{profile}." msgstr "El cargo %{post} fue creado por %{profile}."
#, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:34 #: lib/web/templates/email/activity/_post_activity_item.html.heex:34
#: lib/web/templates/email/activity/_post_activity_item.text.eex:13 #: lib/web/templates/email/activity/_post_activity_item.text.eex:13
#, elixir-format
msgid "The post %{post} was deleted by %{profile}." msgid "The post %{post} was deleted by %{profile}."
msgstr "El post %{post} fue eliminado por %{profile}." msgstr "El post %{post} fue eliminado por %{profile}."
#, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:19 #: lib/web/templates/email/activity/_post_activity_item.html.heex:19
#: lib/web/templates/email/activity/_post_activity_item.text.eex:7 #: lib/web/templates/email/activity/_post_activity_item.text.eex:7
#, elixir-format
msgid "The post %{post} was updated by %{profile}." msgid "The post %{post} was updated by %{profile}."
msgstr "El post %{post} fue actualizado por %{profile}." msgstr "El post %{post} fue actualizado por %{profile}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:46 #: lib/service/activity/renderer/member.ex:46
#: lib/web/templates/email/activity/_member_activity_item.html.heex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 #: lib/web/templates/email/activity/_member_activity_item.html.heex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22
#, elixir-format
msgid "%{member} joined the group." msgid "%{member} joined the group."
msgstr "%{member} se unió al grupo." msgstr "%{member} se unió al grupo."
#, elixir-format
#: lib/service/activity/renderer/event.ex:63 #: lib/service/activity/renderer/event.ex:63
#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 #: lib/web/templates/email/activity/_event_activity_item.html.heex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25
#, elixir-format
msgid "%{profile} posted a comment on the event %{event}." msgid "%{profile} posted a comment on the event %{event}."
msgstr "%{profile} publicó un comentario sobre el evento %{event}." msgstr "%{profile} publicó un comentario sobre el evento %{event}."
#, elixir-format
#: lib/service/activity/renderer/event.ex:54 #: lib/service/activity/renderer/event.ex:54
#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 #: lib/web/templates/email/activity/_event_activity_item.html.heex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19
#, elixir-format
msgid "%{profile} replied to a comment on the event %{event}." msgid "%{profile} replied to a comment on the event %{event}."
msgstr "%{profile} respondió a un comentario sobre el evento %{event}." msgstr "%{profile} respondió a un comentario sobre el evento %{event}."
#: lib/web/templates/email/email_direct_activity.text.eex:27
#, elixir-format #, elixir-format
#: lib/web/templates/email/email_direct_activity.text.eex:27
msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings."
msgstr "" msgstr ""
"¿No quieres recibir notificaciones de actividad? Puede cambiar la frecuencia " "¿No quieres recibir notificaciones de actividad? Puede cambiar la frecuencia "
"o deshabilitarlos en su configuración." "o deshabilitarlos en su configuración."
#, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:135 #: lib/web/templates/email/email_direct_activity.html.heex:135
#: lib/web/templates/email/email_direct_activity.text.eex:23 #: lib/web/templates/email/email_direct_activity.text.eex:23
#, elixir-format
msgid "View one more activity" msgid "View one more activity"
msgid_plural "View %{count} more activities" msgid_plural "View %{count} more activities"
msgstr[0] "Ver una actividad más" msgstr[0] "Ver una actividad más"
msgstr[1] "Ver %{count} actividades mas" msgstr[1] "Ver %{count} actividades mas"
#, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:44 #: lib/web/templates/email/email_direct_activity.html.heex:44
#: lib/web/templates/email/email_direct_activity.html.heex:46 lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.html.heex:46 lib/web/templates/email/email_direct_activity.text.eex:6
#: lib/web/templates/email/email_direct_activity.text.eex:7 #: lib/web/templates/email/email_direct_activity.text.eex:7
#, elixir-format
msgid "There has been an activity!" msgid "There has been an activity!"
msgid_plural "There has been some activity!" msgid_plural "There has been some activity!"
msgstr[0] "¡Ha habido una actividad!" msgstr[0] "¡Ha habido una actividad!"
msgstr[1] "¡Ha habido algopúnas actividades!" msgstr[1] "¡Ha habido algopúnas actividades!"
#: lib/service/activity/renderer/renderer.ex:46
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/renderer.ex:46
msgid "Activity on %{instance}" msgid "Activity on %{instance}"
msgstr "Actividad en %{instance}" msgstr "Actividad en %{instance}"
#, elixir-format
#: lib/service/activity/renderer/comment.ex:38 #: lib/service/activity/renderer/comment.ex:38
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 lib/web/templates/email/activity/_comment_activity_item.text.eex:7 #: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 lib/web/templates/email/activity/_comment_activity_item.text.eex:7
#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 #: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5
#, elixir-format
msgid "%{profile} has posted an announcement under event %{event}." msgid "%{profile} has posted an announcement under event %{event}."
msgstr "%{profile} ha publicado un anuncio en el evento %{event}." msgstr "%{profile} ha publicado un anuncio en el evento %{event}."
#, elixir-format
#: lib/service/activity/renderer/comment.ex:24 #: lib/service/activity/renderer/comment.ex:24
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 lib/web/templates/email/activity/_comment_activity_item.text.eex:1 #: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 lib/web/templates/email/activity/_comment_activity_item.text.eex:1
#, elixir-format
msgid "%{profile} mentionned you in a comment under event %{event}." msgid "%{profile} mentionned you in a comment under event %{event}."
msgstr "%{profile} te mencionó en un comentario en el evento %{event}." msgstr "%{profile} te mencionó en un comentario en el evento %{event}."
#: lib/service/activity/renderer/discussion.ex:45
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/discussion.ex:45
msgid "%{profile} mentionned you in the discussion %{discussion}." msgid "%{profile} mentionned you in the discussion %{discussion}."
msgstr "%{profile}te mencioné en la discusión %{discussion}." msgstr "%{profile}te mencioné en la discusión %{discussion}."
#: lib/web/templates/email/email_direct_activity.html.heex:155
#, elixir-format #, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:155
msgid "Don't want to receive activity notifications? You may change frequency or disable them in %{tag_start}your settings%{tag_end}." msgid "Don't want to receive activity notifications? You may change frequency or disable them in %{tag_start}your settings%{tag_end}."
msgstr "" msgstr ""
"¿No quieres recibir notificaciones de actividad? Puede cambiar la frecuencia " "¿No quieres recibir notificaciones de actividad? Puede cambiar la frecuencia "
"o deshabilitarlos en su configuración." "o deshabilitarlos en su configuración."
#, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:42 #: lib/web/templates/email/email_direct_activity.html.heex:42
#: lib/web/templates/email/email_direct_activity.text.eex:5 #: lib/web/templates/email/email_direct_activity.text.eex:5
#, elixir-format
msgid "Here's your weekly activity recap" msgid "Here's your weekly activity recap"
msgstr "Aquí está su resumen de actividad semanal" msgstr "Aquí está su resumen de actividad semanal"
#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140
#, elixir-format #, elixir-format
#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140
msgid "Activity notification for %{instance}" msgid "Activity notification for %{instance}"
msgstr "Actividad en %{instance}" msgstr "Actividad en %{instance}"
#: lib/web/email/activity.ex:126
#, elixir-format #, elixir-format
#: lib/web/email/activity.ex:126
msgid "Daily activity recap for %{instance}" msgid "Daily activity recap for %{instance}"
msgstr "Resumen de actividad diaria en %{instance}" msgstr "Resumen de actividad diaria en %{instance}"
#, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:40 #: lib/web/templates/email/email_direct_activity.html.heex:40
#: lib/web/templates/email/email_direct_activity.text.eex:4 #: lib/web/templates/email/email_direct_activity.text.eex:4
#, elixir-format
msgid "Here's your daily activity recap" msgid "Here's your daily activity recap"
msgstr "Aquí está su resumen de actividad diaria" msgstr "Aquí está su resumen de actividad diaria"
#: lib/web/email/activity.ex:133
#, elixir-format #, elixir-format
#: lib/web/email/activity.ex:133
msgid "Weekly activity recap for %{instance}" msgid "Weekly activity recap for %{instance}"
msgstr "Resumen de actividad semanal para %{instance}" msgstr "Resumen de actividad semanal para %{instance}"
#, elixir-format
#: lib/service/activity/renderer/comment.ex:66 #: lib/service/activity/renderer/comment.ex:66
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 #: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 lib/web/templates/email/activity/_comment_activity_item.text.eex:19
#, elixir-format
msgid "%{profile} has posted a new comment under your event %{event}." msgid "%{profile} has posted a new comment under your event %{event}."
msgstr "%{profile} ha publicado un nuevo comentario en tu evento %{event}." msgstr "%{profile} ha publicado un nuevo comentario en tu evento %{event}."
#, elixir-format
#: lib/service/activity/renderer/comment.ex:53 #: lib/service/activity/renderer/comment.ex:53
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 #: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 lib/web/templates/email/activity/_comment_activity_item.text.eex:13
#, elixir-format
msgid "%{profile} has posted a new reply under your event %{event}." msgid "%{profile} has posted a new reply under your event %{event}."
msgstr "%{profile} ha publicado una nueva respuesta en tu evento %{event}." msgstr "%{profile} ha publicado una nueva respuesta en tu evento %{event}."
#: lib/web/email/activity.ex:46
#, elixir-format #, elixir-format
#: lib/web/email/activity.ex:46
msgid "Announcement for your event %{event}" msgid "Announcement for your event %{event}"
msgstr "Anuncio para su evento %{event}" msgstr "Anuncio para su evento %{event}"
#: lib/service/activity/renderer/group.ex:23
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/group.ex:23
msgid "The group %{group} was updated by %{profile}." msgid "The group %{group} was updated by %{profile}."
msgstr "El post %{post} fue actualizado por %{profile}." msgstr "El post %{post} fue actualizado por %{profile}."
#: lib/service/activity/renderer/post.ex:47
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/post.ex:47
msgid "The post %{post} from group %{group} was deleted by %{profile}." msgid "The post %{post} from group %{group} was deleted by %{profile}."
msgstr "El post %{post} del grupo %{group} fue actualizado por %{profile}." msgstr "El post %{post} del grupo %{group} fue actualizado por %{profile}."
#: lib/service/activity/renderer/post.ex:31
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/post.ex:31
msgid "The post %{post} from group %{group} was published by %{profile}." msgid "The post %{post} from group %{group} was published by %{profile}."
msgstr "El post %{post} del grupo %{group} fue actualizado por %{profile}." msgstr "El post %{post} del grupo %{group} fue actualizado por %{profile}."
#: lib/service/activity/renderer/post.ex:39
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "El post %{post} del grupo %{group} fue actualizado por %{profile}." msgstr "El post %{post} del grupo %{group} fue actualizado por %{profile}."
#: lib/service/activity/renderer/member.ex:54
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}." msgid "%{profile} approved the membership request from %{member}."
msgstr "%{profile} actualizado el miembro %{member}." msgstr "%{profile} actualizado el miembro %{member}."
#: lib/service/activity/renderer/member.ex:58
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}." msgid "%{profile} rejected the membership request from %{member}."
msgstr "%{profile} rechazó la solicitud de inscripción de %{member}." msgstr "%{profile} rechazó la solicitud de inscripción de %{member}."

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -933,15 +933,6 @@ msgstr[1] ""
"Jos haluat perua osallistumisesi, siirry tapahtumien sivuille yllä olevista " "Jos haluat perua osallistumisesi, siirry tapahtumien sivuille yllä olevista "
"linkeistä ja napsauta niissä osallistumispainiketta." "linkeistä ja napsauta niissä osallistumispainiketta."
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] "Yksi osallistujapyyntö odottaa käsittelyäsi:"
msgstr[1] ""
"%{number_participation_requests} osallistujapyyntöä odottaa käsittelyäsi:"
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -1060,8 +1051,8 @@ msgid "Location address was removed"
msgstr "Käyntiosoite poistettiin" msgstr "Käyntiosoite poistettiin"
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "Hallinnoi odottavia osallistujapyyntöjä" msgstr "Hallinnoi odottavia osallistujapyyntöjä"
@ -1176,8 +1167,8 @@ msgstr ""
"linkistä tapahtumasivulle ja napsauta osallistumispainiketta." "linkistä tapahtumasivulle ja napsauta osallistumispainiketta."
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
"Saat tämän sähköpostin, koska olet tilannut ilmoitukset tapahtumiesi " "Saat tämän sähköpostin, koska olet tilannut ilmoitukset tapahtumiesi "
@ -1813,7 +1804,7 @@ msgid "On the agenda this week"
msgstr "Yksi suunniteltu tapahtuma tällä viikolla" msgstr "Yksi suunniteltu tapahtuma tällä viikolla"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1824,7 +1815,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1835,7 +1826,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1866,7 +1857,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1876,7 +1867,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1887,17 +1878,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "Osallistuminen hyväksytty" msgstr "Osallistuminen hyväksytty"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "Osallistuminen hyväksytty" msgstr "Osallistuminen hyväksytty"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -1963,12 +1954,21 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] "Yksi osallistujapyyntö odottaa käsittelyäsi:"
msgstr[1] ""
"%{number_participation_requests} osallistujapyyntöä odottaa käsittelyäsi:"

View File

@ -810,7 +810,7 @@ msgid "You don't have the right to remove this member."
msgstr "Sinulla ei ole oikeutta poistaa jäsentä." msgstr "Sinulla ei ole oikeutta poistaa jäsentä."
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "Käyttäjänimi on jo käytössä." msgstr "Käyttäjänimi on jo käytössä."

View File

@ -20,257 +20,320 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 1;\n" "Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Poedit 3.0\n" "X-Generator: Poedit 3.0\n"
#: lib/service/activity/renderer/member.ex:38 lib/web/templates/email/activity/_member_activity_item.html.heex:19 #, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.text.eex:12 #: lib/service/activity/renderer/member.ex:38
#: lib/web/templates/email/activity/_member_activity_item.html.heex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12
msgid "%{member} accepted the invitation to join the group." msgid "%{member} accepted the invitation to join the group."
msgstr "%{member} a accepté l'invitation à rejoindre le groupe." msgstr "%{member} a accepté l'invitation à rejoindre le groupe."
#: lib/service/activity/renderer/member.ex:42 lib/web/templates/email/activity/_member_activity_item.html.heex:26 #, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.text.eex:17 #: lib/service/activity/renderer/member.ex:42
#: lib/web/templates/email/activity/_member_activity_item.html.heex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17
msgid "%{member} rejected the invitation to join the group." msgid "%{member} rejected the invitation to join the group."
msgstr "%{member} a refusé l'invitation à rejoindre le groupe." msgstr "%{member} a refusé l'invitation à rejoindre le groupe."
#: lib/service/activity/renderer/member.ex:30 lib/web/templates/email/activity/_member_activity_item.html.heex:4 #, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.text.eex:1 #: lib/service/activity/renderer/member.ex:30
#: lib/web/templates/email/activity/_member_activity_item.html.heex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1
msgid "%{member} requested to join the group." msgid "%{member} requested to join the group."
msgstr "%{member} a demandé à rejoindre le groupe." msgstr "%{member} a demandé à rejoindre le groupe."
#: lib/service/activity/renderer/member.ex:34 lib/web/templates/email/activity/_member_activity_item.html.heex:11 #, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.text.eex:6 #: lib/service/activity/renderer/member.ex:34
#: lib/web/templates/email/activity/_member_activity_item.html.heex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6
msgid "%{member} was invited by %{profile}." msgid "%{member} was invited by %{profile}."
msgstr "%{member} a été invité⋅e par %{profile}." msgstr "%{member} a été invité⋅e par %{profile}."
#: lib/service/activity/renderer/member.ex:50 lib/web/templates/email/activity/_member_activity_item.html.heex:40 #, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.text.eex:27 #: lib/service/activity/renderer/member.ex:50
#: lib/web/templates/email/activity/_member_activity_item.html.heex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27
msgid "%{profile} added the member %{member}." msgid "%{profile} added the member %{member}."
msgstr "%{profile} a ajouté le ou la membre %{member}." msgstr "%{profile} a ajouté le ou la membre %{member}."
#: lib/service/activity/renderer/discussion.ex:65 lib/web/templates/email/activity/_discussion_activity_item.html.heex:46 #, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 #: lib/service/activity/renderer/discussion.ex:65
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19
msgid "%{profile} archived the discussion %{discussion}." msgid "%{profile} archived the discussion %{discussion}."
msgstr "%{profile} a archivé la discussion %{discussion}." msgstr "%{profile} a archivé la discussion %{discussion}."
#: lib/service/activity/renderer/discussion.ex:25 lib/web/templates/email/activity/_discussion_activity_item.html.heex:4 #, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 #: lib/service/activity/renderer/discussion.ex:25
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:4 lib/web/templates/email/activity/_discussion_activity_item.text.eex:1
msgid "%{profile} created the discussion %{discussion}." msgid "%{profile} created the discussion %{discussion}."
msgstr "%{profile} a créé la discussion %{discussion}." msgstr "%{profile} a créé la discussion %{discussion}."
#: lib/service/activity/renderer/resource.ex:24 lib/web/templates/email/activity/_resource_activity_item.html.heex:5 #, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:2 #: lib/service/activity/renderer/resource.ex:24
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2
msgid "%{profile} created the folder %{resource}." msgid "%{profile} created the folder %{resource}."
msgstr "%{profile} a créé le dossier %{resource}." msgstr "%{profile} a créé le dossier %{resource}."
#: lib/web/templates/email/activity/_group_activity_item.html.heex:4 lib/web/templates/email/activity/_group_activity_item.text.eex:1 #, elixir-format
#: lib/web/templates/email/activity/_group_activity_item.html.heex:4
#: lib/web/templates/email/activity/_group_activity_item.text.eex:1
msgid "%{profile} created the group %{group}." msgid "%{profile} created the group %{group}."
msgstr "%{profile} a créé le groupe %{group}." msgstr "%{profile} a créé le groupe %{group}."
#: lib/service/activity/renderer/resource.ex:33 lib/web/templates/email/activity/_resource_activity_item.html.heex:20 #, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:8 #: lib/service/activity/renderer/resource.ex:33
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8
msgid "%{profile} created the resource %{resource}." msgid "%{profile} created the resource %{resource}."
msgstr "%{profile} a créé la resource %{resource}." msgstr "%{profile} a créé la resource %{resource}."
#: lib/service/activity/renderer/discussion.ex:75 lib/web/templates/email/activity/_discussion_activity_item.html.heex:60 #, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 #: lib/service/activity/renderer/discussion.ex:75
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25
msgid "%{profile} deleted the discussion %{discussion}." msgid "%{profile} deleted the discussion %{discussion}."
msgstr "%{profile} a créé la discussion %{discussion}." msgstr "%{profile} a créé la discussion %{discussion}."
#: lib/service/activity/renderer/resource.ex:97 lib/web/templates/email/activity/_resource_activity_item.html.heex:103 #, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:40 #: lib/service/activity/renderer/resource.ex:97
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40
msgid "%{profile} deleted the folder %{resource}." msgid "%{profile} deleted the folder %{resource}."
msgstr "%{profile} a supprimé le dossier %{resource}." msgstr "%{profile} a supprimé le dossier %{resource}."
#: lib/service/activity/renderer/resource.ex:106 lib/web/templates/email/activity/_resource_activity_item.html.heex:111 #, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:45 #: lib/service/activity/renderer/resource.ex:106
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45
msgid "%{profile} deleted the resource %{resource}." msgid "%{profile} deleted the resource %{resource}."
msgstr "%{profile} a supprimé la resource %{resource}." msgstr "%{profile} a supprimé la resource %{resource}."
#: lib/service/activity/renderer/member.ex:66 lib/web/templates/email/activity/_member_activity_item.html.heex:56 #, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "%{profile} a exclu le ou la membre %{member}." msgstr "%{profile} a exclu le ou la membre %{member}."
#: lib/service/activity/renderer/resource.ex:76 lib/web/templates/email/activity/_resource_activity_item.html.heex:71 #, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:28 #: lib/service/activity/renderer/resource.ex:76
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28
msgid "%{profile} moved the folder %{resource}." msgid "%{profile} moved the folder %{resource}."
msgstr "%{profile} a déplacé le dossier %{resource}." msgstr "%{profile} a déplacé le dossier %{resource}."
#: lib/service/activity/renderer/resource.ex:85 lib/web/templates/email/activity/_resource_activity_item.html.heex:86 #, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:34 #: lib/service/activity/renderer/resource.ex:85
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34
msgid "%{profile} moved the resource %{resource}." msgid "%{profile} moved the resource %{resource}."
msgstr "%{profile} a déplacé la ressource %{resource}." msgstr "%{profile} a déplacé la ressource %{resource}."
#: lib/service/activity/renderer/member.ex:70 lib/web/templates/email/activity/_member_activity_item.html.heex:64 #, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "%{profile} a quitté le groupe." msgstr "%{profile} a quitté le groupe."
#: lib/service/activity/renderer/discussion.ex:55 lib/web/templates/email/activity/_discussion_activity_item.html.heex:32 #, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 #: lib/service/activity/renderer/discussion.ex:55
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13
msgid "%{profile} renamed the discussion %{discussion}." msgid "%{profile} renamed the discussion %{discussion}."
msgstr "%{profile} a renommé la discussion %{discussion}." msgstr "%{profile} a renommé la discussion %{discussion}."
#: lib/service/activity/renderer/resource.ex:45 lib/web/templates/email/activity/_resource_activity_item.html.heex:37 #, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:14 #: lib/service/activity/renderer/resource.ex:45
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14
msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}."
msgstr "%{profile} a renommé le dossier %{old_resource_title} en %{resource}." msgstr "%{profile} a renommé le dossier %{old_resource_title} en %{resource}."
#: lib/service/activity/renderer/resource.ex:59 lib/web/templates/email/activity/_resource_activity_item.html.heex:53 #, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:21 #: lib/service/activity/renderer/resource.ex:59
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21
msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}."
msgstr "%{profile} a renommé la resource %{old_resource_title} en %{resource}." msgstr "%{profile} a renommé la resource %{old_resource_title} en %{resource}."
#: lib/service/activity/renderer/discussion.ex:35 lib/web/templates/email/activity/_discussion_activity_item.html.heex:18 #, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 #: lib/service/activity/renderer/discussion.ex:35
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:18 lib/web/templates/email/activity/_discussion_activity_item.text.eex:7
msgid "%{profile} replied to the discussion %{discussion}." msgid "%{profile} replied to the discussion %{discussion}."
msgstr "%{profile} a répondu à la discussion %{discussion}." msgstr "%{profile} a répondu à la discussion %{discussion}."
#: lib/web/templates/email/activity/_group_activity_item.html.heex:19 lib/web/templates/email/activity/_group_activity_item.text.eex:7 #, elixir-format
#: lib/web/templates/email/activity/_group_activity_item.html.heex:19
#: lib/web/templates/email/activity/_group_activity_item.text.eex:7
msgid "%{profile} updated the group %{group}." msgid "%{profile} updated the group %{group}."
msgstr "%{profile} a mis à jour le groupe %{group}." msgstr "%{profile} a mis à jour le groupe %{group}."
#: lib/service/activity/renderer/member.ex:62 lib/web/templates/email/activity/_member_activity_item.html.heex:48 #, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "%{profile} a mis à jour le membre %{member}." msgstr "%{profile} a mis à jour le membre %{member}."
#: lib/service/activity/renderer/event.ex:23 lib/web/templates/email/activity/_event_activity_item.html.heex:4 #, elixir-format
#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 #: lib/service/activity/renderer/event.ex:23
#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1
msgid "The event %{event} was created by %{profile}." msgid "The event %{event} was created by %{profile}."
msgstr "L'événement %{event} a été créé par %{profile}." msgstr "L'événement %{event} a été créé par %{profile}."
#: lib/service/activity/renderer/event.ex:43 lib/web/templates/email/activity/_event_activity_item.html.heex:34 #, elixir-format
#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 #: lib/service/activity/renderer/event.ex:43
#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13
msgid "The event %{event} was deleted by %{profile}." msgid "The event %{event} was deleted by %{profile}."
msgstr "L'événement %{event} a été supprimé par %{profile}." msgstr "L'événement %{event} a été supprimé par %{profile}."
#: lib/service/activity/renderer/event.ex:33 lib/web/templates/email/activity/_event_activity_item.html.heex:19 #, elixir-format
#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 #: lib/service/activity/renderer/event.ex:33
#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7
msgid "The event %{event} was updated by %{profile}." msgid "The event %{event} was updated by %{profile}."
msgstr "L'événement %{event} a été mis à jour par %{profile}." msgstr "L'événement %{event} a été mis à jour par %{profile}."
#: lib/web/templates/email/activity/_post_activity_item.html.heex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 #, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:4
#: lib/web/templates/email/activity/_post_activity_item.text.eex:1
msgid "The post %{post} was created by %{profile}." msgid "The post %{post} was created by %{profile}."
msgstr "Le billet %{post} a été créé par %{profile}." msgstr "Le billet %{post} a été créé par %{profile}."
#: lib/web/templates/email/activity/_post_activity_item.html.heex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 #, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:34
#: lib/web/templates/email/activity/_post_activity_item.text.eex:13
msgid "The post %{post} was deleted by %{profile}." msgid "The post %{post} was deleted by %{profile}."
msgstr "Le billet %{post} a été supprimé par %{profile}." msgstr "Le billet %{post} a été supprimé par %{profile}."
#: lib/web/templates/email/activity/_post_activity_item.html.heex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 #, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:19
#: lib/web/templates/email/activity/_post_activity_item.text.eex:7
msgid "The post %{post} was updated by %{profile}." msgid "The post %{post} was updated by %{profile}."
msgstr "Le billet %{post} a été mis à jour par %{profile}." msgstr "Le billet %{post} a été mis à jour par %{profile}."
#: lib/service/activity/renderer/member.ex:46 lib/web/templates/email/activity/_member_activity_item.html.heex:33 #, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.text.eex:22 #: lib/service/activity/renderer/member.ex:46
#: lib/web/templates/email/activity/_member_activity_item.html.heex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22
msgid "%{member} joined the group." msgid "%{member} joined the group."
msgstr "%{member} a rejoint le groupe." msgstr "%{member} a rejoint le groupe."
#: lib/service/activity/renderer/event.ex:63 lib/web/templates/email/activity/_event_activity_item.html.heex:58 #, elixir-format
#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 #: lib/service/activity/renderer/event.ex:63
#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25
msgid "%{profile} posted a comment on the event %{event}." msgid "%{profile} posted a comment on the event %{event}."
msgstr "%{profile} a posté un commentaire sur l'événement %{event}." msgstr "%{profile} a posté un commentaire sur l'événement %{event}."
#: lib/service/activity/renderer/event.ex:54 lib/web/templates/email/activity/_event_activity_item.html.heex:43 #, elixir-format
#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 #: lib/service/activity/renderer/event.ex:54
#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19
msgid "%{profile} replied to a comment on the event %{event}." msgid "%{profile} replied to a comment on the event %{event}."
msgstr "%{profile} a répondu à un commentaire sur l'événement %{event}." msgstr "%{profile} a répondu à un commentaire sur l'événement %{event}."
#, elixir-format
#: lib/web/templates/email/email_direct_activity.text.eex:27 #: lib/web/templates/email/email_direct_activity.text.eex:27
msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." 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." msgstr "Vous ne voulez pas recevoir de notifications d'activité ? Vous pouvez changer leur fréquence ou les désactiver dans vos préférences."
#: lib/web/templates/email/email_direct_activity.html.heex:135 lib/web/templates/email/email_direct_activity.text.eex:23 #, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:135
#: lib/web/templates/email/email_direct_activity.text.eex:23
msgid "View one more activity" msgid "View one more activity"
msgid_plural "View %{count} more activities" msgid_plural "View %{count} more activities"
msgstr[0] "Voir une activité de plus" msgstr[0] "Voir une activité de plus"
msgstr[1] "Voir %{count} activités de plus" msgstr[1] "Voir %{count} activités de plus"
#: lib/web/templates/email/email_direct_activity.html.heex:44 lib/web/templates/email/email_direct_activity.html.heex:46 #, elixir-format
#: lib/web/templates/email/email_direct_activity.text.eex:6 lib/web/templates/email/email_direct_activity.text.eex:7 #: lib/web/templates/email/email_direct_activity.html.heex:44
#: lib/web/templates/email/email_direct_activity.html.heex:46 lib/web/templates/email/email_direct_activity.text.eex:6
#: lib/web/templates/email/email_direct_activity.text.eex:7
msgid "There has been an activity!" msgid "There has been an activity!"
msgid_plural "There has been some activity!" msgid_plural "There has been some activity!"
msgstr[0] "Il y a eu une activité !" msgstr[0] "Il y a eu une activité !"
msgstr[1] "Il y a eu de l'activité !" msgstr[1] "Il y a eu de l'activité !"
#, elixir-format
#: lib/service/activity/renderer/renderer.ex:46 #: lib/service/activity/renderer/renderer.ex:46
msgid "Activity on %{instance}" msgid "Activity on %{instance}"
msgstr "Activité sur %{instance}" msgstr "Activité sur %{instance}"
#: lib/service/activity/renderer/comment.ex:38 lib/web/templates/email/activity/_comment_activity_item.html.heex:19 #, elixir-format
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/email_anonymous_activity.html.heex:41 #: lib/service/activity/renderer/comment.ex:38
#: lib/web/templates/email/email_anonymous_activity.text.eex:5 #: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 lib/web/templates/email/activity/_comment_activity_item.text.eex:7
#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5
msgid "%{profile} has posted an announcement under event %{event}." msgid "%{profile} has posted an announcement under event %{event}."
msgstr "%{profile} a posté une annonce sous l'événement %{event}." msgstr "%{profile} a posté une annonce sous l'événement %{event}."
#: lib/service/activity/renderer/comment.ex:24 lib/web/templates/email/activity/_comment_activity_item.html.heex:4 #, elixir-format
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 #: lib/service/activity/renderer/comment.ex:24
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 lib/web/templates/email/activity/_comment_activity_item.text.eex:1
msgid "%{profile} mentionned you in a comment under event %{event}." msgid "%{profile} mentionned you in a comment under event %{event}."
msgstr "%{profile} vous a mentionné dans un commentaire sous l'événement %{event}." msgstr "%{profile} vous a mentionné dans un commentaire sous l'événement %{event}."
#, elixir-format
#: lib/service/activity/renderer/discussion.ex:45 #: lib/service/activity/renderer/discussion.ex:45
msgid "%{profile} mentionned you in the discussion %{discussion}." msgid "%{profile} mentionned you in the discussion %{discussion}."
msgstr "%{profile} vous a mentionné dans la discussion %{discussion}." msgstr "%{profile} vous a mentionné dans la discussion %{discussion}."
#, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:155 #: lib/web/templates/email/email_direct_activity.html.heex:155
msgid "Don't want to receive activity notifications? You may change frequency or disable them in %{tag_start}your settings%{tag_end}." msgid "Don't want to receive activity notifications? You may change frequency or disable them in %{tag_start}your settings%{tag_end}."
msgstr "" 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" "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}." "%{tag_end}."
#: lib/web/templates/email/email_direct_activity.html.heex:42 lib/web/templates/email/email_direct_activity.text.eex:5 #, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:42
#: lib/web/templates/email/email_direct_activity.text.eex:5
msgid "Here's your weekly activity recap" msgid "Here's your weekly activity recap"
msgstr "Voici votre récapitulatif hebdomadaire d'activité" msgstr "Voici votre récapitulatif hebdomadaire d'activité"
#, elixir-format
#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 #: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140
msgid "Activity notification for %{instance}" msgid "Activity notification for %{instance}"
msgstr "Notification d'activité sur %{instance}" msgstr "Notification d'activité sur %{instance}"
#, elixir-format
#: lib/web/email/activity.ex:126 #: lib/web/email/activity.ex:126
msgid "Daily activity recap for %{instance}" msgid "Daily activity recap for %{instance}"
msgstr "Récapitulatif quotidien d'activité sur %{instance}" msgstr "Récapitulatif quotidien d'activité sur %{instance}"
#: lib/web/templates/email/email_direct_activity.html.heex:40 lib/web/templates/email/email_direct_activity.text.eex:4 #, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:40
#: lib/web/templates/email/email_direct_activity.text.eex:4
msgid "Here's your daily activity recap" msgid "Here's your daily activity recap"
msgstr "Voici votre récapitulatif quotidien d'activité" msgstr "Voici votre récapitulatif quotidien d'activité"
#, elixir-format
#: lib/web/email/activity.ex:133 #: lib/web/email/activity.ex:133
msgid "Weekly activity recap for %{instance}" msgid "Weekly activity recap for %{instance}"
msgstr "Récapitulatif hebdomadaire d'activité sur %{instance}" msgstr "Récapitulatif hebdomadaire d'activité sur %{instance}"
#: lib/service/activity/renderer/comment.ex:66 lib/web/templates/email/activity/_comment_activity_item.html.heex:51 #, elixir-format
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 #: lib/service/activity/renderer/comment.ex:66
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 lib/web/templates/email/activity/_comment_activity_item.text.eex:19
msgid "%{profile} has posted a new comment under your event %{event}." msgid "%{profile} has posted a new comment under your event %{event}."
msgstr "%{profile} a posté un nouveau commentaire sous votre événement %{event}." msgstr "%{profile} a posté un nouveau commentaire sous votre événement %{event}."
#: lib/service/activity/renderer/comment.ex:53 lib/web/templates/email/activity/_comment_activity_item.html.heex:36 #, elixir-format
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 #: lib/service/activity/renderer/comment.ex:53
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 lib/web/templates/email/activity/_comment_activity_item.text.eex:13
msgid "%{profile} has posted a new reply under your event %{event}." msgid "%{profile} has posted a new reply under your event %{event}."
msgstr "%{profile} a posté une nouvelle réponse sous votre événement %{event}." msgstr "%{profile} a posté une nouvelle réponse sous votre événement %{event}."
#, elixir-format
#: lib/web/email/activity.ex:46 #: lib/web/email/activity.ex:46
msgid "Announcement for your event %{event}" msgid "Announcement for your event %{event}"
msgstr "Annonce pour votre événement %{event}" msgstr "Annonce pour votre événement %{event}"
#, elixir-format
#: lib/service/activity/renderer/group.ex:23 #: lib/service/activity/renderer/group.ex:23
msgid "The group %{group} was updated by %{profile}." msgid "The group %{group} was updated by %{profile}."
msgstr "Le groupe %{group} a été mis à jour par %{profile}." msgstr "Le groupe %{group} a été mis à jour par %{profile}."
#, elixir-format
#: lib/service/activity/renderer/post.ex:47 #: lib/service/activity/renderer/post.ex:47
msgid "The post %{post} from group %{group} was deleted by %{profile}." msgid "The post %{post} from group %{group} was deleted by %{profile}."
msgstr "Le billet %{post} du groupe %{group} a été supprimé par %{profile}." msgstr "Le billet %{post} du groupe %{group} a été supprimé par %{profile}."
#, elixir-format
#: lib/service/activity/renderer/post.ex:31 #: lib/service/activity/renderer/post.ex:31
msgid "The post %{post} from group %{group} was published by %{profile}." msgid "The post %{post} from group %{group} was published by %{profile}."
msgstr "Le billet %{post} du groupe %{group} a été publié par %{profile}." msgstr "Le billet %{post} du groupe %{group} a été publié par %{profile}."
#, elixir-format
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "Le billet %{post} du groupe %{group} a été mis à jour par %{profile}." msgstr "Le billet %{post} du groupe %{group} a été mis à jour par %{profile}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}." msgid "%{profile} approved the membership request from %{member}."
msgstr "%{profile} a approuvé la demande d'adhésion de %{member}." msgstr "%{profile} a approuvé la demande d'adhésion de %{member}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}." msgid "%{profile} rejected the membership request from %{member}."
msgstr "%{profile} a rejeté la demande d'adhésion de %{member}." msgstr "%{profile} a rejeté la demande d'adhésion de %{member}."

View File

@ -10,7 +10,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"POT-Creation-Date: \n" "POT-Creation-Date: \n"
"PO-Revision-Date: 2021-11-12 17:13+0100\n" "PO-Revision-Date: 2021-11-15 15:55+0100\n"
"Last-Translator: Thomas Citharel <thomas.citharel@framasoft.org>\n" "Last-Translator: Thomas Citharel <thomas.citharel@framasoft.org>\n"
"Language-Team: French <https://weblate.framasoft.org/projects/mobilizon/backend/fr/>\n" "Language-Team: French <https://weblate.framasoft.org/projects/mobilizon/backend/fr/>\n"
"Language: fr\n" "Language: fr\n"
@ -640,12 +640,6 @@ msgid_plural "Would you wish to cancel your attendance to one or several events,
msgstr[0] "Si vous avez besoin d'annuler votre participation, il suffit d'accéder à la page de l'événement à partir du lien ci-dessus et de cliquer sur le bouton « Je participe »." msgstr[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 »." msgstr[1] "Si vous avez besoin d'annuler votre participation à un ou plusieurs événements, il suffit d'accéder aux pages des événement grâce aux liens ci-dessus et de cliquer sur le bouton « Je participe »."
#: lib/web/templates/email/pending_participation_notification.html.heex:38 lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] "Vous avez une demande de participation en attente à traiter :"
msgstr[1] "Vous avez %{number_participation_requests} demandes de participation en attente à traiter :"
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
msgstr "%{instance} est une instance Mobilizon." msgstr "%{instance} est une instance Mobilizon."
@ -656,7 +650,7 @@ msgstr "<b>%{instance}</b> est une instance Mobilizon."
#: 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!" msgid "A request is pending!"
msgstr "Une requête est en attente !" msgstr "Une demande est en attente !"
#: lib/web/templates/email/before_event_notification.html.heex:13 lib/web/templates/email/before_event_notification.text.eex:1 #: 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!" msgid "An event is upcoming!"
@ -718,7 +712,7 @@ msgstr "Localisation"
msgid "Location address was removed" msgid "Location address was removed"
msgstr "L'adresse physique a été enlevée" msgstr "L'adresse physique a été enlevée"
#: lib/web/templates/email/pending_participation_notification.html.heex:51 lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.html.heex:56 lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "Gérer les demandes de participation en attente" msgstr "Gérer les demandes de participation en attente"
@ -798,7 +792,7 @@ msgstr "Quoi de neuf aujourd'hui ?"
msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." 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." msgstr "Si vous souhaitez mettre à jour ou annuler votre participation, il vous suffit d'accéder à la page de l'événement par le lien ci-dessus et de cliquer sur le bouton Participer."
#: lib/web/templates/email/pending_participation_notification.html.heex:64 lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.html.heex:69 lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 »." msgstr "Vous recevez ce courriel parce que vous avez choisi de recevoir des notifications pour les demandes de participation en attente à vos événements. Vous pouvez désactiver ou modifier vos paramètres de notification dans les paramètres de votre compte utilisateur dans « Notifications »."
@ -1209,7 +1203,7 @@ msgstr "%{date_time} (dans votre fuseau horaire %{timezone} %{offset})"
msgid "On the agenda this week" msgid "On the agenda this week"
msgstr "Au programme cette semaine" msgstr "Au programme cette semaine"
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "Détails" msgstr "Détails"
@ -1217,7 +1211,7 @@ msgstr "Détails"
msgid "From the %{start} to the %{end}" msgid "From the %{start} to the %{end}"
msgstr "Du %{start} au %{end}" msgstr "Du %{start} au %{end}"
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "Gérer votre participation" msgstr "Gérer votre participation"
@ -1225,7 +1219,7 @@ msgstr "Gérer votre participation"
msgid "On %{date} from %{start_time} to %{end_time}" msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "Le %{date} de %{start_time} à %{end_time}" msgstr "Le %{date} de %{start_time} à %{end_time}"
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "Lire plus" msgstr "Lire plus"
@ -1249,7 +1243,7 @@ msgstr "Adresse :"
msgid "Date:" msgid "Date:"
msgstr "Date :" msgstr "Date :"
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "Détails :" msgstr "Détails :"
@ -1257,7 +1251,7 @@ msgstr "Détails :"
msgid "Manage your notification settings" msgid "Manage your notification settings"
msgstr "Gérer vos paramètres de notification" msgstr "Gérer vos paramètres de notification"
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "Gérer votre participation :" msgstr "Gérer votre participation :"
@ -1265,15 +1259,15 @@ msgstr "Gérer votre participation :"
msgid "Organizer: %{organizer}" msgid "Organizer: %{organizer}"
msgstr "Organisateur : %{organizer}" msgstr "Organisateur : %{organizer}"
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "Participer" msgstr "Participer"
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "Participer :" msgstr "Participer :"
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "Lire plus : %{url}" msgstr "Lire plus : %{url}"
@ -1332,3 +1326,9 @@ msgstr "Votre demande d'adhésion pour le groupe %{group} a été approuvée."
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "Votre demande d'adhésion pour le groupe %{link_start}<b>%{group}</b>%{link_end} a été approuvée." msgstr "Votre demande d'adhésion pour le groupe %{link_start}<b>%{group}</b>%{link_end} a été approuvée."
#: lib/web/templates/email/pending_participation_notification.html.heex:38 lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] "Vous avez une demande de participation en attente à traiter pour l'événement suivant :"
msgstr[1] "Vous avez %{number_participation_requests} demandes de participation en attente à traiter pour l'événement suivant :"

View File

@ -96,747 +96,937 @@ msgstr "doit être supérieur ou égal à %{number}"
msgid "must be equal to %{number}" msgid "must be equal to %{number}"
msgstr "doit être égal à %{number}" msgstr "doit être égal à %{number}"
#, elixir-format
#: lib/graphql/resolvers/user.ex:107 #: lib/graphql/resolvers/user.ex:107
msgid "Cannot refresh the token" msgid "Cannot refresh the token"
msgstr "Impossible de rafraîchir le jeton" msgstr "Impossible de rafraîchir le jeton"
#, elixir-format
#: lib/graphql/resolvers/group.ex:245 #: lib/graphql/resolvers/group.ex:245
msgid "Current profile is not a member of this group" msgid "Current profile is not a member of this group"
msgstr "Le profil actuel n'est pas un membre de ce groupe" msgstr "Le profil actuel n'est pas un membre de ce groupe"
#, elixir-format
#: lib/graphql/resolvers/group.ex:249 #: lib/graphql/resolvers/group.ex:249
msgid "Current profile is not an administrator of the selected group" 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é" msgstr "Le profil actuel n'est pas un·e administrateur·ice du groupe sélectionné"
#, elixir-format
#: lib/graphql/resolvers/user.ex:593 #: lib/graphql/resolvers/user.ex:593
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "Erreur lors de la sauvegarde des paramètres utilisateur" 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 #, elixir-format
#: lib/graphql/resolvers/group.ex:311 lib/graphql/resolvers/group.ex:342 lib/graphql/resolvers/group.ex:391 #: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:242
#: lib/graphql/resolvers/member.ex:79 #: lib/graphql/resolvers/group.ex:274 lib/graphql/resolvers/group.ex:311 lib/graphql/resolvers/group.ex:342
#: lib/graphql/resolvers/group.ex:391 lib/graphql/resolvers/member.ex:79
msgid "Group not found" msgid "Group not found"
msgstr "Groupe non trouvé" msgstr "Groupe non trouvé"
#, elixir-format
#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 #: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "Groupe avec l'ID %{id} non trouvé" msgstr "Groupe avec l'ID %{id} non trouvé"
#, elixir-format
#: lib/graphql/resolvers/user.ex:85 #: lib/graphql/resolvers/user.ex:85
msgid "Impossible to authenticate, either your email or password are invalid." 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." 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 #: lib/graphql/resolvers/group.ex:308
msgid "Member not found" msgid "Member not found"
msgstr "Membre non trouvé" msgstr "Membre non trouvé"
#, elixir-format
#: lib/graphql/resolvers/actor.ex:94 #: lib/graphql/resolvers/actor.ex:94
msgid "No profile found for the moderator user" msgid "No profile found for the moderator user"
msgstr "Aucun profil trouvé pour l'utilisateur modérateur" msgstr "Aucun profil trouvé pour l'utilisateur modérateur"
#, elixir-format
#: lib/graphql/resolvers/user.ex:253 #: lib/graphql/resolvers/user.ex:253
msgid "No user to validate with this email was found" msgid "No user to validate with this email was found"
msgstr "Aucun·e utilisateur·ice à valider avec cet email n'a été trouvé·e" 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 #: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:278
msgid "No user with this email was found" msgid "No user with this email was found"
msgstr "Aucun·e utilisateur·ice avec cette adresse e-mail n'a été trouvé·e" 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 #, elixir-format
#: lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 lib/graphql/resolvers/person.ex:353 #: lib/graphql/resolvers/feed_token.ex:28
#: lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 lib/graphql/resolvers/person.ex:425 #: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236
#: lib/graphql/resolvers/person.ex:440 #: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397
#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440
msgid "Profile is not owned by authenticated user" msgid "Profile is not owned by authenticated user"
msgstr "Le profil n'est pas possédé par l'utilisateur connecté" msgstr "Le profil n'est pas possédé par l'utilisateur connecté"
#, elixir-format
#: lib/graphql/resolvers/user.ex:156 #: lib/graphql/resolvers/user.ex:156
msgid "Registrations are not open" msgid "Registrations are not open"
msgstr "Les inscriptions ne sont pas ouvertes" msgstr "Les inscriptions ne sont pas ouvertes"
#, elixir-format
#: lib/graphql/resolvers/user.ex:408 #: lib/graphql/resolvers/user.ex:408
msgid "The current password is invalid" msgid "The current password is invalid"
msgstr "Le mot de passe actuel est invalid" msgstr "Le mot de passe actuel est invalid"
#, elixir-format
#: lib/graphql/resolvers/user.ex:451 #: lib/graphql/resolvers/user.ex:451
msgid "The new email doesn't seem to be valid" msgid "The new email doesn't seem to be valid"
msgstr "La nouvelle adresse e-mail ne semble pas être valide" msgstr "La nouvelle adresse e-mail ne semble pas être valide"
#, elixir-format
#: lib/graphql/resolvers/user.ex:454 #: lib/graphql/resolvers/user.ex:454
msgid "The new email must be different" msgid "The new email must be different"
msgstr "La nouvelle adresse e-mail doit être différente" msgstr "La nouvelle adresse e-mail doit être différente"
#, elixir-format
#: lib/graphql/resolvers/user.ex:411 #: lib/graphql/resolvers/user.ex:411
msgid "The new password must be different" msgid "The new password must be different"
msgstr "Le nouveau mot de passe doit être différent" msgstr "Le nouveau mot de passe doit être différent"
#: lib/graphql/resolvers/user.ex:458 lib/graphql/resolvers/user.ex:520 lib/graphql/resolvers/user.ex:523 #, elixir-format
#: lib/graphql/resolvers/user.ex:458 lib/graphql/resolvers/user.ex:520
#: lib/graphql/resolvers/user.ex:523
msgid "The password provided is invalid" msgid "The password provided is invalid"
msgstr "Le mot de passe fourni est invalide" msgstr "Le mot de passe fourni est invalide"
#, elixir-format
#: lib/graphql/resolvers/user.ex:415 #: lib/graphql/resolvers/user.ex:415
msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters."
msgstr "" msgstr ""
"Le mot de passe que vous avez choisi est trop court. Merci de vous assurer que votre mot de passe contienne au moins " "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." "6 caractères."
#, elixir-format
#: lib/graphql/resolvers/user.ex:274 #: lib/graphql/resolvers/user.ex:274
msgid "This user can't reset their password" msgid "This user can't reset their password"
msgstr "Cet·te utilisateur·ice ne peut pas réinitialiser son mot de passe" msgstr "Cet·te utilisateur·ice ne peut pas réinitialiser son mot de passe"
#, elixir-format
#: lib/graphql/resolvers/user.ex:81 #: lib/graphql/resolvers/user.ex:81
msgid "This user has been disabled" msgid "This user has been disabled"
msgstr "Cet·te utilisateur·ice a été désactivé·e" msgstr "Cet·te utilisateur·ice a été désactivé·e"
#, elixir-format
#: lib/graphql/resolvers/user.ex:232 lib/graphql/resolvers/user.ex:237 #: lib/graphql/resolvers/user.ex:232 lib/graphql/resolvers/user.ex:237
msgid "Unable to validate user" msgid "Unable to validate user"
msgstr "Impossible de valider l'utilisateur·ice" msgstr "Impossible de valider l'utilisateur·ice"
#, elixir-format
#: lib/graphql/resolvers/user.ex:501 #: lib/graphql/resolvers/user.ex:501
msgid "User already disabled" msgid "User already disabled"
msgstr "L'utilisateur·ice est déjà désactivé·e" msgstr "L'utilisateur·ice est déjà désactivé·e"
#, elixir-format
#: lib/graphql/resolvers/user.ex:568 #: lib/graphql/resolvers/user.ex:568
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "L'utilisateur·ice demandé·e n'est pas connecté·e" msgstr "L'utilisateur·ice demandé·e n'est pas connecté·e"
#, elixir-format
#: lib/graphql/resolvers/group.ex:280 #: lib/graphql/resolvers/group.ex:280
msgid "You are already a member of this group" msgid "You are already a member of this group"
msgstr "Vous êtes déjà membre de ce groupe" msgstr "Vous êtes déjà membre de ce groupe"
#, elixir-format
#: lib/graphql/resolvers/group.ex:315 #: lib/graphql/resolvers/group.ex:315
msgid "You can't leave this group because you are the only administrator" 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" 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 #: lib/graphql/resolvers/group.ex:277
msgid "You cannot join this group" msgid "You cannot join this group"
msgstr "Vous ne pouvez pas rejoindre ce groupe" msgstr "Vous ne pouvez pas rejoindre ce groupe"
#, elixir-format
#: lib/graphql/resolvers/group.ex:112 #: lib/graphql/resolvers/group.ex:112
msgid "You may not list groups unless moderator." msgid "You may not list groups unless moderator."
msgstr "Vous ne pouvez pas lister les groupes sauf à être modérateur·ice." msgstr "Vous ne pouvez pas lister les groupes sauf à être modérateur·ice."
#, elixir-format
#: lib/graphql/resolvers/user.ex:466 #: lib/graphql/resolvers/user.ex:466
msgid "You need to be logged-in to change your email" msgid "You need to be logged-in to change your email"
msgstr "Vous devez être connecté·e pour changer votre adresse e-mail" msgstr "Vous devez être connecté·e pour changer votre adresse e-mail"
#, elixir-format
#: lib/graphql/resolvers/user.ex:423 #: lib/graphql/resolvers/user.ex:423
msgid "You need to be logged-in to change your password" msgid "You need to be logged-in to change your password"
msgstr "Vous devez être connecté·e pour changer votre mot de passe" msgstr "Vous devez être connecté·e pour changer votre mot de passe"
#, elixir-format
#: lib/graphql/resolvers/group.ex:254 #: lib/graphql/resolvers/group.ex:254
msgid "You need to be logged-in to delete a group" msgid "You need to be logged-in to delete a group"
msgstr "Vous devez être connecté·e pour supprimer un groupe" msgstr "Vous devez être connecté·e pour supprimer un groupe"
#, elixir-format
#: lib/graphql/resolvers/user.ex:528 #: lib/graphql/resolvers/user.ex:528
msgid "You need to be logged-in to delete your account" msgid "You need to be logged-in to delete your account"
msgstr "Vous devez être connecté·e pour supprimer votre compte" msgstr "Vous devez être connecté·e pour supprimer votre compte"
#, elixir-format
#: lib/graphql/resolvers/group.ex:285 #: lib/graphql/resolvers/group.ex:285
msgid "You need to be logged-in to join a group" msgid "You need to be logged-in to join a group"
msgstr "Vous devez être connecté·e pour rejoindre un groupe" msgstr "Vous devez être connecté·e pour rejoindre un groupe"
#, elixir-format
#: lib/graphql/resolvers/group.ex:320 #: lib/graphql/resolvers/group.ex:320
msgid "You need to be logged-in to leave a group" msgid "You need to be logged-in to leave a group"
msgstr "Vous devez être connecté·e pour quitter un groupe" msgstr "Vous devez être connecté·e pour quitter un groupe"
#, elixir-format
#: lib/graphql/resolvers/group.ex:218 #: lib/graphql/resolvers/group.ex:218
msgid "You need to be logged-in to update a group" msgid "You need to be logged-in to update a group"
msgstr "Vous devez être connecté·e pour mettre à jour un groupe" msgstr "Vous devez être connecté·e pour mettre à jour un groupe"
#, elixir-format
#: lib/graphql/resolvers/user.ex:112 #: lib/graphql/resolvers/user.ex:112
msgid "You need to have an existing token to get a refresh token" 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" 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 #: lib/graphql/resolvers/user.ex:256 lib/graphql/resolvers/user.ex:281
msgid "You requested again a confirmation email too soon" msgid "You requested again a confirmation email too soon"
msgstr "Vous avez à nouveau demandé un email de confirmation trop vite" msgstr "Vous avez à nouveau demandé un email de confirmation trop vite"
#, elixir-format
#: lib/graphql/resolvers/user.ex:159 #: lib/graphql/resolvers/user.ex:159
msgid "Your email is not on the allowlist" msgid "Your email is not on the allowlist"
msgstr "Votre adresse e-mail n'est pas sur la liste d'autorisations" msgstr "Votre adresse e-mail n'est pas sur la liste d'autorisations"
#, elixir-format
#: lib/graphql/resolvers/actor.ex:100 #: lib/graphql/resolvers/actor.ex:100
msgid "Error while performing background task" msgid "Error while performing background task"
msgstr "Erreur lors de l'exécution d'une tâche d'arrière-plan" msgstr "Erreur lors de l'exécution d'une tâche d'arrière-plan"
#, elixir-format
#: lib/graphql/resolvers/actor.ex:32 #: lib/graphql/resolvers/actor.ex:32
msgid "No profile found with this ID" msgid "No profile found with this ID"
msgstr "Aucun profil trouvé avec cet ID" msgstr "Aucun profil trouvé avec cet ID"
#, elixir-format
#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 #: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97
msgid "No remote profile found with this ID" msgid "No remote profile found with this ID"
msgstr "Aucun profil distant trouvé avec cet ID" msgstr "Aucun profil distant trouvé avec cet ID"
#, elixir-format
#: lib/graphql/resolvers/actor.ex:72 #: lib/graphql/resolvers/actor.ex:72
msgid "Only moderators and administrators can suspend a profile" msgid "Only moderators and administrators can suspend a profile"
msgstr "Seul·es les modérateur·ice et les administrateur·ices peuvent suspendre un profil" msgstr "Seul·es les modérateur·ice et les administrateur·ices peuvent suspendre un profil"
#, elixir-format
#: lib/graphql/resolvers/actor.ex:105 #: lib/graphql/resolvers/actor.ex:105
msgid "Only moderators and administrators can unsuspend a profile" 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" 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 #: lib/graphql/resolvers/actor.ex:29
msgid "Only remote profiles may be refreshed" msgid "Only remote profiles may be refreshed"
msgstr "Seuls les profils distants peuvent être rafraîchis" msgstr "Seuls les profils distants peuvent être rafraîchis"
#, elixir-format
#: lib/graphql/resolvers/actor.ex:64 #: lib/graphql/resolvers/actor.ex:64
msgid "Profile already suspended" msgid "Profile already suspended"
msgstr "Le profil est déjà suspendu" msgstr "Le profil est déjà suspendu"
#, elixir-format
#: lib/graphql/resolvers/participant.ex:96 #: lib/graphql/resolvers/participant.ex:96
msgid "A valid email is required by your instance" msgid "A valid email is required by your instance"
msgstr "Une adresse e-mail valide est requise par votre 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" msgid "Anonymous participation is not enabled"
msgstr "La participation anonyme n'est pas activée" msgstr "La participation anonyme n'est pas activée"
#, elixir-format
#: lib/graphql/resolvers/person.ex:210 #: lib/graphql/resolvers/person.ex:210
msgid "Cannot remove the last administrator of a group" msgid "Cannot remove the last administrator of a group"
msgstr "Impossible de supprimer le ou la dernier·ère administrateur·ice d'un groupe" msgstr "Impossible de supprimer le ou la dernier·ère administrateur·ice d'un groupe"
#, elixir-format
#: lib/graphql/resolvers/person.ex:207 #: lib/graphql/resolvers/person.ex:207
msgid "Cannot remove the last identity of a user" msgid "Cannot remove the last identity of a user"
msgstr "Impossible de supprimer le dernier profil d'un·e utilisateur·ice" msgstr "Impossible de supprimer le dernier profil d'un·e utilisateur·ice"
#, elixir-format
#: lib/graphql/resolvers/comment.ex:126 #: lib/graphql/resolvers/comment.ex:126
msgid "Comment is already deleted" msgid "Comment is already deleted"
msgstr "Le commentaire est déjà supprimé" msgstr "Le commentaire est déjà supprimé"
#, elixir-format
#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 #: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69
msgid "Discussion not found" msgid "Discussion not found"
msgstr "Discussion non trouvée" msgstr "Discussion non trouvée"
#, elixir-format
#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 #: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82
msgid "Error while saving report" msgid "Error while saving report"
msgstr "Erreur lors de la sauvegarde du signalement" msgstr "Erreur lors de la sauvegarde du signalement"
#, elixir-format
#: lib/graphql/resolvers/report.ex:102 #: lib/graphql/resolvers/report.ex:102
msgid "Error while updating report" msgid "Error while updating report"
msgstr "Erreur lors de la mise à jour du signalement" msgstr "Erreur lors de la mise à jour du signalement"
#, elixir-format
#: lib/graphql/resolvers/participant.ex:131 #: lib/graphql/resolvers/participant.ex:131
msgid "Event id not found" msgid "Event id not found"
msgstr "ID de l'événement non trouvé" msgstr "ID de l'événement non trouvé"
#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 lib/graphql/resolvers/event.ex:412 #, elixir-format
#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360
#: lib/graphql/resolvers/event.ex:412
msgid "Event not found" msgid "Event not found"
msgstr "Événement non trouvé" msgstr "Événement non trouvé"
#: lib/graphql/resolvers/participant.ex:87 lib/graphql/resolvers/participant.ex:128 #, elixir-format
#: lib/graphql/resolvers/participant.ex:155 lib/graphql/resolvers/participant.ex:336 #: 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" msgid "Event with this ID %{id} doesn't exist"
msgstr "L'événement avec cet ID %{id} n'existe pas" msgstr "L'événement avec cet ID %{id} n'existe pas"
#, elixir-format
#: lib/graphql/resolvers/participant.ex:103 #: lib/graphql/resolvers/participant.ex:103
msgid "Internal Error" msgid "Internal Error"
msgstr "Erreur interne" msgstr "Erreur interne"
#, elixir-format
#: lib/graphql/resolvers/discussion.ex:219 #: lib/graphql/resolvers/discussion.ex:219
msgid "No discussion with ID %{id}" msgid "No discussion with ID %{id}"
msgstr "Aucune discussion avec l'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 #, elixir-format
#: lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 #: 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" msgid "No profile found for user"
msgstr "Aucun profil trouvé pour l'utilisateur modérateur" msgstr "Aucun profil trouvé pour l'utilisateur modérateur"
#, elixir-format
#: lib/graphql/resolvers/feed_token.ex:64 #: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token" msgid "No such feed token"
msgstr "Aucun jeton de flux correspondant" msgstr "Aucun jeton de flux correspondant"
#, elixir-format
#: lib/graphql/resolvers/participant.ex:259 #: lib/graphql/resolvers/participant.ex:259
msgid "Participant already has role %{role}" msgid "Participant already has role %{role}"
msgstr "Le ou la participant·e a déjà le rôle %{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 #, elixir-format
#: lib/graphql/resolvers/participant.ex:263 #: lib/graphql/resolvers/participant.ex:187
#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263
msgid "Participant not found" msgid "Participant not found"
msgstr "Participant·e non trouvé·e" msgstr "Participant·e non trouvé·e"
#, elixir-format
#: lib/graphql/resolvers/person.ex:32 #: lib/graphql/resolvers/person.ex:32
msgid "Person with ID %{id} not found" msgid "Person with ID %{id} not found"
msgstr "Personne avec l'ID %{id} non trouvé" msgstr "Personne avec l'ID %{id} non trouvé"
#, elixir-format
#: lib/graphql/resolvers/person.ex:56 #: lib/graphql/resolvers/person.ex:56
msgid "Person with username %{username} not found" msgid "Person with username %{username} not found"
msgstr "Personne avec le nom %{name} non trouvé" msgstr "Personne avec le nom %{name} non trouvé"
#, elixir-format
#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 #: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203
msgid "Post ID is not a valid ID" msgid "Post ID is not a valid ID"
msgstr "L'ID du billet n'est pas un ID valide" 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 #: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206
msgid "Post doesn't exist" msgid "Post doesn't exist"
msgstr "Le billet n'existe pas" msgstr "Le billet n'existe pas"
#, elixir-format
#: lib/graphql/resolvers/member.ex:82 #: lib/graphql/resolvers/member.ex:82
msgid "Profile invited doesn't exist" msgid "Profile invited doesn't exist"
msgstr "Le profil invité n'existe pas" msgstr "Le profil invité n'existe pas"
#, elixir-format
#: lib/graphql/resolvers/member.ex:91 lib/graphql/resolvers/member.ex:95 #: lib/graphql/resolvers/member.ex:91 lib/graphql/resolvers/member.ex:95
msgid "Profile is already a member of this group" msgid "Profile is already a member of this group"
msgstr "Ce profil est déjà membre de ce groupe" 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 #, elixir-format
#: lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 lib/graphql/resolvers/resource.ex:165 #: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175
#: lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 lib/graphql/resolvers/todos.ex:83 #: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132
#: lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 lib/graphql/resolvers/todos.ex:214 #: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58
#: lib/graphql/resolvers/todos.ex:246 #: 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" msgid "Profile is not member of group"
msgstr "Le profil n'est pas un·e membre du groupe" 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 #: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233
msgid "Profile not found" msgid "Profile not found"
msgstr "Profile non trouvé" msgstr "Profile non trouvé"
#, elixir-format
#: lib/graphql/resolvers/report.ex:40 #: lib/graphql/resolvers/report.ex:40
msgid "Report not found" msgid "Report not found"
msgstr "Groupe non trouvé" msgstr "Groupe non trouvé"
#, elixir-format
#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 #: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196
msgid "Resource doesn't exist" msgid "Resource doesn't exist"
msgstr "La ressource n'existe pas" msgstr "La ressource n'existe pas"
#, elixir-format
#: lib/graphql/resolvers/participant.ex:124 #: lib/graphql/resolvers/participant.ex:124
msgid "The event has already reached its maximum capacity" msgid "The event has already reached its maximum capacity"
msgstr "L'événement a déjà atteint sa capacité maximale" msgstr "L'événement a déjà atteint sa capacité maximale"
#, elixir-format
#: lib/graphql/resolvers/participant.ex:282 #: lib/graphql/resolvers/participant.ex:282
msgid "This token is invalid" msgid "This token is invalid"
msgstr "Ce jeton est invalide" msgstr "Ce jeton est invalide"
#, elixir-format
#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 #: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243
msgid "Todo doesn't exist" msgid "Todo doesn't exist"
msgstr "Ce todo n'existe pas" 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" msgid "Todo list doesn't exist"
msgstr "Cette todo-liste n'existe pas" msgstr "Cette todo-liste n'existe pas"
#, elixir-format
#: lib/graphql/resolvers/feed_token.ex:73 #: lib/graphql/resolvers/feed_token.ex:73
msgid "Token does not exist" msgid "Token does not exist"
msgstr "Ce jeton n'existe pas" msgstr "Ce jeton n'existe pas"
#, elixir-format
#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 #: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID" msgid "Token is not a valid UUID"
msgstr "Ce jeton n'est pas un UUID valide" msgstr "Ce jeton n'est pas un UUID valide"
#, elixir-format
#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 #: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458
msgid "User not found" msgid "User not found"
msgstr "Utilisateur·ice non trouvé·e" msgstr "Utilisateur·ice non trouvé·e"
#, elixir-format
#: lib/graphql/resolvers/person.ex:310 #: lib/graphql/resolvers/person.ex:310
msgid "You already have a profile for this user" msgid "You already have a profile for this user"
msgstr "Vous avez déjà un profil pour cet utilisateur" msgstr "Vous avez déjà un profil pour cet utilisateur"
#, elixir-format
#: lib/graphql/resolvers/participant.ex:134 #: lib/graphql/resolvers/participant.ex:134
msgid "You are already a participant of this event" msgid "You are already a participant of this event"
msgstr "Vous êtes déjà un·e participant·e à cet événement" msgstr "Vous êtes déjà un·e participant·e à cet événement"
#, elixir-format
#: lib/graphql/resolvers/member.ex:85 #: lib/graphql/resolvers/member.ex:85
msgid "You are not a member of this group" msgid "You are not a member of this group"
msgstr "Vous n'êtes pas membre de ce groupe" msgstr "Vous n'êtes pas membre de ce groupe"
#: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171 lib/graphql/resolvers/member.ex:186 #, elixir-format
#: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" 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" msgstr "Vous n'êtes pas administrateur·ice ou modérateur·ice de ce groupe"
#, elixir-format
#: lib/graphql/resolvers/comment.ex:59 #: lib/graphql/resolvers/comment.ex:59
msgid "You are not allowed to create a comment if not connected" 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" msgstr "Vous n'êtes pas autorisé·e à créer un commentaire si non connecté·e"
#, elixir-format
#: lib/graphql/resolvers/feed_token.ex:41 #: lib/graphql/resolvers/feed_token.ex:41
msgid "You are not allowed to create a feed token if not connected" 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" 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 #: lib/graphql/resolvers/comment.ex:134
msgid "You are not allowed to delete a comment if not connected" 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" msgstr "Vous n'êtes pas autorisé·e à supprimer un commentaire si non connecté·e"
#, elixir-format
#: lib/graphql/resolvers/feed_token.ex:82 #: lib/graphql/resolvers/feed_token.ex:82
msgid "You are not allowed to delete a feed token if not connected" 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" msgstr "Vous n'êtes pas autorisé·e à supprimer un jeton de flux si non connecté·e"
#, elixir-format
#: lib/graphql/resolvers/comment.ex:93 #: lib/graphql/resolvers/comment.ex:93
msgid "You are not allowed to update a comment if not connected" 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" 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" 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" msgstr "Vous ne pouvez pas quitter cet événement car vous en êtes le ou la seule créateur·ice participant"
#, elixir-format
#: lib/graphql/resolvers/member.ex:190 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" 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 " "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" "administrateur·ice"
#, elixir-format
#: lib/graphql/resolvers/comment.ex:122 #: lib/graphql/resolvers/comment.ex:122
msgid "You cannot delete this comment" msgid "You cannot delete this comment"
msgstr "Vous ne pouvez pas supprimer ce commentaire" msgstr "Vous ne pouvez pas supprimer ce commentaire"
#, elixir-format
#: lib/graphql/resolvers/event.ex:408 #: lib/graphql/resolvers/event.ex:408
msgid "You cannot delete this event" msgid "You cannot delete this event"
msgstr "Vous ne pouvez pas supprimer cet événement" msgstr "Vous ne pouvez pas supprimer cet événement"
#, elixir-format
#: lib/graphql/resolvers/member.ex:88 #: lib/graphql/resolvers/member.ex:88
msgid "You cannot invite to this group" msgid "You cannot invite to this group"
msgstr "Vous ne pouvez pas rejoindre ce groupe" msgstr "Vous ne pouvez pas rejoindre ce groupe"
#, elixir-format
#: lib/graphql/resolvers/feed_token.ex:76 #: lib/graphql/resolvers/feed_token.ex:76
msgid "You don't have permission to delete this token" msgid "You don't have permission to delete this token"
msgstr "Vous n'avez pas la permission de supprimer ce jeton" msgstr "Vous n'avez pas la permission de supprimer ce jeton"
#, elixir-format
#: lib/graphql/resolvers/admin.ex:54 #: lib/graphql/resolvers/admin.ex:54
msgid "You need to be logged-in and a moderator to list action logs" 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" 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 #: lib/graphql/resolvers/report.ex:28
msgid "You need to be logged-in and a moderator to list reports" 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" msgstr "Vous devez être connecté·e et une modérateur·ice pour lister les signalements"
#, elixir-format
#: lib/graphql/resolvers/report.ex:107 #: lib/graphql/resolvers/report.ex:107
msgid "You need to be logged-in and a moderator to update a report" 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" msgstr "Vous devez être connecté·e et une modérateur·ice pour modifier un signalement"
#, elixir-format
#: lib/graphql/resolvers/report.ex:45 #: lib/graphql/resolvers/report.ex:45
msgid "You need to be logged-in and a moderator to view a report" 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" msgstr "Vous devez être connecté·e pour et une modérateur·ice pour visionner un signalement"
#, elixir-format
#: lib/graphql/resolvers/admin.ex:255 #: lib/graphql/resolvers/admin.ex:255
msgid "You need to be logged-in and an administrator to access admin settings" 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" msgstr "Vous devez être connecté·e et un·e administrateur·ice pour accéder aux paramètres administrateur"
#, elixir-format
#: lib/graphql/resolvers/admin.ex:239 #: lib/graphql/resolvers/admin.ex:239
msgid "You need to be logged-in and an administrator to access dashboard statistics" 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" msgstr "Vous devez être connecté·e et un·e administrateur·ice pour accéder aux panneau de statistiques"
#, elixir-format
#: lib/graphql/resolvers/admin.ex:281 #: lib/graphql/resolvers/admin.ex:281
msgid "You need to be logged-in and an administrator to save admin settings" 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" msgstr "Vous devez être connecté·e et un·e administrateur·ice pour sauvegarder les paramètres administrateur"
#, elixir-format
#: lib/graphql/resolvers/discussion.ex:84 #: lib/graphql/resolvers/discussion.ex:84
msgid "You need to be logged-in to access discussions" msgid "You need to be logged-in to access discussions"
msgstr "Vous devez être connecté·e pour accéder aux discussions" msgstr "Vous devez être connecté·e pour accéder aux discussions"
#, elixir-format
#: lib/graphql/resolvers/resource.ex:96 #: lib/graphql/resolvers/resource.ex:96
msgid "You need to be logged-in to access resources" msgid "You need to be logged-in to access resources"
msgstr "Vous devez être connecté·e pour supprimer un groupe" msgstr "Vous devez être connecté·e pour supprimer un groupe"
#, elixir-format
#: lib/graphql/resolvers/event.ex:318 #: lib/graphql/resolvers/event.ex:318
msgid "You need to be logged-in to create events" msgid "You need to be logged-in to create events"
msgstr "Vous devez être connecté·e pour créer des événements" msgstr "Vous devez être connecté·e pour créer des événements"
#, elixir-format
#: lib/graphql/resolvers/post.ex:141 #: lib/graphql/resolvers/post.ex:141
msgid "You need to be logged-in to create posts" msgid "You need to be logged-in to create posts"
msgstr "Vous devez être connecté·e pour quitter un groupe" msgstr "Vous devez être connecté·e pour quitter un groupe"
#, elixir-format
#: lib/graphql/resolvers/report.ex:79 #: lib/graphql/resolvers/report.ex:79
msgid "You need to be logged-in to create reports" msgid "You need to be logged-in to create reports"
msgstr "Vous devez être connecté·e pour quitter un groupe" msgstr "Vous devez être connecté·e pour quitter un groupe"
#, elixir-format
#: lib/graphql/resolvers/resource.ex:137 #: lib/graphql/resolvers/resource.ex:137
msgid "You need to be logged-in to create resources" msgid "You need to be logged-in to create resources"
msgstr "Vous devez être connecté·e pour quitter un groupe" msgstr "Vous devez être connecté·e pour quitter un groupe"
#, elixir-format
#: lib/graphql/resolvers/event.ex:417 #: lib/graphql/resolvers/event.ex:417
msgid "You need to be logged-in to delete an event" msgid "You need to be logged-in to delete an event"
msgstr "Vous devez être connecté·e pour supprimer un groupe" msgstr "Vous devez être connecté·e pour supprimer un groupe"
#, elixir-format
#: lib/graphql/resolvers/post.ex:214 #: lib/graphql/resolvers/post.ex:214
msgid "You need to be logged-in to delete posts" msgid "You need to be logged-in to delete posts"
msgstr "Vous devez être connecté·e pour supprimer un groupe" msgstr "Vous devez être connecté·e pour supprimer un groupe"
#, elixir-format
#: lib/graphql/resolvers/resource.ex:204 #: lib/graphql/resolvers/resource.ex:204
msgid "You need to be logged-in to delete resources" msgid "You need to be logged-in to delete resources"
msgstr "Vous devez être connecté·e pour supprimer un groupe" msgstr "Vous devez être connecté·e pour supprimer un groupe"
#, elixir-format
#: lib/graphql/resolvers/participant.ex:108 #: lib/graphql/resolvers/participant.ex:108
msgid "You need to be logged-in to join an event" msgid "You need to be logged-in to join an event"
msgstr "Vous devez être connecté·e pour rejoindre un événement" msgstr "Vous devez être connecté·e pour rejoindre un événement"
#, elixir-format
#: lib/graphql/resolvers/participant.ex:225 #: lib/graphql/resolvers/participant.ex:225
msgid "You need to be logged-in to leave an event" msgid "You need to be logged-in to leave an event"
msgstr "Vous devez être connecté·e pour quitter un groupe" msgstr "Vous devez être connecté·e pour quitter un groupe"
#, elixir-format
#: lib/graphql/resolvers/event.ex:374 #: lib/graphql/resolvers/event.ex:374
msgid "You need to be logged-in to update an event" msgid "You need to be logged-in to update an event"
msgstr "Vous devez être connecté·e pour mettre à jour un groupe" msgstr "Vous devez être connecté·e pour mettre à jour un groupe"
#, elixir-format
#: lib/graphql/resolvers/post.ex:180 #: lib/graphql/resolvers/post.ex:180
msgid "You need to be logged-in to update posts" msgid "You need to be logged-in to update posts"
msgstr "Vous devez être connecté·e pour mettre à jour un groupe" msgstr "Vous devez être connecté·e pour mettre à jour un groupe"
#, elixir-format
#: lib/graphql/resolvers/resource.ex:174 #: lib/graphql/resolvers/resource.ex:174
msgid "You need to be logged-in to update resources" msgid "You need to be logged-in to update resources"
msgstr "Vous devez être connecté·e pour mettre à jour un groupe" msgstr "Vous devez être connecté·e pour mettre à jour un groupe"
#, elixir-format
#: lib/graphql/resolvers/resource.ex:233 #: lib/graphql/resolvers/resource.ex:233
msgid "You need to be logged-in to view a resource preview" msgid "You need to be logged-in to view a resource preview"
msgstr "Vous devez être connecté·e pour supprimer un groupe" msgstr "Vous devez être connecté·e pour supprimer un groupe"
#, elixir-format
#: lib/graphql/resolvers/resource.ex:129 #: lib/graphql/resolvers/resource.ex:129
msgid "Parent resource doesn't belong to this group" msgid "Parent resource doesn't belong to this group"
msgstr "La ressource parente n'appartient pas à ce groupe" msgstr "La ressource parente n'appartient pas à ce groupe"
#, elixir-format
#: lib/mobilizon/users/user.ex:114 #: lib/mobilizon/users/user.ex:114
msgid "The chosen password is too short." msgid "The chosen password is too short."
msgstr "Le mot de passe choisi est trop court." msgstr "Le mot de passe choisi est trop court."
#, elixir-format
#: lib/mobilizon/users/user.ex:142 #: lib/mobilizon/users/user.ex:142
msgid "The registration token is already in use, this looks like an issue on our side." 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é." 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 #: lib/mobilizon/users/user.ex:108
msgid "This email is already used." msgid "This email is already used."
msgstr "Cette adresse e-mail est déjà utilisée." msgstr "Cette adresse e-mail est déjà utilisée."
#, elixir-format
#: lib/graphql/error.ex:97 #: lib/graphql/error.ex:97
msgid "Post not found" msgid "Post not found"
msgstr "Billet non trouvé" msgstr "Billet non trouvé"
#, elixir-format
#: lib/graphql/error.ex:84 #: lib/graphql/error.ex:84
msgid "Invalid arguments passed" msgid "Invalid arguments passed"
msgstr "Paramètres fournis invalides" msgstr "Paramètres fournis invalides"
#, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:90
msgid "Invalid credentials" msgid "Invalid credentials"
msgstr "Identifiants invalides" msgstr "Identifiants invalides"
#, elixir-format
#: lib/graphql/error.ex:88 #: lib/graphql/error.ex:88
msgid "Reset your password to login" msgid "Reset your password to login"
msgstr "Réinitialiser votre mot de passe pour vous connecter" msgstr "Réinitialiser votre mot de passe pour vous connecter"
#, elixir-format
#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 #: lib/graphql/error.ex:95 lib/graphql/error.ex:100
msgid "Resource not found" msgid "Resource not found"
msgstr "Ressource non trouvée" msgstr "Ressource non trouvée"
#, elixir-format
#: lib/graphql/error.ex:102 #: lib/graphql/error.ex:102
msgid "Something went wrong" msgid "Something went wrong"
msgstr "Quelque chose s'est mal passé" msgstr "Quelque chose s'est mal passé"
#, elixir-format
#: lib/graphql/error.ex:83 #: lib/graphql/error.ex:83
msgid "Unknown Resource" msgid "Unknown Resource"
msgstr "Ressource inconnue" msgstr "Ressource inconnue"
#, elixir-format
#: lib/graphql/error.ex:93 #: lib/graphql/error.ex:93
msgid "You don't have permission to do this" msgid "You don't have permission to do this"
msgstr "Vous n'avez pas la permission de faire ceci" msgstr "Vous n'avez pas la permission de faire ceci"
#, elixir-format
#: lib/graphql/error.ex:85 #: lib/graphql/error.ex:85
msgid "You need to be logged in" msgid "You need to be logged in"
msgstr "Vous devez être connecté·e" msgstr "Vous devez être connecté·e"
#, elixir-format
#: lib/graphql/resolvers/member.ex:116 #: lib/graphql/resolvers/member.ex:116
msgid "You can't accept this invitation with this profile." msgid "You can't accept this invitation with this profile."
msgstr "Vous ne pouvez pas accepter cette invitation avec ce profil." msgstr "Vous ne pouvez pas accepter cette invitation avec ce profil."
#, elixir-format
#: lib/graphql/resolvers/member.ex:137 #: lib/graphql/resolvers/member.ex:137
msgid "You can't reject this invitation with this profile." msgid "You can't reject this invitation with this profile."
msgstr "Vous ne pouvez pas rejeter cette invitation avec ce profil." msgstr "Vous ne pouvez pas rejeter cette invitation avec ce profil."
#, elixir-format
#: lib/graphql/resolvers/media.ex:71 #: lib/graphql/resolvers/media.ex:71
msgid "File doesn't have an allowed MIME type." msgid "File doesn't have an allowed MIME type."
msgstr "Le fichier n'a pas un type MIME autorisé." msgstr "Le fichier n'a pas un type MIME autorisé."
#, elixir-format
#: lib/graphql/resolvers/group.ex:213 #: lib/graphql/resolvers/group.ex:213
msgid "Profile is not administrator for the group" msgid "Profile is not administrator for the group"
msgstr "Le profil n'est pas administrateur·ice pour le groupe" msgstr "Le profil n'est pas administrateur·ice pour le groupe"
#, elixir-format
#: lib/graphql/resolvers/event.ex:363 #: lib/graphql/resolvers/event.ex:363
msgid "You can't edit this event." msgid "You can't edit this event."
msgstr "Vous ne pouvez pas éditer cet événement." msgstr "Vous ne pouvez pas éditer cet événement."
#, elixir-format
#: lib/graphql/resolvers/event.ex:366 #: lib/graphql/resolvers/event.ex:366
msgid "You can't attribute this event to this profile." msgid "You can't attribute this event to this profile."
msgstr "Vous ne pouvez pas attribuer cet événement à ce profil." msgstr "Vous ne pouvez pas attribuer cet événement à ce profil."
#, elixir-format
#: lib/graphql/resolvers/member.ex:140 #: lib/graphql/resolvers/member.ex:140
msgid "This invitation doesn't exist." msgid "This invitation doesn't exist."
msgstr "Cette invitation n'existe pas." msgstr "Cette invitation n'existe pas."
#, elixir-format
#: lib/graphql/resolvers/member.ex:215 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "Ce·tte membre a déjà été rejetté·e." msgstr "Ce·tte membre a déjà été rejetté·e."
#, elixir-format
#: lib/graphql/resolvers/member.ex:239 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "Vous n'avez pas les droits pour supprimer ce·tte membre." msgstr "Vous n'avez pas les droits pour supprimer ce·tte membre."
#: lib/mobilizon/actors/actor.ex:350 #, elixir-format
#: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "Cet identifiant est déjà pris." msgstr "Cet identifiant est déjà pris."
#, elixir-format
#: lib/graphql/resolvers/discussion.ex:81 #: lib/graphql/resolvers/discussion.ex:81
msgid "You must provide either an ID or a slug to access a discussion" 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" msgstr "Vous devez fournir un ID ou bien un slug pour accéder à une discussion"
#, elixir-format
#: lib/graphql/resolvers/event.ex:313 #: lib/graphql/resolvers/event.ex:313
msgid "Organizer profile is not owned by the user" msgid "Organizer profile is not owned by the user"
msgstr "Le profil de l'organisateur·ice n'appartient pas à l'utilisateur·ice" msgstr "Le profil de l'organisateur·ice n'appartient pas à l'utilisateur·ice"
#, elixir-format
#: lib/graphql/resolvers/participant.ex:93 #: lib/graphql/resolvers/participant.ex:93
msgid "Profile ID provided is not the anonymous profile one" msgid "Profile ID provided is not the anonymous profile one"
msgstr "L'ID du profil fourni n'est pas celui du profil anonyme" 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 #, elixir-format
#: lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 #: 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" msgid "The provided picture is too heavy"
msgstr "L'image fournie est trop lourde" msgstr "L'image fournie est trop lourde"
#, elixir-format
#: lib/web/views/utils.ex:34 #: lib/web/views/utils.ex:34
msgid "Index file not found. You need to recompile the front-end." msgid "Index file not found. You need to recompile the front-end."
msgstr "Fichier d'index non trouvé. Vous devez recompiler le front-end." msgstr "Fichier d'index non trouvé. Vous devez recompiler le front-end."
#, elixir-format
#: lib/graphql/resolvers/resource.ex:126 #: lib/graphql/resolvers/resource.ex:126
msgid "Error while creating resource" msgid "Error while creating resource"
msgstr "Erreur lors de la création de la resource" msgstr "Erreur lors de la création de la resource"
#, elixir-format
#: lib/graphql/resolvers/user.ex:484 #: lib/graphql/resolvers/user.ex:484
msgid "Invalid activation token" msgid "Invalid activation token"
msgstr "Jeton d'activation invalide" msgstr "Jeton d'activation invalide"
#, elixir-format
#: lib/graphql/resolvers/resource.ex:223 #: lib/graphql/resolvers/resource.ex:223
msgid "Unable to fetch resource details from this URL." msgid "Unable to fetch resource details from this URL."
msgstr "Impossible de récupérer les détails de la ressource depuis cette URL." msgstr "Impossible de récupérer les détails de la ressource depuis cette URL."
#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 lib/graphql/resolvers/participant.ex:328 #, elixir-format
#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253
#: lib/graphql/resolvers/participant.ex:328
msgid "Provided profile doesn't have moderator permissions on this event" 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" msgstr "Le profil modérateur fourni n'a pas de permissions sur cet événement"
#, elixir-format
#: lib/graphql/resolvers/event.ex:299 #: lib/graphql/resolvers/event.ex:299
msgid "Organizer profile doesn't have permission to create an event on behalf of this group" 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" msgstr "Le profil de l'organisateur⋅ice n'a pas la permission de créer un événement au nom de ce groupe"
#, elixir-format
#: lib/graphql/resolvers/event.ex:354 #: lib/graphql/resolvers/event.ex:354
msgid "This profile doesn't have permission to update an event on behalf of this group" 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" 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 #: lib/graphql/resolvers/user.ex:163
msgid "Your e-mail has been denied registration or uses a disallowed e-mail provider" 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" 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 #: lib/graphql/resolvers/comment.ex:129
msgid "Comment not found" msgid "Comment not found"
msgstr "Commentaire non trouvé" msgstr "Commentaire non trouvé"
#, elixir-format
#: lib/graphql/resolvers/discussion.ex:123 #: lib/graphql/resolvers/discussion.ex:123
msgid "Error while creating a discussion" msgid "Error while creating a discussion"
msgstr "Erreur lors de la création de la discussion" msgstr "Erreur lors de la création de la discussion"
#, elixir-format
#: lib/graphql/resolvers/user.ex:607 #: lib/graphql/resolvers/user.ex:607
msgid "Error while updating locale" msgid "Error while updating locale"
msgstr "Erreur lors de la mise à jour des options linguistiques" msgstr "Erreur lors de la mise à jour des options linguistiques"
#, elixir-format
#: lib/graphql/resolvers/person.ex:307 #: lib/graphql/resolvers/person.ex:307
msgid "Error while uploading pictures" msgid "Error while uploading pictures"
msgstr "Erreur lors du téléversement des images" msgstr "Erreur lors du téléversement des images"
#, elixir-format
#: lib/graphql/resolvers/participant.ex:190 #: lib/graphql/resolvers/participant.ex:190
msgid "Failed to leave the event" msgid "Failed to leave the event"
msgstr "Impossible de quitter l'événement" msgstr "Impossible de quitter l'événement"
#, elixir-format
#: lib/graphql/resolvers/group.ex:209 #: lib/graphql/resolvers/group.ex:209
msgid "Failed to update the group" msgid "Failed to update the group"
msgstr "Impossible de mettre à jour le groupe" msgstr "Impossible de mettre à jour le groupe"
#, elixir-format
#: lib/graphql/resolvers/user.ex:448 #: lib/graphql/resolvers/user.ex:448
msgid "Failed to update user email" msgid "Failed to update user email"
msgstr "Impossible de mettre à jour l'adresse e-mail de utilisateur" msgstr "Impossible de mettre à jour l'adresse e-mail de utilisateur"
#, elixir-format
#: lib/graphql/resolvers/user.ex:480 #: lib/graphql/resolvers/user.ex:480
msgid "Failed to validate user email" msgid "Failed to validate user email"
msgstr "Impossible de valider l'adresse e-mail de l'utilisateur·ice" msgstr "Impossible de valider l'adresse e-mail de l'utilisateur·ice"
#, elixir-format
#: lib/graphql/resolvers/participant.ex:146 #: lib/graphql/resolvers/participant.ex:146
msgid "The anonymous actor ID is invalid" msgid "The anonymous actor ID is invalid"
msgstr "L'ID de l'acteur anonyme est invalide" msgstr "L'ID de l'acteur anonyme est invalide"
#, elixir-format
#: lib/graphql/resolvers/resource.ex:162 #: lib/graphql/resolvers/resource.ex:162
msgid "Unknown error while updating resource" msgid "Unknown error while updating resource"
msgstr "Erreur inconnue lors de la mise à jour de la resource" msgstr "Erreur inconnue lors de la mise à jour de la resource"
#, elixir-format
#: lib/graphql/resolvers/comment.ex:84 #: lib/graphql/resolvers/comment.ex:84
msgid "You are not the comment creator" msgid "You are not the comment creator"
msgstr "Vous n'êtes pas le ou la createur⋅ice du commentaire" msgstr "Vous n'êtes pas le ou la createur⋅ice du commentaire"
#, elixir-format
#: lib/graphql/resolvers/user.ex:405 #: lib/graphql/resolvers/user.ex:405
msgid "You cannot change your password." msgid "You cannot change your password."
msgstr "Vous ne pouvez pas changer votre mot de passe." msgstr "Vous ne pouvez pas changer votre mot de passe."
#, elixir-format
#: lib/graphql/resolvers/participant.ex:321 #: lib/graphql/resolvers/participant.ex:321
msgid "Format not supported" msgid "Format not supported"
msgstr "Format non supporté" msgstr "Format non supporté"
#, elixir-format
#: lib/graphql/resolvers/participant.ex:305 #: lib/graphql/resolvers/participant.ex:305
msgid "A dependency needed to export to %{format} is not installed" 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" msgstr "Une dépendance nécessaire pour exporter en %{format} n'est pas installée"
#, elixir-format
#: lib/graphql/resolvers/participant.ex:313 #: lib/graphql/resolvers/participant.ex:313
msgid "An error occured while saving export" msgid "An error occured while saving export"
msgstr "Une erreur est survenue lors de l'enregistrement de l'export" msgstr "Une erreur est survenue lors de l'enregistrement de l'export"
#, elixir-format
#: lib/web/controllers/export_controller.ex:30 #: lib/web/controllers/export_controller.ex:30
msgid "Export to format %{format} is not enabled on this instance" msgid "Export to format %{format} is not enabled on this instance"
msgstr "L'export au format %{format} n'est pas activé sur cette instance" msgstr "L'export au format %{format} n'est pas activé sur cette instance"
#, elixir-format
#: lib/graphql/resolvers/group.ex:165 #: lib/graphql/resolvers/group.ex:165
msgid "Only admins can create groups" msgid "Only admins can create groups"
msgstr "Seul⋅es les administrateur⋅ices peuvent créer des groupes" msgstr "Seul⋅es les administrateur⋅ices peuvent créer des groupes"
#, elixir-format
#: lib/graphql/resolvers/event.ex:306 #: lib/graphql/resolvers/event.ex:306
msgid "Only groups can create events" msgid "Only groups can create events"
msgstr "Seuls les groupes peuvent créer des événements" msgstr "Seuls les groupes peuvent créer des événements"
#, elixir-format
#: lib/graphql/resolvers/event.ex:292 #: lib/graphql/resolvers/event.ex:292
msgid "Unknown error while creating event" msgid "Unknown error while creating event"
msgstr "Erreur inconnue lors de la création de l'événement" msgstr "Erreur inconnue lors de la création de l'événement"
#, elixir-format
#: lib/graphql/resolvers/user.ex:461 #: lib/graphql/resolvers/user.ex:461
msgid "User cannot change email" msgid "User cannot change email"
msgstr "L'utilisateur ne peut changer son adresse e-mail" msgstr "L'utilisateur ne peut changer son adresse e-mail"
#, elixir-format
#: lib/graphql/resolvers/group.ex:364 #: lib/graphql/resolvers/group.ex:364
msgid "Follow does not match your account" msgid "Follow does not match your account"
msgstr "L'abonnement ne correspond pas à votre compte" msgstr "L'abonnement ne correspond pas à votre compte"
#, elixir-format
#: lib/graphql/resolvers/group.ex:368 #: lib/graphql/resolvers/group.ex:368
msgid "Follow not found" msgid "Follow not found"
msgstr "Abonnement non trouvé" msgstr "Abonnement non trouvé"
#, elixir-format
#: lib/graphql/resolvers/user.ex:327 #: lib/graphql/resolvers/user.ex:327
msgid "Profile with username %{username} not found" msgid "Profile with username %{username} not found"
msgstr "Personne avec le nom %{name} non trouvé" msgstr "Personne avec le nom %{name} non trouvé"
#, elixir-format
#: lib/graphql/resolvers/user.ex:322 #: lib/graphql/resolvers/user.ex:322
msgid "This profile does not belong to you" msgid "This profile does not belong to you"
msgstr "Ce profil ne vous appartient pas" msgstr "Ce profil ne vous appartient pas"
#, elixir-format
#: lib/graphql/resolvers/group.ex:338 #: lib/graphql/resolvers/group.ex:338
msgid "You are already following this group" msgid "You are already following this group"
msgstr "Vous êtes déjà membre de ce groupe" msgstr "Vous êtes déjà membre de ce groupe"
#, elixir-format
#: lib/graphql/resolvers/group.ex:347 #: lib/graphql/resolvers/group.ex:347
msgid "You need to be logged-in to follow a group" msgid "You need to be logged-in to follow a group"
msgstr "Vous devez être connecté·e pour rejoindre un groupe" msgstr "Vous devez être connecté·e pour rejoindre un groupe"
#, elixir-format
#: lib/graphql/resolvers/group.ex:396 #: lib/graphql/resolvers/group.ex:396
msgid "You need to be logged-in to unfollow a group" msgid "You need to be logged-in to unfollow a group"
msgstr "Vous devez être connecté·e pour rejoindre un groupe" msgstr "Vous devez être connecté·e pour rejoindre un groupe"
#, elixir-format
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "Vous devez être connecté·e pour mettre à jour un groupe" msgstr "Vous devez être connecté·e pour mettre à jour un groupe"
#, elixir-format
#: lib/graphql/resolvers/member.ex:208 #: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist" msgid "This member does not exist"
msgstr "Ce membre n'existe pas" msgstr "Ce membre n'existe pas"
#, elixir-format
#: lib/graphql/resolvers/member.ex:232 #: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member." msgid "You don't have the role needed to remove this member."
msgstr "Vous n'avez pas les droits pour supprimer ce·tte membre." msgstr "Vous n'avez pas les droits pour supprimer ce·tte membre."
#, elixir-format
#: lib/graphql/resolvers/member.ex:250 #: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member" msgid "You must be logged-in to remove a member"
msgstr "Vous devez être connecté⋅e pour supprimer un⋅e membre" msgstr "Vous devez être connecté⋅e pour supprimer un⋅e membre"

View File

@ -773,16 +773,6 @@ msgstr[1] ""
msgstr[2] "" msgstr[2] ""
msgstr[3] "" msgstr[3] ""
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -885,8 +875,8 @@ msgid "Location address was removed"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "" msgstr ""
@ -997,8 +987,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
@ -1525,7 +1515,7 @@ msgid "On the agenda this week"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1536,7 +1526,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1547,7 +1537,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1578,7 +1568,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1588,7 +1578,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1599,17 +1589,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -1675,12 +1665,22 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""

View File

@ -809,7 +809,7 @@ msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "" msgstr ""

View File

@ -929,16 +929,6 @@ msgstr[1] ""
"Desexas cancelar a túa participación nun ou en varios eventos, visita as " "Desexas cancelar a túa participación nun ou en varios eventos, visita as "
"páxinas a través das ligazóns superiores e preme no botón « Attending »." "páxinas a través das ligazóns superiores e preme no botón « Attending »."
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] "Tes unha solicitude de participación pendente de atender:"
msgstr[1] ""
"Tes %{number_participation_requests} solicitudes de participación pendentes "
"de atender:"
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -1057,8 +1047,8 @@ msgid "Location address was removed"
msgstr "Eliminouse o enderezo da localización" msgstr "Eliminouse o enderezo da localización"
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "Xestionar solicitudes pendentes" msgstr "Xestionar solicitudes pendentes"
@ -1175,8 +1165,8 @@ msgstr ""
"páxina do evento na ligazón superior e preme no botón Participar." "páxina do evento na ligazón superior e preme no botón Participar."
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
"Recibes este email porque escolleches ser notificada sobre as solicitudes " "Recibes este email porque escolleches ser notificada sobre as solicitudes "
@ -1813,7 +1803,7 @@ msgid "On the agenda this week"
msgstr "Un evento previsto nesta semana" msgstr "Un evento previsto nesta semana"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1824,7 +1814,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1835,7 +1825,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1866,7 +1856,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1876,7 +1866,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1887,17 +1877,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "Participación aprobada" msgstr "Participación aprobada"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "Participación aprobada" msgstr "Participación aprobada"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -1963,12 +1953,22 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] "Tes unha solicitude de participación pendente de atender:"
msgstr[1] ""
"Tes %{number_participation_requests} solicitudes de participación pendentes "
"de atender:"

View File

@ -819,7 +819,7 @@ msgid "You don't have the right to remove this member."
msgstr "Non tes permiso para eliminar este membro." msgstr "Non tes permiso para eliminar este membro."
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "Este nome de usuaria xa está pillado." msgstr "Este nome de usuaria xa está pillado."

View File

@ -812,14 +812,6 @@ msgid_plural "Would you wish to cancel your attendance to one or several events,
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] ""
msgstr[1] ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -922,8 +914,8 @@ msgid "Location address was removed"
msgstr "A hely eltávolításra került" msgstr "A hely eltávolításra került"
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "Függő kérések kezelése" msgstr "Függő kérések kezelése"
@ -1036,8 +1028,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
@ -1564,7 +1556,7 @@ msgid "On the agenda this week"
msgstr "Egy esemény tervezve a héten" msgstr "Egy esemény tervezve a héten"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1575,7 +1567,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1586,7 +1578,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1617,7 +1609,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1627,7 +1619,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1638,17 +1630,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "Részvétel jóváhagyva" msgstr "Részvétel jóváhagyva"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "Részvétel jóváhagyva" msgstr "Részvétel jóváhagyva"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -1714,12 +1706,20 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] ""
msgstr[1] ""

View File

@ -842,7 +842,7 @@ msgid "You don't have the right to remove this member."
msgstr "Nincs meg a jogosultsága a tag eltávolításához." msgstr "Nincs meg a jogosultsága a tag eltávolításához."
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "Ez a felhasználónév már foglalt." msgstr "Ez a felhasználónév már foglalt."

View File

@ -793,13 +793,6 @@ msgid "Would you wish to cancel your attendance, visit the event page through th
msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." 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] "" msgstr[0] ""
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -902,8 +895,8 @@ msgid "Location address was removed"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "" msgstr ""
@ -1016,8 +1009,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
@ -1547,7 +1540,7 @@ msgid "On the agenda this week"
msgstr "%{nb_events} acara direncanakan pekan ini" msgstr "%{nb_events} acara direncanakan pekan ini"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1558,7 +1551,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1569,7 +1562,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1600,7 +1593,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1610,7 +1603,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1621,17 +1614,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -1697,12 +1690,19 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] ""

View File

@ -798,7 +798,7 @@ msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "" msgstr ""

View File

@ -954,16 +954,6 @@ msgstr[1] ""
"pagine dell'evento attraverso il links sotto e seleziona il pulsante " "pagine dell'evento attraverso il links sotto e seleziona il pulsante "
"'Partecipo'." "'Partecipo'."
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] "Hai una richiesta di partecipazione in sospeso da esaminare:"
msgstr[1] ""
"Hai %{number_participation_requests} richieste di partecipazione in sospeso "
"da esaminare:"
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -1083,8 +1073,8 @@ msgid "Location address was removed"
msgstr "L'indirizzo del luogo è stato rimosso" msgstr "L'indirizzo del luogo è stato rimosso"
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "Gestisci le richieste in sospeso" msgstr "Gestisci le richieste in sospeso"
@ -1205,8 +1195,8 @@ msgstr ""
"pulsante Partecipanti." "pulsante Partecipanti."
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
"Hai ricevuto questa email perché hai scelto di ricevere notifiche per " "Hai ricevuto questa email perché hai scelto di ricevere notifiche per "
@ -1854,7 +1844,7 @@ msgid "On the agenda this week"
msgstr "Un evento in programma questa settimana" msgstr "Un evento in programma questa settimana"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1865,7 +1855,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1876,7 +1866,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1907,7 +1897,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1917,7 +1907,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1928,17 +1918,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "Partecipazione approvata" msgstr "Partecipazione approvata"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "Partecipazione approvata" msgstr "Partecipazione approvata"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -2004,12 +1994,22 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] "Hai una richiesta di partecipazione in sospeso da esaminare:"
msgstr[1] ""
"Hai %{number_participation_requests} richieste di partecipazione in sospeso "
"da esaminare:"

View File

@ -817,7 +817,7 @@ msgid "You don't have the right to remove this member."
msgstr "Non hai il diritto di rimuovere questo membro." msgstr "Non hai il diritto di rimuovere questo membro."
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "Questo nome utente è già in uso." msgstr "Questo nome utente è già in uso."

View File

@ -758,13 +758,6 @@ msgid "Would you wish to cancel your attendance, visit the event page through th
msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." 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] "" msgstr[0] ""
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -867,8 +860,8 @@ msgid "Location address was removed"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "" msgstr ""
@ -979,8 +972,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
@ -1507,7 +1500,7 @@ msgid "On the agenda this week"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1518,7 +1511,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1529,7 +1522,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1560,7 +1553,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1570,7 +1563,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1581,17 +1574,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -1657,12 +1650,19 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] ""

View File

@ -791,7 +791,7 @@ msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "" msgstr ""

View File

@ -779,14 +779,6 @@ msgstr[1] ""
"Als u uw deelname moet annuleren, gaat u naar de pagina van het evenement " "Als u uw deelname moet annuleren, gaat u naar de pagina van het evenement "
"via de link hierboven, en klikt u op de deelnameknop." "via de link hierboven, en klikt u op de deelnameknop."
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] ""
msgstr[1] ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -891,8 +883,8 @@ msgid "Location address was removed"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "" msgstr ""
@ -1003,8 +995,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
@ -1532,7 +1524,7 @@ msgid "On the agenda this week"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1543,7 +1535,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1554,7 +1546,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1585,7 +1577,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1595,7 +1587,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1606,17 +1598,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "Deelname goedgekeurd" msgstr "Deelname goedgekeurd"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "Deelname goedgekeurd" msgstr "Deelname goedgekeurd"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -1682,12 +1674,20 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] ""
msgstr[1] ""

View File

@ -797,7 +797,7 @@ msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "" msgstr ""

View File

@ -924,16 +924,6 @@ msgstr[1] ""
"Viss du vil avbryta deltakinga di på ei eller fleire hendingar, kan du gå " "Viss du vil avbryta deltakinga di på ei eller fleire hendingar, kan du gå "
"til hendingssidene via lenkene over og klikka på «deltek»-knappen." "til hendingssidene via lenkene over og klikka på «deltek»-knappen."
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] "Du har ein førespurnad om deltaking å handtera:"
msgstr[1] ""
"Du har %{number_participation_requests} førespurnader om deltaking å "
"handtera:"
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -1052,8 +1042,8 @@ msgid "Location address was removed"
msgstr "Adressa vart fjerna" msgstr "Adressa vart fjerna"
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "Sjå over ventande førespurnader" msgstr "Sjå over ventande førespurnader"
@ -1169,8 +1159,8 @@ msgstr ""
"hendingssida med lenka over og klikka på Deltek-knappen." "hendingssida med lenka over og klikka på Deltek-knappen."
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
"Du får denne eposten fordi du har valt å få varslingar når det er ventande " "Du får denne eposten fordi du har valt å få varslingar når det er ventande "
@ -1812,7 +1802,7 @@ msgid "On the agenda this week"
msgstr "Ei planlagd hending denne veka" msgstr "Ei planlagd hending denne veka"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "Detaljar" msgstr "Detaljar"
@ -1823,7 +1813,7 @@ msgid "From the %{start} to the %{end}"
msgstr "Frå %{start} til %{end}" msgstr "Frå %{start} til %{end}"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "Styr deltakinga di" msgstr "Styr deltakinga di"
@ -1834,7 +1824,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "%{date} frå %{start_time} til %{end_time}" msgstr "%{date} frå %{start_time} til %{end_time}"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "Les meir" msgstr "Les meir"
@ -1865,7 +1855,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "Detaljar" msgstr "Detaljar"
@ -1875,7 +1865,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "Styr deltakinga di" msgstr "Styr deltakinga di"
@ -1886,17 +1876,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "Deltakar" msgstr "Deltakar"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "Deltakar" msgstr "Deltakar"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "Les meir" msgstr "Les meir"
@ -1962,12 +1952,22 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] "Du har ein førespurnad om deltaking å handtera:"
msgstr[1] ""
"Du har %{number_participation_requests} førespurnader om deltaking å "
"handtera:"

View File

@ -834,7 +834,7 @@ msgid "You don't have the right to remove this member."
msgstr "Du har ikkje løyve til å fjerna denne medlemen." msgstr "Du har ikkje løyve til å fjerna denne medlemen."
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "Dette brukarnamnet er oppteke." msgstr "Dette brukarnamnet er oppteke."

View File

@ -851,14 +851,6 @@ msgstr[1] ""
"vos cal pas quaccedir a las paginas dels eveniment via lo ligam çai-jos e " "vos cal pas quaccedir a las paginas dels eveniment via lo ligam çai-jos e "
"clicar lo boton de participacion." "clicar lo boton de participacion."
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] ""
msgstr[1] ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -964,8 +956,8 @@ msgid "Location address was removed"
msgstr "Ladreça fisica es estada levada" msgstr "Ladreça fisica es estada levada"
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "Gerir las demandas de participacions en espèra" msgstr "Gerir las demandas de participacions en espèra"
@ -1079,8 +1071,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
@ -1617,7 +1609,7 @@ msgid "On the agenda this week"
msgstr "Un eveniment previst aquesta setmana" msgstr "Un eveniment previst aquesta setmana"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1628,7 +1620,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1639,7 +1631,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1670,7 +1662,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1680,7 +1672,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1691,17 +1683,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "Participacion aprovada" msgstr "Participacion aprovada"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "Participacion aprovada" msgstr "Participacion aprovada"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -1767,12 +1759,20 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] ""
msgstr[1] ""

View File

@ -809,7 +809,7 @@ msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "" msgstr ""

View File

@ -845,19 +845,6 @@ msgstr[2] ""
"Jeżeli musisz anulować swoje uczestnictwo, przejdź na stronę wydarzenia " "Jeżeli musisz anulować swoje uczestnictwo, przejdź na stronę wydarzenia "
"używając powyższego przycisku i naciśnij przycisk zgłaszania udziału." "używając powyższego przycisku i naciśnij przycisk zgłaszania udziału."
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] "Masz jedną prośbę o zatwierdzenie uczestnictwa do przejrzenia:"
msgstr[1] ""
"Masz %{number_participation_requests} prośby o zatwierdzenie uczestnictwa do "
"przejrzenia:"
msgstr[2] ""
"Masz %{number_participation_requests} próśb o zatwierdzenie uczestnictwa do "
"przejrzenia:"
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -975,8 +962,8 @@ msgid "Location address was removed"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "Zarządzaj oczekującymi zgłoszeniami" msgstr "Zarządzaj oczekującymi zgłoszeniami"
@ -1089,8 +1076,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
@ -1631,7 +1618,7 @@ msgid "On the agenda this week"
msgstr "Jedno wydarzenie zaplanowane na ten tydzień" msgstr "Jedno wydarzenie zaplanowane na ten tydzień"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1642,7 +1629,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1653,7 +1640,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1684,7 +1671,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1694,7 +1681,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1705,17 +1692,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "Uczestnictwo przyjęte" msgstr "Uczestnictwo przyjęte"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "Uczestnictwo przyjęte" msgstr "Uczestnictwo przyjęte"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -1781,12 +1768,25 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] "Masz jedną prośbę o zatwierdzenie uczestnictwa do przejrzenia:"
msgstr[1] ""
"Masz %{number_participation_requests} prośby o zatwierdzenie uczestnictwa do "
"przejrzenia:"
msgstr[2] ""
"Masz %{number_participation_requests} próśb o zatwierdzenie uczestnictwa do "
"przejrzenia:"

View File

@ -826,7 +826,7 @@ msgid "You don't have the right to remove this member."
msgstr "Nie masz uprawnień do usunięcia tego członka." msgstr "Nie masz uprawnień do usunięcia tego członka."
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "" msgstr ""

View File

@ -762,14 +762,6 @@ msgid_plural "Would you wish to cancel your attendance to one or several events,
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] ""
msgstr[1] ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -872,8 +864,8 @@ msgid "Location address was removed"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "" msgstr ""
@ -984,8 +976,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
@ -1512,7 +1504,7 @@ msgid "On the agenda this week"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1523,7 +1515,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1534,7 +1526,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1565,7 +1557,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1575,7 +1567,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1586,17 +1578,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -1662,12 +1654,20 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] ""
msgstr[1] ""

View File

@ -797,7 +797,7 @@ msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "" msgstr ""

View File

@ -837,14 +837,6 @@ msgstr[1] ""
"Se você precisar cancelar a sua participação apenas acesse a página do " "Se você precisar cancelar a sua participação apenas acesse a página do "
"evento através do link acima e clique no botão participação." "evento através do link acima e clique no botão participação."
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] ""
msgstr[1] ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -949,8 +941,8 @@ msgid "Location address was removed"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "" msgstr ""
@ -1061,8 +1053,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
@ -1624,7 +1616,7 @@ msgid "On the agenda this week"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1635,7 +1627,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1646,7 +1638,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1677,7 +1669,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1687,7 +1679,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1698,17 +1690,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "Participação aprovada" msgstr "Participação aprovada"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "Participação aprovada" msgstr "Participação aprovada"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -1774,12 +1766,20 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] ""
msgstr[1] ""

View File

@ -797,7 +797,7 @@ msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "" msgstr ""

View File

@ -955,19 +955,6 @@ msgstr[2] ""
"просто перейдите на страницы мероприятий по указанным выше ссылкам и нажмите " "просто перейдите на страницы мероприятий по указанным выше ссылкам и нажмите "
"кнопку « Я участвую »." "кнопку « Я участвую »."
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] "У вас есть ожидающий рассмотрения запрос на участие:"
msgstr[1] ""
"У вас есть %{number_participation_requests} ожидающих рассмотрения запроса "
"на участие:"
msgstr[2] ""
"У вас есть %{number_participation_requests} ожидающих рассмотрения запросов "
"на участие:"
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -1087,8 +1074,8 @@ msgid "Location address was removed"
msgstr "Адрес местоположения был удален" msgstr "Адрес местоположения был удален"
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "Управление запросами в ожидании" msgstr "Управление запросами в ожидании"
@ -1203,8 +1190,8 @@ msgstr ""
"страницу мероприятия по ссылке выше и нажмите кнопку « Я участвую »." "страницу мероприятия по ссылке выше и нажмите кнопку « Я участвую »."
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
"Вы получили это письмо, потому что выбрали получение уведомлений об " "Вы получили это письмо, потому что выбрали получение уведомлений об "
@ -1857,7 +1844,7 @@ msgid "On the agenda this week"
msgstr "На этой неделе запланировано одно мероприятие" msgstr "На этой неделе запланировано одно мероприятие"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "Подробности" msgstr "Подробности"
@ -1868,7 +1855,7 @@ msgid "From the %{start} to the %{end}"
msgstr "От %{start} к %{end}" msgstr "От %{start} к %{end}"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "Управление своим участием" msgstr "Управление своим участием"
@ -1879,7 +1866,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "%{date} с %{start_time} по %{end_time}" msgstr "%{date} с %{start_time} по %{end_time}"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "Подробнее" msgstr "Подробнее"
@ -1910,7 +1897,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "Подробности" msgstr "Подробности"
@ -1920,7 +1907,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "Управление своим участием" msgstr "Управление своим участием"
@ -1931,17 +1918,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "Участие одобрено" msgstr "Участие одобрено"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "Участие одобрено" msgstr "Участие одобрено"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "Подробнее" msgstr "Подробнее"
@ -2007,12 +1994,25 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] "У вас есть ожидающий рассмотрения запрос на участие:"
msgstr[1] ""
"У вас есть %{number_participation_requests} ожидающих рассмотрения запроса "
"на участие:"
msgstr[2] ""
"У вас есть %{number_participation_requests} ожидающих рассмотрения запросов "
"на участие:"

View File

@ -846,7 +846,7 @@ msgid "You don't have the right to remove this member."
msgstr "У вас нет прав на удаление этого участника." msgstr "У вас нет прав на удаление этого участника."
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "Это имя пользователя уже занято." msgstr "Это имя пользователя уже занято."

View File

@ -784,14 +784,6 @@ msgstr[1] ""
"Om du behöver lämna återbud är det bara att gå till evenemangens sidor, via " "Om du behöver lämna återbud är det bara att gå till evenemangens sidor, via "
"länkarna ovan, och klicka på deltagande-knappen." "länkarna ovan, och klicka på deltagande-knappen."
#, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process:"
msgid_plural "You have %{number_participation_requests} attendance requests to process:"
msgstr[0] ""
msgstr[1] ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/email.text.eex:11 #: lib/web/templates/email/email.text.eex:11
msgid "%{instance} is powered by Mobilizon." msgid "%{instance} is powered by Mobilizon."
@ -897,8 +889,8 @@ msgid "Location address was removed"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:51 #: lib/web/templates/email/pending_participation_notification.html.heex:56
#: lib/web/templates/email/pending_participation_notification.text.eex:6 #: lib/web/templates/email/pending_participation_notification.text.eex:8
msgid "Manage pending requests" msgid "Manage pending requests"
msgstr "" msgstr ""
@ -1009,8 +1001,8 @@ msgid "Would you wish to update or cancel your attendance, simply access the eve
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/pending_participation_notification.html.heex:64 #: lib/web/templates/email/pending_participation_notification.html.heex:69
#: lib/web/templates/email/pending_participation_notification.text.eex:8 #: lib/web/templates/email/pending_participation_notification.text.eex:10
msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." 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 "" msgstr ""
@ -1540,7 +1532,7 @@ msgid "On the agenda this week"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:11 #: lib/web/templates/email/participation/event_card.html.heex:58
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -1551,7 +1543,7 @@ msgid "From the %{start} to the %{end}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:70 #: lib/web/templates/email/participation/event_card.html.heex:20
msgid "Manage your participation" msgid "Manage your participation"
msgstr "" msgstr ""
@ -1562,7 +1554,7 @@ msgid "On %{date} from %{start_time} to %{end_time}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.html.heex:19 #: lib/web/templates/email/participation/event_card.html.heex:66
msgid "Read more" msgid "Read more"
msgstr "" msgstr ""
@ -1593,7 +1585,7 @@ msgid "Date:"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:5 #: lib/web/templates/email/participation/event_card.text.eex:7
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -1603,7 +1595,7 @@ msgid "Manage your notification settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Manage your participation:" msgid "Manage your participation:"
msgstr "" msgstr ""
@ -1614,17 +1606,17 @@ msgid "Organizer: %{organizer}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.html.heex:92 #: lib/web/templates/email/participation/event_card.html.heex:42
msgid "Participate" msgid "Participate"
msgstr "Ditt deltagande har godkänts" msgstr "Ditt deltagande har godkänts"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/card/_metadata.text.eex:4 #: lib/web/templates/email/participation/event_card.text.eex:5
msgid "Participate:" msgid "Participate:"
msgstr "Ditt deltagande har godkänts" msgstr "Ditt deltagande har godkänts"
#, elixir-format #, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:7 #: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more : %{url}" msgid "Read more : %{url}"
msgstr "" msgstr ""
@ -1690,12 +1682,20 @@ msgstr ""
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3 #: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved." msgid "Your membership request for group %{group} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38 #: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "" msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/pending_participation_notification.html.heex:38
#: lib/web/templates/email/pending_participation_notification.text.eex:4
msgid "You have one pending attendance request to process for the following event:"
msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:"
msgstr[0] ""
msgstr[1] ""

View File

@ -804,7 +804,7 @@ msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/mobilizon/actors/actor.ex:350 #: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken." msgid "This username is already taken."
msgstr "" msgstr ""

View File

@ -454,6 +454,21 @@ defmodule Mobilizon.GraphQL.Resolvers.UserTest do
Config.put([:instance, :registration_email_denylist], []) Config.put([:instance, :registration_email_denylist], [])
end end
test "create_user/3 lowers domain part of email",
%{
conn: conn
} do
res =
conn
|> AbsintheHelpers.graphql_query(
query: @create_user_mutation,
variables: Map.put(@user_creation, :email, "test+alias@DEMO.tld")
)
assert res["errors"] == nil
assert res["data"]["createUser"]["email"] == "test+alias@demo.tld"
end
test "register_person/3 doesn't register a profile from an unknown email", %{conn: conn} do test "register_person/3 doesn't register a profile from an unknown email", %{conn: conn} do
conn conn
|> put_req_header("accept-language", "fr") |> put_req_header("accept-language", "fr")

View File

@ -353,6 +353,7 @@ defmodule Mobilizon.Service.Notifications.SchedulerTest do
scheduled_at = scheduled_at =
DateTime.utc_now() DateTime.utc_now()
|> DateTime.add(3600)
|> DateTime.shift_zone!("Europe/Paris") |> DateTime.shift_zone!("Europe/Paris")
|> (&%{&1 | minute: 0, second: 0, microsecond: {0, 0}}).() |> (&%{&1 | minute: 0, second: 0, microsecond: {0, 0}}).()

View File

@ -318,6 +318,12 @@ defmodule Mobilizon.Service.Workers.NotificationTest do
test "if there are participants to approve" do test "if there are participants to approve" do
%User{id: user_id} = user = insert(:user) %User{id: user_id} = user = insert(:user)
settings =
insert(:settings,
user_id: user_id,
timezone: "Europe/Paris"
)
%Event{id: event_id} = event = insert(:event) %Event{id: event_id} = event = insert(:event)
%Participant{} = insert(:participant, event: event, role: :not_approved) %Participant{} = insert(:participant, event: event, role: :not_approved)
@ -333,7 +339,7 @@ defmodule Mobilizon.Service.Workers.NotificationTest do
assert_delivered_email( assert_delivered_email(
NotificationMailer.pending_participation_notification( NotificationMailer.pending_participation_notification(
user, %User{user | settings: settings},
event, event,
2 2
) )