Merge branch 'feature/notifications' into 'master'

Send email notifications when a participation is approved/rejected

Closes #164

See merge request framasoft/mobilizon!206
This commit is contained in:
Thomas Citharel 2019-09-30 18:58:57 +02:00
commit fd123f56f2
47 changed files with 3092 additions and 484 deletions

View File

@ -14,7 +14,7 @@
</div>
</div>
<footer class="card-footer">
<b-button v-if="participant.role === ParticipantRole.NOT_APPROVED" @click="accept(participant)" type="is-success" class="card-footer-item">{{ $t('Approve') }}</b-button>
<b-button v-if="[ParticipantRole.NOT_APPROVED, ParticipantRole.REJECTED].includes(participant.role)" @click="accept(participant)" type="is-success" class="card-footer-item">{{ $t('Approve') }}</b-button>
<b-button v-if="participant.role === ParticipantRole.NOT_APPROVED" @click="reject(participant)" type="is-danger" class="card-footer-item">{{ $t('Reject')}} </b-button>
<b-button v-if="participant.role === ParticipantRole.PARTICIPANT" @click="exclude(participant)" type="is-danger" class="card-footer-item">{{ $t('Exclude')}} </b-button>
<span v-if="participant.role === ParticipantRole.CREATOR" class="card-footer-item">{{ $t('Creator')}} </span>

View File

@ -2,6 +2,7 @@
<div class="participation-button">
<b-dropdown aria-role="list" position="is-bottom-left" v-if="participation && participation.role === ParticipantRole.PARTICIPANT">
<button class="button is-success" type="button" slot="trigger">
<b-icon icon="check"></b-icon>
<template>
<span>{{ $t('I participate') }}</span>
</template>
@ -12,7 +13,7 @@
<!-- {{ $t('Change my identity…')}}-->
<!-- </b-dropdown-item>-->
<b-dropdown-item :value="false" aria-role="listitem" @click="confirmLeave">
<b-dropdown-item :value="false" aria-role="listitem" @click="confirmLeave" class="has-text-danger">
{{ $t('Cancel my participation…')}}
</b-dropdown-item>
</b-dropdown>
@ -20,6 +21,7 @@
<div v-else-if="participation && participation.role === ParticipantRole.NOT_APPROVED">
<b-dropdown aria-role="list" position="is-bottom-left" class="dropdown-disabled">
<button class="button is-success" type="button" slot="trigger">
<b-icon icon="timer-sand-empty"></b-icon>
<template>
<span>{{ $t('I participate') }}</span>
</template>
@ -30,7 +32,7 @@
<!-- {{ $t('Change my identity…')}}-->
<!-- </b-dropdown-item>-->
<b-dropdown-item :value="false" aria-role="listitem" @click="confirmLeave">
<b-dropdown-item :value="false" aria-role="listitem" @click="confirmLeave" class="has-text-danger">
{{ $t('Cancel my participation request…')}}
</b-dropdown-item>
</b-dropdown>
@ -38,6 +40,10 @@
<small>{{ $t('Waiting for organization team approval.')}}</small>
</div>
<div v-else-if="participation && participation.role === ParticipantRole.REJECTED">
<span>{{ $t('Unfortunately, your participation request was rejected by the organizers.')}}</span>
</div>
<b-dropdown aria-role="list" position="is-bottom-left" v-if="!participation">
<button class="button is-primary" type="button" slot="trigger">
<template>

View File

