Merge branch 'send-notifications-when-participation-approval' into 'master'
Send Notifications when participation approval See merge request framasoft/mobilizon!445
This commit is contained in:
commit
1dc682ae4e
@ -128,7 +128,7 @@ $mdi-font-path: "~@mdi/font/fonts";
|
||||
body {
|
||||
// background: #f7f8fa;
|
||||
background: $body-background-color;
|
||||
font-family: BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans",
|
||||
font-family: BlinkMacSystemFont, Roboto, Oxygen, Ubuntu, Cantarell, "Segoe UI", "Fira Sans",
|
||||
"Droid Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
|
||||
/*main {*/
|
||||
|
@ -99,6 +99,7 @@ export const USER_SETTINGS_FRAGMENT = gql`
|
||||
notificationOnDay
|
||||
notificationEachWeek
|
||||
notificationBeforeEvent
|
||||
notificationPendingParticipation
|
||||
}
|
||||
`;
|
||||
|
||||
@ -119,12 +120,14 @@ export const SET_USER_SETTINGS = gql`
|
||||
$notificationOnDay: Boolean
|
||||
$notificationEachWeek: Boolean
|
||||
$notificationBeforeEvent: Boolean
|
||||
$notificationPendingParticipation: NotificationPendingParticipationEnum
|
||||
) {
|
||||
setUserSettings(
|
||||
timezone: $timezone
|
||||
notificationOnDay: $notificationOnDay
|
||||
notificationEachWeek: $notificationEachWeek
|
||||
notificationBeforeEvent: $notificationBeforeEvent
|
||||
notificationPendingParticipation: $notificationPendingParticipation
|
||||
) {
|
||||
...UserSettingFragment
|
||||
}
|
||||
|
@ -584,5 +584,15 @@
|
||||
"Timezone": "Timezone",
|
||||
"Select a timezone": "Select a timezone",
|
||||
"Other": "Other",
|
||||
"No moderation logs yet": "No moderation logs yet"
|
||||
"No moderation logs yet": "No moderation logs yet",
|
||||
"Participation notifications": "Participation notifications",
|
||||
"We'll always send you emails to notify about important event updates": "We'll always send you emails to notify about important event updates",
|
||||
"Like title or physical address update, start or end date change or event being confirmed or cancelled.": "Like title or physical address update, start or end date change or event being confirmed or cancelled.",
|
||||
"Organizer notifications": "Organizer notifications",
|
||||
"Notifications for manually approved participations to an event": "Notifications for manually approved participations to an event",
|
||||
"We'll send you an email when there new participations requests.": "We'll send you an email when there new participations requests.",
|
||||
"No notifications": "No notifications",
|
||||
"Direct": "Direct",
|
||||
"Every hour": "Every hour",
|
||||
"Every day": "Every day"
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -19,9 +19,17 @@ export interface ICurrentUser {
|
||||
settings: IUserSettings;
|
||||
}
|
||||
|
||||
export enum INotificationPendingParticipationEnum {
|
||||
NONE = "NONE",
|
||||
DIRECT = "DIRECT",
|
||||
ONE_DAY = "ONE_DAY",
|
||||
ONE_HOUR = "ONE_HOUR",
|
||||
}
|
||||
|
||||
export interface IUserSettings {
|
||||
timezone: string;
|
||||
notificationOnDay: string;
|
||||
notificationEachWeek: string;
|
||||
notificationBeforeEvent: string;
|
||||
notificationPendingParticipation: INotificationPendingParticipationEnum;
|
||||
}
|
||||
|
@ -1,63 +1,92 @@
|
||||
<template>
|
||||
<div v-if="loggedUser">
|
||||
<div class="setting-title">
|
||||
<h2>{{ $t("Participation notifications") }}</h2>
|
||||
</div>
|
||||
<div class="field">
|
||||
<strong>{{
|
||||
$t("We'll always send you emails to notifiy about important event updates")
|
||||
}}</strong>
|
||||
<p>
|
||||
{{
|
||||
$t(
|
||||
"Like title or physical address update, start or end date change or event being confirmed or cancelled."
|
||||
)
|
||||
}}
|
||||
</p>
|
||||
</div>
|
||||
<div class="field">
|
||||
<b-checkbox v-model="notificationOnDay" @input="updateSetting({ notificationOnDay })">
|
||||
<strong>{{ $t("Notification on the day of the event") }}</strong>
|
||||
<p>
|
||||
{{ $t("We'll use your timezone settings to send a recap of the morning of the event.") }}
|
||||
</p>
|
||||
<span v-if="loggedUser.settings.timezone">{{
|
||||
$t("Your timezone is currently set to {timezone}.", {
|
||||
timezone: loggedUser.settings.timezone,
|
||||
})
|
||||
}}</span>
|
||||
<span v-else>{{ $t("You can pick your timezone into your preferences.") }}</span>
|
||||
</b-checkbox>
|
||||
</div>
|
||||
<div class="field">
|
||||
<b-checkbox v-model="notificationEachWeek" @input="updateSetting({ notificationEachWeek })">
|
||||
<strong>{{ $t("Recap every week") }}</strong>
|
||||
<p>
|
||||
{{ $t("You'll get a weekly recap every Monday for upcoming events, if you have any.") }}
|
||||
</p>
|
||||
</b-checkbox>
|
||||
</div>
|
||||
<div class="field">
|
||||
<b-checkbox
|
||||
v-model="notificationBeforeEvent"
|
||||
@input="updateSetting({ notificationBeforeEvent })"
|
||||
>
|
||||
<strong>{{ $t("Notification before the event") }}</strong>
|
||||
<section>
|
||||
<div class="setting-title">
|
||||
<h2>{{ $t("Participation notifications") }}</h2>
|
||||
</div>
|
||||
<div class="field">
|
||||
<strong>{{
|
||||
$t("We'll always send you emails to notify about important event updates")
|
||||
}}</strong>
|
||||
<p>
|
||||
{{
|
||||
$t(
|
||||
"We'll send you an email one hour before the event begins, to be sure you won't forget about it."
|
||||
"Like title or physical address update, start or end date change or event being confirmed or cancelled."
|
||||
)
|
||||
}}
|
||||
</p>
|
||||
</b-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<b-checkbox v-model="notificationOnDay" @input="updateSetting({ notificationOnDay })">
|
||||
<strong>{{ $t("Notification on the day of the event") }}</strong>
|
||||
<p>
|
||||
{{
|
||||
$t("We'll use your timezone settings to send a recap of the morning of the event.")
|
||||
}}
|
||||
</p>
|
||||
<span v-if="loggedUser.settings.timezone">{{
|
||||
$t("Your timezone is currently set to {timezone}.", {
|
||||
timezone: loggedUser.settings.timezone,
|
||||
})
|
||||
}}</span>
|
||||
<span v-else>{{ $t("You can pick your timezone into your preferences.") }}</span>
|
||||
</b-checkbox>
|
||||
</div>
|
||||
<div class="field">
|
||||
<b-checkbox v-model="notificationEachWeek" @input="updateSetting({ notificationEachWeek })">
|
||||
<strong>{{ $t("Recap every week") }}</strong>
|
||||
<p>
|
||||
{{ $t("You'll get a weekly recap every Monday for upcoming events, if you have any.") }}
|
||||
</p>
|
||||
</b-checkbox>
|
||||
</div>
|
||||
<div class="field">
|
||||
<b-checkbox
|
||||
v-model="notificationBeforeEvent"
|
||||
@input="updateSetting({ notificationBeforeEvent })"
|
||||
>
|
||||
<strong>{{ $t("Notification before the event") }}</strong>
|
||||
<p>
|
||||
{{
|
||||
$t(
|
||||
"We'll send you an email one hour before the event begins, to be sure you won't forget about it."
|
||||
)
|
||||
}}
|
||||
</p>
|
||||
</b-checkbox>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div class="setting-title">
|
||||
<h2>{{ $t("Organizer notifications") }}</h2>
|
||||
</div>
|
||||
<div class="field">
|
||||
<strong>{{ $t("Notifications for manually approved participations to an event") }}</strong>
|
||||
<b-select
|
||||
v-model="notificationPendingParticipation"
|
||||
@input="updateSetting({ notificationPendingParticipation })"
|
||||
>
|
||||
<option
|
||||
v-for="(value, key) in notificationPendingParticipationValues"
|
||||
:value="key"
|
||||
:key="key"
|
||||
>{{ value }}</option
|
||||
>
|
||||
</b-select>
|
||||
<p>
|
||||
{{ $t("We'll send you an email when there new participations requests.") }}
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts">
|
||||
import { Component, Vue, Watch } from "vue-property-decorator";
|
||||
import { USER_SETTINGS, SET_USER_SETTINGS } from "../../graphql/user";
|
||||
import { ICurrentUser } from "../../types/current-user.model";
|
||||
import {
|
||||
ICurrentUser,
|
||||
INotificationPendingParticipationEnum,
|
||||
} from "../../types/current-user.model";
|
||||
|
||||
@Component({
|
||||
apollo: {
|
||||
@ -73,6 +102,19 @@ export default class Notifications extends Vue {
|
||||
|
||||
notificationBeforeEvent = false;
|
||||
|
||||
notificationPendingParticipation = INotificationPendingParticipationEnum.NONE;
|
||||
|
||||
notificationPendingParticipationValues: object = {};
|
||||
|
||||
mounted() {
|
||||
this.notificationPendingParticipationValues = {
|
||||
[INotificationPendingParticipationEnum.NONE]: this.$t("No notifications"),
|
||||
[INotificationPendingParticipationEnum.DIRECT]: this.$t("Direct"),
|
||||
[INotificationPendingParticipationEnum.ONE_HOUR]: this.$t("Every hour"),
|
||||
[INotificationPendingParticipationEnum.ONE_DAY]: this.$t("Every day"),
|
||||
};
|
||||
}
|
||||
|
||||
async updateSetting(variables: object) {
|
||||
await this.$apollo.mutate<{ setUserSettings: string }>({
|
||||
mutation: SET_USER_SETTINGS,
|
||||
|
@ -504,14 +504,25 @@ defmodule Mobilizon.Federation.ActivityPub do
|
||||
Audience.calculate_to_and_cc_from_mentions(participant),
|
||||
{:ok, activity} <- create_activity(Map.merge(join_data, audience), local),
|
||||
:ok <- maybe_federate(activity) do
|
||||
if event.local && Mobilizon.Events.get_default_participant_role(event) === :participant &&
|
||||
role == :participant do
|
||||
accept(
|
||||
:join,
|
||||
participant,
|
||||
true,
|
||||
%{"actor" => event.organizer_actor.url}
|
||||
)
|
||||
if event.local do
|
||||
cond do
|
||||
Mobilizon.Events.get_default_participant_role(event) === :participant &&
|
||||
role == :participant ->
|
||||
accept(
|
||||
:join,
|
||||
participant,
|
||||
true,
|
||||
%{"actor" => event.organizer_actor.url}
|
||||
)
|
||||
|
||||
Mobilizon.Events.get_default_participant_role(event) === :not_approved &&
|
||||
role == :not_approved ->
|
||||
Scheduler.pending_participation_notification(event)
|
||||
{:ok, activity, participant}
|
||||
|
||||
true ->
|
||||
{:ok, activity, participant}
|
||||
end
|
||||
else
|
||||
{:ok, activity, participant}
|
||||
end
|
||||
|
@ -117,6 +117,17 @@ defmodule Mobilizon.GraphQL.Schema.UserType do
|
||||
field(:notification_before_event, :boolean,
|
||||
description: "Whether this user will receive a notification right before event"
|
||||
)
|
||||
|
||||
field(:notification_pending_participation, :notification_pending_participation_enum,
|
||||
description: "When does the user receives a notification about new pending participations"
|
||||
)
|
||||
end
|
||||
|
||||
enum :notification_pending_participation_enum do
|
||||
value(:none, as: :none)
|
||||
value(:direct, as: :direct)
|
||||
value(:one_hour, as: :one_hour)
|
||||
value(:one_day, as: :one_day)
|
||||
end
|
||||
|
||||
object :user_queries do
|
||||
@ -231,6 +242,7 @@ defmodule Mobilizon.GraphQL.Schema.UserType do
|
||||
arg(:notification_on_day, :boolean)
|
||||
arg(:notification_each_week, :boolean)
|
||||
arg(:notification_before_event, :boolean)
|
||||
arg(:notification_pending_participation, :notification_pending_participation_enum)
|
||||
resolve(&User.set_user_setting/3)
|
||||
end
|
||||
end
|
||||
|
@ -5,7 +5,7 @@ defmodule Mobilizon.Users.Setting do
|
||||
|
||||
use Ecto.Schema
|
||||
import Ecto.Changeset
|
||||
alias Mobilizon.Users.User
|
||||
alias Mobilizon.Users.{NotificationPendingNotificationDelay, User}
|
||||
|
||||
@required_attrs [:user_id]
|
||||
|
||||
@ -13,7 +13,8 @@ defmodule Mobilizon.Users.Setting do
|
||||
:timezone,
|
||||
:notification_on_day,
|
||||
:notification_each_week,
|
||||
:notification_before_event
|
||||
:notification_before_event,
|
||||
:notification_pending_participation
|
||||
]
|
||||
|
||||
@attrs @required_attrs ++ @optional_attrs
|
||||
@ -24,6 +25,11 @@ defmodule Mobilizon.Users.Setting do
|
||||
field(:notification_on_day, :boolean)
|
||||
field(:notification_each_week, :boolean)
|
||||
field(:notification_before_event, :boolean)
|
||||
|
||||
field(:notification_pending_participation, NotificationPendingNotificationDelay,
|
||||
default: :none
|
||||
)
|
||||
|
||||
belongs_to(:user, User, primary_key: true, type: :id, foreign_key: :id, define_field: false)
|
||||
|
||||
timestamps()
|
||||
|
@ -22,6 +22,8 @@ defmodule Mobilizon.Users do
|
||||
|
||||
defenum(UserRole, :user_role, [:administrator, :moderator, :user])
|
||||
|
||||
defenum(NotificationPendingNotificationDelay, none: 0, direct: 1, one_hour: 5, one_day: 10)
|
||||
|
||||
@doc """
|
||||
Registers an user.
|
||||
"""
|
||||
|
@ -3,10 +3,10 @@ defmodule Mobilizon.Service.Notifications.Scheduler do
|
||||
Allows to insert jobs
|
||||
"""
|
||||
|
||||
alias Mobilizon.{Actors, Users}
|
||||
alias Mobilizon.Actors.Actor
|
||||
alias Mobilizon.Events.{Event, Participant}
|
||||
alias Mobilizon.Service.Workers.Notification
|
||||
alias Mobilizon.Users
|
||||
alias Mobilizon.Users.{Setting, User}
|
||||
require Logger
|
||||
|
||||
@ -129,6 +129,61 @@ defmodule Mobilizon.Service.Notifications.Scheduler do
|
||||
|
||||
def weekly_notification(_), do: {:ok, nil}
|
||||
|
||||
def pending_participation_notification(%Event{
|
||||
id: event_id,
|
||||
organizer_actor_id: organizer_actor_id,
|
||||
local: true
|
||||
}) do
|
||||
with %Actor{user_id: user_id} when not is_nil(user_id) <-
|
||||
Actors.get_actor(organizer_actor_id),
|
||||
%User{
|
||||
settings: %Setting{
|
||||
notification_pending_participation: notification_pending_participation,
|
||||
timezone: timezone
|
||||
}
|
||||
} <- Users.get_user_with_settings!(user_id) do
|
||||
send_at =
|
||||
case notification_pending_participation do
|
||||
:none ->
|
||||
nil
|
||||
|
||||
:direct ->
|
||||
:direct
|
||||
|
||||
:one_day ->
|
||||
calculate_next_day_notification(Date.utc_today(), timezone)
|
||||
|
||||
:one_hour ->
|
||||
DateTime.utc_now()
|
||||
|> DateTime.shift_zone!(timezone)
|
||||
|> (&%{&1 | minute: 0, second: 0, microsecond: {0, 0}}).()
|
||||
end
|
||||
|
||||
params = %{
|
||||
user_id: user_id,
|
||||
event_id: event_id
|
||||
}
|
||||
|
||||
cond do
|
||||
# Sending directly
|
||||
send_at == :direct ->
|
||||
Notification.enqueue(:pending_participation_notification, params)
|
||||
|
||||
# Not sending
|
||||
is_nil(send_at) ->
|
||||
{:ok, nil}
|
||||
|
||||
# Sending to calculated time
|
||||
true ->
|
||||
Notification.enqueue(:pending_participation_notification, params, scheduled_at: send_at)
|
||||
end
|
||||
else
|
||||
_ -> {:ok, nil}
|
||||
end
|
||||
end
|
||||
|
||||
def pending_participation_notification(_), do: {:ok, nil}
|
||||
|
||||
defp shift_zone(datetime, timezone) do
|
||||
case DateTime.shift_zone(datetime, timezone) do
|
||||
{:ok, shift_datetime} -> shift_datetime
|
||||
@ -144,4 +199,15 @@ defmodule Mobilizon.Service.Notifications.Scheduler do
|
||||
do: date,
|
||||
else: calculate_first_day_of_week(Date.add(date, -1), locale)
|
||||
end
|
||||
|
||||
defp calculate_next_day_notification(%Date{} = day, timezone) do
|
||||
{:ok, send_at} = NaiveDateTime.new(day, ~T[18:00:00])
|
||||
{:ok, send_at} = DateTime.from_naive(send_at, timezone)
|
||||
|
||||
if send_at < DateTime.utc_now() do
|
||||
calculate_first_day_of_week(Date.add(day, 1), timezone)
|
||||
else
|
||||
send_at
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -80,6 +80,28 @@ defmodule Mobilizon.Service.Workers.Notification do
|
||||
end
|
||||
end
|
||||
|
||||
def perform(
|
||||
%{
|
||||
"op" => "pending_participation_notification",
|
||||
"user_id" => user_id,
|
||||
"event_id" => event_id
|
||||
},
|
||||
_job
|
||||
) do
|
||||
with %User{} = user <- Users.get_user(user_id),
|
||||
{:ok, %Event{} = event} <- Events.get_event(event_id),
|
||||
%Page{total: total} when total > 0 <-
|
||||
Events.list_participants_for_event(event_id, [:not_approved]) do
|
||||
user
|
||||
|> Notification.pending_participation_notification(event, total)
|
||||
|> Mailer.deliver_later()
|
||||
else
|
||||
err ->
|
||||
require Logger
|
||||
Logger.error(inspect(err))
|
||||
end
|
||||
end
|
||||
|
||||
defp shift_zone(datetime, timezone) do
|
||||
case DateTime.shift_zone(datetime, timezone) do
|
||||
{:ok, shift_datetime} -> shift_datetime
|
||||
|
@ -7,7 +7,7 @@ defmodule Mobilizon.Web.Email.Notification do
|
||||
import Bamboo.Phoenix
|
||||
import Mobilizon.Web.Gettext
|
||||
|
||||
alias Mobilizon.Events.Participant
|
||||
alias Mobilizon.Events.{Event, Participant}
|
||||
alias Mobilizon.Users.{Setting, User}
|
||||
alias Mobilizon.Web.{Email, Gettext}
|
||||
|
||||
@ -80,4 +80,28 @@ defmodule Mobilizon.Web.Email.Notification do
|
||||
|> assign(:subject, subject)
|
||||
|> render(:notification_each_week)
|
||||
end
|
||||
|
||||
def pending_participation_notification(
|
||||
%User{locale: locale, email: email},
|
||||
%Event{} = event,
|
||||
total
|
||||
) do
|
||||
Gettext.put_locale(locale)
|
||||
|
||||
subject =
|
||||
ngettext(
|
||||
"One participation request for event %{title} to process",
|
||||
"%{number_participation_requests} participation requests for event %{title} to process",
|
||||
total,
|
||||
number_participation_requests: total,
|
||||
title: event.title
|
||||
)
|
||||
|
||||
Email.base_email(to: email, subject: subject)
|
||||
|> assign(:locale, locale)
|
||||
|> assign(:event, event)
|
||||
|> assign(:total, total)
|
||||
|> assign(:subject, subject)
|
||||
|> render(:pending_participation_notification)
|
||||
end
|
||||
end
|
||||
|
@ -0,0 +1,75 @@
|
||||
<!-- 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; line-height: 48px;">
|
||||
<h1 style="font-size: 48px; font-weight: 400; margin: 0;">
|
||||
<%= gettext "Pending participations to process" %>
|
||||
</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;">
|
||||
<%= ngettext "You have one pending participation to process:", "You have %{number_participation_requests} participation requests to process:", @total, number_participation_requests: @total %>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<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;" >
|
||||
<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(Mobilizon.Web.Endpoint, :event, @event.uuid) <> "/participations" %>" 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 "Manage pending participation requests" %>
|
||||
</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 "You receive this email because you chose to get notifications for pending participations to your events. You may disable or change the configuration for these notification in your Mobilizon user settings." %>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!--[if (gte mso 9)|(IE)]>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<![endif]-->
|
||||
</td>
|
||||
</tr>
|
@ -0,0 +1,8 @@
|
||||
<%= gettext "Pending participations to process" %>
|
||||
==
|
||||
|
||||
<%= ngettext "You have one pending participation to process:", "You have %{number_participation_requests} participation requests to process:", @total, number_participation_requests: @total %>
|
||||
|
||||
<%= gettext "Manage pending participation requests" %> <%= page_url(Mobilizon.Web.Endpoint, :event, @event.uuid) <> "/participations" %>
|
||||
|
||||
<%= gettext "You receive this email because you chose to get notifications for pending participations to your events. You may disable or change the configuration for these notification in your Mobilizon user settings." %>
|
@ -27,7 +27,7 @@ msgid "Feed for %{email} on Mobilizon"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:155
|
||||
#: lib/web/templates/email/email.html.eex:151
|
||||
#: lib/web/templates/email/email.text.eex:16
|
||||
msgid "%{instance} is a Mobilizon server."
|
||||
msgstr "%{instance} هو خادم موبيليزون Mobilizon."
|
||||
@ -48,7 +48,7 @@ msgid "Activate my account"
|
||||
msgstr "تنشيط حسابي"
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:124
|
||||
#: lib/web/templates/email/email.html.eex:120
|
||||
#: lib/web/templates/email/email.text.eex:14
|
||||
msgid "Ask the community on Framacolibri"
|
||||
msgstr "أطلب مِن المجتمَع على Framacolibri"
|
||||
@ -76,7 +76,7 @@ msgid "Instructions to reset your password on %{instance}"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:156
|
||||
#: lib/web/templates/email/email.html.eex:152
|
||||
msgid "Learn more about Mobilizon."
|
||||
msgstr "تعلّم المزيد عن Mobilizon."
|
||||
|
||||
@ -86,7 +86,7 @@ msgid "Nearly here!"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:121
|
||||
#: lib/web/templates/email/email.html.eex:117
|
||||
#: lib/web/templates/email/email.text.eex:12
|
||||
msgid "Need some help? Something not working properly?"
|
||||
msgstr ""
|
||||
@ -305,23 +305,23 @@ msgid "You requested a new password for your account on %{instance}."
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:95
|
||||
#: lib/web/templates/email/email.html.eex:91
|
||||
msgid "In the meantime, please consider that the software is not (yet) finished. More information %{a_start}on our blog%{a_end}."
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:94
|
||||
#: lib/web/templates/email/email.html.eex:90
|
||||
msgid "Mobilizon is under development, we will add new features to this site during regular updates, until the release of %{b_start}version 1 of the software in the first half of 2020%{b_end}."
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:91
|
||||
#: lib/web/templates/email/email.html.eex:87
|
||||
#: lib/web/templates/email/email.text.eex:6
|
||||
msgid "This is a demonstration site to test the beta version of Mobilizon."
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:89
|
||||
#: lib/web/templates/email/email.html.eex:85
|
||||
msgid "Warning"
|
||||
msgstr "تنبيه"
|
||||
|
||||
@ -344,7 +344,7 @@ msgid "Event status has been set as tentative"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:92
|
||||
#: lib/web/templates/email/email.html.eex:88
|
||||
msgid "%{b_start}Please do not use it in any real way%{b_end}"
|
||||
msgstr ""
|
||||
|
||||
@ -677,7 +677,8 @@ msgid "Verify email address"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/on_day_notification.html.eex:70
|
||||
#: lib/web/templates/email/notification_each_week.html.eex:70
|
||||
#: lib/web/templates/email/notification_each_week.text.eex:14 lib/web/templates/email/on_day_notification.html.eex:70
|
||||
#: lib/web/templates/email/on_day_notification.text.eex:14
|
||||
msgid "If you need to cancel your participation, just access the event page through the link above and click on the participation button."
|
||||
msgid_plural "If you need to cancel your participation, just access the event page through the links above and click on the participation button."
|
||||
@ -776,3 +777,73 @@ msgstr ""
|
||||
#: lib/web/templates/email/event_updated.html.eex:102
|
||||
msgid "Physical address was removed"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/email/notification.ex:70
|
||||
msgid "One event planned this week"
|
||||
msgid_plural "%{nb_events} events planned this week"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
msgstr[3] ""
|
||||
msgstr[4] ""
|
||||
msgstr[5] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/email/notification.ex:92
|
||||
msgid "One participation request for event %{title} to process"
|
||||
msgid_plural "%{number_participation_requests} participation requests for event %{title} to process"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
msgstr[3] ""
|
||||
msgstr[4] ""
|
||||
msgstr[5] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/notification_each_week.html.eex:38
|
||||
#: lib/web/templates/email/notification_each_week.text.eex:4
|
||||
msgid "You have one event this week:"
|
||||
msgid_plural "You have %{total} events this week:"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
msgstr[3] ""
|
||||
msgstr[4] ""
|
||||
msgstr[5] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:38
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:4
|
||||
msgid "You have one pending participation to process:"
|
||||
msgid_plural "You have %{number_participation_requests} participation requests to process:"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
msgstr[3] ""
|
||||
msgstr[4] ""
|
||||
msgstr[5] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/notification_each_week.html.eex:13
|
||||
#: lib/web/templates/email/notification_each_week.text.eex:1
|
||||
msgid "Events this week"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:51
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:6
|
||||
msgid "Manage pending participation requests"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:13
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:1
|
||||
msgid "Pending participations to process"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:64
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:8
|
||||
msgid "You receive this email because you chose to get notifications for pending participations to your events. You may disable or change the configuration for these notification in your Mobilizon user settings."
|
||||
msgstr ""
|
||||
|
@ -24,7 +24,7 @@ msgid "Feed for %{email} on Mobilizon"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:155
|
||||
#: lib/web/templates/email/email.html.eex:151
|
||||
#: lib/web/templates/email/email.text.eex:16
|
||||
msgid "%{instance} is a Mobilizon server."
|
||||
msgstr ""
|
||||
@ -45,7 +45,7 @@ msgid "Activate my account"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:124
|
||||
#: lib/web/templates/email/email.html.eex:120
|
||||
#: lib/web/templates/email/email.text.eex:14
|
||||
msgid "Ask the community on Framacolibri"
|
||||
msgstr ""
|
||||
@ -73,7 +73,7 @@ msgid "Instructions to reset your password on %{instance}"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:156
|
||||
#: lib/web/templates/email/email.html.eex:152
|
||||
msgid "Learn more about Mobilizon."
|
||||
msgstr ""
|
||||
|
||||
@ -83,7 +83,7 @@ msgid "Nearly here!"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:121
|
||||
#: lib/web/templates/email/email.html.eex:117
|
||||
#: lib/web/templates/email/email.text.eex:12
|
||||
msgid "Need some help? Something not working properly?"
|
||||
msgstr ""
|
||||
@ -302,23 +302,23 @@ msgid "You requested a new password for your account on %{instance}."
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:95
|
||||
#: lib/web/templates/email/email.html.eex:91
|
||||
msgid "In the meantime, please consider that the software is not (yet) finished. More information %{a_start}on our blog%{a_end}."
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:94
|
||||
#: lib/web/templates/email/email.html.eex:90
|
||||
msgid "Mobilizon is under development, we will add new features to this site during regular updates, until the release of %{b_start}version 1 of the software in the first half of 2020%{b_end}."
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:91
|
||||
#: lib/web/templates/email/email.html.eex:87
|
||||
#: lib/web/templates/email/email.text.eex:6
|
||||
msgid "This is a demonstration site to test the beta version of Mobilizon."
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:89
|
||||
#: lib/web/templates/email/email.html.eex:85
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
@ -341,7 +341,7 @@ msgid "Event status has been set as tentative"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:92
|
||||
#: lib/web/templates/email/email.html.eex:88
|
||||
msgid "%{b_start}Please do not use it in any real way%{b_end}"
|
||||
msgstr ""
|
||||
|
||||
@ -674,7 +674,8 @@ msgid "Verify email address"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/on_day_notification.html.eex:70
|
||||
#: lib/web/templates/email/notification_each_week.html.eex:70
|
||||
#: lib/web/templates/email/notification_each_week.text.eex:14 lib/web/templates/email/on_day_notification.html.eex:70
|
||||
#: lib/web/templates/email/on_day_notification.text.eex:14
|
||||
msgid "If you need to cancel your participation, just access the event page through the link above and click on the participation button."
|
||||
msgid_plural "If you need to cancel your participation, just access the event page through the links above and click on the participation button."
|
||||
@ -764,3 +765,61 @@ msgstr ""
|
||||
#: lib/web/templates/email/event_updated.html.eex:102
|
||||
msgid "Physical address was removed"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/email/notification.ex:70
|
||||
msgid "One event planned this week"
|
||||
msgid_plural "%{nb_events} events planned this week"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/email/notification.ex:92
|
||||
msgid "One participation request for event %{title} to process"
|
||||
msgid_plural "%{number_participation_requests} participation requests for event %{title} to process"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/notification_each_week.html.eex:38
|
||||
#: lib/web/templates/email/notification_each_week.text.eex:4
|
||||
msgid "You have one event this week:"
|
||||
msgid_plural "You have %{total} events this week:"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:38
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:4
|
||||
msgid "You have one pending participation to process:"
|
||||
msgid_plural "You have %{number_participation_requests} participation requests to process:"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/notification_each_week.html.eex:13
|
||||
#: lib/web/templates/email/notification_each_week.text.eex:1
|
||||
msgid "Events this week"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:51
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:6
|
||||
msgid "Manage pending participation requests"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:13
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:1
|
||||
msgid "Pending participations to process"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:64
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:8
|
||||
msgid "You receive this email because you chose to get notifications for pending participations to your events. You may disable or change the configuration for these notification in your Mobilizon user settings."
|
||||
msgstr ""
|
||||
|
@ -28,7 +28,7 @@ msgid "Feed for %{email} on Mobilizon"
|
||||
msgstr "Flux per %{email} a Mobilizon"
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:155
|
||||
#: lib/web/templates/email/email.html.eex:151
|
||||
#: lib/web/templates/email/email.text.eex:16
|
||||
msgid "%{instance} is a Mobilizon server."
|
||||
msgstr "%{instance} és un servidor de Mobilizon."
|
||||
@ -49,7 +49,7 @@ msgid "Activate my account"
|
||||
msgstr "Activa el meu compte"
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:124
|
||||
#: lib/web/templates/email/email.html.eex:120
|
||||
#: lib/web/templates/email/email.text.eex:14
|
||||
msgid "Ask the community on Framacolibri"
|
||||
msgstr "Pregunta a la comunitat a Framacolibri"
|
||||
@ -77,7 +77,7 @@ msgid "Instructions to reset your password on %{instance}"
|
||||
msgstr "Instruccions per canviar la contrasenya a %{instance}"
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:156
|
||||
#: lib/web/templates/email/email.html.eex:152
|
||||
msgid "Learn more about Mobilizon."
|
||||
msgstr "Per aprendre més de Mobilizon."
|
||||
|
||||
@ -87,7 +87,7 @@ msgid "Nearly here!"
|
||||
msgstr "Hi ets a prop!"
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:121
|
||||
#: lib/web/templates/email/email.html.eex:117
|
||||
#: lib/web/templates/email/email.text.eex:12
|
||||
msgid "Need some help? Something not working properly?"
|
||||
msgstr "Necessites ajuda? Alguna cosa no funciona?"
|
||||
@ -319,14 +319,14 @@ msgid "You requested a new password for your account on %{instance}."
|
||||
msgstr "Algú ha soŀlicitat a %{instance} una contrasenya nova."
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:95
|
||||
#: lib/web/templates/email/email.html.eex:91
|
||||
msgid "In the meantime, please consider that the software is not (yet) finished. More information %{a_start}on our blog%{a_end}."
|
||||
msgstr ""
|
||||
"Mentrestant, tingues en compte que eaquest software encara no està acabat. "
|
||||
"Pots trobar més info al %{a_start}nostre blog%{a_end}."
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:94
|
||||
#: lib/web/templates/email/email.html.eex:90
|
||||
msgid "Mobilizon is under development, we will add new features to this site during regular updates, until the release of %{b_start}version 1 of the software in the first half of 2020%{b_end}."
|
||||
msgstr ""
|
||||
"Mobilizon està en desenvolupament. Hi anirem afegint funcionalitats dins de "
|
||||
@ -334,13 +334,13 @@ msgstr ""
|
||||
"meitat del 2020%{b_end}."
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:91
|
||||
#: lib/web/templates/email/email.html.eex:87
|
||||
#: lib/web/templates/email/email.text.eex:6
|
||||
msgid "This is a demonstration site to test the beta version of Mobilizon."
|
||||
msgstr "Aquesta és una web de proves per provar la beta de Mobilizon."
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:89
|
||||
#: lib/web/templates/email/email.html.eex:85
|
||||
msgid "Warning"
|
||||
msgstr "Alerta"
|
||||
|
||||
@ -363,7 +363,7 @@ msgid "Event status has been set as tentative"
|
||||
msgstr "S'ha posat l'estat a \"provisional\""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:92
|
||||
#: lib/web/templates/email/email.html.eex:88
|
||||
msgid "%{b_start}Please do not use it in any real way%{b_end}"
|
||||
msgstr "%{b_start}No ho facis servir més que proves, sisplau%{b_end}"
|
||||
|
||||
@ -701,7 +701,8 @@ msgid "Verify email address"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/on_day_notification.html.eex:70
|
||||
#: lib/web/templates/email/notification_each_week.html.eex:70
|
||||
#: lib/web/templates/email/notification_each_week.text.eex:14 lib/web/templates/email/on_day_notification.html.eex:70
|
||||
#: lib/web/templates/email/on_day_notification.text.eex:14
|
||||
msgid "If you need to cancel your participation, just access the event page through the link above and click on the participation button."
|
||||
msgid_plural "If you need to cancel your participation, just access the event page through the links above and click on the participation button."
|
||||
@ -792,3 +793,57 @@ msgstr ""
|
||||
#: lib/web/templates/email/event_updated.html.eex:102
|
||||
msgid "Physical address was removed"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/email/notification.ex:70
|
||||
msgid "One event planned this week"
|
||||
msgid_plural "%{nb_events} events planned this week"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/email/notification.ex:92
|
||||
msgid "One participation request for event %{title} to process"
|
||||
msgid_plural "%{number_participation_requests} participation requests for event %{title} to process"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/notification_each_week.html.eex:38
|
||||
#: lib/web/templates/email/notification_each_week.text.eex:4
|
||||
msgid "You have one event this week:"
|
||||
msgid_plural "You have %{total} events this week:"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:38
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:4
|
||||
msgid "You have one pending participation to process:"
|
||||
msgid_plural "You have %{number_participation_requests} participation requests to process:"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/notification_each_week.html.eex:13
|
||||
#: lib/web/templates/email/notification_each_week.text.eex:1
|
||||
msgid "Events this week"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:51
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:6
|
||||
msgid "Manage pending participation requests"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:13
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:1
|
||||
msgid "Pending participations to process"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:64
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:8
|
||||
msgid "You receive this email because you chose to get notifications for pending participations to your events. You may disable or change the configuration for these notification in your Mobilizon user settings."
|
||||
msgstr ""
|
||||
|
@ -24,7 +24,7 @@ msgid "Feed for %{email} on Mobilizon"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:155
|
||||
#: lib/web/templates/email/email.html.eex:151
|
||||
#: lib/web/templates/email/email.text.eex:16
|
||||
msgid "%{instance} is a Mobilizon server."
|
||||
msgstr ""
|
||||
@ -45,7 +45,7 @@ msgid "Activate my account"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:124
|
||||
#: lib/web/templates/email/email.html.eex:120
|
||||
#: lib/web/templates/email/email.text.eex:14
|
||||
msgid "Ask the community on Framacolibri"
|
||||
msgstr ""
|
||||
@ -73,7 +73,7 @@ msgid "Instructions to reset your password on %{instance}"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:156
|
||||
#: lib/web/templates/email/email.html.eex:152
|
||||
msgid "Learn more about Mobilizon."
|
||||
msgstr ""
|
||||
|
||||
@ -83,7 +83,7 @@ msgid "Nearly here!"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:121
|
||||
#: lib/web/templates/email/email.html.eex:117
|
||||
#: lib/web/templates/email/email.text.eex:12
|
||||
msgid "Need some help? Something not working properly?"
|
||||
msgstr ""
|
||||
@ -302,23 +302,23 @@ msgid "You requested a new password for your account on %{instance}."
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:95
|
||||
#: lib/web/templates/email/email.html.eex:91
|
||||
msgid "In the meantime, please consider that the software is not (yet) finished. More information %{a_start}on our blog%{a_end}."
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:94
|
||||
#: lib/web/templates/email/email.html.eex:90
|
||||
msgid "Mobilizon is under development, we will add new features to this site during regular updates, until the release of %{b_start}version 1 of the software in the first half of 2020%{b_end}."
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:91
|
||||
#: lib/web/templates/email/email.html.eex:87
|
||||
#: lib/web/templates/email/email.text.eex:6
|
||||
msgid "This is a demonstration site to test the beta version of Mobilizon."
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:89
|
||||
#: lib/web/templates/email/email.html.eex:85
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
@ -341,7 +341,7 @@ msgid "Event status has been set as tentative"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:92
|
||||
#: lib/web/templates/email/email.html.eex:88
|
||||
msgid "%{b_start}Please do not use it in any real way%{b_end}"
|
||||
msgstr ""
|
||||
|
||||
@ -674,7 +674,8 @@ msgid "Verify email address"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/on_day_notification.html.eex:70
|
||||
#: lib/web/templates/email/notification_each_week.html.eex:70
|
||||
#: lib/web/templates/email/notification_each_week.text.eex:14 lib/web/templates/email/on_day_notification.html.eex:70
|
||||
#: lib/web/templates/email/on_day_notification.text.eex:14
|
||||
msgid "If you need to cancel your participation, just access the event page through the link above and click on the participation button."
|
||||
msgid_plural "If you need to cancel your participation, just access the event page through the links above and click on the participation button."
|
||||
@ -764,3 +765,61 @@ msgstr ""
|
||||
#: lib/web/templates/email/event_updated.html.eex:102
|
||||
msgid "Physical address was removed"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/email/notification.ex:70
|
||||
msgid "One event planned this week"
|
||||
msgid_plural "%{nb_events} events planned this week"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/email/notification.ex:92
|
||||
msgid "One participation request for event %{title} to process"
|
||||
msgid_plural "%{number_participation_requests} participation requests for event %{title} to process"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/notification_each_week.html.eex:38
|
||||
#: lib/web/templates/email/notification_each_week.text.eex:4
|
||||
msgid "You have one event this week:"
|
||||
msgid_plural "You have %{total} events this week:"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:38
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:4
|
||||
msgid "You have one pending participation to process:"
|
||||
msgid_plural "You have %{number_participation_requests} participation requests to process:"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/notification_each_week.html.eex:13
|
||||
#: lib/web/templates/email/notification_each_week.text.eex:1
|
||||
msgid "Events this week"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:51
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:6
|
||||
msgid "Manage pending participation requests"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:13
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:1
|
||||
msgid "Pending participations to process"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:64
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:8
|
||||
msgid "You receive this email because you chose to get notifications for pending participations to your events. You may disable or change the configuration for these notification in your Mobilizon user settings."
|
||||
msgstr ""
|
||||
|
@ -29,7 +29,7 @@ msgid "Feed for %{email} on Mobilizon"
|
||||
msgstr "Feed für %{email} auf Mobilizon"
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:155
|
||||
#: lib/web/templates/email/email.html.eex:151
|
||||
#: lib/web/templates/email/email.text.eex:16
|
||||
msgid "%{instance} is a Mobilizon server."
|
||||
msgstr "%{instance} ist ein Mobilizon-Server."
|
||||
@ -51,7 +51,7 @@ msgid "Activate my account"
|
||||
msgstr "Aktiviere meinen Account"
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:124
|
||||
#: lib/web/templates/email/email.html.eex:120
|
||||
#: lib/web/templates/email/email.text.eex:14
|
||||
msgid "Ask the community on Framacolibri"
|
||||
msgstr "Frag die Gemeinschaft auf Framacolibri"
|
||||
@ -79,7 +79,7 @@ msgid "Instructions to reset your password on %{instance}"
|
||||
msgstr "Anweisungen um dein Passwort auf %{instance} zurückzusetzen"
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:156
|
||||
#: lib/web/templates/email/email.html.eex:152
|
||||
msgid "Learn more about Mobilizon."
|
||||
msgstr "Lerne mehr über Mobilizon."
|
||||
|
||||
@ -89,7 +89,7 @@ msgid "Nearly here!"
|
||||
msgstr "Fast hier!"
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:121
|
||||
#: lib/web/templates/email/email.html.eex:117
|
||||
#: lib/web/templates/email/email.text.eex:12
|
||||
msgid "Need some help? Something not working properly?"
|
||||
msgstr "Brauchst Du Hilfe? Funktioniert etwas nicht richtig?"
|
||||
@ -324,14 +324,14 @@ msgstr ""
|
||||
"Du hast ein neues Passwort für deinen Account auf %{instance} angefragt."
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:95
|
||||
#: lib/web/templates/email/email.html.eex:91
|
||||
msgid "In the meantime, please consider that the software is not (yet) finished. More information %{a_start}on our blog%{a_end}."
|
||||
msgstr ""
|
||||
"Bitte beachte in der Zwischenzeit, dass diese Software (noch) fertiggestellt "
|
||||
"ist. Weitere Informationen %{a_start}in unserem Blog%{a_end}."
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:94
|
||||
#: lib/web/templates/email/email.html.eex:90
|
||||
msgid "Mobilizon is under development, we will add new features to this site during regular updates, until the release of %{b_start}version 1 of the software in the first half of 2020%{b_end}."
|
||||
msgstr ""
|
||||
"Mobilizon befindet sich in der Entwicklung, wir werden neue Funktionen "
|
||||
@ -339,13 +339,13 @@ msgstr ""
|
||||
"in der ersten Hälfte von 2020 veröffentlicht wird%{b_end}."
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:91
|
||||
#: lib/web/templates/email/email.html.eex:87
|
||||
#: lib/web/templates/email/email.text.eex:6
|
||||
msgid "This is a demonstration site to test the beta version of Mobilizon."
|
||||
msgstr "Dies ist eine Demo-Seite, um die Beta-Version von Mobilizon zu testen."
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:89
|
||||
#: lib/web/templates/email/email.html.eex:85
|
||||
msgid "Warning"
|
||||
msgstr "Warnung"
|
||||
|
||||
@ -368,7 +368,7 @@ msgid "Event status has been set as tentative"
|
||||
msgstr "Veranstaltung wurde als vorläufig markiert"
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:92
|
||||
#: lib/web/templates/email/email.html.eex:88
|
||||
msgid "%{b_start}Please do not use it in any real way%{b_end}"
|
||||
msgstr ""
|
||||
|
||||
@ -708,7 +708,8 @@ msgid "Verify email address"
|
||||
msgstr "Bestätig E-Mail Adresse"
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/on_day_notification.html.eex:70
|
||||
#: lib/web/templates/email/notification_each_week.html.eex:70
|
||||
#: lib/web/templates/email/notification_each_week.text.eex:14 lib/web/templates/email/on_day_notification.html.eex:70
|
||||
#: lib/web/templates/email/on_day_notification.text.eex:14
|
||||
msgid "If you need to cancel your participation, just access the event page through the link above and click on the participation button."
|
||||
msgid_plural "If you need to cancel your participation, just access the event page through the links above and click on the participation button."
|
||||
@ -799,3 +800,57 @@ msgstr ""
|
||||
#: lib/web/templates/email/event_updated.html.eex:102
|
||||
msgid "Physical address was removed"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/email/notification.ex:70
|
||||
msgid "One event planned this week"
|
||||
msgid_plural "%{nb_events} events planned this week"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/email/notification.ex:92
|
||||
msgid "One participation request for event %{title} to process"
|
||||
msgid_plural "%{number_participation_requests} participation requests for event %{title} to process"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/notification_each_week.html.eex:38
|
||||
#: lib/web/templates/email/notification_each_week.text.eex:4
|
||||
msgid "You have one event this week:"
|
||||
msgid_plural "You have %{total} events this week:"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:38
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:4
|
||||
msgid "You have one pending participation to process:"
|
||||
msgid_plural "You have %{number_participation_requests} participation requests to process:"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/notification_each_week.html.eex:13
|
||||
#: lib/web/templates/email/notification_each_week.text.eex:1
|
||||
msgid "Events this week"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:51
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:6
|
||||
msgid "Manage pending participation requests"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:13
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:1
|
||||
msgid "Pending participations to process"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/pending_participation_notification.html.eex:64
|
||||
#: lib/web/templates/email/pending_participation_notification.text.eex:8
|
||||
msgid "You receive this email because you chose to get notifications for pending participations to your events. You may disable or change the configuration for these notification in your Mobilizon user settings."
|
||||
msgstr ""
|
||||
|
@ -10,7 +10,7 @@ msgid "Feed for %{email} on Mobilizon"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:155
|
||||
#: lib/web/templates/email/email.html.eex:151
|
||||
#: lib/web/templates/email/email.text.eex:16
|
||||
msgid "%{instance} is a Mobilizon server."
|
||||
msgstr ""
|
||||
@ -31,7 +31,7 @@ msgid "Activate my account"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:124
|
||||
#: lib/web/templates/email/email.html.eex:120
|
||||
#: lib/web/templates/email/email.text.eex:14
|
||||
msgid "Ask the community on Framacolibri"
|
||||
msgstr ""
|
||||
@ -59,7 +59,7 @@ msgid "Instructions to reset your password on %{instance}"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:156
|
||||
#: lib/web/templates/email/email.html.eex:152
|
||||
msgid "Learn more about Mobilizon."
|
||||
msgstr ""
|
||||
|
||||
@ -69,7 +69,7 @@ msgid "Nearly here!"
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:121
|
||||
#: lib/web/templates/email/email.html.eex:117
|
||||
#: lib/web/templates/email/email.text.eex:12
|
||||
msgid "Need some help? Something not working properly?"
|
||||
msgstr ""
|
||||
@ -288,23 +288,23 @@ msgid "You requested a new password for your account on %{instance}."
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:95
|
||||
#: lib/web/templates/email/email.html.eex:91
|
||||
msgid "In the meantime, please consider that the software is not (yet) finished. More information %{a_start}on our blog%{a_end}."
|
||||
msgstr ""
|
||||
|
||||
#, elixir-format
|
||||
#: lib/web/templates/email/email.html.eex:94
|
||||