@ -334,23 +334,15 @@ export const LEAVE_EVENT = gql`
}
`;
export const ACCEPT_PARTICIPANT = gql`
mutation AcceptParticipant($id: ID!, $moderatorActorId: ID!) {
acceptParticipation(id: $id, moderatorActorId: $moderatorActorId) {
export const UPDATE_PARTICIPANT = gql`
mutation AcceptParticipant($id: ID!, $moderatorActorId: ID!, $role: ParticipantRoleEnum!) {
updateParticipation(id: $id, moderatorActorId: $moderatorActorId, role: $role) {
role,
id
}
}
`;
export const REJECT_PARTICIPANT = gql`
mutation RejectParticipant($id: ID!, $moderatorActorId: ID!) {
rejectParticipation(id: $id, moderatorActorId: $moderatorActorId) {
id
}
}
`;
export const DELETE_EVENT = gql`
mutation DeleteEvent($eventId: ID!, $actorId: ID!) {
deleteEvent(
@ -371,7 +363,8 @@ export const PARTICIPANTS = gql`
},
participantStats {
approved,
unapproved
unapproved,
rejected
}
}
}

View File

@ -253,5 +253,9 @@
"{approved} / {total} seats": "{approved} / {total} seats",
"{count} participants": "{count} participants",
"{count} requests waiting": "{count} requests waiting",
"© The Mobilizon Contributors {date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks": "© The Mobilizon Contributors {date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks"
"© The Mobilizon Contributors {date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks": "© The Mobilizon Contributors {date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks",
"Requests": "Requests",
"Rejected": "Rejected",
"Rejected participations": "Rejected participations",
"Unfortunately, your participation request was rejected by the organizers.": "Unfortunately, your participation request was rejected by the organizers."
}

View File

@ -253,5 +253,9 @@
"{approved} / {total} seats": "{approved} / {total} places",
"{count} participants": "Un⋅e participant⋅e|{count} participant⋅e⋅s",
"{count} requests waiting": "Un⋅e demande en attente|{count} demandes en attente",
"© The Mobilizon Contributors {date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks": "© Les contributeurs de Mobilizon {date} - Fait avec Elixir, Phoenix, VueJS & et de l'amour et des semaines"
"© The Mobilizon Contributors {date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks": "© Les contributeurs de Mobilizon {date} - Fait avec Elixir, Phoenix, VueJS & et de l'amour et des semaines",
"Requests": "Requêtes",
"Rejected": "Rejetés",
"Rejected participations": "Participations rejetées",
"Unfortunately, your participation request was rejected by the organizers.": "Malheureusement, votre demande de participation a été refusée par les organisateur⋅ices."
}

View File

@ -30,6 +30,7 @@ export enum EventVisibilityJoinOptions {
export enum ParticipantRole {
NOT_APPROVED = 'NOT_APPROVED',
REJECTED = 'REJECTED',
PARTICIPANT = 'PARTICIPANT',
MODERATOR = 'MODERATOR',
ADMINISTRATOR = 'ADMINISTRATOR',
@ -112,6 +113,7 @@ export interface IEvent {
participantStats: {
approved: number;
unapproved: number;
rejected: number;
};
participants: IParticipant[];
@ -175,7 +177,7 @@ export class EventModel implements IEvent {
publishAt = new Date();
participantStats = { approved: 0, unapproved: 0 };
participantStats = { approved: 0, unapproved: 0, rejected: 0 };
participants: IParticipant[] = [];
relatedEvents: IEvent[] = [];

View File

@ -4,7 +4,7 @@
<b-tab-item>
<template slot="header">
<b-icon icon="information-outline"></b-icon>
<span> Participants <b-tag rounded> {{ participantStats.approved }} </b-tag> </span>
<span>{{ $t('Participants')}} <b-tag rounded> {{ participantStats.approved }} </b-tag> </span>
</template>
<section v-if="participantsAndCreators.length > 0">
<h2 class="title">{{ $t('Participants') }}</h2>
@ -23,7 +23,7 @@
<b-tab-item>
<template slot="header">
<b-icon icon="source-pull"></b-icon>
<span> Demandes <b-tag rounded> {{ participantStats.unapproved }} </b-tag> </span>
<span>{{ $t('Requests') }} <b-tag rounded> {{ participantStats.unapproved }} </b-tag> </span>
</template>
<section v-if="queue.length > 0">
<h2 class="title">{{ $t('Waiting list') }}</h2>
@ -39,6 +39,25 @@
</div>
</section>
</b-tab-item>
<b-tab-item>
<template slot="header">
<b-icon icon="source-pull"></b-icon>
<span>{{ $t('Rejected')}} <b-tag rounded> {{ participantStats.rejected }} </b-tag> </span>
</template>
<section v-if="rejected.length > 0">
<h2 class="title">{{ $t('Rejected participations') }}</h2>
<div class="columns">
<div class="column is-one-quarter-desktop" v-for="participant in rejected" :key="participant.actor.id">
<participant-card
:participant="participant"
:accept="acceptParticipant"
:reject="refuseParticipant"
:exclude="refuseParticipant"
/>
</div>
</div>
</section>
</b-tab-item>
</b-tabs>
</main>
</template>
@ -46,7 +65,7 @@
<script lang="ts">
import { Component, Prop, Vue } from 'vue-property-decorator';
import { IEvent, IParticipant, Participant, ParticipantRole } from '@/types/event.model';
import { ACCEPT_PARTICIPANT, PARTICIPANTS, REJECT_PARTICIPANT } from '@/graphql/event';
import { UPDATE_PARTICIPANT, PARTICIPANTS } from '@/graphql/event';
import ParticipantCard from '@/components/Account/ParticipantCard.vue';
import { CURRENT_ACTOR_CLIENT } from '@/graphql/actor';
import { IPerson } from '@/types/actor';
@ -98,6 +117,19 @@ import { IPerson } from '@/types/actor';
},
update: data => data.event.participants.map(participation => new Participant(participation)),
},
rejected: {
query: PARTICIPANTS,
variables() {
return {
uuid: this.eventId,
page: 1,
limit: 20,
roles: [ParticipantRole.REJECTED].join(),
actorId: this.currentActor.id,
};
},
update: data => data.event.participants.map(participation => new Participant(participation)),
},
},
})
export default class Participants extends Vue {
@ -108,6 +140,7 @@ export default class Participants extends Vue {
// participants: IParticipant[] = [];
organizers: IParticipant[] = [];
queue: IParticipant[] = [];
rejected: IParticipant[] = [];
event!: IEvent;
ParticipantRole = ParticipantRole;
@ -156,15 +189,16 @@ export default class Participants extends Vue {
async acceptParticipant(participant: IParticipant) {
try {
const { data } = await this.$apollo.mutate({
mutation: ACCEPT_PARTICIPANT,
mutation: UPDATE_PARTICIPANT,
variables: {
id: participant.id,
moderatorActorId: this.currentActor.id,
role: ParticipantRole.PARTICIPANT,
},
});
if (data) {
console.log('accept', data);
this.queue.filter(participant => participant !== data.acceptParticipation.id);
this.queue.filter(participant => participant !== data.updateParticipation.id);
this.rejected.filter(participant => participant !== data.updateParticipation.id);
this.participants.push(participant);
}
} catch (e) {
@ -175,15 +209,17 @@ export default class Participants extends Vue {
async refuseParticipant(participant: IParticipant) {
try {
const { data } = await this.$apollo.mutate({
mutation: REJECT_PARTICIPANT,
mutation: UPDATE_PARTICIPANT,
variables: {
id: participant.id,
moderatorActorId: this.currentActor.id,
role: ParticipantRole.REJECTED,
},
});
if (data) {
this.participants.filter(participant => participant !== data.rejectParticipation.id);
this.queue.filter(participant => participant !== data.rejectParticipation.id);
this.participants.filter(participant => participant !== data.updateParticipation.id);
this.queue.filter(participant => participant !== data.updateParticipation.id);
this.rejected.push(participant);
}
} catch (e) {
console.error(e);

View File

@ -70,6 +70,7 @@ defmodule Mobilizon.Events do
defenum(ParticipantRole, :participant_role, [
:not_approved,
:rejected,
:participant,
:moderator,
:administrator,
@ -718,6 +719,17 @@ defmodule Mobilizon.Events do
|> Repo.aggregate(:count, :id)
end
@doc """
Counts rejected participants.
"""
@spec count_rejected_participants(integer | String.t()) :: integer
def count_rejected_participants(event_id) do
event_id
|> count_participants_query()
|> filter_rejected_role()
|> Repo.aggregate(:count, :id)
end
@doc """
Gets the default participant role depending on the event join options.
"""
@ -1361,7 +1373,7 @@ defmodule Mobilizon.Events do
@spec filter_approved_role(Ecto.Query.t()) :: Ecto.Query.t()
defp filter_approved_role(query) do
from(p in query, where: p.role != ^:not_approved)
from(p in query, where: p.role not in ^[:not_approved, :rejected])
end
@spec filter_unapproved_role(Ecto.Query.t()) :: Ecto.Query.t()
@ -1369,6 +1381,11 @@ defmodule Mobilizon.Events do
from(p in query, where: p.role == ^:not_approved)
end
@spec filter_rejected_role(Ecto.Query.t()) :: Ecto.Query.t()
defp filter_rejected_role(query) do
from(p in query, where: p.role == ^:rejected)
end
@spec filter_role(Ecto.Query.t(), list(atom())) :: Ecto.Query.t()
defp filter_role(query, []), do: query

View File

@ -7,6 +7,7 @@ defmodule MobilizonWeb.API.Participations do
alias Mobilizon.Events
alias Mobilizon.Events.{Event, Participant}
alias Mobilizon.Service.ActivityPub
alias MobilizonWeb.Email.Participation
@spec join(Event.t(), Actor.t()) :: {:ok, Participant.t()}
def join(%Event{id: event_id} = event, %Actor{id: actor_id} = actor) do
@ -22,10 +23,19 @@ defmodule MobilizonWeb.API.Participations do
end
end
def accept(
%Participant{} = participation,
%Actor{} = moderator
) do
@doc """
Update participation status
"""
def update(%Participant{} = participation, %Actor{} = moderator, :participant),
do: accept(participation, moderator)
def update(%Participant{} = participation, %Actor{} = moderator, :rejected),
do: reject(participation, moderator)
defp accept(
%Participant{} = participation,
%Actor{} = moderator
) do
with {:ok, activity, _} <-
ActivityPub.accept(
%{
@ -36,15 +46,16 @@ defmodule MobilizonWeb.API.Participations do
"#{MobilizonWeb.Endpoint.url()}/accept/join/#{participation.id}"
),
{:ok, %Participant{role: :participant} = participation} <-
Events.update_participant(participation, %{"role" => :participant}) do
Events.update_participant(participation, %{"role" => :participant}),
:ok <- Participation.send_emails_to_local_user(participation) do
{:ok, activity, participation}
end
end
def reject(
%Participant{} = participation,
%Actor{} = moderator
) do
defp reject(
%Participant{} = participation,
%Actor{} = moderator
) do
with {:ok, activity, _} <-
ActivityPub.reject(
%{
@ -54,8 +65,9 @@ defmodule MobilizonWeb.API.Participations do
},
"#{MobilizonWeb.Endpoint.url()}/reject/join/#{participation.id}"
),
{:ok, %Participant{} = participation} <-
Events.delete_participant(participation) do
{:ok, %Participant{role: :rejected} = participation} <-
Events.update_participant(participation, %{"role" => :rejected}),
:ok <- Participation.send_emails_to_local_user(participation) do
{:ok, activity, participation}
end
end

View File

@ -0,0 +1,84 @@
defmodule MobilizonWeb.Email.Participation do
@moduledoc """
Handles emails sent about participation.
"""
use Bamboo.Phoenix, view: MobilizonWeb.EmailView
import Bamboo.Phoenix
import MobilizonWeb.Gettext
alias Mobilizon.Users.User
alias Mobilizon.Actors.Actor
alias Mobilizon.Events.Participant
alias MobilizonWeb.Email
@doc """
Send emails to local user
"""
def send_emails_to_local_user(
%Participant{actor: %Actor{user_id: nil} = _actor} = _participation
),
do: :ok
@doc """
Send emails to local user
"""
def send_emails_to_local_user(
%Participant{actor: %Actor{user_id: user_id} = _actor} = participation
) do
with %User{} = user <- Mobilizon.Users.get_user!(user_id) do
user
|> participation_updated(participation)
|> Email.Mailer.deliver_later()
:ok
end
end
@spec participation_updated(User.t(), Participant.t(), String.t()) :: Bamboo.Email.t()
def participation_updated(user, participant, locale \\ "en")
def participation_updated(
%User{email: email},
%Participant{event: event, role: :rejected},
locale
) do
Gettext.put_locale(locale)
subject =
gettext(
"Your participation to event %{title} has been rejected",
title: event.title
)
Email.base_email(to: email, subject: subject)
|> assign(:locale, locale)
|> assign(:event, event)
|> assign(:subject, subject)
|> render(:event_participation_rejected)
end
@spec participation_updated(User.t(), Participant.t(), String.t()) :: Bamboo.Email.t()
def participation_updated(
%User{email: email},
%Participant{event: event, role: :participant},
locale
) do
Gettext.put_locale(locale)
subject =
gettext(
"Your participation to event %{title} has been approved",
title: event.title
)
Email.base_email(to: email, subject: subject)
|> assign(:locale, locale)
|> assign(:event, event)
|> assign(:subject, subject)
|> render(:event_participation_approved)
end
end

View File

@ -83,7 +83,8 @@ defmodule MobilizonWeb.Resolvers.Event do
{:ok,
%{
approved: Mobilizon.Events.count_approved_participants(id),
unapproved: Mobilizon.Events.count_unapproved_participants(id)
unapproved: Mobilizon.Events.count_unapproved_participants(id),
rejected: Mobilizon.Events.count_rejected_participants(id)
}}
end
@ -202,9 +203,9 @@ defmodule MobilizonWeb.Resolvers.Event do
{:error, "You need to be logged-in to leave an event"}
end
def accept_participation(
def update_participation(
_parent,
%{id: participation_id, moderator_actor_id: moderator_actor_id},
%{id: participation_id, moderator_actor_id: moderator_actor_id, role: new_role},
%{
context: %{
current_user: user
@ -214,14 +215,15 @@ defmodule MobilizonWeb.Resolvers.Event do
# Check that moderator provided is rightly authenticated
with {:is_owned, moderator_actor} <- User.owns_actor(user, moderator_actor_id),
# Check that participation already exists
{:has_participation, %Participant{role: :not_approved} = participation} <-
{:has_participation, %Participant{role: old_role} = participation} <-
{:has_participation, Mobilizon.Events.get_participant(participation_id)},
{:same_role, false} <- {:same_role, new_role == old_role},
# Check that moderator has right
{:actor_approve_permission, true} <-
{:actor_approve_permission,
Mobilizon.Events.moderator_for_event?(participation.event.id, moderator_actor_id)},
{:ok, _activity, participation} <-
MobilizonWeb.API.Participations.accept(participation, moderator_actor) do
MobilizonWeb.API.Participations.update(participation, moderator_actor, new_role) do
{:ok, participation}
else
{:is_owned, nil} ->
@ -234,55 +236,14 @@ defmodule MobilizonWeb.Resolvers.Event do
{:actor_approve_permission, _} ->
{:error, "Provided moderator actor ID doesn't have permission on this event"}
{:same_role, true} ->
{:error, "Participant already has role #{new_role}"}
{:error, :participant_not_found} ->
{:error, "Participant not found"}
end
end
def reject_participation(
_parent,
%{id: participation_id, moderator_actor_id: moderator_actor_id},
%{
context: %{
current_user: user
}
}
) do
# Check that moderator provided is rightly authenticated
with {:is_owned, moderator_actor} <- User.owns_actor(user, moderator_actor_id),
# Check that participation really exists
{:has_participation, %Participant{} = participation} <-
{:has_participation, Mobilizon.Events.get_participant(participation_id)},
# Check that moderator has right
{:actor_approve_permission, true} <-
{:actor_approve_permission,
Mobilizon.Events.moderator_for_event?(participation.event.id, moderator_actor_id)},
{:ok, _activity, participation} <-
MobilizonWeb.API.Participations.reject(participation, moderator_actor) do
{
:ok,
%{
id: participation.id,
event: %{
id: participation.event.id
},
actor: %{
id: participation.actor.id
}
}
}
else
{:is_owned, nil} ->
{:error, "Moderator Actor ID is not owned by authenticated user"}
{:actor_approve_permission, _} ->
{:error, "Provided moderator actor ID doesn't have permission on this event"}
{:has_participation, nil} ->
{:error, "Participant not found"}
end
end
@doc """
Create an event
"""

View File

@ -111,6 +111,7 @@ defmodule MobilizonWeb.Schema.EventType do
object :participant_stats do
field(:approved, :integer, description: "The number of approved participants")
field(:unapproved, :integer, description: "The number of unapproved participants")
field(:rejected, :integer, description: "The number of rejected participants")
end
object :event_offer do

View File

@ -38,6 +38,7 @@ defmodule MobilizonWeb.Schema.Events.ParticipantType do
value(:moderator)
value(:administrator)
value(:creator)
value(:rejected)
end
@desc "Represents a deleted participant"
@ -65,19 +66,12 @@ defmodule MobilizonWeb.Schema.Events.ParticipantType do
end
@desc "Accept a participation"
field :accept_participation, :participant do
field :update_participation, :participant do
arg(:id, non_null(:id))
arg(:role, non_null(:participant_role_enum))
arg(:moderator_actor_id, non_null(:id))
resolve(&Resolvers.Event.accept_participation/3)
end
@desc "Reject a participation"
field :reject_participation, :deleted_participant do
arg(:id, non_null(:id))
arg(:moderator_actor_id, non_null(:id))
resolve(&Resolvers.Event.reject_participation/3)
resolve(&Resolvers.Event.update_participation/3)
end
end
end

View File

@ -0,0 +1,81 @@
<!-- HERO -->
<tr>
<td bgcolor="#424056" align="center" style="padding: 0px 10px 0px 10px;">
<!--[if (gte mso 9)|(IE)]>
<table align="center" border="0" cellspacing="0" cellpadding="0" width="600">
<tr>
<td align="center" valign="top" width="600">
<![endif]-->
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;" >
<tr>
<td bgcolor="#ffffff" align="center" valign="top" style="padding: 40px 20px 20px 20px; border-radius: 4px 4px 0px 0px; color: #111111; font-family: 'Lato', Helvetica, Arial, sans-serif; font-size: 48px; font-weight: 400; letter-spacing: 4px; line-height: 48px;">
<h1 style="font-size: 48px; font-weight: 400; margin: 0;">
<%= gettext "All good!" %>
</h1>
</td>
</tr>
</table>
<!--[if (gte mso 9)|(IE)]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
<!-- COPY BLOCK -->
<tr>
<td bgcolor="#f4f4f4" align="center" style="padding: 0px 10px 0px 10px;">
<!--[if (gte mso 9)|(IE)]>
<table align="center" border="0" cellspacing="0" cellpadding="0" width="600">
<tr>
<td align="center" valign="top" width="600">
<![endif]-->
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;" >
<!-- COPY -->
<tr>
<td bgcolor="#ffffff" align="left" style="padding: 20px 30px 0px 30px; color: #666666; font-family: 'Lato', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" >
<p style="margin: 0;">
<%= gettext "You requested to participate in event %{title}", title: @event.title %>
</p>
</td>
</tr>
<tr>
<td bgcolor="#ffffff" align="left" style="padding: 20px 30px 40px 30px; color: #777777; font-family: 'Lato', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" >
<p style="margin: 0">
<%= gettext "An organizer just approved your participation. You're now going to this event!" %>
</p>
</td>
</tr>
<!-- BULLETPROOF BUTTON -->
<tr>
<td bgcolor="#ffffff" align="left">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td bgcolor="#ffffff" align="center" style="padding: 20px 30px 60px 30px;">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" style="border-radius: 3px;" bgcolor="#424056"><a href="<%= page_url(MobilizonWeb.Endpoint, :event, @event.id) %>" target="_blank" style="font-size: 20px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; color: #ffffff; text-decoration: none; padding: 15px 25px; border-radius: 2px; border: 1px solid #424056; display: inline-block;">
<%= gettext "Go to event page" %>
</a></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td bgcolor="#ffffff" align="left" style="padding: 20px 30px 40px 30px; color: #777777; font-family: 'Lato', Helvetica, Arial, sans-serif; font-size: 14px; font-weight: 400; line-height: 20px;" >
<p style="margin: 0">
<%= gettext "If you need to cancel your participation, just access the event page through link above and click on the participation button." %>
</p>
</td>
</tr>
</table>
<!--[if (gte mso 9)|(IE)]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>

View File

@ -0,0 +1,11 @@
<%= gettext "Participation approved" %>
==
<%= gettext "You requested to participate in event %{title}.", title: @event.title %>
<%= gettext "An organizer just approved your participation. You're now going to this event!" %>
<%= page_url(MobilizonWeb.Endpoint, :event, @event.id) %>
<%= gettext "If you need to cancel your participation, just access the previous link and click on the participation button." %>

View File

@ -0,0 +1,56 @@
<!-- HERO -->
<tr>
<td bgcolor="#424056" align="center" style="padding: 0px 10px 0px 10px;">
<!--[if (gte mso 9)|(IE)]>
<table align="center" border="0" cellspacing="0" cellpadding="0" width="600">
<tr>
<td align="center" valign="top" width="600">
<![endif]-->
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;" >
<tr>
<td bgcolor="#ffffff" align="center" valign="top" style="padding: 40px 20px 20px 20px; border-radius: 4px 4px 0px 0px; color: #111111; font-family: 'Lato', Helvetica, Arial, sans-serif; font-size: 48px; font-weight: 400; letter-spacing: 4px; line-height: 48px;">
<h1 style="font-size: 48px; font-weight: 400; margin: 0;">
<%= gettext "Sorry!" %>
</h1>
</td>
</tr>
</table>
<!--[if (gte mso 9)|(IE)]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
<!-- COPY BLOCK -->
<tr>
<td bgcolor="#f4f4f4" align="center" style="padding: 0px 10px 0px 10px;">
<!--[if (gte mso 9)|(IE)]>
<table align="center" border="0" cellspacing="0" cellpadding="0" width="600">
<tr>
<td align="center" valign="top" width="600">
<![endif]-->
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;" >
<!-- COPY -->
<tr>
<td bgcolor="#ffffff" align="left" style="padding: 20px 30px 0px 30px; color: #666666; font-family: 'Lato', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" >
<p style="margin: 0;">
<%= gettext "You requested to participate in event %{title}", title: @event.title %>
</p>
</td>
</tr>
<tr>
<td bgcolor="#ffffff" align="left" style="padding: 20px 30px 40px 30px; color: #777777; font-family: 'Lato', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" >
<p style="margin: 0">
<%= gettext "Unfortunately, the organizers rejected your participation." %>
</p>
</td>
</tr>
</table>
<!--[if (gte mso 9)|(IE)]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>

View File

@ -0,0 +1,7 @@
<%= gettext "Participation rejected" %>
==
<%= gettext "You requested to participate in event %{title}.", title: @event.title %>
<%= gettext "Unfortunately, the organizers rejected your participation." %>

View File

@ -8,7 +8,6 @@ defmodule Mobilizon.Service.ActivityPub.Activity do
local: boolean,
actor: Actor.t(),
recipients: [String.t()]
# notifications: [???]
}
defstruct [
@ -16,6 +15,5 @@ defmodule Mobilizon.Service.ActivityPub.Activity do
:local,
:actor,
:recipients
# :notifications
]
end

View File

@ -454,7 +454,8 @@ defmodule Mobilizon.Service.ActivityPub do
{:only_organizer, Participant.is_not_only_organizer(event_id, actor_id)},
{:ok, %Participant{} = participant} <-
Mobilizon.Events.get_participant(event_id, actor_id),
{:ok, %Participant{} = participant} <- Mobilizon.Events.delete_participant(participant),
{:ok, %Participant{} = participant} <-
Events.delete_participant(participant),
leave_data <- %{
"type" => "Leave",
# If it's an exclusion it should be something else

View File

@ -14,6 +14,7 @@ defmodule Mobilizon.Service.ActivityPub.Transmogrifier do
alias Mobilizon.Events.{Comment, Event, Participant}
alias Mobilizon.Service.ActivityPub
alias Mobilizon.Service.ActivityPub.{Converter, Convertible, Utils, Visibility}
alias MobilizonWeb.Email.Participation
require Logger
@ -543,10 +544,8 @@ defmodule Mobilizon.Service.ActivityPub.Transmogrifier do
end
end
@doc """
Handle incoming `Accept` activities wrapping a `Join` activity on an event
"""
def do_handle_incoming_accept_join(join_object, %Actor{} = actor_accepting) do
# Handle incoming `Accept` activities wrapping a `Join` activity on an event
defp do_handle_incoming_accept_join(join_object, %Actor{} = actor_accepting) do
with {:join_event,
{:ok,
%Participant{role: :not_approved, actor: actor, id: join_id, event: event} =
@ -566,7 +565,9 @@ defmodule Mobilizon.Service.ActivityPub.Transmogrifier do
"#{MobilizonWeb.Endpoint.url()}/accept/join/#{join_id}"
),
{:ok, %Participant{role: :participant}} <-
Events.update_participant(participant, %{"role" => :participant}) do
Events.update_participant(participant, %{"role" => :participant}),
:ok <-
Participation.send_emails_to_local_user(participant) do
{:ok, activity, participant}
else
{:join_event, {:ok, %Participant{role: :participant}}} ->
@ -591,10 +592,8 @@ defmodule Mobilizon.Service.ActivityPub.Transmogrifier do
end
end
@doc """
Handle incoming `Reject` activities wrapping a `Join` activity on an event
"""
def do_handle_incoming_reject_join(join_object, %Actor{} = actor_accepting) do
# Handle incoming `Reject` activities wrapping a `Join` activity on an event
defp do_handle_incoming_reject_join(join_object, %Actor{} = actor_accepting) do
with {:join_event,
{:ok,
%Participant{role: :not_approved, actor: actor, id: join_id, event: event} =
@ -613,8 +612,9 @@ defmodule Mobilizon.Service.ActivityPub.Transmogrifier do
},
"#{MobilizonWeb.Endpoint.url()}/reject/join/#{join_id}"
),
{:ok, %Participant{}} <-
Events.delete_participant(participant) do
{:ok, %Participant{role: :rejected} = participant} <-
Events.update_participant(participant, %{"role" => :rejected}),
:ok <- Participation.send_emails_to_local_user(participant) do
{:ok, activity, participant}
else
{:join_event, {:ok, %Participant{role: :participant}}} ->

View File

@ -12,129 +12,231 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 2.4.0\n"
#: lib/mobilizon_web/templates/email/email.text.eex:3
#, elixir-format
msgid "An email sent by Mobilizon on %{instance}."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:12
msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one."
msgstr ""
#: lib/service/export/feed.ex:161
#, elixir-format
#: lib/service/export/feed.ex:169
msgid "Feed for %{email} on Mobilizon"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:122
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:122
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "%{instance} is a Mobilizon server."
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:38
msgid "%{reporter_name} (%{reporter_username}) reported the following content."
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:48
msgid "%{title} by %{creator}"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
msgid "Activate my account"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:91
#: lib/mobilizon_web/templates/email/password_reset.html.eex:94
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:91
msgid "Ask the community on Framacolibri"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:62
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:62
#: lib/mobilizon_web/templates/email/report.text.eex:11
msgid "Comments"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:46
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:46
#: lib/mobilizon_web/templates/email/report.text.eex:6
msgid "Event"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
msgid "If you didn't request this, please ignore this email."
msgstr ""
#: lib/mobilizon_web/email/user.ex:46
#, elixir-format
#: lib/mobilizon_web/email/user.ex:45
msgid "Instructions to reset your password on %{instance}"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:123
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:123
msgid "Learn more about Mobilizon."
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
msgid "Nearly here!"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:88
#: lib/mobilizon_web/templates/email/password_reset.html.eex:91
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:88
msgid "Need some help? Something not working properly?"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:13
msgid "New report on %{instance}"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:80
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:80
#: lib/mobilizon_web/templates/email/report.text.eex:18
msgid "Reason"
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
msgid "Reset Password"
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
msgid "Trouble signing in?"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:100
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:100
msgid "View the report"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
msgid "You created an account on %{host} with this email address. You are one click away from activating it."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
msgid "You requested a new password for your account on %{server}."
msgstr ""
#: lib/mobilizon_web/email/user.ex:25
#, elixir-format
#: lib/mobilizon_web/email/user.ex:25
msgid "Instructions to confirm your Mobilizon account on %{instance}"
msgstr ""
#: lib/mobilizon_web/email/admin.ex:23
#, elixir-format
#: lib/mobilizon_web/email/admin.ex:23
msgid "New report on Mobilizon instance %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:1
msgid "Activate your account"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:13
msgid "All good!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:7
msgid "An organizer just approved your participation. You're now going to this event!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:58
msgid "Go to event page"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:70
msgid "If you need to cancel your participation, just access the event page through link above and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:11
msgid "If you need to cancel your participation, just access the previous link and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "Learn more about Mobilizon:"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/report.text.eex:1
msgid "New report from %{reporter} on %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:1
msgid "Participation approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:1
msgid "Participation rejected"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:1
msgid "Password reset"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:7
msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:13
msgid "Sorry!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:7
msgid "Unfortunately, the organizers rejected your participation."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:5
msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:5
msgid "You requested a new password for your account on %{host}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:38
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:38
msgid "You requested to participate in event %{title}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:5
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:5
msgid "You requested to participate in event %{title}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:73
msgid "Your participation to event %{title} has been approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:52
msgid "Your participation to event %{title} has been rejected"
msgstr ""

View File

@ -0,0 +1,93 @@
## `msgid`s in this file come from POT (.pot) files.
##
## Do not add, change, or remove `msgid`s manually here as
## they're tied to the ones in the corresponding POT file
## (with the same domain).
##
## Use `mix gettext.extract --merge` or `mix gettext.merge`
## to merge POT files into PO files.
msgid ""
msgstr ""
"Language: cs\n"
"Plural-Forms: nplurals=3\n"
msgid "can't be blank"
msgstr ""
msgid "has already been taken"
msgstr ""
msgid "is invalid"
msgstr ""
msgid "must be accepted"
msgstr ""
msgid "has invalid format"
msgstr ""
msgid "has an invalid entry"
msgstr ""
msgid "is reserved"
msgstr ""
msgid "does not match confirmation"
msgstr ""
msgid "is still associated with this entry"
msgstr ""
msgid "are still associated with this entry"
msgstr ""
msgid "should be %{count} character(s)"
msgid_plural "should be %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "should have %{count} item(s)"
msgid_plural "should have %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "should be at least %{count} character(s)"
msgid_plural "should be at least %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "should have at least %{count} item(s)"
msgid_plural "should have at least %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "should be at most %{count} character(s)"
msgid_plural "should be at most %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "should have at most %{count} item(s)"
msgid_plural "should have at most %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "must be less than %{number}"
msgstr ""
msgid "must be greater than %{number}"
msgstr ""
msgid "must be less than or equal to %{number}"
msgstr ""
msgid "must be greater than or equal to %{number}"
msgstr ""
msgid "must be equal to %{number}"
msgstr ""

View File

@ -12,129 +12,231 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 2.4.0\n"
#: lib/mobilizon_web/templates/email/email.text.eex:3
#, elixir-format
msgid "An email sent by Mobilizon on %{instance}."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:12
msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one."
msgstr ""
#: lib/service/export/feed.ex:161
#, elixir-format
#: lib/service/export/feed.ex:169
msgid "Feed for %{email} on Mobilizon"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:122
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:122
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "%{instance} is a Mobilizon server."
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:38
msgid "%{reporter_name} (%{reporter_username}) reported the following content."
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:48
msgid "%{title} by %{creator}"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
msgid "Activate my account"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:91
#: lib/mobilizon_web/templates/email/password_reset.html.eex:94
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:91
msgid "Ask the community on Framacolibri"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:62
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:62
#: lib/mobilizon_web/templates/email/report.text.eex:11
msgid "Comments"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:46
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:46
#: lib/mobilizon_web/templates/email/report.text.eex:6
msgid "Event"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
msgid "If you didn't request this, please ignore this email."
msgstr ""
#: lib/mobilizon_web/email/user.ex:46
#, elixir-format
#: lib/mobilizon_web/email/user.ex:45
msgid "Instructions to reset your password on %{instance}"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:123
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:123
msgid "Learn more about Mobilizon."
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
msgid "Nearly here!"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:88
#: lib/mobilizon_web/templates/email/password_reset.html.eex:91
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:88
msgid "Need some help? Something not working properly?"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:13
msgid "New report on %{instance}"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:80
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:80
#: lib/mobilizon_web/templates/email/report.text.eex:18
msgid "Reason"
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
msgid "Reset Password"
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
msgid "Trouble signing in?"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:100
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:100
msgid "View the report"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
msgid "You created an account on %{host} with this email address. You are one click away from activating it."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
msgid "You requested a new password for your account on %{server}."
msgstr ""
#: lib/mobilizon_web/email/user.ex:25
#, elixir-format
#: lib/mobilizon_web/email/user.ex:25
msgid "Instructions to confirm your Mobilizon account on %{instance}"
msgstr ""
#: lib/mobilizon_web/email/admin.ex:23
#, elixir-format
#: lib/mobilizon_web/email/admin.ex:23
msgid "New report on Mobilizon instance %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:1
msgid "Activate your account"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:13
msgid "All good!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:7
msgid "An organizer just approved your participation. You're now going to this event!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:58
msgid "Go to event page"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:70
msgid "If you need to cancel your participation, just access the event page through link above and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:11
msgid "If you need to cancel your participation, just access the previous link and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "Learn more about Mobilizon:"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/report.text.eex:1
msgid "New report from %{reporter} on %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:1
msgid "Participation approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:1
msgid "Participation rejected"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:1
msgid "Password reset"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:7
msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:13
msgid "Sorry!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:7
msgid "Unfortunately, the organizers rejected your participation."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:5
msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:5
msgid "You requested a new password for your account on %{host}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:38
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:38
msgid "You requested to participate in event %{title}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:5
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:5
msgid "You requested to participate in event %{title}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:73
msgid "Your participation to event %{title} has been approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:52
msgid "Your participation to event %{title} has been rejected"
msgstr ""

View File

@ -0,0 +1,87 @@
## `msgid`s in this file come from POT (.pot) files.
##
## Do not add, change, or remove `msgid`s manually here as
## they're tied to the ones in the corresponding POT file
## (with the same domain).
##
## Use `mix gettext.extract --merge` or `mix gettext.merge`
## to merge POT files into PO files.
msgid ""
msgstr ""
"Language: de\n"
"Plural-Forms: nplurals=2\n"
msgid "can't be blank"
msgstr ""
msgid "has already been taken"
msgstr ""
msgid "is invalid"
msgstr ""
msgid "must be accepted"
msgstr ""
msgid "has invalid format"
msgstr ""
msgid "has an invalid entry"
msgstr ""
msgid "is reserved"
msgstr ""
msgid "does not match confirmation"
msgstr ""
msgid "is still associated with this entry"
msgstr ""
msgid "are still associated with this entry"
msgstr ""
msgid "should be %{count} character(s)"
msgid_plural "should be %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should have %{count} item(s)"
msgid_plural "should have %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should be at least %{count} character(s)"
msgid_plural "should be at least %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should have at least %{count} item(s)"
msgid_plural "should have at least %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should be at most %{count} character(s)"
msgid_plural "should be at most %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should have at most %{count} item(s)"
msgid_plural "should have at most %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgid "must be less than %{number}"
msgstr ""
msgid "must be greater than %{number}"
msgstr ""
msgid "must be less than or equal to %{number}"
msgstr ""
msgid "must be greater than or equal to %{number}"
msgstr ""
msgid "must be equal to %{number}"
msgstr ""

View File

@ -1,20 +1,17 @@
#, elixir-format
#: lib/mobilizon_web/templates/email/email.text.eex:3
msgid "An email sent by Mobilizon on %{instance}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:48
#: lib/mobilizon_web/templates/email/password_reset.text.eex:12
msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one."
msgstr ""
#, elixir-format
#: lib/service/export/feed.ex:161
#: lib/service/export/feed.ex:169
msgid "Feed for %{email} on Mobilizon"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:122
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "%{instance} is a Mobilizon server."
msgstr ""
@ -35,17 +32,18 @@ msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:91
#: lib/mobilizon_web/templates/email/password_reset.html.eex:94
msgid "Ask the community on Framacolibri"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:62
#: lib/mobilizon_web/templates/email/report.text.eex:11
msgid "Comments"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:46
#: lib/mobilizon_web/templates/email/report.text.eex:6
msgid "Event"
msgstr ""
@ -55,7 +53,7 @@ msgid "If you didn't request this, please ignore this email."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/user.ex:46
#: lib/mobilizon_web/email/user.ex:45
msgid "Instructions to reset your password on %{instance}"
msgstr ""
@ -71,7 +69,6 @@ msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:88
#: lib/mobilizon_web/templates/email/password_reset.html.eex:91
msgid "Need some help? Something not working properly?"
msgstr ""
@ -82,6 +79,7 @@ msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:80
#: lib/mobilizon_web/templates/email/report.text.eex:18
msgid "Reason"
msgstr ""
@ -124,3 +122,107 @@ msgstr ""
#: lib/mobilizon_web/email/admin.ex:23
msgid "New report on Mobilizon instance %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:1
msgid "Activate your account"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:13
msgid "All good!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:7
msgid "An organizer just approved your participation. You're now going to this event!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:58
msgid "Go to event page"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:70
msgid "If you need to cancel your participation, just access the event page through link above and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:11
msgid "If you need to cancel your participation, just access the previous link and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "Learn more about Mobilizon:"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/report.text.eex:1
msgid "New report from %{reporter} on %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:1
msgid "Participation approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:1
msgid "Participation rejected"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:1
msgid "Password reset"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:7
msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:13
msgid "Sorry!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:7
msgid "Unfortunately, the organizers rejected your participation."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:5
msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:5
msgid "You requested a new password for your account on %{host}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:38
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:38
msgid "You requested to participate in event %{title}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:5
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:5
msgid "You requested to participate in event %{title}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:73
msgid "Your participation to event %{title} has been approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:52
msgid "Your participation to event %{title} has been rejected"
msgstr ""

View File

@ -18,135 +18,241 @@ msgstr ""
"X-Generator: Weblate 3.8\n"
"Content-Transfer-Encoding: 8bit\n"
#: lib/mobilizon_web/templates/email/email.text.eex:3
#, elixir-format
msgid "An email sent by Mobilizon on %{instance}."
msgstr "An email sent by Mobilizon on %{instance}."
#: lib/mobilizon_web/templates/email/password_reset.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:12
msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one."
msgstr ""
"If you didn't request this, please ignore this email. Your password won't "
"change until you access the link below and create a new one."
#: lib/service/export/feed.ex:161
#, elixir-format
#: lib/service/export/feed.ex:169
msgid "Feed for %{email} on Mobilizon"
msgstr "Feed for %{email} on Mobilizon"
#: lib/mobilizon_web/templates/email/email.html.eex:122
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:122
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "%{instance} is a Mobilizon server."
msgstr "%{instance} is a Mobilizon server."
#: lib/mobilizon_web/templates/email/report.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:38
msgid "%{reporter_name} (%{reporter_username}) reported the following content."
msgstr "%{reporter_name} (%{reporter_username}) reported the following content."
#: lib/mobilizon_web/templates/email/report.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:48
msgid "%{title} by %{creator}"
msgstr "%{title} by %{creator}"
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
msgid "Activate my account"
msgstr "Activate my account"
#: lib/mobilizon_web/templates/email/email.html.eex:91
#: lib/mobilizon_web/templates/email/password_reset.html.eex:94
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:91
msgid "Ask the community on Framacolibri"
msgstr "Ask the community on Framacolibri"
#: lib/mobilizon_web/templates/email/report.html.eex:62
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:62
#: lib/mobilizon_web/templates/email/report.text.eex:11
msgid "Comments"
msgstr "Comments"
#: lib/mobilizon_web/templates/email/report.html.eex:46
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:46
#: lib/mobilizon_web/templates/email/report.text.eex:6
msgid "Event"
msgstr "Event"
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
msgid "If you didn't request this, please ignore this email."
msgstr "If you didn't request this, please ignore this email."
#: lib/mobilizon_web/email/user.ex:46
#, elixir-format
#: lib/mobilizon_web/email/user.ex:45
msgid "Instructions to reset your password on %{instance}"
msgstr "Instructions to reset your password on %{instance}"
#: lib/mobilizon_web/templates/email/email.html.eex:123
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:123
msgid "Learn more about Mobilizon."
msgstr "Learn more about Mobilizon."
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
msgid "Nearly here!"
msgstr "Nearly here!"
#: lib/mobilizon_web/templates/email/email.html.eex:88
#: lib/mobilizon_web/templates/email/password_reset.html.eex:91
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:88
msgid "Need some help? Something not working properly?"
msgstr "Need some help? Something not working properly?"
#: lib/mobilizon_web/templates/email/report.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:13
msgid "New report on %{instance}"
msgstr "New report on %{instance}"
#: lib/mobilizon_web/templates/email/report.html.eex:80
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:80
#: lib/mobilizon_web/templates/email/report.text.eex:18
msgid "Reason"
msgstr "Reason"
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
msgid "Reset Password"
msgstr "Reset Password"
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time."
msgstr ""
"Resetting your password is easy. Just press the button below and follow the "
"instructions. We'll have you up and running in no time."
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
msgid "Trouble signing in?"
msgstr "Trouble signing in?"
#: lib/mobilizon_web/templates/email/report.html.eex:100
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:100
msgid "View the report"
msgstr "View the report"
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
msgid "You created an account on %{host} with this email address. You are one click away from activating it."
msgstr ""
"You created an account on %{host} with this email address. You are one click "
"away from activating it."
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
msgid "You requested a new password for your account on %{server}."
msgstr "You requested a new password for your account on %{server}."
#: lib/mobilizon_web/email/user.ex:25
#, elixir-format
#: lib/mobilizon_web/email/user.ex:25
msgid "Instructions to confirm your Mobilizon account on %{instance}"
msgstr "Instructions to confirm your Mobilizon account on %{instance}"
#: lib/mobilizon_web/email/admin.ex:23
#, elixir-format
#: lib/mobilizon_web/email/admin.ex:23
msgid "New report on Mobilizon instance %{instance}"
msgstr "New report on Mobilizon instance %{instance}"
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:1
msgid "Activate your account"
msgstr "Activate my account"
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:13
msgid "All good!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:7
msgid "An organizer just approved your participation. You're now going to this event!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:58
msgid "Go to event page"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:70
msgid "If you need to cancel your participation, just access the event page through link above and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:11
msgid "If you need to cancel your participation, just access the previous link and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "Learn more about Mobilizon:"
msgstr "Learn more about Mobilizon."
#, elixir-format
#: lib/mobilizon_web/templates/email/report.text.eex:1
msgid "New report from %{reporter} on %{instance}"
msgstr "New report on %{instance}"
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:1
msgid "Participation approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:1
msgid "Participation rejected"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:1
msgid "Password reset"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:7
msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time."
msgstr ""
"Resetting your password is easy. Just press the button below and follow the "
"instructions. We'll have you up and running in no time."
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:13
msgid "Sorry!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:7
msgid "Unfortunately, the organizers rejected your participation."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:5
msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email."
msgstr ""
"You created an account on %{host} with this email address. You are one click "
"away from activating it."
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:5
msgid "You requested a new password for your account on %{host}."
msgstr "You requested a new password for your account on %{server}."
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:38
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:38
msgid "You requested to participate in event %{title}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:5
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:5
msgid "You requested to participate in event %{title}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:73
msgid "Your participation to event %{title} has been approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:52
msgid "Your participation to event %{title} has been rejected"
msgstr ""

View File

@ -12,129 +12,231 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 2.4.0\n"
#: lib/mobilizon_web/templates/email/email.text.eex:3
#, elixir-format
msgid "An email sent by Mobilizon on %{instance}."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:12
msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one."
msgstr ""
#: lib/service/export/feed.ex:161
#, elixir-format
#: lib/service/export/feed.ex:169
msgid "Feed for %{email} on Mobilizon"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:122
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:122
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "%{instance} is a Mobilizon server."
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:38
msgid "%{reporter_name} (%{reporter_username}) reported the following content."
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:48
msgid "%{title} by %{creator}"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
msgid "Activate my account"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:91
#: lib/mobilizon_web/templates/email/password_reset.html.eex:94
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:91
msgid "Ask the community on Framacolibri"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:62
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:62
#: lib/mobilizon_web/templates/email/report.text.eex:11
msgid "Comments"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:46
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:46
#: lib/mobilizon_web/templates/email/report.text.eex:6
msgid "Event"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
msgid "If you didn't request this, please ignore this email."
msgstr ""
#: lib/mobilizon_web/email/user.ex:46
#, elixir-format
#: lib/mobilizon_web/email/user.ex:45
msgid "Instructions to reset your password on %{instance}"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:123
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:123
msgid "Learn more about Mobilizon."
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
msgid "Nearly here!"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:88
#: lib/mobilizon_web/templates/email/password_reset.html.eex:91
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:88
msgid "Need some help? Something not working properly?"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:13
msgid "New report on %{instance}"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:80
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:80
#: lib/mobilizon_web/templates/email/report.text.eex:18
msgid "Reason"
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
msgid "Reset Password"
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
msgid "Trouble signing in?"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:100
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:100
msgid "View the report"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
msgid "You created an account on %{host} with this email address. You are one click away from activating it."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
msgid "You requested a new password for your account on %{server}."
msgstr ""
#: lib/mobilizon_web/email/user.ex:25
#, elixir-format
#: lib/mobilizon_web/email/user.ex:25
msgid "Instructions to confirm your Mobilizon account on %{instance}"
msgstr ""
#: lib/mobilizon_web/email/admin.ex:23
#, elixir-format
#: lib/mobilizon_web/email/admin.ex:23
msgid "New report on Mobilizon instance %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:1
msgid "Activate your account"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:13
msgid "All good!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:7
msgid "An organizer just approved your participation. You're now going to this event!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:58
msgid "Go to event page"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:70
msgid "If you need to cancel your participation, just access the event page through link above and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:11
msgid "If you need to cancel your participation, just access the previous link and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "Learn more about Mobilizon:"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/report.text.eex:1
msgid "New report from %{reporter} on %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:1
msgid "Participation approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:1
msgid "Participation rejected"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:1
msgid "Password reset"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:7
msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:13
msgid "Sorry!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:7
msgid "Unfortunately, the organizers rejected your participation."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:5
msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:5
msgid "You requested a new password for your account on %{host}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:38
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:38
msgid "You requested to participate in event %{title}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:5
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:5
msgid "You requested to participate in event %{title}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:73
msgid "Your participation to event %{title} has been approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:52
msgid "Your participation to event %{title} has been rejected"
msgstr ""

View File

@ -0,0 +1,87 @@
## `msgid`s in this file come from POT (.pot) files.
##
## Do not add, change, or remove `msgid`s manually here as
## they're tied to the ones in the corresponding POT file
## (with the same domain).
##
## Use `mix gettext.extract --merge` or `mix gettext.merge`
## to merge POT files into PO files.
msgid ""
msgstr ""
"Language: es\n"
"Plural-Forms: nplurals=2\n"
msgid "can't be blank"
msgstr ""
msgid "has already been taken"
msgstr ""
msgid "is invalid"
msgstr ""
msgid "must be accepted"
msgstr ""
msgid "has invalid format"
msgstr ""
msgid "has an invalid entry"
msgstr ""
msgid "is reserved"
msgstr ""
msgid "does not match confirmation"
msgstr ""
msgid "is still associated with this entry"
msgstr ""
msgid "are still associated with this entry"
msgstr ""
msgid "should be %{count} character(s)"
msgid_plural "should be %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should have %{count} item(s)"
msgid_plural "should have %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should be at least %{count} character(s)"
msgid_plural "should be at least %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should have at least %{count} item(s)"
msgid_plural "should have at least %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should be at most %{count} character(s)"
msgid_plural "should be at most %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should have at most %{count} item(s)"
msgid_plural "should have at most %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgid "must be less than %{number}"
msgstr ""
msgid "must be greater than %{number}"
msgstr ""
msgid "must be less than or equal to %{number}"
msgstr ""
msgid "must be greater than or equal to %{number}"
msgstr ""
msgid "must be equal to %{number}"
msgstr ""

View File

@ -21,105 +21,233 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 3.8\n"
#: lib/mobilizon_web/templates/email/email.text.eex:3
msgid "An email sent by Mobilizon on %{instance}."
msgstr "Un email envoyé par Mobilizon sur %{instance}."
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:48
#: lib/mobilizon_web/templates/email/password_reset.text.eex:12
msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one."
msgstr "Si vous n'avez pas demandé ceci, vous pouvez ignorer cet email. Votre mot de passe ne changera pas tant que vous n'accédez pas au lien ci-dessous et que vous en définissiez un nouveau."
#: lib/service/export/feed.ex:161
#, elixir-format
#: lib/service/export/feed.ex:169
msgid "Feed for %{email} on Mobilizon"
msgstr "Flux pour %{email} sur Mobilizon"
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:122
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "%{instance} is a Mobilizon server."
msgstr "%{instance} est une instance Mobilizon."
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:38
msgid "%{reporter_name} (%{reporter_username}) reported the following content."
msgstr "%{reporter_name} (%{reporter_username}) a signalé le contenu suivant."
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:48
msgid "%{title} by %{creator}"
msgstr "%{title} par %{creator}"
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
msgid "Activate my account"
msgstr "Activer mon compte"
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:91
#: lib/mobilizon_web/templates/email/password_reset.html.eex:94
msgid "Ask the community on Framacolibri"
msgstr "Demander à la communauté sur Framacolibri"
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:62
#: lib/mobilizon_web/templates/email/report.text.eex:11
msgid "Comments"
msgstr "Commentaires"
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:46
#: lib/mobilizon_web/templates/email/report.text.eex:6
msgid "Event"
msgstr "Événement"
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
msgid "If you didn't request this, please ignore this email."
msgstr "Si vous n'avez pas demandé ceci, merci d'ignorer cet email."
#: lib/mobilizon_web/email/user.ex:46
#, elixir-format
#: lib/mobilizon_web/email/user.ex:45
msgid "Instructions to reset your password on %{instance}"
msgstr "Instructions pour réinitialiser votre mot de passe sur %{instance}"
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:123
msgid "Learn more about Mobilizon."
msgstr "En apprendre plus à propos de Mobilizon."
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
msgid "Nearly here!"
msgstr "Vous y êtes presque !"
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:88
#: lib/mobilizon_web/templates/email/password_reset.html.eex:91
msgid "Need some help? Something not working properly?"
msgstr "Besoin d'aide ? Quelque chose ne fonctionne pas correctement ?"
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:13
msgid "New report on %{instance}"
msgstr "Nouveau signalement sur %{instance}"
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:80
#: lib/mobilizon_web/templates/email/report.text.eex:18
msgid "Reason"
msgstr "Raison"
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
msgid "Reset Password"
msgstr "Réinitialiser mon mot de passe"
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time."
msgstr "Réinitialiser votre mot de passe est facile. Cliquez simplement sur le bouton et suivez les inscriptions. Vous serez opérationnel en un rien de temps."
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
msgid "Trouble signing in?"
msgstr "Des problèmes à vous connecter ?"
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:100
msgid "View the report"
msgstr "Voir le signalement"
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
msgid "You created an account on %{host} with this email address. You are one click away from activating it."
msgstr "Vous avez créé un compte sur %{host} avec cette adresse email. Vous êtes à un clic de l'activer."
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
msgid "You requested a new password for your account on %{server}."
msgstr ""
"Vous avez demandé un nouveau mot de passe pour votre compte sur %{server}."
#, elixir-format
#: lib/mobilizon_web/email/user.ex:25
msgid "Instructions to confirm your Mobilizon account on %{instance}"
msgstr "Instructions pour confirmer votre compte Mobilizon sur %{instance}"
#, elixir-format
#: lib/mobilizon_web/email/admin.ex:23
msgid "New report on Mobilizon instance %{instance}"
msgstr "Nouveau signalement sur l'instance Mobilizon %{instance}"
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:1
msgid "Activate your account"
msgstr "Activer mon compte"
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:13
msgid "All good!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:7
msgid "An organizer just approved your participation. You're now going to this event!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:58
msgid "Go to event page"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:70
msgid "If you need to cancel your participation, just access the event page through link above and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:11
msgid "If you need to cancel your participation, just access the previous link and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "Learn more about Mobilizon:"
msgstr "En apprendre plus à propos de Mobilizon."
#, elixir-format
#: lib/mobilizon_web/templates/email/report.text.eex:1
msgid "New report from %{reporter} on %{instance}"
msgstr "Nouveau signalement sur %{instance}"
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:1
msgid "Participation approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:1
msgid "Participation rejected"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:1
msgid "Password reset"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:7
msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time."
msgstr "Réinitialiser votre mot de passe est facile. Cliquez simplement sur le bouton et suivez les inscriptions. Vous serez opérationnel en un rien de temps."
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:13
msgid "Sorry!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:7
msgid "Unfortunately, the organizers rejected your participation."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:5
msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email."
msgstr "Vous avez créé un compte sur %{host} avec cette adresse email. Vous êtes à un clic de l'activer."
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:5
msgid "You requested a new password for your account on %{host}."
msgstr ""
"Vous avez demandé un nouveau mot de passe pour votre compte sur %{server}."
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:38
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:38
msgid "You requested to participate in event %{title}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:5
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:5
msgid "You requested to participate in event %{title}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:73
msgid "Your participation to event %{title} has been approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:52
msgid "Your participation to event %{title} has been rejected"
msgstr ""

View File

@ -12,129 +12,231 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 2.4.0\n"
#: lib/mobilizon_web/templates/email/email.text.eex:3
#, elixir-format
msgid "An email sent by Mobilizon on %{instance}."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:12
msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one."
msgstr ""
#: lib/service/export/feed.ex:161
#, elixir-format
#: lib/service/export/feed.ex:169
msgid "Feed for %{email} on Mobilizon"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:122
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:122
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "%{instance} is a Mobilizon server."
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:38
msgid "%{reporter_name} (%{reporter_username}) reported the following content."
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:48
msgid "%{title} by %{creator}"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
msgid "Activate my account"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:91
#: lib/mobilizon_web/templates/email/password_reset.html.eex:94
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:91
msgid "Ask the community on Framacolibri"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:62
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:62
#: lib/mobilizon_web/templates/email/report.text.eex:11
msgid "Comments"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:46
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:46
#: lib/mobilizon_web/templates/email/report.text.eex:6
msgid "Event"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
msgid "If you didn't request this, please ignore this email."
msgstr ""
#: lib/mobilizon_web/email/user.ex:46
#, elixir-format
#: lib/mobilizon_web/email/user.ex:45
msgid "Instructions to reset your password on %{instance}"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:123
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:123
msgid "Learn more about Mobilizon."
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
msgid "Nearly here!"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:88
#: lib/mobilizon_web/templates/email/password_reset.html.eex:91
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:88
msgid "Need some help? Something not working properly?"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:13
msgid "New report on %{instance}"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:80
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:80
#: lib/mobilizon_web/templates/email/report.text.eex:18
msgid "Reason"
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
msgid "Reset Password"
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
msgid "Trouble signing in?"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:100
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:100
msgid "View the report"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
msgid "You created an account on %{host} with this email address. You are one click away from activating it."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
msgid "You requested a new password for your account on %{server}."
msgstr ""
#: lib/mobilizon_web/email/user.ex:25
#, elixir-format
#: lib/mobilizon_web/email/user.ex:25
msgid "Instructions to confirm your Mobilizon account on %{instance}"
msgstr ""
#: lib/mobilizon_web/email/admin.ex:23
#, elixir-format
#: lib/mobilizon_web/email/admin.ex:23
msgid "New report on Mobilizon instance %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:1
msgid "Activate your account"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:13
msgid "All good!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:7
msgid "An organizer just approved your participation. You're now going to this event!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:58
msgid "Go to event page"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:70
msgid "If you need to cancel your participation, just access the event page through link above and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:11
msgid "If you need to cancel your participation, just access the previous link and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "Learn more about Mobilizon:"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/report.text.eex:1
msgid "New report from %{reporter} on %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:1
msgid "Participation approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:1
msgid "Participation rejected"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:1
msgid "Password reset"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:7
msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:13
msgid "Sorry!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:7
msgid "Unfortunately, the organizers rejected your participation."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:5
msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:5
msgid "You requested a new password for your account on %{host}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:38
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:38
msgid "You requested to participate in event %{title}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:5
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:5
msgid "You requested to participate in event %{title}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:73
msgid "Your participation to event %{title} has been approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:52
msgid "Your participation to event %{title} has been rejected"
msgstr ""

View File

@ -0,0 +1,87 @@
## `msgid`s in this file come from POT (.pot) files.
##
## Do not add, change, or remove `msgid`s manually here as
## they're tied to the ones in the corresponding POT file
## (with the same domain).
##
## Use `mix gettext.extract --merge` or `mix gettext.merge`
## to merge POT files into PO files.
msgid ""
msgstr ""
"Language: it\n"
"Plural-Forms: nplurals=2\n"
msgid "can't be blank"
msgstr ""
msgid "has already been taken"
msgstr ""
msgid "is invalid"
msgstr ""
msgid "must be accepted"
msgstr ""
msgid "has invalid format"
msgstr ""
msgid "has an invalid entry"
msgstr ""
msgid "is reserved"
msgstr ""
msgid "does not match confirmation"
msgstr ""
msgid "is still associated with this entry"
msgstr ""
msgid "are still associated with this entry"
msgstr ""
msgid "should be %{count} character(s)"
msgid_plural "should be %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should have %{count} item(s)"
msgid_plural "should have %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should be at least %{count} character(s)"
msgid_plural "should be at least %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should have at least %{count} item(s)"
msgid_plural "should have at least %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should be at most %{count} character(s)"
msgid_plural "should be at most %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should have at most %{count} item(s)"
msgid_plural "should have at most %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgid "must be less than %{number}"
msgstr ""
msgid "must be greater than %{number}"
msgstr ""
msgid "must be less than or equal to %{number}"
msgstr ""
msgid "must be greater than or equal to %{number}"
msgstr ""
msgid "must be equal to %{number}"
msgstr ""

View File

@ -12,129 +12,231 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 2.4.0\n"
#: lib/mobilizon_web/templates/email/email.text.eex:3
#, elixir-format
msgid "An email sent by Mobilizon on %{instance}."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:12
msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one."
msgstr ""
#: lib/service/export/feed.ex:161
#, elixir-format
#: lib/service/export/feed.ex:169
msgid "Feed for %{email} on Mobilizon"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:122
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:122
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "%{instance} is a Mobilizon server."
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:38
msgid "%{reporter_name} (%{reporter_username}) reported the following content."
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:48
msgid "%{title} by %{creator}"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
msgid "Activate my account"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:91
#: lib/mobilizon_web/templates/email/password_reset.html.eex:94
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:91
msgid "Ask the community on Framacolibri"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:62
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:62
#: lib/mobilizon_web/templates/email/report.text.eex:11
msgid "Comments"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:46
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:46
#: lib/mobilizon_web/templates/email/report.text.eex:6
msgid "Event"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
msgid "If you didn't request this, please ignore this email."
msgstr ""
#: lib/mobilizon_web/email/user.ex:46
#, elixir-format
#: lib/mobilizon_web/email/user.ex:45
msgid "Instructions to reset your password on %{instance}"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:123
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:123
msgid "Learn more about Mobilizon."
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
msgid "Nearly here!"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:88
#: lib/mobilizon_web/templates/email/password_reset.html.eex:91
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:88
msgid "Need some help? Something not working properly?"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:13
msgid "New report on %{instance}"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:80
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:80
#: lib/mobilizon_web/templates/email/report.text.eex:18
msgid "Reason"
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
msgid "Reset Password"
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
msgid "Trouble signing in?"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:100
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:100
msgid "View the report"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
msgid "You created an account on %{host} with this email address. You are one click away from activating it."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
msgid "You requested a new password for your account on %{server}."
msgstr ""
#: lib/mobilizon_web/email/user.ex:25
#, elixir-format
#: lib/mobilizon_web/email/user.ex:25
msgid "Instructions to confirm your Mobilizon account on %{instance}"
msgstr ""
#: lib/mobilizon_web/email/admin.ex:23
#, elixir-format
#: lib/mobilizon_web/email/admin.ex:23
msgid "New report on Mobilizon instance %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:1
msgid "Activate your account"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:13
msgid "All good!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:7
msgid "An organizer just approved your participation. You're now going to this event!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:58
msgid "Go to event page"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:70
msgid "If you need to cancel your participation, just access the event page through link above and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:11
msgid "If you need to cancel your participation, just access the previous link and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "Learn more about Mobilizon:"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/report.text.eex:1
msgid "New report from %{reporter} on %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:1
msgid "Participation approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:1
msgid "Participation rejected"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:1
msgid "Password reset"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:7
msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:13
msgid "Sorry!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:7
msgid "Unfortunately, the organizers rejected your participation."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:5
msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:5
msgid "You requested a new password for your account on %{host}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:38
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:38
msgid "You requested to participate in event %{title}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:5
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:5
msgid "You requested to participate in event %{title}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:73
msgid "Your participation to event %{title} has been approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:52
msgid "Your participation to event %{title} has been rejected"
msgstr ""

View File

@ -0,0 +1,81 @@
## `msgid`s in this file come from POT (.pot) files.
##
## Do not add, change, or remove `msgid`s manually here as
## they're tied to the ones in the corresponding POT file
## (with the same domain).
##
## Use `mix gettext.extract --merge` or `mix gettext.merge`
## to merge POT files into PO files.
msgid ""
msgstr ""
"Language: ja\n"
"Plural-Forms: nplurals=1\n"
msgid "can't be blank"
msgstr ""
msgid "has already been taken"
msgstr ""
msgid "is invalid"
msgstr ""
msgid "must be accepted"
msgstr ""
msgid "has invalid format"
msgstr ""
msgid "has an invalid entry"
msgstr ""
msgid "is reserved"
msgstr ""
msgid "does not match confirmation"
msgstr ""
msgid "is still associated with this entry"
msgstr ""
msgid "are still associated with this entry"
msgstr ""
msgid "should be %{count} character(s)"
msgid_plural "should be %{count} character(s)"
msgstr[0] ""
msgid "should have %{count} item(s)"
msgid_plural "should have %{count} item(s)"
msgstr[0] ""
msgid "should be at least %{count} character(s)"
msgid_plural "should be at least %{count} character(s)"
msgstr[0] ""
msgid "should have at least %{count} item(s)"
msgid_plural "should have at least %{count} item(s)"
msgstr[0] ""
msgid "should be at most %{count} character(s)"
msgid_plural "should be at most %{count} character(s)"
msgstr[0] ""
msgid "should have at most %{count} item(s)"
msgid_plural "should have at most %{count} item(s)"
msgstr[0] ""
msgid "must be less than %{number}"
msgstr ""
msgid "must be greater than %{number}"
msgstr ""
msgid "must be less than or equal to %{number}"
msgstr ""
msgid "must be greater than or equal to %{number}"
msgstr ""
msgid "must be equal to %{number}"
msgstr ""

View File

@ -12,129 +12,231 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 2.4.0\n"
#: lib/mobilizon_web/templates/email/email.text.eex:3
#, elixir-format
msgid "An email sent by Mobilizon on %{instance}."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:12
msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one."
msgstr ""
#: lib/service/export/feed.ex:161
#, elixir-format
#: lib/service/export/feed.ex:169
msgid "Feed for %{email} on Mobilizon"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:122
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:122
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "%{instance} is a Mobilizon server."
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:38
msgid "%{reporter_name} (%{reporter_username}) reported the following content."
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:48
msgid "%{title} by %{creator}"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
msgid "Activate my account"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:91
#: lib/mobilizon_web/templates/email/password_reset.html.eex:94
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:91
msgid "Ask the community on Framacolibri"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:62
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:62
#: lib/mobilizon_web/templates/email/report.text.eex:11
msgid "Comments"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:46
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:46
#: lib/mobilizon_web/templates/email/report.text.eex:6
msgid "Event"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
msgid "If you didn't request this, please ignore this email."
msgstr ""
#: lib/mobilizon_web/email/user.ex:46
#, elixir-format
#: lib/mobilizon_web/email/user.ex:45
msgid "Instructions to reset your password on %{instance}"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:123
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:123
msgid "Learn more about Mobilizon."
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
msgid "Nearly here!"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:88
#: lib/mobilizon_web/templates/email/password_reset.html.eex:91
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:88
msgid "Need some help? Something not working properly?"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:13
msgid "New report on %{instance}"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:80
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:80
#: lib/mobilizon_web/templates/email/report.text.eex:18
msgid "Reason"
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
msgid "Reset Password"
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
msgid "Trouble signing in?"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:100
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:100
msgid "View the report"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
msgid "You created an account on %{host} with this email address. You are one click away from activating it."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
msgid "You requested a new password for your account on %{server}."
msgstr ""
#: lib/mobilizon_web/email/user.ex:25
#, elixir-format
#: lib/mobilizon_web/email/user.ex:25
msgid "Instructions to confirm your Mobilizon account on %{instance}"
msgstr ""
#: lib/mobilizon_web/email/admin.ex:23
#, elixir-format
#: lib/mobilizon_web/email/admin.ex:23
msgid "New report on Mobilizon instance %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:1
msgid "Activate your account"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:13
msgid "All good!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:7
msgid "An organizer just approved your participation. You're now going to this event!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:58
msgid "Go to event page"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:70
msgid "If you need to cancel your participation, just access the event page through link above and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:11
msgid "If you need to cancel your participation, just access the previous link and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "Learn more about Mobilizon:"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/report.text.eex:1
msgid "New report from %{reporter} on %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:1
msgid "Participation approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:1
msgid "Participation rejected"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:1
msgid "Password reset"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:7
msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:13
msgid "Sorry!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:7
msgid "Unfortunately, the organizers rejected your participation."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:5
msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:5
msgid "You requested a new password for your account on %{host}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:38
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:38
msgid "You requested to participate in event %{title}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:5
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:5
msgid "You requested to participate in event %{title}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:73
msgid "Your participation to event %{title} has been approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:52
msgid "Your participation to event %{title} has been rejected"
msgstr ""

View File

@ -0,0 +1,87 @@
## `msgid`s in this file come from POT (.pot) files.
##
## Do not add, change, or remove `msgid`s manually here as
## they're tied to the ones in the corresponding POT file
## (with the same domain).
##
## Use `mix gettext.extract --merge` or `mix gettext.merge`
## to merge POT files into PO files.
msgid ""
msgstr ""
"Language: nl\n"
"Plural-Forms: nplurals=2\n"
msgid "can't be blank"
msgstr ""
msgid "has already been taken"
msgstr ""
msgid "is invalid"
msgstr ""
msgid "must be accepted"
msgstr ""
msgid "has invalid format"
msgstr ""
msgid "has an invalid entry"
msgstr ""
msgid "is reserved"
msgstr ""
msgid "does not match confirmation"
msgstr ""
msgid "is still associated with this entry"
msgstr ""
msgid "are still associated with this entry"
msgstr ""
msgid "should be %{count} character(s)"
msgid_plural "should be %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should have %{count} item(s)"
msgid_plural "should have %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should be at least %{count} character(s)"
msgid_plural "should be at least %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should have at least %{count} item(s)"
msgid_plural "should have at least %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should be at most %{count} character(s)"
msgid_plural "should be at most %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should have at most %{count} item(s)"
msgid_plural "should have at most %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgid "must be less than %{number}"
msgstr ""
msgid "must be greater than %{number}"
msgstr ""
msgid "must be less than or equal to %{number}"
msgstr ""
msgid "must be greater than or equal to %{number}"
msgstr ""
msgid "must be equal to %{number}"
msgstr ""

View File

@ -14,137 +14,243 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 3.8\n"
#: lib/mobilizon_web/templates/email/email.text.eex:3
#, elixir-format
msgid "An email sent by Mobilizon on %{instance}."
msgstr "Un corrièl enviat per Mobilizon sus %{instance}."
#: lib/mobilizon_web/templates/email/password_reset.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:12
msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one."
msgstr ""
"Savètz pas demandat aquò, podètz ignorar aqueste corrièl. Vòstre senhal "
"cambiarà pas mentre que cliquetz pas lo ligam çai-jos e ne definiscatz un "
"novèl."
#: lib/service/export/feed.ex:161
#, elixir-format
#: lib/service/export/feed.ex:169
msgid "Feed for %{email} on Mobilizon"
msgstr "Flux per %{email} sus Mobilizon"
#: lib/mobilizon_web/templates/email/email.html.eex:122
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:122
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "%{instance} is a Mobilizon server."
msgstr "%{instance} es una instància Mobilizon."
#: lib/mobilizon_web/templates/email/report.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:38
msgid "%{reporter_name} (%{reporter_username}) reported the following content."
msgstr ""
"%{reporter_name} (%{reporter_username}) a senhalat lo contengut seguent."
#: lib/mobilizon_web/templates/email/report.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:48
msgid "%{title} by %{creator}"
msgstr "%{title} per %{creator}"
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
msgid "Activate my account"
msgstr "Activar mon compte"
#: lib/mobilizon_web/templates/email/email.html.eex:91
#: lib/mobilizon_web/templates/email/password_reset.html.eex:94
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:91
msgid "Ask the community on Framacolibri"
msgstr "Demandar a la comunautat sus Framacolibri"
#: lib/mobilizon_web/templates/email/report.html.eex:62
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:62
#: lib/mobilizon_web/templates/email/report.text.eex:11
msgid "Comments"
msgstr "Comentaris"
#: lib/mobilizon_web/templates/email/report.html.eex:46
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:46
#: lib/mobilizon_web/templates/email/report.text.eex:6
msgid "Event"
msgstr "Eveniment"
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
msgid "If you didn't request this, please ignore this email."
msgstr "Savètz pas demandat aquò, mercés dignorar aqueste messatge."
#: lib/mobilizon_web/email/user.ex:46
#, elixir-format
#: lib/mobilizon_web/email/user.ex:45
msgid "Instructions to reset your password on %{instance}"
msgstr "Consignas per reïnincializar vòstre senhal sus %{instance}"
#: lib/mobilizon_web/templates/email/email.html.eex:123
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:123
msgid "Learn more about Mobilizon."
msgstr "Ne saber mai tocant Mobilizon."
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
msgid "Nearly here!"
msgstr "I sètz gaireben !"
#: lib/mobilizon_web/templates/email/email.html.eex:88
#: lib/mobilizon_web/templates/email/password_reset.html.eex:91
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:88
msgid "Need some help? Something not working properly?"
msgstr "Besonh dajuda ? Quicòm truca ?"
#: lib/mobilizon_web/templates/email/report.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:13
msgid "New report on %{instance}"
msgstr "Nòu senhalament sus %{instance}"
#: lib/mobilizon_web/templates/email/report.html.eex:80
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:80
#: lib/mobilizon_web/templates/email/report.text.eex:18
msgid "Reason"
msgstr "Rason"
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
msgid "Reset Password"
msgstr "Reïnicializar mon senhal"
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time."
msgstr ""
"Reïnicializar vòstre senhal es facil. Clicatz simplament lo boton e seguètz "
"las consignas. Seretz prèst daquí un momenton."
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
msgid "Trouble signing in?"
msgstr "De dificultats a vos connectar ?"
#: lib/mobilizon_web/templates/email/report.html.eex:100
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:100
msgid "View the report"
msgstr "Veire lo senhalament"
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
msgid "You created an account on %{host} with this email address. You are one click away from activating it."
msgstr ""
"Avètz creat un compte sus %{host} amb aquesta adreça electronica. Sètz a un "
"clic de lactivar."
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
msgid "You requested a new password for your account on %{server}."
msgstr "Avètz demandat un nòu senhal per vòstre compte sus %{server}."
#: lib/mobilizon_web/email/user.ex:25
#, elixir-format
#: lib/mobilizon_web/email/user.ex:25
msgid "Instructions to confirm your Mobilizon account on %{instance}"
msgstr "Consignas per confirmar vòstre compte Mobilizon sus %{instance}"
#: lib/mobilizon_web/email/admin.ex:23
#, elixir-format
#: lib/mobilizon_web/email/admin.ex:23
msgid "New report on Mobilizon instance %{instance}"
msgstr "Nòu senhalament sus linstància Mobilizon %{instance}"
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:1
msgid "Activate your account"
msgstr "Activar mon compte"
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:13
msgid "All good!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:7
msgid "An organizer just approved your participation. You're now going to this event!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:58
msgid "Go to event page"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:70
msgid "If you need to cancel your participation, just access the event page through link above and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:11
msgid "If you need to cancel your participation, just access the previous link and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "Learn more about Mobilizon:"
msgstr "Ne saber mai tocant Mobilizon."
#, elixir-format
#: lib/mobilizon_web/templates/email/report.text.eex:1
msgid "New report from %{reporter} on %{instance}"
msgstr "Nòu senhalament sus %{instance}"
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:1
msgid "Participation approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:1
msgid "Participation rejected"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:1
msgid "Password reset"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:7
msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time."
msgstr ""
"Reïnicializar vòstre senhal es facil. Clicatz simplament lo boton e seguètz "
"las consignas. Seretz prèst daquí un momenton."
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:13
msgid "Sorry!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:7
msgid "Unfortunately, the organizers rejected your participation."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:5
msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email."
msgstr ""
"Avètz creat un compte sus %{host} amb aquesta adreça electronica. Sètz a un "
"clic de lactivar."
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:5
msgid "You requested a new password for your account on %{host}."
msgstr "Avètz demandat un nòu senhal per vòstre compte sus %{server}."
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:38
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:38
msgid "You requested to participate in event %{title}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:5
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:5
msgid "You requested to participate in event %{title}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:73
msgid "Your participation to event %{title} has been approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:52
msgid "Your participation to event %{title} has been rejected"
msgstr ""

View File

@ -0,0 +1,87 @@
## `msgid`s in this file come from POT (.pot) files.
##
## Do not add, change, or remove `msgid`s manually here as
## they're tied to the ones in the corresponding POT file
## (with the same domain).
##
## Use `mix gettext.extract --merge` or `mix gettext.merge`
## to merge POT files into PO files.
msgid ""
msgstr ""
"Language: oc\n"
"Plural-Forms: nplurals=2\n"
msgid "can't be blank"
msgstr ""
msgid "has already been taken"
msgstr ""
msgid "is invalid"
msgstr ""
msgid "must be accepted"
msgstr ""
msgid "has invalid format"
msgstr ""
msgid "has an invalid entry"
msgstr ""
msgid "is reserved"
msgstr ""
msgid "does not match confirmation"
msgstr ""
msgid "is still associated with this entry"
msgstr ""
msgid "are still associated with this entry"
msgstr ""
msgid "should be %{count} character(s)"
msgid_plural "should be %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should have %{count} item(s)"
msgid_plural "should have %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should be at least %{count} character(s)"
msgid_plural "should be at least %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should have at least %{count} item(s)"
msgid_plural "should have at least %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should be at most %{count} character(s)"
msgid_plural "should be at most %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should have at most %{count} item(s)"
msgid_plural "should have at most %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgid "must be less than %{number}"
msgstr ""
msgid "must be greater than %{number}"
msgstr ""
msgid "must be less than or equal to %{number}"
msgstr ""
msgid "must be greater than or equal to %{number}"
msgstr ""
msgid "must be equal to %{number}"
msgstr ""

View File

@ -12,129 +12,231 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 2.4.0\n"
#: lib/mobilizon_web/templates/email/email.text.eex:3
#, elixir-format
msgid "An email sent by Mobilizon on %{instance}."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:12
msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one."
msgstr ""
#: lib/service/export/feed.ex:161
#, elixir-format
#: lib/service/export/feed.ex:169
msgid "Feed for %{email} on Mobilizon"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:122
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:122
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "%{instance} is a Mobilizon server."
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:38
msgid "%{reporter_name} (%{reporter_username}) reported the following content."
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:48
msgid "%{title} by %{creator}"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
msgid "Activate my account"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:91
#: lib/mobilizon_web/templates/email/password_reset.html.eex:94
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:91
msgid "Ask the community on Framacolibri"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:62
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:62
#: lib/mobilizon_web/templates/email/report.text.eex:11
msgid "Comments"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:46
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:46
#: lib/mobilizon_web/templates/email/report.text.eex:6
msgid "Event"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
msgid "If you didn't request this, please ignore this email."
msgstr ""
#: lib/mobilizon_web/email/user.ex:46
#, elixir-format
#: lib/mobilizon_web/email/user.ex:45
msgid "Instructions to reset your password on %{instance}"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:123
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:123
msgid "Learn more about Mobilizon."
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
msgid "Nearly here!"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:88
#: lib/mobilizon_web/templates/email/password_reset.html.eex:91
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:88
msgid "Need some help? Something not working properly?"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:13
msgid "New report on %{instance}"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:80
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:80
#: lib/mobilizon_web/templates/email/report.text.eex:18
msgid "Reason"
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
msgid "Reset Password"
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
msgid "Trouble signing in?"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:100
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:100
msgid "View the report"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
msgid "You created an account on %{host} with this email address. You are one click away from activating it."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
msgid "You requested a new password for your account on %{server}."
msgstr ""
#: lib/mobilizon_web/email/user.ex:25
#, elixir-format
#: lib/mobilizon_web/email/user.ex:25
msgid "Instructions to confirm your Mobilizon account on %{instance}"
msgstr ""
#: lib/mobilizon_web/email/admin.ex:23
#, elixir-format
#: lib/mobilizon_web/email/admin.ex:23
msgid "New report on Mobilizon instance %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:1
msgid "Activate your account"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:13
msgid "All good!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:7
msgid "An organizer just approved your participation. You're now going to this event!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:58
msgid "Go to event page"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:70
msgid "If you need to cancel your participation, just access the event page through link above and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:11
msgid "If you need to cancel your participation, just access the previous link and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "Learn more about Mobilizon:"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/report.text.eex:1
msgid "New report from %{reporter} on %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:1
msgid "Participation approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:1
msgid "Participation rejected"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:1
msgid "Password reset"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:7
msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:13
msgid "Sorry!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:7
msgid "Unfortunately, the organizers rejected your participation."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:5
msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:5
msgid "You requested a new password for your account on %{host}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:38
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:38
msgid "You requested to participate in event %{title}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:5
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:5
msgid "You requested to participate in event %{title}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:73
msgid "Your participation to event %{title} has been approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:52
msgid "Your participation to event %{title} has been rejected"
msgstr ""

View File

@ -0,0 +1,93 @@
## `msgid`s in this file come from POT (.pot) files.
##
## Do not add, change, or remove `msgid`s manually here as
## they're tied to the ones in the corresponding POT file
## (with the same domain).
##
## Use `mix gettext.extract --merge` or `mix gettext.merge`
## to merge POT files into PO files.
msgid ""
msgstr ""
"Language: pl\n"
"Plural-Forms: nplurals=3\n"
msgid "can't be blank"
msgstr ""
msgid "has already been taken"
msgstr ""
msgid "is invalid"
msgstr ""
msgid "must be accepted"
msgstr ""
msgid "has invalid format"
msgstr ""
msgid "has an invalid entry"
msgstr ""
msgid "is reserved"
msgstr ""
msgid "does not match confirmation"
msgstr ""
msgid "is still associated with this entry"
msgstr ""
msgid "are still associated with this entry"
msgstr ""
msgid "should be %{count} character(s)"
msgid_plural "should be %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "should have %{count} item(s)"
msgid_plural "should have %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "should be at least %{count} character(s)"
msgid_plural "should be at least %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "should have at least %{count} item(s)"
msgid_plural "should have at least %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "should be at most %{count} character(s)"
msgid_plural "should be at most %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "should have at most %{count} item(s)"
msgid_plural "should have at most %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "must be less than %{number}"
msgstr ""
msgid "must be greater than %{number}"
msgstr ""
msgid "must be less than or equal to %{number}"
msgstr ""
msgid "must be greater than or equal to %{number}"
msgstr ""
msgid "must be equal to %{number}"
msgstr ""

View File

@ -12,129 +12,231 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 2.4.0\n"
#: lib/mobilizon_web/templates/email/email.text.eex:3
#, elixir-format
msgid "An email sent by Mobilizon on %{instance}."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:12
msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one."
msgstr ""
#: lib/service/export/feed.ex:161
#, elixir-format
#: lib/service/export/feed.ex:169
msgid "Feed for %{email} on Mobilizon"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:122
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:122
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "%{instance} is a Mobilizon server."
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:38
msgid "%{reporter_name} (%{reporter_username}) reported the following content."
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:48
msgid "%{title} by %{creator}"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
msgid "Activate my account"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:91
#: lib/mobilizon_web/templates/email/password_reset.html.eex:94
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:91
msgid "Ask the community on Framacolibri"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:62
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:62
#: lib/mobilizon_web/templates/email/report.text.eex:11
msgid "Comments"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:46
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:46
#: lib/mobilizon_web/templates/email/report.text.eex:6
msgid "Event"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
msgid "If you didn't request this, please ignore this email."
msgstr ""
#: lib/mobilizon_web/email/user.ex:46
#, elixir-format
#: lib/mobilizon_web/email/user.ex:45
msgid "Instructions to reset your password on %{instance}"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:123
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:123
msgid "Learn more about Mobilizon."
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
msgid "Nearly here!"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:88
#: lib/mobilizon_web/templates/email/password_reset.html.eex:91
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:88
msgid "Need some help? Something not working properly?"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:13
msgid "New report on %{instance}"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:80
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:80
#: lib/mobilizon_web/templates/email/report.text.eex:18
msgid "Reason"
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
msgid "Reset Password"
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
msgid "Trouble signing in?"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:100
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:100
msgid "View the report"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
msgid "You created an account on %{host} with this email address. You are one click away from activating it."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
msgid "You requested a new password for your account on %{server}."
msgstr ""
#: lib/mobilizon_web/email/user.ex:25
#, elixir-format
#: lib/mobilizon_web/email/user.ex:25
msgid "Instructions to confirm your Mobilizon account on %{instance}"
msgstr ""
#: lib/mobilizon_web/email/admin.ex:23
#, elixir-format
#: lib/mobilizon_web/email/admin.ex:23
msgid "New report on Mobilizon instance %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:1
msgid "Activate your account"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:13
msgid "All good!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:7
msgid "An organizer just approved your participation. You're now going to this event!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:58
msgid "Go to event page"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:70
msgid "If you need to cancel your participation, just access the event page through link above and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:11
msgid "If you need to cancel your participation, just access the previous link and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "Learn more about Mobilizon:"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/report.text.eex:1
msgid "New report from %{reporter} on %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:1
msgid "Participation approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:1
msgid "Participation rejected"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:1
msgid "Password reset"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:7
msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:13
msgid "Sorry!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:7
msgid "Unfortunately, the organizers rejected your participation."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:5
msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:5
msgid "You requested a new password for your account on %{host}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:38
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:38
msgid "You requested to participate in event %{title}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:5
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:5
msgid "You requested to participate in event %{title}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:73
msgid "Your participation to event %{title} has been approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:52
msgid "Your participation to event %{title} has been rejected"
msgstr ""

View File

@ -0,0 +1,87 @@
## `msgid`s in this file come from POT (.pot) files.
##
## Do not add, change, or remove `msgid`s manually here as
## they're tied to the ones in the corresponding POT file
## (with the same domain).
##
## Use `mix gettext.extract --merge` or `mix gettext.merge`
## to merge POT files into PO files.
msgid ""
msgstr ""
"Language: pt\n"
"Plural-Forms: nplurals=2\n"
msgid "can't be blank"
msgstr ""
msgid "has already been taken"
msgstr ""
msgid "is invalid"
msgstr ""
msgid "must be accepted"
msgstr ""
msgid "has invalid format"
msgstr ""
msgid "has an invalid entry"
msgstr ""
msgid "is reserved"
msgstr ""
msgid "does not match confirmation"
msgstr ""
msgid "is still associated with this entry"
msgstr ""
msgid "are still associated with this entry"
msgstr ""
msgid "should be %{count} character(s)"
msgid_plural "should be %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should have %{count} item(s)"
msgid_plural "should have %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should be at least %{count} character(s)"
msgid_plural "should be at least %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should have at least %{count} item(s)"
msgid_plural "should have at least %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should be at most %{count} character(s)"
msgid_plural "should be at most %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgid "should have at most %{count} item(s)"
msgid_plural "should have at most %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgid "must be less than %{number}"
msgstr ""
msgid "must be greater than %{number}"
msgstr ""
msgid "must be less than or equal to %{number}"
msgstr ""
msgid "must be greater than or equal to %{number}"
msgstr ""
msgid "must be equal to %{number}"
msgstr ""

View File

@ -12,129 +12,231 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 2.4.0\n"
#: lib/mobilizon_web/templates/email/email.text.eex:3
#, elixir-format
msgid "An email sent by Mobilizon on %{instance}."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:12
msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one."
msgstr ""
#: lib/service/export/feed.ex:161
#, elixir-format
#: lib/service/export/feed.ex:169
msgid "Feed for %{email} on Mobilizon"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:122
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:122
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "%{instance} is a Mobilizon server."
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:38
msgid "%{reporter_name} (%{reporter_username}) reported the following content."
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:48
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:48
msgid "%{title} by %{creator}"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:58
msgid "Activate my account"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:91
#: lib/mobilizon_web/templates/email/password_reset.html.eex:94
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:91
msgid "Ask the community on Framacolibri"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:62
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:62
#: lib/mobilizon_web/templates/email/report.text.eex:11
msgid "Comments"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:46
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:46
#: lib/mobilizon_web/templates/email/report.text.eex:6
msgid "Event"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:45
msgid "If you didn't request this, please ignore this email."
msgstr ""
#: lib/mobilizon_web/email/user.ex:46
#, elixir-format
#: lib/mobilizon_web/email/user.ex:45
msgid "Instructions to reset your password on %{instance}"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:123
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:123
msgid "Learn more about Mobilizon."
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:13
msgid "Nearly here!"
msgstr ""
#: lib/mobilizon_web/templates/email/email.html.eex:88
#: lib/mobilizon_web/templates/email/password_reset.html.eex:91
#, elixir-format
#: lib/mobilizon_web/templates/email/email.html.eex:88
msgid "Need some help? Something not working properly?"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:13
msgid "New report on %{instance}"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:80
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:80
#: lib/mobilizon_web/templates/email/report.text.eex:18
msgid "Reason"
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:61
msgid "Reset Password"
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:41
msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:13
msgid "Trouble signing in?"
msgstr ""
#: lib/mobilizon_web/templates/email/report.html.eex:100
#, elixir-format
#: lib/mobilizon_web/templates/email/report.html.eex:100
msgid "View the report"
msgstr ""
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.html.eex:38
msgid "You created an account on %{host} with this email address. You are one click away from activating it."
msgstr ""
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.html.eex:38
msgid "You requested a new password for your account on %{server}."
msgstr ""
#: lib/mobilizon_web/email/user.ex:25
#, elixir-format
#: lib/mobilizon_web/email/user.ex:25
msgid "Instructions to confirm your Mobilizon account on %{instance}"
msgstr ""
#: lib/mobilizon_web/email/admin.ex:23
#, elixir-format
#: lib/mobilizon_web/email/admin.ex:23
msgid "New report on Mobilizon instance %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:1
msgid "Activate your account"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:13
msgid "All good!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:7
msgid "An organizer just approved your participation. You're now going to this event!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:58
msgid "Go to event page"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:70
msgid "If you need to cancel your participation, just access the event page through link above and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:11
msgid "If you need to cancel your participation, just access the previous link and click on the participation button."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/email.text.eex:6
msgid "Learn more about Mobilizon:"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/report.text.eex:1
msgid "New report from %{reporter} on %{instance}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:1
msgid "Participation approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:1
msgid "Participation rejected"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:1
msgid "Password reset"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:7
msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:13
msgid "Sorry!"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:45
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:7
msgid "Unfortunately, the organizers rejected your participation."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/registration_confirmation.text.eex:5
msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/password_reset.text.eex:5
msgid "You requested a new password for your account on %{host}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.html.eex:38
#: lib/mobilizon_web/templates/email/event_participation_rejected.html.eex:38
msgid "You requested to participate in event %{title}"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/templates/email/event_participation_approved.text.eex:5
#: lib/mobilizon_web/templates/email/event_participation_rejected.text.eex:5
msgid "You requested to participate in event %{title}."
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:73
msgid "Your participation to event %{title} has been approved"
msgstr ""
#, elixir-format
#: lib/mobilizon_web/email/participation.ex:52
msgid "Your participation to event %{title} has been rejected"
msgstr ""

View File

@ -0,0 +1,93 @@
## `msgid`s in this file come from POT (.pot) files.
##
## Do not add, change, or remove `msgid`s manually here as
## they're tied to the ones in the corresponding POT file
## (with the same domain).
##
## Use `mix gettext.extract --merge` or `mix gettext.merge`
## to merge POT files into PO files.
msgid ""
msgstr ""
"Language: ru\n"
"Plural-Forms: nplurals=3\n"
msgid "can't be blank"
msgstr ""
msgid "has already been taken"
msgstr ""
msgid "is invalid"
msgstr ""
msgid "must be accepted"
msgstr ""
msgid "has invalid format"
msgstr ""
msgid "has an invalid entry"
msgstr ""
msgid "is reserved"
msgstr ""
msgid "does not match confirmation"
msgstr ""
msgid "is still associated with this entry"
msgstr ""
msgid "are still associated with this entry"
msgstr ""
msgid "should be %{count} character(s)"
msgid_plural "should be %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "should have %{count} item(s)"
msgid_plural "should have %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "should be at least %{count} character(s)"
msgid_plural "should be at least %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "should have at least %{count} item(s)"
msgid_plural "should have at least %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "should be at most %{count} character(s)"
msgid_plural "should be at most %{count} character(s)"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "should have at most %{count} item(s)"
msgid_plural "should have at most %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "must be less than %{number}"
msgstr ""
msgid "must be greater than %{number}"
msgstr ""
msgid "must be less than or equal to %{number}"
msgstr ""
msgid "must be greater than or equal to %{number}"
msgstr ""
msgid "must be equal to %{number}"
msgstr ""

View File

@ -0,0 +1,52 @@
defmodule Mobilizon.Storage.Repo.Migrations.RenamePostgresTypes do
use Ecto.Migration
alias Mobilizon.Actors.{ActorVisibility, MemberRole}
alias Mobilizon.Events.{
CommentVisibility,
JoinOptions,
EventStatus,
EventVisibility,
ParticipantRole
}
alias Mobilizon.Users.UserRole
@types %{
"actor_visibility_type" => ActorVisibility.type(),
"comment_visibility_type" => CommentVisibility.type(),
"event_join_options_type" => JoinOptions.type(),
"event_status_type" => EventStatus.type(),
"event_visibility_type" => EventVisibility.type(),
"member_role_type" => MemberRole.type(),
"participant_role_type" => ParticipantRole.type(),
"user_role_type" => UserRole.type()
}
def up do
Enum.each(@types, fn {k, v} -> rename_type(k, v) end)
end
def down do
Enum.each(@types, fn {k, v} -> rename_type(v, k) end)
end
defp rename_type(old_type_name, new_type_name) do
with %Postgrex.Result{columns: ["exists"], rows: [[true]]} <-
Ecto.Adapters.SQL.query!(
Mobilizon.Storage.Repo,
"select exists (select 1 from pg_type where typname = '#{
old_type_name |> remove_schema
}' and typnamespace = (select oid from pg_namespace where nspname = 'public'))"
) do
Ecto.Migration.execute(
"ALTER TYPE #{old_type_name |> remove_schema} RENAME TO #{new_type_name |> remove_schema}"
)
end
end
# We don't want the schema: public.actor_visibility => actor_visibility
def remove_schema(schema) when is_atom(schema), do: remove_schema(to_string(schema))
def remove_schema("public." <> schema), do: schema
def remove_schema(schema), do: schema
end

View File

@ -0,0 +1,21 @@
defmodule Mobilizon.Storage.Repo.Migrations.AddRejectedToParticipantRole do
use Ecto.Migration
alias Mobilizon.Storage.Repo
alias Mobilizon.Events.Participant
alias Mobilizon.Events.ParticipantRole
import Ecto.Query
@disable_ddl_transaction true
def up do
Ecto.Migration.execute(
"ALTER TYPE #{ParticipantRole.type()} ADD VALUE IF NOT EXISTS 'rejected'"
)
end
def down do
Participant
|> where(role: "rejected")
|> Repo.delete_all()
end
end

View File

@ -1,5 +1,5 @@
# source: http://localhost:4000/api
# timestamp: Wed Sep 25 2019 16:41:05 GMT+0200 (GMT+02:00)
# timestamp: Mon Sep 30 2019 09:56:05 GMT+0200 (GMT+02:00)
schema {
query: RootQueryType
@ -671,12 +671,16 @@ enum ParticipantRoleEnum {
MODERATOR
NOT_APPROVED
PARTICIPANT
REJECTED
}
type ParticipantStats {
"""The number of approved participants"""
approved: Int
"""The number of rejected participants"""
rejected: Int
"""The number of unapproved participants"""
unapproved: Int
}
@ -879,9 +883,6 @@ enum ReportStatus {
}
type RootMutationType {
"""Accept a participation"""
acceptParticipation(id: ID!, moderatorActorId: ID!): Participant
"""Change default actor for user"""
changeDefaultActor(preferredUsername: String!): User
@ -1028,9 +1029,6 @@ type RootMutationType {
summary: String = ""
): Person
"""Reject a participation"""
rejectParticipation(id: ID!, moderatorActorId: ID!): DeletedParticipant
"""Resend registration confirmation token"""
resendConfirmationEmail(email: String!, locale: String = "en"): String
@ -1065,6 +1063,9 @@ type RootMutationType {
visibility: EventVisibility = PUBLIC
): Event
"""Accept a participation"""
updateParticipation(id: ID!, moderatorActorId: ID!, role: ParticipantRoleEnum!): Participant
"""Update an identity"""
updatePerson(
"""

View File

@ -1,7 +1,8 @@
defmodule MobilizonWeb.Resolvers.ParticipantResolverTest do
use MobilizonWeb.ConnCase
use Bamboo.Test
alias Mobilizon.Events
alias MobilizonWeb.AbsintheHelpers
alias MobilizonWeb.{AbsintheHelpers, Email}
import Mobilizon.Factory
@event %{
@ -491,7 +492,8 @@ defmodule MobilizonWeb.Resolvers.ParticipantResolverTest do
uuid,
participantStats {
approved,
unapproved
unapproved,
rejected
}
}
}
@ -504,6 +506,7 @@ defmodule MobilizonWeb.Resolvers.ParticipantResolverTest do
assert json_response(res, 200)["data"]["event"]["uuid"] == to_string(event.uuid)
assert json_response(res, 200)["data"]["event"]["participantStats"]["approved"] == 1
assert json_response(res, 200)["data"]["event"]["participantStats"]["unapproved"] == 0
assert json_response(res, 200)["data"]["event"]["participantStats"]["rejected"] == 0
moderator = insert(:actor)
@ -521,13 +524,20 @@ defmodule MobilizonWeb.Resolvers.ParticipantResolverTest do
actor_id: unapproved.id
})
Events.create_participant(%{
role: :rejected,
event_id: event.id,
actor_id: unapproved.id
})
query = """
{
event(uuid: "#{event.uuid}") {
uuid,
participantStats {
approved,
unapproved
unapproved,
rejected
}
}
}
@ -540,11 +550,12 @@ defmodule MobilizonWeb.Resolvers.ParticipantResolverTest do
assert json_response(res, 200)["data"]["event"]["uuid"] == to_string(event.uuid)
assert json_response(res, 200)["data"]["event"]["participantStats"]["approved"] == 2
assert json_response(res, 200)["data"]["event"]["participantStats"]["unapproved"] == 1
assert json_response(res, 200)["data"]["event"]["participantStats"]["rejected"] == 1
end
end
describe "Participant approval" do
test "accept_participation/3", %{conn: conn, actor: actor, user: user} do
describe "Participation role status update" do
test "update_participation/3", %{conn: conn, actor: actor, user: user} do
user_creator = insert(:user)
actor_creator = insert(:actor, user: user_creator)
event = insert(:event, join_options: :restricted, organizer_actor: actor_creator)
@ -581,8 +592,9 @@ defmodule MobilizonWeb.Resolvers.ParticipantResolverTest do
mutation = """
mutation {
acceptParticipation(
updateParticipation(
id: "#{participation_id}",
role: PARTICIPANT,
moderator_actor_id: #{actor_creator.id}
) {
id,
@ -603,21 +615,25 @@ defmodule MobilizonWeb.Resolvers.ParticipantResolverTest do
|> post("/api", AbsintheHelpers.mutation_skeleton(mutation))
assert json_response(res, 200)["errors"] == nil
assert json_response(res, 200)["data"]["acceptParticipation"]["role"] == "PARTICIPANT"
assert json_response(res, 200)["data"]["updateParticipation"]["role"] == "PARTICIPANT"
assert json_response(res, 200)["data"]["acceptParticipation"]["event"]["id"] ==
assert json_response(res, 200)["data"]["updateParticipation"]["event"]["id"] ==
to_string(event.id)
assert json_response(res, 200)["data"]["acceptParticipation"]["actor"]["id"] ==
assert json_response(res, 200)["data"]["updateParticipation"]["actor"]["id"] ==
to_string(actor.id)
participation = Mobilizon.Events.get_participant(participation_id)
assert_delivered_email(Email.Participation.participation_updated(user, participation))
res =
conn
|> auth_conn(user_creator)
|> post("/api", AbsintheHelpers.mutation_skeleton(mutation))
assert hd(json_response(res, 200)["errors"])["message"] =~
" can't be approved since it's already a participant (with role participant)"
assert hd(json_response(res, 200)["errors"])["message"] ==
"Participant already has role participant"
end
test "accept_participation/3 with bad parameters", %{conn: conn, actor: actor, user: user} do
@ -657,8 +673,9 @@ defmodule MobilizonWeb.Resolvers.ParticipantResolverTest do
mutation = """
mutation {
acceptParticipation(
updateParticipation (
id: "#{participation_id}",
role: PARTICIPANT,
moderator_actor_id: #{actor_creator.id}
) {
id,
@ -721,11 +738,13 @@ defmodule MobilizonWeb.Resolvers.ParticipantResolverTest do
mutation = """
mutation {
rejectParticipation(
updateParticipation(
id: "#{participation_id}",
role: REJECTED,
moderator_actor_id: #{actor_creator.id}
) {
id,
role,
actor {
id
},
@ -742,20 +761,24 @@ defmodule MobilizonWeb.Resolvers.ParticipantResolverTest do
|> post("/api", AbsintheHelpers.mutation_skeleton(mutation))
assert json_response(res, 200)["errors"] == nil
assert json_response(res, 200)["data"]["rejectParticipation"]["id"] == participation_id
assert json_response(res, 200)["data"]["updateParticipation"]["id"] == participation_id
assert json_response(res, 200)["data"]["rejectParticipation"]["event"]["id"] ==
assert json_response(res, 200)["data"]["updateParticipation"]["event"]["id"] ==
to_string(event.id)
assert json_response(res, 200)["data"]["rejectParticipation"]["actor"]["id"] ==
assert json_response(res, 200)["data"]["updateParticipation"]["actor"]["id"] ==
to_string(actor.id)
participation = Mobilizon.Events.get_participant(participation_id)
assert_delivered_email(Email.Participation.participation_updated(user, participation))
res =
conn
|> auth_conn(user_creator)
|> post("/api", AbsintheHelpers.mutation_skeleton(mutation))
assert hd(json_response(res, 200)["errors"])["message"] == "Participant not found"
assert hd(json_response(res, 200)["errors"])["message"] ==
"Participant already has role rejected"
end
test "reject_participation/3 with bad parameters", %{conn: conn, actor: actor, user: user} do
@ -795,8 +818,9 @@ defmodule MobilizonWeb.Resolvers.ParticipantResolverTest do
mutation = """
mutation {
rejectParticipation(
updateParticipation (
id: "#{participation_id}",
role: REJECTED,
moderator_actor_id: #{actor_creator.id}
) {
id,