Merge branch 'bugs' into 'main'

Allow group admins to moderate new members and other things

Closes #881 et #886

See merge request framasoft/mobilizon!1107
This commit is contained in:
Thomas Citharel 2021-11-12 16:47:01 +00:00
commit fbb167983d
105 changed files with 5665 additions and 881 deletions

View File

@ -339,6 +339,10 @@ release-create:
stage: deploy stage: deploy
image: registry.gitlab.com/gitlab-org/release-cli:latest image: registry.gitlab.com/gitlab-org/release-cli:latest
rules: *tag-rules rules: *tag-rules
variables:
APP_ASSET_AMD64: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}_amd64.tar.gz"
APP_ASSET_ARM: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}_arm.tar.gz"
APP_ASSET_ARM64: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}_arm64.tar.gz"
before_script: before_script:
- apk --no-cache add gawk sed grep - apk --no-cache add gawk sed grep
script: | script: |
@ -348,4 +352,6 @@ release-create:
release-cli create --name "$CI_COMMIT_TAG" \ release-cli create --name "$CI_COMMIT_TAG" \
--description "$CHANGELOG" \ --description "$CHANGELOG" \
--tag-name "$CI_COMMIT_TAG" \ --tag-name "$CI_COMMIT_TAG" \
--assets-link "{\"name\":\"${APP_ASSET}\",\"url\":\"${ENDPOINT}/${APP_ASSET}\"}" --assets-link "{\"name\":\"${APP_ASSET_AMD64}\",\"url\":\"${ENDPOINT}/${APP_ASSET_AMD64}\"}" \
--assets-link "{\"name\":\"${APP_ASSET_ARM}\",\"url\":\"${ENDPOINT}/${APP_ASSET_ARM}\"}" \
--assets-link "{\"name\":\"${APP_ASSET_ARM64}\",\"url\":\"${ENDPOINT}/${APP_ASSET_ARM64}\"}"

View File

@ -1,4 +1,4 @@
version: '3' version: "3.2"
services: services:
postgres: postgres:

View File

@ -148,6 +148,11 @@ export default class GroupActivityItem extends mixins(ActivityMixin) {
case Openness.INVITE_ONLY: case Openness.INVITE_ONLY:
details.push("The group can now only be joined with an invite."); details.push("The group can now only be joined with an invite.");
break; break;
case Openness.MODERATED:
details.push(
"The group can now be joined by anyone, but new members need to be approved by an administrator."
);
break;
case Openness.OPEN: case Openness.OPEN:
details.push("The group can now be joined by anyone."); details.push("The group can now be joined by anyone.");
break; break;

View File

@ -9,13 +9,7 @@
:inline="true" :inline="true"
slot="member" slot="member"
> >
<b> <b> {{ displayName(activity.object.actor) }}</b></popover-actor-card
{{
$t("@{username}", {
username: usernameWithDomain(activity.object.actor),
})
}}</b
></popover-actor-card
> >
<b slot="member" v-else>{{ <b slot="member" v-else>{{
subjectParams.member_actor_federated_username subjectParams.member_actor_federated_username
@ -25,13 +19,7 @@
:inline="true" :inline="true"
slot="profile" slot="profile"
> >
<b> <b> {{ displayName(activity.author) }}</b></popover-actor-card
{{
$t("@{username}", {
username: usernameWithDomain(activity.author),
})
}}</b
></popover-actor-card
></i18n ></i18n
> >
<small class="has-text-grey-dark activity-date">{{ <small class="has-text-grey-dark activity-date">{{
@ -41,7 +29,7 @@
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import { usernameWithDomain } from "@/types/actor"; import { displayName } from "@/types/actor";
import { ActivityMemberSubject, MemberRole } from "@/types/enums"; import { ActivityMemberSubject, MemberRole } from "@/types/enums";
import { Component } from "vue-property-decorator"; import { Component } from "vue-property-decorator";
import RouteName from "../../router/name"; import RouteName from "../../router/name";
@ -62,7 +50,7 @@ export const MEMBER_ROLE_VALUE: Record<string, number> = {
}, },
}) })
export default class MemberActivityItem extends mixins(ActivityMixin) { export default class MemberActivityItem extends mixins(ActivityMixin) {
usernameWithDomain = usernameWithDomain; displayName = displayName;
RouteName = RouteName; RouteName = RouteName;
ActivityMemberSubject = ActivityMemberSubject; ActivityMemberSubject = ActivityMemberSubject;
@ -83,6 +71,14 @@ export default class MemberActivityItem extends mixins(ActivityMixin) {
return "You added the member {member}."; return "You added the member {member}.";
} }
return "{profile} added the member {member}."; return "{profile} added the member {member}.";
case ActivityMemberSubject.MEMBER_APPROVED:
if (this.isAuthorCurrentActor) {
return "You approved {member}'s membership.";
}
if (this.isObjectMemberCurrentActor) {
return "Your membership was approved by {profile}.";
}
return "{profile} approved {member}'s membership.";
case ActivityMemberSubject.MEMBER_JOINED: case ActivityMemberSubject.MEMBER_JOINED:
return "{member} joined the group."; return "{member} joined the group.";
case ActivityMemberSubject.MEMBER_UPDATED: case ActivityMemberSubject.MEMBER_UPDATED:
@ -94,6 +90,12 @@ export default class MemberActivityItem extends mixins(ActivityMixin) {
} }
return "{profile} updated the member {member}."; return "{profile} updated the member {member}.";
case ActivityMemberSubject.MEMBER_REMOVED: case ActivityMemberSubject.MEMBER_REMOVED:
if (this.subjectParams.member_role === MemberRole.NOT_APPROVED) {
if (this.isAuthorCurrentActor) {
return "You rejected {member}'s membership request.";
}
return "{profile} rejected {member}'s membership request.";
}
if (this.isAuthorCurrentActor) { if (this.isAuthorCurrentActor) {
return "You excluded member {member}."; return "You excluded member {member}.";
} }

View File

@ -1,5 +1,6 @@
<template> <template>
<div class="media"> <div class="card">
<div class="card-content media">
<div class="media-content"> <div class="media-content">
<div class="content"> <div class="content">
<i18n <i18n
@ -19,7 +20,7 @@
<div class="media-content"> <div class="media-content">
<div class="level"> <div class="level">
<div class="level-left"> <div class="level-left">
<div class="level-item"> <div class="level-item mr-3">
<router-link <router-link
:to="{ :to="{
name: RouteName.GROUP, name: RouteName.GROUP,
@ -28,8 +29,8 @@
}, },
}" }"
> >
<h3>{{ member.parent.name }}</h3> <h3 class="is-size-5">{{ member.parent.name }}</h3>
<p class="is-6 has-text-grey"> <p class="is-size-7 has-text-grey-dark">
<span v-if="member.parent.domain"> <span v-if="member.parent.domain">
{{ {{
`@${member.parent.preferredUsername}@${member.parent.domain}` `@${member.parent.preferredUsername}@${member.parent.domain}`
@ -44,12 +45,18 @@
</div> </div>
<div class="level-right"> <div class="level-right">
<div class="level-item"> <div class="level-item">
<b-button type="is-success" @click="$emit('accept', member.id)"> <b-button
type="is-success"
@click="$emit('accept', member.id)"
>
{{ $t("Accept") }} {{ $t("Accept") }}
</b-button> </b-button>
</div> </div>
<div class="level-item"> <div class="level-item">
<b-button type="is-danger" @click="$emit('reject', member.id)"> <b-button
type="is-danger"
@click="$emit('reject', member.id)"
>
{{ $t("Decline") }} {{ $t("Decline") }}
</b-button> </b-button>
</div> </div>
@ -59,6 +66,7 @@
</div> </div>
</div> </div>
</div> </div>
</div>
</template> </template>
<script lang="ts"> <script lang="ts">
@ -82,4 +90,7 @@ export default class InvitationCard extends Vue {
background: lighten($primary, 40%); background: lighten($primary, 40%);
padding: 10px; padding: 10px;
} }
h3 {
color: $violet-3;
}
</style> </style>

View File

@ -1,5 +1,5 @@
<template> <template>
<section v-if="invitations && invitations.length > 0"> <section class="card my-3" v-if="invitations && invitations.length > 0">
<InvitationCard <InvitationCard
v-for="member in invitations" v-for="member in invitations"
:key="member.id" :key="member.id"
@ -13,8 +13,9 @@
import { ACCEPT_INVITATION, REJECT_INVITATION } from "@/graphql/member"; import { ACCEPT_INVITATION, REJECT_INVITATION } from "@/graphql/member";
import { Component, Prop, Vue } from "vue-property-decorator"; import { Component, Prop, Vue } from "vue-property-decorator";
import InvitationCard from "@/components/Group/InvitationCard.vue"; import InvitationCard from "@/components/Group/InvitationCard.vue";
import { LOGGED_USER_MEMBERSHIPS } from "@/graphql/actor"; import { PERSON_STATUS_GROUP } from "@/graphql/actor";
import { IMember } from "@/types/actor/member.model"; import { IMember } from "@/types/actor/member.model";
import { IGroup, IPerson, usernameWithDomain } from "@/types/actor";
@Component({ @Component({
components: { components: {
@ -26,18 +27,25 @@ export default class Invitations extends Vue {
async acceptInvitation(id: string): Promise<void> { async acceptInvitation(id: string): Promise<void> {
try { try {
const { data } = await this.$apollo.mutate<{ acceptInvitation: IMember }>( await this.$apollo.mutate<{ acceptInvitation: IMember }>({
{
mutation: ACCEPT_INVITATION, mutation: ACCEPT_INVITATION,
variables: { variables: {
id, id,
}, },
refetchQueries: [{ query: LOGGED_USER_MEMBERSHIPS }], refetchQueries({ data }) {
} const profile = data?.acceptInvitation?.actor as IPerson;
); const group = data?.acceptInvitation?.parent as IGroup;
if (data) { if (profile && group) {
this.$emit("accept-invitation", data.acceptInvitation); return [
{
query: PERSON_STATUS_GROUP,
variables: { id: profile.id, group: usernameWithDomain(group) },
},
];
} }
return [];
},
});
} catch (error: any) { } catch (error: any) {
console.error(error); console.error(error);
if (error.graphQLErrors && error.graphQLErrors.length > 0) { if (error.graphQLErrors && error.graphQLErrors.length > 0) {
@ -48,18 +56,25 @@ export default class Invitations extends Vue {
async rejectInvitation(id: string): Promise<void> { async rejectInvitation(id: string): Promise<void> {
try { try {
const { data } = await this.$apollo.mutate<{ rejectInvitation: IMember }>( await this.$apollo.mutate<{ rejectInvitation: IMember }>({
{
mutation: REJECT_INVITATION, mutation: REJECT_INVITATION,
variables: { variables: {
id, id,
}, },
refetchQueries: [{ query: LOGGED_USER_MEMBERSHIPS }], refetchQueries({ data }) {
} const profile = data?.rejectInvitation?.actor as IPerson;
); const group = data?.rejectInvitation?.parent as IGroup;
if (data) { if (profile && group) {
this.$emit("reject-invitation", data.rejectInvitation); return [
{
query: PERSON_STATUS_GROUP,
variables: { id: profile.id, group: usernameWithDomain(group) },
},
];
} }
return [];
},
});
} catch (error: any) { } catch (error: any) {
console.error(error); console.error(error);
if (error.graphQLErrors && error.graphQLErrors.length > 0) { if (error.graphQLErrors && error.graphQLErrors.length > 0) {

View File

@ -37,9 +37,10 @@ export const ACCEPT_INVITATION = gql`
export const REJECT_INVITATION = gql` export const REJECT_INVITATION = gql`
mutation RejectInvitation($id: ID!) { mutation RejectInvitation($id: ID!) {
rejectInvitation(id: $id) { rejectInvitation(id: $id) {
id ...MemberFragment
} }
} }
${MEMBER_FRAGMENT}
`; `;
export const GROUP_MEMBERS = gql` export const GROUP_MEMBERS = gql`
@ -72,13 +73,22 @@ export const UPDATE_MEMBER = gql`
`; `;
export const REMOVE_MEMBER = gql` export const REMOVE_MEMBER = gql`
mutation RemoveMember($groupId: ID!, $memberId: ID!) { mutation RemoveMember($memberId: ID!, $exclude: Boolean) {
removeMember(groupId: $groupId, memberId: $memberId) { removeMember(memberId: $memberId, exclude: $exclude) {
id id
} }
} }
`; `;
export const APPROVE_MEMBER = gql`
mutation ApproveMember($memberId: ID!) {
approveMember(memberId: $memberId) {
...MemberFragment
}
}
${MEMBER_FRAGMENT}
`;
export const JOIN_GROUP = gql` export const JOIN_GROUP = gql`
mutation JoinGroup($groupId: ID!) { mutation JoinGroup($groupId: ID!) {
joinGroup(groupId: $groupId) { joinGroup(groupId: $groupId) {

View File

@ -881,6 +881,7 @@
"{member} was invited by {profile}.": "{member} was invited by {profile}.", "{member} was invited by {profile}.": "{member} was invited by {profile}.",
"You added the member {member}.": "You added the member {member}.", "You added the member {member}.": "You added the member {member}.",
"{profile} added the member {member}.": "{profile} added the member {member}.", "{profile} added the member {member}.": "{profile} added the member {member}.",
"{member} joined the group.": "{member} joined the group.",
"{member} rejected the invitation to join the group.": "{member} rejected the invitation to join the group.", "{member} rejected the invitation to join the group.": "{member} rejected the invitation to join the group.",
"{member} accepted the invitation to join the group.": "{member} accepted the invitation to join the group.", "{member} accepted the invitation to join the group.": "{member} accepted the invitation to join the group.",
"You excluded member {member}.": "You excluded member {member}.", "You excluded member {member}.": "You excluded member {member}.",
@ -1233,5 +1234,17 @@
"Any type": "Any type", "Any type": "Any type",
"In person": "In person", "In person": "In person",
"In the past": "In the past", "In the past": "In the past",
"Only registered users may fetch remote events from their URL.": "Only registered users may fetch remote events from their URL." "Only registered users may fetch remote events from their URL.": "Only registered users may fetch remote events from their URL.",
"Moderate new members": "Moderate new members",
"Anyone can request being a member, but an administrator needs to approve the membership.": "Anyone can request being a member, but an administrator needs to approve the membership.",
"Cancel membership request": "Cancel membership request",
"group's upcoming public events": "group's upcoming public events",
"access to the group's private content as well": "access to the group's private content as well",
"Following the group will allow you to be informed of the {group_upcoming_public_events}, whereas joining the group means you will {access_to_group_private_content_as_well}, including group discussions, group resources and members-only posts.": "Following the group will allow you to be informed of the {group_upcoming_public_events}, whereas joining the group means you will {access_to_group_private_content_as_well}, including group discussions, group resources and members-only posts.",
"The group can now be joined by anyone, but new members need to be approved by an administrator.": "The group can now be joined by anyone, but new members need to be approved by an administrator.",
"You approved {member}'s membership.": "You approved {member}'s membership.",
"Your membership was approved by {profile}.": "Your membership was approved by {profile}.",
"{profile} approved {member}'s membership.": "{profile} approved {member}'s membership.",
"You rejected {member}'s membership request.": "You rejected {member}'s membership request.",
"{profile} rejected {member}'s membership request.": "{profile} rejected {member}'s membership request."
} }

View File

@ -1077,7 +1077,7 @@
"You excluded member {member}.": "Vous avez exclu le ou la membre {member}.", "You excluded member {member}.": "Vous avez exclu le ou la membre {member}.",
"You have been disconnected": "Vous avez été déconnecté⋅e", "You have been disconnected": "Vous avez été déconnecté⋅e",
"You have been invited by {invitedBy} to the following group:": "Vous avez été invité par {invitedBy} à rejoindre le groupe suivant :", "You have been invited by {invitedBy} to the following group:": "Vous avez été invité par {invitedBy} à rejoindre le groupe suivant :",
"You have been removed from this group's members.": "Vous avez été exclu des membres de ce groupe.", "You have been removed from this group's members.": "Vous avez été exclu⋅e des membres de ce groupe.",
"You have cancelled your participation": "Vous avez annulé votre participation", "You have cancelled your participation": "Vous avez annulé votre participation",
"You have one event in {days} days.": "Vous n'avez pas d'événements dans {days} jours | Vous avez un événement dans {days} jours. | Vous avez {count} événements dans {days} jours", "You have one event in {days} days.": "Vous n'avez pas d'événements dans {days} jours | Vous avez un événement dans {days} jours. | Vous avez {count} événements dans {days} jours",
"You have one event today.": "Vous n'avez pas d'événement aujourd'hui | Vous avez un événement aujourd'hui. | Vous avez {count} événements aujourd'hui", "You have one event today.": "Vous n'avez pas d'événement aujourd'hui | Vous avez un événement aujourd'hui. | Vous avez {count} événements aujourd'hui",
@ -1231,6 +1231,7 @@
"{old_group_name} was renamed to {group}.": "{old_group_name} a été renommé en {group}.", "{old_group_name} was renamed to {group}.": "{old_group_name} a été renommé en {group}.",
"{profile} (by default)": "{profile} (par défault)", "{profile} (by default)": "{profile} (par défault)",
"{profile} added the member {member}.": "{profile} a ajouté le ou la membre {member}.", "{profile} added the member {member}.": "{profile} a ajouté le ou la membre {member}.",
"{member} joined the group.": "{member} a rejoint le groupe.",
"{profile} archived the discussion {discussion}.": "{profile} a archivé la discussion {discussion}.", "{profile} archived the discussion {discussion}.": "{profile} a archivé la discussion {discussion}.",
"{profile} created the discussion {discussion}.": "{profile} a créé la discussion {discussion}.", "{profile} created the discussion {discussion}.": "{profile} a créé la discussion {discussion}.",
"{profile} created the folder {resource}.": "{profile} a créé le dossier {resource}.", "{profile} created the folder {resource}.": "{profile} a créé le dossier {resource}.",
@ -1337,5 +1338,17 @@
"Any type": "N'importe quel type", "Any type": "N'importe quel type",
"In person": "En personne", "In person": "En personne",
"In the past": "Dans le passé", "In the past": "Dans le passé",
"Only registered users may fetch remote events from their URL.": "Seul⋅es les utilisateur⋅ices enregistré⋅es peuvent récupérer des événements depuis leur URL." "Only registered users may fetch remote events from their URL.": "Seul⋅es les utilisateur⋅ices enregistré⋅es peuvent récupérer des événements depuis leur URL.",
"Moderate new members": "Modérer les nouvelles et nouveaux membres",
"Anyone can request being a member, but an administrator needs to approve the membership.": "N'importe qui peut demander à être membre, mais un⋅e administrateur⋅ice devra approuver leur adhésion.",
"Cancel membership request": "Annuler la demande d'adhésion",
"group's upcoming public events": "prochains événements publics du groupe",
"access to the group's private content as well": "accédez également au contenu privé du groupe",
"Following the group will allow you to be informed of the {group_upcoming_public_events}, whereas joining the group means you will {access_to_group_private_content_as_well}, including group discussions, group resources and members-only posts.": "Suivre le groupe vous permettra d'être informé⋅e des {group_upcoming_public_events}, alors que rejoindre le groupe signfie que vous {access_to_group_private_content_as_well}, y compris les discussion de groupe, les resources du groupe et les billets réservés au groupe.",
"The group can now be joined by anyone, but new members need to be approved by an administrator.": "Le groupe peut maintenant être rejoint par n'importe qui, mais les nouvelles et nouveaux membres doivent être approuvées par un⋅e modérateur⋅ice.",
"You approved {member}'s membership.": "Vous avez approuvé la demande d'adhésion de {member}.",
"Your membership was approved by {profile}.": "Votre demande d'adhésion a été approuvée par {profile}.",
"{profile} approved {member}'s membership.": "{profile} a approuvé la demande d'adhésion de {member}.",
"You rejected {member}'s membership request.": "Vous avez rejeté la demande d'adhésion de {member}.",
"{profile} rejected {member}'s membership request.": "{profile} a rejeté la demande d'adhésion de {member}."
} }

View File

@ -99,6 +99,10 @@ export default class GroupMixin extends Vue {
]); ]);
} }
get isCurrentActorAPendingGroupMember(): boolean {
return this.hasCurrentActorThisRole([MemberRole.NOT_APPROVED]);
}
hasCurrentActorThisRole(givenRole: string | string[]): boolean { hasCurrentActorThisRole(givenRole: string | string[]): boolean {
const roles = Array.isArray(givenRole) ? givenRole : [givenRole]; const roles = Array.isArray(givenRole) ? givenRole : [givenRole];
return ( return (

View File

@ -23,29 +23,6 @@
</ul> </ul>
</nav> </nav>
<b-loading :active.sync="$apollo.loading"></b-loading> <b-loading :active.sync="$apollo.loading"></b-loading>
<invitations
v-if="isCurrentActorAnInvitedGroupMember"
:invitations="[groupMember]"
@acceptInvitation="acceptInvitation"
@reject-invitation="rejectInvitation"
/>
<b-message v-if="isCurrentActorARejectedGroupMember" type="is-danger">
{{ $t("You have been removed from this group's members.") }}
</b-message>
<b-message
v-if="
isCurrentActorAGroupMember &&
isCurrentActorARecentMember &&
isCurrentActorOnADifferentDomainThanGroup
"
type="is-info"
>
{{
$t(
"Since you are a new member, private content can take a few minutes to appear."
)
}}
</b-message>
<header class="block-container presentation" v-if="group"> <header class="block-container presentation" v-if="group">
<div class="banner-container"> <div class="banner-container">
<lazy-image-wrapper :picture="group.banner" /> <lazy-image-wrapper :picture="group.banner" />
@ -137,7 +114,7 @@
<b-tooltip <b-tooltip
v-if=" v-if="
(!isCurrentActorAGroupMember || previewPublic) && (!isCurrentActorAGroupMember || previewPublic) &&
group.openness !== Openness.OPEN group.openness === Openness.INVITE_ONLY
" "
:label="$t('This group is invite-only')" :label="$t('This group is invite-only')"
position="is-bottom" position="is-bottom"
@ -148,7 +125,9 @@
> >
<b-button <b-button
v-else-if=" v-else-if="
(!isCurrentActorAGroupMember || previewPublic) && ((!isCurrentActorAGroupMember &&
!isCurrentActorAPendingGroupMember) ||
previewPublic) &&
currentActor.id currentActor.id
" "
@click="joinGroup" @click="joinGroup"
@ -157,6 +136,14 @@
:disabled="previewPublic" :disabled="previewPublic"
>{{ $t("Join group") }}</b-button >{{ $t("Join group") }}</b-button
> >
<b-button
outlined
v-else-if="isCurrentActorAPendingGroupMember"
@click="leaveGroup"
@keyup.enter="leaveGroup"
type="is-primary"
>{{ $t("Cancel membership request") }}</b-button
>
<b-button <b-button
tag="router-link" tag="router-link"
:to="{ :to="{
@ -310,6 +297,49 @@
</b-dropdown> </b-dropdown>
</div> </div>
</div> </div>
<invitations
v-if="isCurrentActorAnInvitedGroupMember"
:invitations="[groupMember]"
/>
<b-message v-if="isCurrentActorARejectedGroupMember" type="is-danger">
{{ $t("You have been removed from this group's members.") }}
</b-message>
<b-message
v-if="
isCurrentActorAGroupMember &&
isCurrentActorARecentMember &&
isCurrentActorOnADifferentDomainThanGroup
"
type="is-info"
>
{{
$t(
"Since you are a new member, private content can take a few minutes to appear."
)
}}
</b-message>
<b-message
v-if="
!isCurrentActorAGroupMember &&
!isCurrentActorAPendingGroupMember &&
!isCurrentActorPendingFollow &&
!isCurrentActorFollowing
"
type="is-info"
has-icon
class="m-3"
>
<i18n
path="Following the group will allow you to be informed of the {group_upcoming_public_events}, whereas joining the group means you will {access_to_group_private_content_as_well}, including group discussions, group resources and members-only posts."
>
<b slot="group_upcoming_public_events">{{
$t("group's upcoming public events")
}}</b>
<b slot="access_to_group_private_content_as_well">{{
$t("access to the group's private content as well")
}}</b>
</i18n>
</b-message>
</div> </div>
</header> </header>
</div> </div>
@ -893,31 +923,6 @@ export default class Group extends mixins(GroupMixin) {
}); });
} }
acceptInvitation(): void {
if (this.groupMember) {
const index = this.person.memberships.elements.findIndex(
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
({ id }: IMember) => id === this.groupMember.id
);
const member = this.groupMember;
member.role = MemberRole.MEMBER;
this.person.memberships.elements.splice(index, 1, member);
this.$apollo.queries.group.refetch();
}
}
rejectInvitation({ id: memberId }: { id: string }): void {
const index = this.person.memberships.elements.findIndex(
(membership) =>
membership.role === MemberRole.INVITED && membership.id === memberId
);
if (index > -1) {
this.person.memberships.elements.splice(index, 1);
this.person.memberships.total -= 1;
}
}
async reportGroup(content: string, forward: boolean): Promise<void> { async reportGroup(content: string, forward: boolean): Promise<void> {
this.isReportModalActive = false; this.isReportModalActive = false;
// eslint-disable-next-line @typescript-eslint/ban-ts-comment // eslint-disable-next-line @typescript-eslint/ban-ts-comment

View File

@ -195,6 +195,20 @@
</b-table-column> </b-table-column>
<b-table-column field="actions" :label="$t('Actions')" v-slot="props"> <b-table-column field="actions" :label="$t('Actions')" v-slot="props">
<div class="buttons" v-if="props.row.actor.id !== currentActor.id"> <div class="buttons" v-if="props.row.actor.id !== currentActor.id">
<b-button
type="is-success"
v-if="props.row.role === MemberRole.NOT_APPROVED"
@click="approveMember(props.row)"
icon-left="check"
>{{ $t("Approve member") }}</b-button
>
<b-button
type="is-danger"
v-if="props.row.role === MemberRole.NOT_APPROVED"
@click="rejectMember(props.row)"
icon-left="exit-to-app"
>{{ $t("Reject member") }}</b-button
>
<b-button <b-button
v-if=" v-if="
[MemberRole.MEMBER, MemberRole.MODERATOR].includes( [MemberRole.MEMBER, MemberRole.MODERATOR].includes(
@ -217,7 +231,7 @@
> >
<b-button <b-button
v-if="props.row.role === MemberRole.MEMBER" v-if="props.row.role === MemberRole.MEMBER"
@click="removeMember(props.row.id)" @click="removeMember(props.row)"
type="is-danger" type="is-danger"
icon-left="exit-to-app" icon-left="exit-to-app"
>{{ $t("Remove") }}</b-button >{{ $t("Remove") }}</b-button
@ -250,8 +264,9 @@ import {
GROUP_MEMBERS, GROUP_MEMBERS,
REMOVE_MEMBER, REMOVE_MEMBER,
UPDATE_MEMBER, UPDATE_MEMBER,
APPROVE_MEMBER,
} from "../../graphql/member"; } from "../../graphql/member";
import { usernameWithDomain } from "../../types/actor"; import { usernameWithDomain, displayName } from "../../types/actor";
import EmptyContent from "@/components/Utils/EmptyContent.vue"; import EmptyContent from "@/components/Utils/EmptyContent.vue";
@Component({ @Component({
@ -332,7 +347,7 @@ export default class GroupMembers extends mixins(GroupMixin) {
this.$notifier.success( this.$notifier.success(
this.$t("{username} was invited to {group}", { this.$t("{username} was invited to {group}", {
username: this.newMemberUsername, username: this.newMemberUsername,
group: this.group.name || usernameWithDomain(this.group), group: displayName(this.group),
}) as string }) as string
); );
this.newMemberUsername = ""; this.newMemberUsername = "";
@ -375,7 +390,7 @@ export default class GroupMembers extends mixins(GroupMixin) {
}); });
} }
async removeMember(memberId: string): Promise<void> { async removeMember(oldMember: IMember): Promise<void> {
const { roles, MEMBERS_PER_PAGE, group, page } = this; const { roles, MEMBERS_PER_PAGE, group, page } = this;
const variables = { const variables = {
name: usernameWithDomain(group), name: usernameWithDomain(group),
@ -388,7 +403,7 @@ export default class GroupMembers extends mixins(GroupMixin) {
mutation: REMOVE_MEMBER, mutation: REMOVE_MEMBER,
variables: { variables: {
groupId: this.group.id, groupId: this.group.id,
memberId, memberId: oldMember.id,
}, },
refetchQueries: [ refetchQueries: [
{ {
@ -397,12 +412,18 @@ export default class GroupMembers extends mixins(GroupMixin) {
}, },
], ],
}); });
this.$notifier.success( let message = this.$t("The member was removed from the group {group}", {
this.$t("The member was removed from the group {group}", { group: displayName(this.group),
username: this.newMemberUsername, }) as string;
group: this.group.name || usernameWithDomain(this.group), if (oldMember.role === MemberRole.NOT_APPROVED) {
}) as string message = this.$t(
); "The membership request from {profile} was rejected",
{
group: displayName(oldMember.actor),
}
) as string;
}
this.$notifier.success(message);
} catch (error: any) { } catch (error: any) {
console.error(error); console.error(error);
if (error.graphQLErrors && error.graphQLErrors.length > 0) { if (error.graphQLErrors && error.graphQLErrors.length > 0) {
@ -414,29 +435,49 @@ export default class GroupMembers extends mixins(GroupMixin) {
promoteMember(member: IMember): void { promoteMember(member: IMember): void {
if (!member.id) return; if (!member.id) return;
if (member.role === MemberRole.MODERATOR) { if (member.role === MemberRole.MODERATOR) {
this.updateMember(member.id, MemberRole.ADMINISTRATOR); this.updateMember(member, MemberRole.ADMINISTRATOR);
} }
if (member.role === MemberRole.MEMBER) { if (member.role === MemberRole.MEMBER) {
this.updateMember(member.id, MemberRole.MODERATOR); this.updateMember(member, MemberRole.MODERATOR);
} }
} }
demoteMember(member: IMember): void { demoteMember(member: IMember): void {
if (!member.id) return; if (!member.id) return;
if (member.role === MemberRole.MODERATOR) { if (member.role === MemberRole.MODERATOR) {
this.updateMember(member.id, MemberRole.MEMBER); this.updateMember(member, MemberRole.MEMBER);
} }
if (member.role === MemberRole.ADMINISTRATOR) { if (member.role === MemberRole.ADMINISTRATOR) {
this.updateMember(member.id, MemberRole.MODERATOR); this.updateMember(member, MemberRole.MODERATOR);
} }
} }
async updateMember(memberId: string, role: MemberRole): Promise<void> { async approveMember(member: IMember): Promise<void> {
try {
await this.$apollo.mutate<{ approveMember: IMember }>({
mutation: APPROVE_MEMBER,
variables: { memberId: member.id },
});
this.$notifier.success(this.$t("The member was approved") as string);
} catch (error: any) {
console.error(error);
if (error.graphQLErrors && error.graphQLErrors.length > 0) {
this.$notifier.error(error.graphQLErrors[0].message);
}
}
}
rejectMember(member: IMember): void {
if (!member.id) return;
this.removeMember(member);
}
async updateMember(oldMember: IMember, role: MemberRole): Promise<void> {
try { try {
await this.$apollo.mutate<{ updateMember: IMember }>({ await this.$apollo.mutate<{ updateMember: IMember }>({
mutation: UPDATE_MEMBER, mutation: UPDATE_MEMBER,
variables: { variables: {
memberId, memberId: oldMember.id,
role, role,
}, },
refetchQueries: [ refetchQueries: [
@ -455,9 +496,15 @@ export default class GroupMembers extends mixins(GroupMixin) {
successMessage = "The member role was updated to administrator"; successMessage = "The member role was updated to administrator";
break; break;
case MemberRole.MEMBER: case MemberRole.MEMBER:
default: if (oldMember.role === MemberRole.NOT_APPROVED) {
successMessage = "The member was approved";
} else {
successMessage = "The member role was updated to simple member"; successMessage = "The member role was updated to simple member";
} }
break;
default:
successMessage = "The member role was updated";
}
this.$notifier.success(this.$t(successMessage) as string); this.$notifier.success(this.$t(successMessage) as string);
} catch (error: any) { } catch (error: any) {
console.error(error); console.error(error);

View File

@ -128,6 +128,19 @@
}}</small> }}</small>
</b-radio> </b-radio>
</div> </div>
<div class="field">
<b-radio
v-model="editableGroup.openness"
name="groupOpenness"
:native-value="Openness.MODERATED"
>{{ $t("Moderate new members") }}<br />
<small>{{
$t(
"Anyone can request being a member, but an administrator needs to approve the membership."
)
}}</small>
</b-radio>
</div>
<div class="field"> <div class="field">
<b-radio <b-radio
v-model="editableGroup.openness" v-model="editableGroup.openness"

View File

@ -10,6 +10,7 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Accept do
alias Mobilizon.Federation.ActivityStream alias Mobilizon.Federation.ActivityStream
alias Mobilizon.Federation.ActivityStream.Convertible alias Mobilizon.Federation.ActivityStream.Convertible
alias Mobilizon.Service.Notifications.Scheduler alias Mobilizon.Service.Notifications.Scheduler
alias Mobilizon.Web.Email.Member, as: EmailMember
alias Mobilizon.Web.Endpoint alias Mobilizon.Web.Endpoint
require Logger require Logger
@ -21,7 +22,7 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Accept do
maybe_relay_if_group_activity: 1 maybe_relay_if_group_activity: 1
] ]
@type acceptable_types :: :join | :follow | :invite @type acceptable_types :: :join | :follow | :invite | :member
@type acceptable_entities :: @type acceptable_entities ::
accept_join_entities | accept_follow_entities | accept_invite_entities accept_join_entities | accept_follow_entities | accept_invite_entities
@ -35,6 +36,7 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Accept do
:join -> accept_join(entity, additional) :join -> accept_join(entity, additional)
:follow -> accept_follow(entity, additional) :follow -> accept_follow(entity, additional)
:invite -> accept_invite(entity, additional) :invite -> accept_invite(entity, additional)
:member -> accept_member(entity, additional)
end end
with {:ok, entity, update_data} <- accept_res do with {:ok, entity, update_data} <- accept_res do
@ -158,12 +160,47 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Accept do
end end
end end
@spec maybe_refresh_group(Member.t()) :: :ok | nil @spec accept_member(Member.t(), map()) ::
{:ok, Member.t(), Activity.t()} | {:error, Ecto.Changeset.t()}
defp accept_member(
%Member{actor_id: actor_id, actor: actor, parent: %Actor{} = group} = member,
%{moderator: %Actor{url: actor_url} = moderator}
) do
with %Actor{} <- Actors.get_actor!(actor_id),
{:ok, %Member{id: member_id} = member} <-
Actors.update_member(member, %{role: :member}) do
Mobilizon.Service.Activity.Member.insert_activity(member,
subject: "member_approved",
moderator: moderator
)
Absinthe.Subscription.publish(Endpoint, actor,
group_membership_changed: [Actor.preferred_username_and_domain(group), actor_id]
)
EmailMember.send_notification_to_approved_member(member)
Cachex.del(:activity_pub, "member_#{member_id}")
maybe_refresh_group(member)
accept_data = %{
"type" => "Accept",
"attributedTo" => member.parent.url,
"to" => [member.parent.members_url],
"cc" => [member.parent.url],
"actor" => actor_url,
"object" => Convertible.model_to_as(member),
"id" => "#{Endpoint.url()}/accept/member/#{member_id}"
}
{:ok, member, accept_data}
end
end
@spec maybe_refresh_group(Member.t()) :: {:ok, Actor.t()} | {:error, atom()} | {:error}
defp maybe_refresh_group(%Member{ defp maybe_refresh_group(%Member{
parent: %Actor{domain: parent_domain, url: parent_url}, parent: %Actor{} = group
actor: %Actor{} = actor }),
}) do do: Refresher.refresh_profile(group)
unless is_nil(parent_domain),
do: Refresher.fetch_group(parent_url, actor)
end
end end

View File

@ -69,14 +69,20 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Leave do
end end
def leave( def leave(
%Actor{type: :Group, id: group_id, url: group_url, members_url: group_members_url}, %Actor{
%Actor{id: actor_id, url: actor_url}, type: :Group,
domain: group_domain,
id: group_id,
url: group_url,
members_url: group_members_url
},
%Actor{id: actor_id, url: actor_url, domain: actor_domain},
local, local,
additional additional
) do ) do
case Actors.get_member(actor_id, group_id) do case Actors.get_member(actor_id, group_id) do
{:ok, %Member{id: member_id} = member} -> {:ok, %Member{id: member_id} = member} ->
if Map.get(additional, :force_member_removal, false) || if Map.get(additional, :force_member_removal, false) || group_domain != actor_domain ||
!Actors.is_only_administrator?(member_id, group_id) do !Actors.is_only_administrator?(member_id, group_id) do
with {:ok, %Member{} = member} <- Actors.delete_member(member) do with {:ok, %Member{} = member} <- Actors.delete_member(member) do
Mobilizon.Service.Activity.Member.insert_activity(member, subject: "member_quit") Mobilizon.Service.Activity.Member.insert_activity(member, subject: "member_quit")

View File

@ -28,6 +28,7 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Reject do
:join -> reject_join(entity, additional) :join -> reject_join(entity, additional)
:follow -> reject_follow(entity, additional) :follow -> reject_follow(entity, additional)
:invite -> reject_invite(entity, additional) :invite -> reject_invite(entity, additional)
:member -> reject_member(entity, additional)
end end
{:ok, activity} = create_activity(update_data, local) {:ok, activity} = create_activity(update_data, local)
@ -118,4 +119,28 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Reject do
{:ok, member, accept_data} {:ok, member, accept_data}
end end
end end
@spec reject_member(Member.t(), map()) :: {:ok, Member.t(), Activity.t()} | any
defp reject_member(
%Member{actor_id: actor_id} = member,
%{moderator: %Actor{url: actor_url}}
) do
with %Actor{} <- Actors.get_actor(actor_id),
{:ok, %Member{url: member_url, id: member_id} = member} <-
Actors.delete_member(member),
Mobilizon.Service.Activity.Member.insert_activity(member,
subject: "member_rejected"
),
accept_data <- %{
"type" => "Reject",
"actor" => actor_url,
"attributedTo" => member.parent.url,
"to" => [member.parent.members_url],
"cc" => [member.parent.url],
"object" => member_url,
"id" => "#{Endpoint.url()}/reject/member/#{member_id}"
} do
{:ok, member, accept_data}
end
end
end end

View File

@ -21,23 +21,25 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Remove do
@spec remove(Member.t(), Actor.t(), Actor.t(), boolean, map) :: @spec remove(Member.t(), Actor.t(), Actor.t(), boolean, map) ::
{:ok, Activity.t(), Member.t()} | {:error, :member_not_found | Ecto.Changeset.t()} {:ok, Activity.t(), Member.t()} | {:error, :member_not_found | Ecto.Changeset.t()}
def remove( def remove(
%Member{} = member, %Member{id: member_id},
%Actor{type: :Group, url: group_url, members_url: group_members_url}, %Actor{type: :Group, url: group_url, members_url: group_members_url},
%Actor{url: moderator_url} = moderator, %Actor{url: moderator_url} = moderator,
local, local,
_additional \\ %{} _additional \\ %{}
) do ) do
with {:ok, %Member{id: member_id}} <- Actors.update_member(member, %{role: :rejected}), with %Member{actor: %Actor{url: actor_url}} = member <- Actors.get_member(member_id),
%Member{} = member <- Actors.get_member(member_id) do {:ok, %Member{}} <- Actors.delete_member(member) do
Mobilizon.Service.Activity.Member.insert_activity(member, Mobilizon.Service.Activity.Member.insert_activity(member,
moderator: moderator, moderator: moderator,
subject: "member_removed" subject: "member_removed"
) )
Cachex.del(:activity_pub, "member_#{member_id}")
EmailMember.send_notification_to_removed_member(member) EmailMember.send_notification_to_removed_member(member)
remove_data = %{ remove_data = %{
"to" => [group_members_url], "to" => [actor_url, group_members_url],
"type" => "Remove", "type" => "Remove",
"actor" => moderator_url, "actor" => moderator_url,
"object" => member.url, "object" => member.url,

View File

@ -740,14 +740,13 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
) do ) do
Logger.info("Handle incoming to remove a member from a group") Logger.info("Handle incoming to remove a member from a group")
with {:ok, %Actor{id: moderator_id} = moderator} <- with {:ok, %Actor{} = moderator} <-
data |> Utils.get_actor() |> ActivityPubActor.get_or_fetch_actor_by_url(), data |> Utils.get_actor() |> ActivityPubActor.get_or_fetch_actor_by_url(),
{:ok, person_id} <- get_remove_object(object), {:ok, person_id} <- get_remove_object(object),
{:ok, %Actor{type: :Group, id: group_id} = group} <- {:ok, %Actor{type: :Group, id: group_id} = group} <-
origin |> Utils.get_url() |> ActivityPubActor.get_or_fetch_actor_by_url(), origin |> Utils.get_url() |> ActivityPubActor.get_or_fetch_actor_by_url(),
{:is_admin, {:ok, %Member{role: role}}} {:is_admin, true} <-
when role in [:moderator, :administrator, :creator] <- {:is_admin, can_remove_actor_from_group?(moderator, group)},
{:is_admin, Actors.get_member(moderator_id, group_id)},
{:is_member, {:ok, %Member{role: role} = member}} when role != :rejected <- {:is_member, {:ok, %Member{role: role} = member}} when role != :rejected <-
{:is_member, Actors.get_member(person_id, group_id)} do {:is_member, Actors.get_member(person_id, group_id)} do
Actions.Remove.remove(member, group, moderator, false) Actions.Remove.remove(member, group, moderator, false)
@ -866,6 +865,9 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
{:error, _err} -> {:error, _err} ->
case get_member(join_object) do case get_member(join_object) do
{:ok, %Member{role: :not_approved} = member} ->
do_handle_incoming_accept_join_group(member, :member, %{moderator: actor_accepting})
{:ok, %Member{invited_by: nil} = member} -> {:ok, %Member{invited_by: nil} = member} ->
do_handle_incoming_accept_join_group(member, :join) do_handle_incoming_accept_join_group(member, :join)
@ -922,15 +924,17 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
defp do_handle_incoming_accept_join_group( defp do_handle_incoming_accept_join_group(
%Member{role: role, parent: _group} = member, %Member{role: role, parent: _group} = member,
type type,
additional \\ %{}
) )
when role in [:not_approved, :rejected, :invited] and type in [:join, :invite] do when role in [:not_approved, :rejected, :invited] and type in [:join, :invite, :member] do
# Or maybe for groups it's the group that sends the Accept activity # Or maybe for groups it's the group that sends the Accept activity
with {:ok, %Activity{} = activity, %Member{role: :member} = member} <- with {:ok, %Activity{} = activity, %Member{role: :member} = member} <-
Actions.Accept.accept( Actions.Accept.accept(
type, type,
member, member,
false false,
additional
) do ) do
{:ok, activity, member} {:ok, activity, member}
end end
@ -1194,4 +1198,17 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
Actions.Create.create(:discussion, object_data, false) Actions.Create.create(:discussion, object_data, false)
end end
end end
@spec can_remove_actor_from_group?(Actor.t(), Actor.t()) :: boolean()
defp can_remove_actor_from_group?(%Actor{} = moderator, %Actor{} = group) do
case Actors.get_member(moderator.id, group.id) do
{:ok, %Member{role: role}} when role in [:moderator, :administrator, :creator] ->
true
_ ->
# If member moderator not found, it's probably because no one on this instance is member of this group yet
# Therefore we can't access the list of admin/moderators and we just trust the origin domain
moderator.domain == group.domain
end
end
end end

View File

@ -151,7 +151,13 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Actors do
|> Map.update(:message, nil, &String.trim(HTML.strip_tags(&1))) |> Map.update(:message, nil, &String.trim(HTML.strip_tags(&1)))
}) do }) do
{:ok, %Member{} = member} -> {:ok, %Member{} = member} ->
Mobilizon.Service.Activity.Member.insert_activity(member, subject: "member_joined") subject =
case Mobilizon.Actors.get_default_member_role(group) do
:not_approved -> "member_request"
:member -> "member_joined"
end
Mobilizon.Service.Activity.Member.insert_activity(member, subject: subject)
Absinthe.Subscription.publish(Endpoint, actor, Absinthe.Subscription.publish(Endpoint, actor,
group_membership_changed: [Actor.preferred_username_and_domain(group), actor.id] group_membership_changed: [Actor.preferred_username_and_domain(group), actor.id]

View File

@ -118,6 +118,34 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do
"timezone" => %{ "timezone" => %{
"@id" => "mz:timezone", "@id" => "mz:timezone",
"@type" => "sc:Text" "@type" => "sc:Text"
},
"discussions" => %{
"@id" => "mz:discussions",
"@type" => "@id"
},
"events" => %{
"@id" => "mz:events",
"@type" => "@id"
},
"members" => %{
"@id" => "mz:members",
"@type" => "@id"
},
"openness" => %{
"@id" => "mz:openness",
"@type" => "@id"
},
"posts" => %{
"@id" => "mz:posts",
"@type" => "@id"
},
"resources" => %{
"@id" => "mz:resources",
"@type" => "@id"
},
"todos" => %{
"@id" => "mz:todos",
"@type" => "@id"
} }
} }
] ]

View File

@ -54,13 +54,6 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Actor do
outbox_url: data["outbox"], outbox_url: data["outbox"],
following_url: data["following"], following_url: data["following"],
followers_url: data["followers"], followers_url: data["followers"],
members_url: data["members"],
resources_url: data["resources"],
todos_url: data["todos"],
events_url: data["events"],
posts_url: data["posts"],
discussions_url: data["discussions"],
shared_inbox_url: data["endpoints"]["sharedInbox"],
domain: URI.parse(data["id"]).host, domain: URI.parse(data["id"]).host,
manually_approves_followers: data["manuallyApprovesFollowers"], manually_approves_followers: data["manuallyApprovesFollowers"],
type: data["type"], type: data["type"],
@ -68,10 +61,26 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Actor do
openness: data["openness"], openness: data["openness"],
physical_address_id: if(address, do: address.id, else: nil) physical_address_id: if(address, do: address.id, else: nil)
} }
|> add_endpoints_to_model(data)
end end
def as_to_model_data(_), do: {:error, :actor_not_allowed_type} def as_to_model_data(_), do: {:error, :actor_not_allowed_type}
defp add_endpoints_to_model(actor, data) do
# TODO: Remove fallbacks in 3.0
endpoints = %{
members_url: get_in(data, ["endpoints", "members"]) || data["members"],
resources_url: get_in(data, ["endpoints", "resources"]) || data["resources"],
todos_url: get_in(data, ["endpoints", "todos"]) || data["todos"],
events_url: get_in(data, ["endpoints", "events"]) || data["events"],
posts_url: get_in(data, ["endpoints", "posts"]) || data["posts"],
discussions_url: get_in(data, ["endpoints", "discussions"]) || data["discussions"],
shared_inbox_url: data["endpoints"]["sharedInbox"]
}
Map.merge(actor, endpoints)
end
@doc """ @doc """
Convert an actor struct to an ActivityStream representation. Convert an actor struct to an ActivityStream representation.
""" """
@ -86,12 +95,6 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Actor do
"summary" => actor.summary || "", "summary" => actor.summary || "",
"following" => actor.following_url, "following" => actor.following_url,
"followers" => actor.followers_url, "followers" => actor.followers_url,
"members" => actor.members_url,
"resources" => actor.resources_url,
"todos" => actor.todos_url,
"posts" => actor.posts_url,
"events" => actor.events_url,
"discussions" => actor.discussions_url,
"inbox" => actor.inbox_url, "inbox" => actor.inbox_url,
"outbox" => actor.outbox_url, "outbox" => actor.outbox_url,
"url" => actor.url, "url" => actor.url,
@ -113,12 +116,30 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Actor do
} }
actor_data actor_data
|> add_endpoints(actor)
|> maybe_add_members(actor) |> maybe_add_members(actor)
|> maybe_add_avatar_picture(actor) |> maybe_add_avatar_picture(actor)
|> maybe_add_banner_picture(actor) |> maybe_add_banner_picture(actor)
|> maybe_add_physical_address(actor) |> maybe_add_physical_address(actor)
end end
defp add_endpoints(%{"endpoints" => endpoints} = actor_data, %ActorModel{} = actor) do
new_endpoints = %{
"members" => actor.members_url,
"resources" => actor.resources_url,
"todos" => actor.todos_url,
"posts" => actor.posts_url,
"events" => actor.events_url,
"discussions" => actor.discussions_url
}
endpoints = Map.merge(endpoints, new_endpoints)
actor_data
|> Map.merge(new_endpoints)
|> Map.put("endpoints", endpoints)
end
@spec download_picture(String.t() | nil, String.t(), String.t()) :: map() | nil @spec download_picture(String.t() | nil, String.t(), String.t()) :: map() | nil
defp download_picture(nil, _name, _default_name), do: nil defp download_picture(nil, _name, _default_name), do: nil

View File

@ -141,6 +141,37 @@ defmodule Mobilizon.GraphQL.Resolvers.Member do
end end
end end
def approve_member(_parent, %{member_id: member_id}, %{
context: %{current_actor: %Actor{} = moderator}
}) do
case Actors.get_member(member_id) do
%Member{} = member ->
with {:ok, _activity, %Member{} = member} <-
Actions.Accept.accept(:member, member, true, %{moderator: moderator}) do
{:ok, member}
end
{:error, :member_not_found} ->
{:error, dgettext("errors", "You are not a moderator or admin for this group")}
end
end
# TODO : Maybe remove me ? Remove member with exclude parameter does the same
def reject_member(_parent, %{member_id: member_id}, %{
context: %{current_actor: %Actor{} = moderator}
}) do
case Actors.get_member(member_id) do
%Member{} = member ->
with {:ok, _activity, %Member{} = member} <-
Actions.Reject.reject(:member, member, true, %{moderator: moderator}) do
{:ok, member}
end
{:error, :member_not_found} ->
{:error, dgettext("errors", "You are not a moderator or admin for this group")}
end
end
@spec update_member(any(), map(), Absinthe.Resolution.t()) :: @spec update_member(any(), map(), Absinthe.Resolution.t()) ::
{:ok, Member.t()} | {:error, String.t()} {:ok, Member.t()} | {:error, String.t()}
def update_member(_parent, %{member_id: member_id, role: role}, %{ def update_member(_parent, %{member_id: member_id, role: role}, %{
@ -168,18 +199,17 @@ defmodule Mobilizon.GraphQL.Resolvers.Member do
@spec remove_member(any(), map(), Absinthe.Resolution.t()) :: @spec remove_member(any(), map(), Absinthe.Resolution.t()) ::
{:ok, Member.t()} | {:error, String.t()} {:ok, Member.t()} | {:error, String.t()}
def remove_member(_parent, %{member_id: member_id, group_id: group_id}, %{ def remove_member(_parent, %{member_id: member_id, exclude: _exclude}, %{
context: %{current_actor: %Actor{id: moderator_id} = moderator} context: %{current_actor: %Actor{id: moderator_id} = moderator}
}) do }) do
with %Member{role: role} = member when role != :rejected <- Actors.get_member(member_id), case Actors.get_member(member_id) do
%Actor{type: :Group} = group <- Actors.get_actor(group_id), nil ->
{:has_rights_to_remove, {:ok, %Member{role: role}}} {:error,
when role in [:moderator, :administrator, :creator] <- dgettext(
{:has_rights_to_remove, Actors.get_member(moderator_id, group_id)}, "errors",
{:ok, _activity, %Member{}} <- "This member does not exist"
Actions.Remove.remove(member, group, moderator, true) do )}
{:ok, member}
else
%Member{role: :rejected} -> %Member{role: :rejected} ->
{:error, {:error,
dgettext( dgettext(
@ -187,7 +217,24 @@ defmodule Mobilizon.GraphQL.Resolvers.Member do
"This member already has been rejected." "This member already has been rejected."
)} )}
{:has_rights_to_remove, _} -> %Member{parent_id: group_id} = member ->
case Actors.get_member(moderator_id, group_id) do
{:ok, %Member{role: role}} when role in [:moderator, :administrator, :creator] ->
%Actor{type: :Group} = group = Actors.get_actor(group_id)
with {:ok, _activity, %Member{}} <-
Actions.Remove.remove(member, group, moderator, true) do
{:ok, member}
end
{:ok, %Member{}} ->
{:error,
dgettext(
"errors",
"You don't have the role needed to remove this member."
)}
{:error, :member_not_found} ->
{:error, {:error,
dgettext( dgettext(
"errors", "errors",
@ -195,6 +242,15 @@ defmodule Mobilizon.GraphQL.Resolvers.Member do
)} )}
end end
end end
end
def remove_member(_parent, _args, _resolution),
do:
{:error,
dgettext(
"errors",
"You must be logged-in to remove a member"
)}
# Rejected members can be invited again # Rejected members can be invited again
@spec check_member_not_existant_or_rejected(String.t() | integer, String.t() | integer()) :: @spec check_member_not_existant_or_rejected(String.t() | integer, String.t() | integer()) ::

View File

@ -81,6 +81,24 @@ defmodule Mobilizon.GraphQL.Schema.Actors.MemberType do
resolve(&Member.reject_invitation/3) resolve(&Member.reject_invitation/3)
end end
@desc """
Approve a membership request
"""
field :approve_member, :member do
arg(:member_id, non_null(:id), description: "The member ID")
resolve(&Member.approve_member/3)
end
@desc """
Reject a membership request
"""
field :reject_member, :member do
arg(:member_id, non_null(:id), description: "The member ID")
resolve(&Member.reject_member/3)
end
@desc """ @desc """
Update a member's role Update a member's role
""" """
@ -93,9 +111,13 @@ defmodule Mobilizon.GraphQL.Schema.Actors.MemberType do
@desc "Remove a member from a group" @desc "Remove a member from a group"
field :remove_member, :member do field :remove_member, :member do
arg(:group_id, non_null(:id), description: "The group ID")
arg(:member_id, non_null(:id), description: "The member ID") arg(:member_id, non_null(:id), description: "The member ID")
arg(:exclude, :boolean,
default_value: false,
description: "Whether the member should be excluded from the group"
)
resolve(&Member.remove_member/3) resolve(&Member.remove_member/3)
end end
end end

View File

@ -18,8 +18,9 @@ defmodule Mobilizon.Service.Activity.Member do
) do ) do
subject = Keyword.get(options, :subject) subject = Keyword.get(options, :subject)
with author_id <- get_author(new_member, options), author_id = get_author(new_member, options)
object_id <- if(subject == "member_removed", do: nil, else: to_string(member_id)) do object_id = if(subject == "member_removed", do: nil, else: to_string(member_id))
ActivityBuilder.enqueue(:build_activity, %{ ActivityBuilder.enqueue(:build_activity, %{
"type" => "member", "type" => "member",
"subject" => subject, "subject" => subject,
@ -31,7 +32,6 @@ defmodule Mobilizon.Service.Activity.Member do
"inserted_at" => DateTime.utc_now() "inserted_at" => DateTime.utc_now()
}) })
end end
end
def insert_activity(_, _), do: {:ok, nil} def insert_activity(_, _), do: {:ok, nil}
@ -66,34 +66,37 @@ defmodule Mobilizon.Service.Activity.Member do
end end
end end
moderator = Keyword.get(options, :moderator) %{
old_member = Keyword.get(options, :old_member)
subject_params = %{
member_role: String.upcase(to_string(role)) member_role: String.upcase(to_string(role))
} }
|> maybe_add_actor(actor)
|> maybe_add_old_member(Keyword.get(options, :old_member))
|> maybe_add_moderator(Keyword.get(options, :moderator))
end
subject_params = @spec maybe_add_actor(map(), Actor.t() | nil) :: map()
if(is_nil(actor), defp maybe_add_actor(subject_params, nil), do: subject_params
do: subject_params,
else: defp maybe_add_actor(subject_params, %Actor{} = actor) do
subject_params subject_params
|> Map.put( |> Map.put(
:member_actor_federated_username, :member_actor_federated_username,
Actor.preferred_username_and_domain(actor) Actor.preferred_username_and_domain(actor)
) )
|> Map.put(:member_actor_name, actor.name) |> Map.put(:member_actor_name, actor.name)
) end
subject_params = @spec maybe_add_old_member(map(), Member.t() | nil) :: map()
if(is_nil(old_member), defp maybe_add_old_member(subject_params, nil), do: subject_params
do: subject_params,
else: Map.put(subject_params, :old_role, String.upcase(to_string(old_member.role)))
)
if is_nil(moderator), defp maybe_add_old_member(subject_params, old_member) do
do: subject_params, Map.put(subject_params, :old_role, String.upcase(to_string(old_member.role)))
else: end
@spec maybe_add_moderator(map(), Actor.t() | nil) :: map()
defp maybe_add_moderator(subject_params, nil), do: subject_params
defp maybe_add_moderator(subject_params, moderator) do
Map.put( Map.put(
subject_params, subject_params,
:moderator_preferred_username, :moderator_preferred_username,

View File

@ -50,6 +50,14 @@ defmodule Mobilizon.Service.Activity.Renderer.Member do
dgettext("activity", "%{profile} added the member %{member}.", args) dgettext("activity", "%{profile} added the member %{member}.", args)
end end
defp text(:member_approved, args) do
dgettext("activity", "%{profile} approved the membership request from %{member}.", args)
end
defp text(:member_rejected, args) do
dgettext("activity", "%{profile} rejected the membership request from %{member}.", args)
end
defp text(:member_updated, args) do defp text(:member_updated, args) do
dgettext("activity", "%{profile} updated the member %{member}.", args) dgettext("activity", "%{profile} updated the member %{member}.", args)
end end

View File

@ -247,7 +247,7 @@ defmodule Mobilizon.Service.Notifications.Scheduler do
:direct :direct
:one_day -> :one_day ->
calculate_next_day_notification(Date.utc_today(), timezone) calculate_next_day_notification(Date.utc_today(), timezone: timezone)
:one_hour -> :one_hour ->
DateTime.utc_now() DateTime.utc_now()

View File

@ -46,13 +46,65 @@ defmodule Mobilizon.Web.Email.Member do
end end
end end
# Only send notification to local members
def send_notification_to_approved_member(%Member{actor: %Actor{user_id: nil}}), do: :ok
def send_notification_to_approved_member(%Member{
actor: %Actor{user_id: user_id},
parent: %Actor{} = group
}) do
with %User{email: email, locale: locale} <- Users.get_user!(user_id) do
Gettext.put_locale(locale)
subject =
gettext(
"Your membership request for group %{group} has been approved",
group: Actor.display_name(group)
)
Email.base_email(to: email, subject: subject)
|> assign(:locale, locale)
|> assign(:group, group)
|> assign(:subject, subject)
|> render(:group_membership_approval)
|> Email.Mailer.send_email_later()
:ok
end
end
# Only send notification to local members # Only send notification to local members
def send_notification_to_removed_member(%Member{actor: %Actor{user_id: nil}}), do: :ok def send_notification_to_removed_member(%Member{actor: %Actor{user_id: nil}}), do: :ok
# Member rejection
def send_notification_to_removed_member(%Member{ def send_notification_to_removed_member(%Member{
actor: %Actor{user_id: user_id}, actor: %Actor{user_id: user_id},
parent: %Actor{} = group, parent: %Actor{} = group,
role: :rejected role: :not_approved
}) do
with %User{email: email, locale: locale} <- Users.get_user!(user_id) do
Gettext.put_locale(locale)
subject =
gettext(
"Your membership request for group %{group} has been rejected",
group: Actor.display_name(group)
)
Email.base_email(to: email, subject: subject)
|> assign(:locale, locale)
|> assign(:group, group)
|> assign(:subject, subject)
|> render(:group_membership_rejection)
|> Email.Mailer.send_email_later()
:ok
end
end
def send_notification_to_removed_member(%Member{
actor: %Actor{user_id: user_id},
parent: %Actor{} = group
}) do }) do
with %User{email: email, locale: locale} <- Users.get_user!(user_id) do with %User{email: email, locale: locale} <- Users.get_user!(user_id) do
Gettext.put_locale(locale) Gettext.put_locale(locale)
@ -60,7 +112,7 @@ defmodule Mobilizon.Web.Email.Member do
subject = subject =
gettext( gettext(
"You have been removed from group %{group}", "You have been removed from group %{group}",
group: group.name group: Actor.display_name(group)
) )
Email.base_email(to: email, subject: subject) Email.base_email(to: email, subject: subject)

View File

@ -0,0 +1,69 @@
<!-- HERO -->
<tr>
<td bgcolor="#474467" 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: #3A384C; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 48px; font-weight: 400; line-height: 48px;">
<h1 style="font-size: 48px; font-weight: 400; margin: 0;">
<%= gettext "You're in!" %>
</h1>
</td>
</tr>
</table>
<!--[if (gte mso 9)|(IE)]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
<!-- COPY BLOCK -->
<tr>
<td bgcolor="#E6E4F4" 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: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" >
<p style="margin: 0;">
<%= gettext("Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved.", group: Mobilizon.Actors.Actor.display_name(@group), link_start: "<a href=\"#{Routes.page_url(Mobilizon.Web.Endpoint, :actor, Mobilizon.Actors.Actor.preferred_username_and_domain(@group))}\">", link_end: "</a>") |> raw %>
</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="#3C376E">
<a href={"#{ Routes.page_url(Mobilizon.Web.Endpoint, :actor, Mobilizon.Actors.Actor.preferred_username_and_domain(@group)) }"} target="_blank" style="font-size: 20px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; padding: 15px 25px; border-radius: 2px; border: 1px solid #3C376E; display: inline-block;">
<%= gettext "View the group" %>
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if (gte mso 9)|(IE)]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>

View File

@ -0,0 +1,5 @@
<%= gettext "You're in!" %>
==
<%= gettext "Your membership request for group %{group} has been approved.", group: Mobilizon.Actors.Actor.display_name(@group) %>
<%= Routes.page_url(Mobilizon.Web.Endpoint, :actor, Mobilizon.Actors.Actor.preferred_username_and_domain(@group)) %>

View File

@ -0,0 +1,49 @@
<!-- HERO -->
<tr>
<td bgcolor="#474467" 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: #3A384C; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 48px; font-weight: 400; line-height: 48px;">
<h1 style="font-size: 48px; font-weight: 400; margin: 0;">
<%= gettext "Sorry, not this time!" %>
</h1>
</td>
</tr>
</table>
<!--[if (gte mso 9)|(IE)]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
<!-- COPY BLOCK -->
<tr>
<td bgcolor="#E6E4F4" 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 40px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" >
<p style="margin: 0;">
<%= gettext("Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected.", group: Mobilizon.Actors.Actor.display_name(@group), link_start: "<a href=\"#{Routes.page_url(Mobilizon.Web.Endpoint, :actor, Mobilizon.Actors.Actor.preferred_username_and_domain(@group))}\">", link_end: "</a>") |> raw %>
</p>
</td>
</tr>
</table>
<!--[if (gte mso 9)|(IE)]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>

View File

@ -0,0 +1,5 @@
<%= gettext "Sorry, not this time!" %>
==
<%= gettext "Your membership request for group %{group} has been rejected.", group: Mobilizon.Actors.Actor.display_name(@group) %>
<%= Routes.page_url(Mobilizon.Web.Endpoint, :actor, Mobilizon.Actors.Actor.preferred_username_and_domain(@group)) %>

View File

@ -89,7 +89,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "" msgstr ""
@ -107,7 +107,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "" msgstr ""
@ -143,7 +143,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "" msgstr ""
@ -315,3 +315,13 @@ msgstr ""
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "" msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -90,7 +90,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "" msgstr ""
@ -108,7 +108,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "" msgstr ""
@ -144,7 +144,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "" msgstr ""
@ -324,3 +324,13 @@ msgstr ""
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "" msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1061,7 +1061,7 @@ msgid "So long, and thanks for the fish!"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "" msgstr ""
@ -1646,7 +1646,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "" msgstr ""
@ -1655,3 +1655,50 @@ msgstr ""
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -547,7 +547,8 @@ msgid "You are not a member of this group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "" msgstr ""
@ -583,7 +584,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
@ -818,12 +819,12 @@ msgid "This invitation doesn't exist."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
@ -1033,3 +1034,18 @@ msgstr ""
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -90,7 +90,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "" msgstr ""
@ -108,7 +108,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "" msgstr ""
@ -144,7 +144,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "" msgstr ""
@ -318,3 +318,13 @@ msgstr ""
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "" msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1037,7 +1037,7 @@ msgid "So long, and thanks for the fish!"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "" msgstr ""
@ -1622,7 +1622,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "" msgstr ""
@ -1631,3 +1631,50 @@ msgstr ""
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -521,7 +521,8 @@ msgid "You are not a member of this group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "" msgstr ""
@ -557,7 +558,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
@ -792,12 +793,12 @@ msgid "This invitation doesn't exist."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
@ -1007,3 +1008,18 @@ msgstr ""
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -90,7 +90,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "" msgstr ""
@ -108,7 +108,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "" msgstr ""
@ -144,7 +144,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "" msgstr ""
@ -316,3 +316,13 @@ msgstr ""
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "" msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1235,7 +1235,7 @@ msgid "So long, and thanks for the fish!"
msgstr "Salut i canya al forçut!" msgstr "Salut i canya al forçut!"
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "T'han tret del grup %{group}" msgstr "T'han tret del grup %{group}"
@ -1878,7 +1878,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "Ubicació" msgstr "Ubicació"
@ -1887,3 +1887,50 @@ msgstr "Ubicació"
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr "T'han acceptat!"
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -522,7 +522,8 @@ msgid "You are not a member of this group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "" msgstr ""
@ -558,7 +559,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
@ -793,12 +794,12 @@ msgid "This invitation doesn't exist."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
@ -1008,3 +1009,18 @@ msgstr ""
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -90,7 +90,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "" msgstr ""
@ -108,7 +108,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "" msgstr ""
@ -144,7 +144,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "" msgstr ""
@ -318,3 +318,13 @@ msgstr ""
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "" msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1037,7 +1037,7 @@ msgid "So long, and thanks for the fish!"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "" msgstr ""
@ -1622,7 +1622,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "" msgstr ""
@ -1631,3 +1631,50 @@ msgstr ""
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -521,7 +521,8 @@ msgid "You are not a member of this group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "" msgstr ""
@ -557,7 +558,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
@ -792,12 +793,12 @@ msgid "This invitation doesn't exist."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
@ -1007,3 +1008,18 @@ msgstr ""
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -97,7 +97,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "%{profile} hat die Ressource %{resource} gelöscht." msgstr "%{profile} hat die Ressource %{resource} gelöscht."
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "%{profile} hat das Mitglied %{member} ausgeschlossen." msgstr "%{profile} hat das Mitglied %{member} ausgeschlossen."
@ -115,7 +115,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "%{profile} hat die Gruppe verlassen." msgstr "%{profile} hat die Gruppe verlassen."
@ -153,7 +153,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "%{profile} hat die Gruppe %{group} aktualisiert." msgstr "%{profile} hat die Gruppe %{group} aktualisiert."
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "%{profile} hat das Mitglied %{member} aktualisiert." msgstr "%{profile} hat das Mitglied %{member} aktualisiert."
@ -326,3 +326,13 @@ msgstr ""
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "" msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr "%{profile} hat das Mitglied %{member} aktualisiert."
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1277,7 +1277,7 @@ msgid "So long, and thanks for the fish!"
msgstr "Macht's gut und danke für den Fisch!" msgstr "Macht's gut und danke für den Fisch!"
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "Sie wurden aus der Gruppe %{group} entfernt" msgstr "Sie wurden aus der Gruppe %{group} entfernt"
@ -1990,7 +1990,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "Ort" msgstr "Ort"
@ -1999,3 +1999,50 @@ msgstr "Ort"
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr "Sie sind dabei!"
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -532,7 +532,8 @@ msgid "You are not a member of this group"
msgstr "Sie sind nicht Mitglied in dieser Gruppe" msgstr "Sie sind nicht Mitglied in dieser Gruppe"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "Sie sind kein Moderator oder Admin für diese Gruppe" msgstr "Sie sind kein Moderator oder Admin für diese Gruppe"
@ -571,7 +572,7 @@ msgstr ""
"Teilnehmer sind, der die Veranstaltung erstellt" "Teilnehmer sind, der die Veranstaltung erstellt"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
"Sie können sich nicht auf eine niedrigere Mitgliedsrolle für diese Gruppe " "Sie können sich nicht auf eine niedrigere Mitgliedsrolle für diese Gruppe "
@ -820,12 +821,12 @@ msgid "This invitation doesn't exist."
msgstr "Diese Einladung gibt es nicht." msgstr "Diese Einladung gibt es nicht."
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "Dieses Mitglied ist bereits abgelehnt worden." msgstr "Dieses Mitglied ist bereits abgelehnt worden."
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "Sie haben nicht das Recht, dieses Mitglied zu entfernen." msgstr "Sie haben nicht das Recht, dieses Mitglied zu entfernen."
@ -1037,3 +1038,18 @@ msgstr "Sie müssen eingeloggt sein, um einer Gruppe beizutreten"
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "Sie müssen eingeloggt sein, um eine Gruppe zu aktualisieren" msgstr "Sie müssen eingeloggt sein, um eine Gruppe zu aktualisieren"
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr "Sie haben nicht das Recht, dieses Mitglied zu entfernen."
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -1016,7 +1016,7 @@ msgid "So long, and thanks for the fish!"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "" msgstr ""
@ -1610,3 +1610,50 @@ msgstr ""
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -90,7 +90,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "" msgstr ""
@ -108,7 +108,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "" msgstr ""
@ -144,7 +144,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "" msgstr ""
@ -316,3 +316,13 @@ msgstr ""
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "" msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1069,7 +1069,7 @@ msgid "So long, and thanks for the fish!"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "" msgstr ""
@ -1654,7 +1654,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "" msgstr ""
@ -1663,3 +1663,50 @@ msgstr ""
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -525,7 +525,8 @@ msgid "You are not a member of this group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "" msgstr ""
@ -561,7 +562,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
@ -796,12 +797,12 @@ msgid "This invitation doesn't exist."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
@ -1011,3 +1012,18 @@ msgstr ""
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -522,7 +522,8 @@ msgid "You are not a member of this group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "" msgstr ""
@ -558,7 +559,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
@ -793,12 +794,12 @@ msgid "This invitation doesn't exist."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
@ -1008,3 +1009,18 @@ msgstr ""
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -97,7 +97,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "%{profile} eliminado el recurso %{resource}." msgstr "%{profile} eliminado el recurso %{resource}."
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "%{profile }miembro excluido %{member}." msgstr "%{profile }miembro excluido %{member}."
@ -115,7 +115,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "%{profile} movió el recurso %{resource}." msgstr "%{profile} movió el recurso %{resource}."
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "%{profile} abandona el grupo." msgstr "%{profile} abandona el grupo."
@ -153,7 +153,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "%{profile} actualizó el grupo %{group}." msgstr "%{profile} actualizó el grupo %{group}."
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "%{profile} actualizado el miembro %{member}." msgstr "%{profile} actualizado el miembro %{member}."
@ -329,3 +329,13 @@ msgstr "El post %{post} del grupo %{group} fue actualizado por %{profile}."
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "El post %{post} del grupo %{group} fue actualizado por %{profile}." msgstr "El post %{post} del grupo %{group} fue actualizado por %{profile}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr "%{profile} actualizado el miembro %{member}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1248,7 +1248,7 @@ msgid "So long, and thanks for the fish!"
msgstr "¡Hasta luego y gracias por el pescado!" msgstr "¡Hasta luego y gracias por el pescado!"
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "Ha sido eliminado del grupo %{group}" msgstr "Ha sido eliminado del grupo %{group}"
@ -1949,7 +1949,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "Ubicación" msgstr "Ubicación"
@ -1958,3 +1958,50 @@ msgstr "Ubicación"
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr "¡Vas!"
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -528,7 +528,8 @@ msgid "You are not a member of this group"
msgstr "no eres un miembro de este grupo" msgstr "no eres un miembro de este grupo"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "No eres moderador ni administrador de este grupo" msgstr "No eres moderador ni administrador de este grupo"
@ -566,7 +567,7 @@ msgstr ""
"evento" "evento"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
"No puede establecerse en un rol de miembro inferior para este grupo porque " "No puede establecerse en un rol de miembro inferior para este grupo porque "
@ -812,12 +813,12 @@ msgid "This invitation doesn't exist."
msgstr "Esta invitación no existe." msgstr "Esta invitación no existe."
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "Este miembro ya ha sido rechazado." msgstr "Este miembro ya ha sido rechazado."
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "No tiene derecho a eliminar este miembro." msgstr "No tiene derecho a eliminar este miembro."
@ -1035,3 +1036,18 @@ msgstr "Debes iniciar sesión para eliminar su cuenta"
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "Debes iniciar sesión para actualizar un grupo" msgstr "Debes iniciar sesión para actualizar un grupo"
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr "No tiene derecho a eliminar este miembro."
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -97,7 +97,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "%{profile} poisti resurssin %{resource}." msgstr "%{profile} poisti resurssin %{resource}."
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "%{profile} hylkäsi jäsenen %{member}." msgstr "%{profile} hylkäsi jäsenen %{member}."
@ -115,7 +115,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "%{profile} siirsi resurssin %{resource}." msgstr "%{profile} siirsi resurssin %{resource}."
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "%{profile} poistui ryhmästä." msgstr "%{profile} poistui ryhmästä."
@ -151,7 +151,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "%{profile} päivitti ryhmää %{group}." msgstr "%{profile} päivitti ryhmää %{group}."
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "%{profile} päivitti jäsentä %{member}." msgstr "%{profile} päivitti jäsentä %{member}."
@ -327,3 +327,13 @@ msgstr "Viestin %{post} ryhmästä %{group} julkaisi %{profile}."
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "Viestin %{post} ryhmästä %{group} päivitti %{profile}." msgstr "Viestin %{post} ryhmästä %{group} päivitti %{profile}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr "%{profile} päivitti jäsentä %{member}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1228,7 +1228,7 @@ msgid "So long, and thanks for the fish!"
msgstr "Näkemiin ja kiitos kaloista!" msgstr "Näkemiin ja kiitos kaloista!"
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "Sinut on poistettu ryhmästä %{group}" msgstr "Sinut on poistettu ryhmästä %{group}"
@ -1916,7 +1916,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "Paikka" msgstr "Paikka"
@ -1925,3 +1925,50 @@ msgstr "Paikka"
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr "Olet mukana!"
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -525,7 +525,8 @@ msgid "You are not a member of this group"
msgstr "Et ole ryhmän jäsen" msgstr "Et ole ryhmän jäsen"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "Et ole ryhmän moderaattori tai ylläpitäjä" msgstr "Et ole ryhmän moderaattori tai ylläpitäjä"
@ -562,7 +563,7 @@ msgstr ""
"Et voi poistua tapahtumasta, koska olet ainoa tapahtuman luonut osallistuja" "Et voi poistua tapahtumasta, koska olet ainoa tapahtuman luonut osallistuja"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
"Et voi vaihtaa jäsenrooliasi ryhmässä nykyistä alemmaksi, koska olet ainoa " "Et voi vaihtaa jäsenrooliasi ryhmässä nykyistä alemmaksi, koska olet ainoa "
@ -799,12 +800,12 @@ msgid "This invitation doesn't exist."
msgstr "Kutsua ei ole." msgstr "Kutsua ei ole."
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "Jäsen on jo hylätty." msgstr "Jäsen on jo hylätty."
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "Sinulla ei ole oikeutta poistaa jäsentä." msgstr "Sinulla ei ole oikeutta poistaa jäsentä."
@ -1014,3 +1015,18 @@ msgstr "Voit liittyä ryhmään vain sisäänkirjautuneena"
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "Voit päivittää ryhmää vain sisäänkirjautuneena" msgstr "Voit päivittää ryhmää vain sisäänkirjautuneena"
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr "Sinulla ei ole oikeutta poistaa jäsentä."
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

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

View File

@ -10,7 +10,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"POT-Creation-Date: \n" "POT-Creation-Date: \n"
"PO-Revision-Date: 2021-11-10 20:42+0100\n" "PO-Revision-Date: 2021-11-12 17:13+0100\n"
"Last-Translator: Thomas Citharel <thomas.citharel@framasoft.org>\n" "Last-Translator: Thomas Citharel <thomas.citharel@framasoft.org>\n"
"Language-Team: French <https://weblate.framasoft.org/projects/mobilizon/backend/fr/>\n" "Language-Team: French <https://weblate.framasoft.org/projects/mobilizon/backend/fr/>\n"
"Language: fr\n" "Language: fr\n"
@ -830,7 +830,7 @@ msgstr "Si vous pensez qu'il s'agit d'une erreur, vous pouvez contacter les admi
msgid "So long, and thanks for the fish!" msgid "So long, and thanks for the fish!"
msgstr "Salut, et encore merci pour le poisson !" msgstr "Salut, et encore merci pour le poisson !"
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "Vous avez été enlevé du groupe %{group}" msgstr "Vous avez été enlevé du groupe %{group}"
@ -1296,3 +1296,39 @@ msgstr "Nouvelle localisation :"
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "Nouvelle date de début :" msgstr "Nouvelle date de début :"
#: lib/web/templates/email/group_membership_rejection.html.heex:13 lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr "Désolé, pas cette fois !"
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr "Voir le groupe"
#: lib/web/templates/email/group_membership_approval.html.heex:13 lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr "Vous en êtes !"
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr "Votre demande d'adhésion pour le groupe %{group} a été acceptée"
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr "Votre demande d'adhésion pour le groupe %{group} a été rejetée"
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr "Votre demande d'adhésion pour le groupe %{group} a été rejetée."
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr "Votre demande d'adhésion pour le groupe %{link_start}<b>%{group}</b>%{link_end} a été rejetée."
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr "Votre demande d'adhésion pour le groupe %{group} a été approuvée."
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr "Votre demande d'adhésion pour le groupe %{link_start}<b>%{group}</b>%{link_end} a été approuvée."

View File

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

View File

@ -24,209 +24,209 @@ msgstr ""
## Run "mix gettext.extract" to bring this file up to ## Run "mix gettext.extract" to bring this file up to
## date. Leave "msgstr"s empty as changing them here as no ## date. Leave "msgstr"s empty as changing them here as no
## effect: edit them in PO (.po) files instead. ## effect: edit them in PO (.po) files instead.
#, elixir-format
#: lib/service/activity/renderer/member.ex:38 #: lib/service/activity/renderer/member.ex:38
#: lib/web/templates/email/activity/_member_activity_item.html.heex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 #: lib/web/templates/email/activity/_member_activity_item.html.heex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12
#, elixir-format
msgid "%{member} accepted the invitation to join the group." msgid "%{member} accepted the invitation to join the group."
msgstr "Ghabh %{member} ris a bhallrachd sa bhuidheann." msgstr "Ghabh %{member} ris a bhallrachd sa bhuidheann."
#, elixir-format
#: lib/service/activity/renderer/member.ex:42 #: lib/service/activity/renderer/member.ex:42
#: lib/web/templates/email/activity/_member_activity_item.html.heex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 #: lib/web/templates/email/activity/_member_activity_item.html.heex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17
#, elixir-format
msgid "%{member} rejected the invitation to join the group." msgid "%{member} rejected the invitation to join the group."
msgstr "Dhiùlt %{member} a bhallrachd sa bhuidheann." msgstr "Dhiùlt %{member} a bhallrachd sa bhuidheann."
#, elixir-format
#: lib/service/activity/renderer/member.ex:30 #: lib/service/activity/renderer/member.ex:30
#: lib/web/templates/email/activity/_member_activity_item.html.heex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 #: lib/web/templates/email/activity/_member_activity_item.html.heex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1
#, elixir-format
msgid "%{member} requested to join the group." msgid "%{member} requested to join the group."
msgstr "Dhiarr %{member} ballrachd sa bhuidheann." msgstr "Dhiarr %{member} ballrachd sa bhuidheann."
#, elixir-format
#: lib/service/activity/renderer/member.ex:34 #: lib/service/activity/renderer/member.ex:34
#: lib/web/templates/email/activity/_member_activity_item.html.heex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 #: lib/web/templates/email/activity/_member_activity_item.html.heex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6
#, elixir-format
msgid "%{member} was invited by %{profile}." msgid "%{member} was invited by %{profile}."
msgstr "Fhuair %{member} cuireadh o %{profile}." msgstr "Fhuair %{member} cuireadh o %{profile}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:50 #: lib/service/activity/renderer/member.ex:50
#: lib/web/templates/email/activity/_member_activity_item.html.heex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 #: lib/web/templates/email/activity/_member_activity_item.html.heex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27
#, elixir-format
msgid "%{profile} added the member %{member}." msgid "%{profile} added the member %{member}."
msgstr "Chuir %{profile} am ball %{member} ris." msgstr "Chuir %{profile} am ball %{member} ris."
#, elixir-format
#: lib/service/activity/renderer/discussion.ex:65 #: lib/service/activity/renderer/discussion.ex:65
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19
#, elixir-format
msgid "%{profile} archived the discussion %{discussion}." msgid "%{profile} archived the discussion %{discussion}."
msgstr "Chuir %{profile} an deasbad %{discussion} san tasg-lann." msgstr "Chuir %{profile} an deasbad %{discussion} san tasg-lann."
#, elixir-format
#: lib/service/activity/renderer/discussion.ex:25 #: lib/service/activity/renderer/discussion.ex:25
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:4 lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:4 lib/web/templates/email/activity/_discussion_activity_item.text.eex:1
#, elixir-format
msgid "%{profile} created the discussion %{discussion}." msgid "%{profile} created the discussion %{discussion}."
msgstr "Chruthaich %{profile} an deasbad %{discussion}." msgstr "Chruthaich %{profile} an deasbad %{discussion}."
#, elixir-format
#: lib/service/activity/renderer/resource.ex:24 #: lib/service/activity/renderer/resource.ex:24
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2
#, elixir-format
msgid "%{profile} created the folder %{resource}." msgid "%{profile} created the folder %{resource}."
msgstr "Chruthaich %{profile} am pasgan %{resource}." msgstr "Chruthaich %{profile} am pasgan %{resource}."
#, elixir-format
#: lib/web/templates/email/activity/_group_activity_item.html.heex:4 #: lib/web/templates/email/activity/_group_activity_item.html.heex:4
#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 #: lib/web/templates/email/activity/_group_activity_item.text.eex:1
#, elixir-format
msgid "%{profile} created the group %{group}." msgid "%{profile} created the group %{group}."
msgstr "Chruthaich %{profile} am buidheann %{group}." msgstr "Chruthaich %{profile} am buidheann %{group}."
#, elixir-format
#: lib/service/activity/renderer/resource.ex:33 #: lib/service/activity/renderer/resource.ex:33
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8
#, elixir-format
msgid "%{profile} created the resource %{resource}." msgid "%{profile} created the resource %{resource}."
msgstr "Chruthaich %{profile} an goireas %{resource}." msgstr "Chruthaich %{profile} an goireas %{resource}."
#, elixir-format
#: lib/service/activity/renderer/discussion.ex:75 #: lib/service/activity/renderer/discussion.ex:75
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25
#, elixir-format
msgid "%{profile} deleted the discussion %{discussion}." msgid "%{profile} deleted the discussion %{discussion}."
msgstr "Sguab %{profile} às an deasbad %{discussion}." msgstr "Sguab %{profile} às an deasbad %{discussion}."
#, elixir-format
#: lib/service/activity/renderer/resource.ex:97 #: lib/service/activity/renderer/resource.ex:97
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40
#, elixir-format
msgid "%{profile} deleted the folder %{resource}." msgid "%{profile} deleted the folder %{resource}."
msgstr "Sguab %{profile} às am pasgan %{resource}." msgstr "Sguab %{profile} às am pasgan %{resource}."
#, elixir-format
#: lib/service/activity/renderer/resource.ex:106 #: lib/service/activity/renderer/resource.ex:106
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45
#, elixir-format
msgid "%{profile} deleted the resource %{resource}." msgid "%{profile} deleted the resource %{resource}."
msgstr "Sguab %{profile} às an goireas %{resource}." msgstr "Sguab %{profile} às an goireas %{resource}."
#: lib/service/activity/renderer/member.ex:58
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "Dhùin %{profile} am ball %{member} a-mach." msgstr "Dhùin %{profile} am ball %{member} a-mach."
#, elixir-format
#: lib/service/activity/renderer/resource.ex:76 #: lib/service/activity/renderer/resource.ex:76
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28
#, elixir-format
msgid "%{profile} moved the folder %{resource}." msgid "%{profile} moved the folder %{resource}."
msgstr "Ghluais %{profile} am pasgan %{resource}." msgstr "Ghluais %{profile} am pasgan %{resource}."
#, elixir-format
#: lib/service/activity/renderer/resource.ex:85 #: lib/service/activity/renderer/resource.ex:85
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34
#, elixir-format
msgid "%{profile} moved the resource %{resource}." msgid "%{profile} moved the resource %{resource}."
msgstr "Ghluais %{profile} an goireas %{resource}." msgstr "Ghluais %{profile} an goireas %{resource}."
#: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "Dhfhàg %{profile} am buidheann." msgstr "Dhfhàg %{profile} am buidheann."
#, elixir-format
#: lib/service/activity/renderer/discussion.ex:55 #: lib/service/activity/renderer/discussion.ex:55
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13
#, elixir-format
msgid "%{profile} renamed the discussion %{discussion}." msgid "%{profile} renamed the discussion %{discussion}."
msgstr "Thug %{profile} ainm ùr air %{discussion}." msgstr "Thug %{profile} ainm ùr air %{discussion}."
#, elixir-format
#: lib/service/activity/renderer/resource.ex:45 #: lib/service/activity/renderer/resource.ex:45
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14
#, elixir-format
msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}."
msgstr "Thug %{profile} %{resource} air a phasgan %{old_resource_title}." msgstr "Thug %{profile} %{resource} air a phasgan %{old_resource_title}."
#, elixir-format
#: lib/service/activity/renderer/resource.ex:59 #: lib/service/activity/renderer/resource.ex:59
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 #: lib/web/templates/email/activity/_resource_activity_item.html.heex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21
#, elixir-format
msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}."
msgstr "Thug %{profile} %{resource} air a ghoireas %{old_resource_title}." msgstr "Thug %{profile} %{resource} air a ghoireas %{old_resource_title}."
#, elixir-format
#: lib/service/activity/renderer/discussion.ex:35 #: lib/service/activity/renderer/discussion.ex:35
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:18 lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:18 lib/web/templates/email/activity/_discussion_activity_item.text.eex:7
#, elixir-format
msgid "%{profile} replied to the discussion %{discussion}." msgid "%{profile} replied to the discussion %{discussion}."
msgstr "Fhreagair %{profile} san deasbad %{discussion}." msgstr "Fhreagair %{profile} san deasbad %{discussion}."
#, elixir-format
#: lib/web/templates/email/activity/_group_activity_item.html.heex:19 #: lib/web/templates/email/activity/_group_activity_item.html.heex:19
#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 #: lib/web/templates/email/activity/_group_activity_item.text.eex:7
#, elixir-format
msgid "%{profile} updated the group %{group}." msgid "%{profile} updated the group %{group}."
msgstr "Dhùraich %{profile} am buidheann %{group}." msgstr "Dhùraich %{profile} am buidheann %{group}."
#: lib/service/activity/renderer/member.ex:54
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "Dhùraich %{profile} am ball %{member}." msgstr "Dhùraich %{profile} am ball %{member}."
#, elixir-format
#: lib/service/activity/renderer/event.ex:23 #: lib/service/activity/renderer/event.ex:23
#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 #: lib/web/templates/email/activity/_event_activity_item.html.heex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1
#, elixir-format
msgid "The event %{event} was created by %{profile}." msgid "The event %{event} was created by %{profile}."
msgstr "Chaidh an tachartas %{event} a chruthachadh le %{profile}." msgstr "Chaidh an tachartas %{event} a chruthachadh le %{profile}."
#, elixir-format
#: lib/service/activity/renderer/event.ex:43 #: lib/service/activity/renderer/event.ex:43
#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 #: lib/web/templates/email/activity/_event_activity_item.html.heex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13
#, elixir-format
msgid "The event %{event} was deleted by %{profile}." msgid "The event %{event} was deleted by %{profile}."
msgstr "Chaidh an tachartas %{event} a sguabadh às le %{profile}." msgstr "Chaidh an tachartas %{event} a sguabadh às le %{profile}."
#, elixir-format
#: lib/service/activity/renderer/event.ex:33 #: lib/service/activity/renderer/event.ex:33
#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 #: lib/web/templates/email/activity/_event_activity_item.html.heex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7
#, elixir-format
msgid "The event %{event} was updated by %{profile}." msgid "The event %{event} was updated by %{profile}."
msgstr "Chaidh an tachartas %{event} ùrachadh le %{profile}." msgstr "Chaidh an tachartas %{event} ùrachadh le %{profile}."
#, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:4 #: lib/web/templates/email/activity/_post_activity_item.html.heex:4
#: lib/web/templates/email/activity/_post_activity_item.text.eex:1 #: lib/web/templates/email/activity/_post_activity_item.text.eex:1
#, elixir-format
msgid "The post %{post} was created by %{profile}." msgid "The post %{post} was created by %{profile}."
msgstr "Chaidh am post %{post} a chruthachadh le %{profile}." msgstr "Chaidh am post %{post} a chruthachadh le %{profile}."
#, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:34 #: lib/web/templates/email/activity/_post_activity_item.html.heex:34
#: lib/web/templates/email/activity/_post_activity_item.text.eex:13 #: lib/web/templates/email/activity/_post_activity_item.text.eex:13
#, elixir-format
msgid "The post %{post} was deleted by %{profile}." msgid "The post %{post} was deleted by %{profile}."
msgstr "Chaidh am post %{post} a sguabadh às le %{profile}." msgstr "Chaidh am post %{post} a sguabadh às le %{profile}."
#, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:19 #: lib/web/templates/email/activity/_post_activity_item.html.heex:19
#: lib/web/templates/email/activity/_post_activity_item.text.eex:7 #: lib/web/templates/email/activity/_post_activity_item.text.eex:7
#, elixir-format
msgid "The post %{post} was updated by %{profile}." msgid "The post %{post} was updated by %{profile}."
msgstr "Chaidh am post %{post} ùrachadh le %{profile}." msgstr "Chaidh am post %{post} ùrachadh le %{profile}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:46 #: lib/service/activity/renderer/member.ex:46
#: lib/web/templates/email/activity/_member_activity_item.html.heex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 #: lib/web/templates/email/activity/_member_activity_item.html.heex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22
#, elixir-format
msgid "%{member} joined the group." msgid "%{member} joined the group."
msgstr "Fhuair %{member} ballrachd sa bhuidheann." msgstr "Fhuair %{member} ballrachd sa bhuidheann."
#, elixir-format
#: lib/service/activity/renderer/event.ex:63 #: lib/service/activity/renderer/event.ex:63
#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 #: lib/web/templates/email/activity/_event_activity_item.html.heex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25
#, elixir-format
msgid "%{profile} posted a comment on the event %{event}." msgid "%{profile} posted a comment on the event %{event}."
msgstr "Thug %{profile} beachd air an tachartas %{event}." msgstr "Thug %{profile} beachd air an tachartas %{event}."
#, elixir-format
#: lib/service/activity/renderer/event.ex:54 #: lib/service/activity/renderer/event.ex:54
#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 #: lib/web/templates/email/activity/_event_activity_item.html.heex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19
#, elixir-format
msgid "%{profile} replied to a comment on the event %{event}." msgid "%{profile} replied to a comment on the event %{event}."
msgstr "Fhreagair %{profile} do bheachd air an tachartas %{event}." msgstr "Fhreagair %{profile} do bheachd air an tachartas %{event}."
#: lib/web/templates/email/email_direct_activity.text.eex:27
#, elixir-format #, elixir-format
#: lib/web/templates/email/email_direct_activity.text.eex:27
msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings."
msgstr "" msgstr ""
"A bheil thu airson brathan fhaighinn mu ghnìomhachd? S urrainn dhut " "A bheil thu airson brathan fhaighinn mu ghnìomhachd? S urrainn dhut "
"atharrachadh dè cho tric s a gheibh thu iad no an cur à comas sna " "atharrachadh dè cho tric s a gheibh thu iad no an cur à comas sna "
"roghainnean agad." "roghainnean agad."
#, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:135 #: lib/web/templates/email/email_direct_activity.html.heex:135
#: lib/web/templates/email/email_direct_activity.text.eex:23 #: lib/web/templates/email/email_direct_activity.text.eex:23
#, elixir-format
msgid "View one more activity" msgid "View one more activity"
msgid_plural "View %{count} more activities" msgid_plural "View %{count} more activities"
msgstr[0] "Seall %{count} ghnìomhachd a bharrachd" msgstr[0] "Seall %{count} ghnìomhachd a bharrachd"
@ -234,10 +234,10 @@ msgstr[1] "Seall %{count} ghnìomhachd a bharrachd"
msgstr[2] "Seall %{count} gnìomhachdan a bharrachd" msgstr[2] "Seall %{count} gnìomhachdan a bharrachd"
msgstr[3] "Seall %{count} gnìomhachd a bharrachd" msgstr[3] "Seall %{count} gnìomhachd a bharrachd"
#, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:44 #: lib/web/templates/email/email_direct_activity.html.heex:44
#: lib/web/templates/email/email_direct_activity.html.heex:46 lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.html.heex:46 lib/web/templates/email/email_direct_activity.text.eex:6
#: lib/web/templates/email/email_direct_activity.text.eex:7 #: lib/web/templates/email/email_direct_activity.text.eex:7
#, elixir-format
msgid "There has been an activity!" msgid "There has been an activity!"
msgid_plural "There has been some activity!" msgid_plural "There has been some activity!"
msgstr[0] "Bha gnìomhachd ann!" msgstr[0] "Bha gnìomhachd ann!"
@ -245,99 +245,109 @@ msgstr[1] "Bha gnìomhachdan ann!"
msgstr[2] "Bha gnìomhachdan ann!" msgstr[2] "Bha gnìomhachdan ann!"
msgstr[3] "Bha gnìomhachdan ann!" msgstr[3] "Bha gnìomhachdan ann!"
#: lib/service/activity/renderer/renderer.ex:46
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/renderer.ex:46
msgid "Activity on %{instance}" msgid "Activity on %{instance}"
msgstr "Gnìomhachd air %{instance}" msgstr "Gnìomhachd air %{instance}"
#, elixir-format
#: lib/service/activity/renderer/comment.ex:38 #: lib/service/activity/renderer/comment.ex:38
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 lib/web/templates/email/activity/_comment_activity_item.text.eex:7 #: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 lib/web/templates/email/activity/_comment_activity_item.text.eex:7
#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 #: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5
#, elixir-format
msgid "%{profile} has posted an announcement under event %{event}." msgid "%{profile} has posted an announcement under event %{event}."
msgstr "Chuir %{profile} brath-fios ris an tachartas %{event}." msgstr "Chuir %{profile} brath-fios ris an tachartas %{event}."
#, elixir-format
#: lib/service/activity/renderer/comment.ex:24 #: lib/service/activity/renderer/comment.ex:24
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 lib/web/templates/email/activity/_comment_activity_item.text.eex:1 #: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 lib/web/templates/email/activity/_comment_activity_item.text.eex:1
#, elixir-format
msgid "%{profile} mentionned you in a comment under event %{event}." msgid "%{profile} mentionned you in a comment under event %{event}."
msgstr "Thug %{profile} iomradh ort ann am beachd san tachartas %{event}." msgstr "Thug %{profile} iomradh ort ann am beachd san tachartas %{event}."
#: lib/service/activity/renderer/discussion.ex:45
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/discussion.ex:45
msgid "%{profile} mentionned you in the discussion %{discussion}." msgid "%{profile} mentionned you in the discussion %{discussion}."
msgstr "Thug %{profile} iomradh ort san deasbad %{discussion}." msgstr "Thug %{profile} iomradh ort san deasbad %{discussion}."
#: lib/web/templates/email/email_direct_activity.html.heex:155
#, elixir-format #, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:155
msgid "Don't want to receive activity notifications? You may change frequency or disable them in %{tag_start}your settings%{tag_end}." msgid "Don't want to receive activity notifications? You may change frequency or disable them in %{tag_start}your settings%{tag_end}."
msgstr "" msgstr ""
"A bheil thu airson brathan fhaighinn mu ghnìomhachd? S urrainn dhut " "A bheil thu airson brathan fhaighinn mu ghnìomhachd? S urrainn dhut "
"atharrachadh dè cho tric s a gheibh thu iad no an cur à comas sna " "atharrachadh dè cho tric s a gheibh thu iad no an cur à comas sna "
"%{tag_start}roghainnean%{tag_end} agad." "%{tag_start}roghainnean%{tag_end} agad."
#, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:42 #: lib/web/templates/email/email_direct_activity.html.heex:42
#: lib/web/templates/email/email_direct_activity.text.eex:5 #: lib/web/templates/email/email_direct_activity.text.eex:5
#, elixir-format
msgid "Here's your weekly activity recap" msgid "Here's your weekly activity recap"
msgstr "Seo dhut ath-shùil air gnìomhachd na seachdaine" msgstr "Seo dhut ath-shùil air gnìomhachd na seachdaine"
#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140
#, elixir-format #, elixir-format
#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140
msgid "Activity notification for %{instance}" msgid "Activity notification for %{instance}"
msgstr "Brath gnìomhachd airson %{instance}" msgstr "Brath gnìomhachd airson %{instance}"
#: lib/web/email/activity.ex:126
#, elixir-format #, elixir-format
#: lib/web/email/activity.ex:126
msgid "Daily activity recap for %{instance}" msgid "Daily activity recap for %{instance}"
msgstr "Ath-shùil air gnìomhachd %{instance} làitheil" msgstr "Ath-shùil air gnìomhachd %{instance} làitheil"
#, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:40 #: lib/web/templates/email/email_direct_activity.html.heex:40
#: lib/web/templates/email/email_direct_activity.text.eex:4 #: lib/web/templates/email/email_direct_activity.text.eex:4
#, elixir-format
msgid "Here's your daily activity recap" msgid "Here's your daily activity recap"
msgstr "Seo dhut ath-shùil air gnìomhachd an latha" msgstr "Seo dhut ath-shùil air gnìomhachd an latha"
#: lib/web/email/activity.ex:133
#, elixir-format #, elixir-format
#: lib/web/email/activity.ex:133
msgid "Weekly activity recap for %{instance}" msgid "Weekly activity recap for %{instance}"
msgstr "Ath-shùil air gnìomhachd %{instance} sheachdaineil" msgstr "Ath-shùil air gnìomhachd %{instance} sheachdaineil"
#, elixir-format
#: lib/service/activity/renderer/comment.ex:66 #: lib/service/activity/renderer/comment.ex:66
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 #: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 lib/web/templates/email/activity/_comment_activity_item.text.eex:19
#, elixir-format
msgid "%{profile} has posted a new comment under your event %{event}." msgid "%{profile} has posted a new comment under your event %{event}."
msgstr "Thug %{profile} beachd ùr fon tachartas %{event} agad." msgstr "Thug %{profile} beachd ùr fon tachartas %{event} agad."
#, elixir-format
#: lib/service/activity/renderer/comment.ex:53 #: lib/service/activity/renderer/comment.ex:53
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 #: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 lib/web/templates/email/activity/_comment_activity_item.text.eex:13
#, elixir-format
msgid "%{profile} has posted a new reply under your event %{event}." msgid "%{profile} has posted a new reply under your event %{event}."
msgstr "Chuir %{profile} freagairt ùr ris fon tachartas %{event} agad." msgstr "Chuir %{profile} freagairt ùr ris fon tachartas %{event} agad."
#: lib/web/email/activity.ex:46
#, elixir-format #, elixir-format
#: lib/web/email/activity.ex:46
msgid "Announcement for your event %{event}" msgid "Announcement for your event %{event}"
msgstr "Brath-fios dhan tachartas %{event} agad" msgstr "Brath-fios dhan tachartas %{event} agad"
#: lib/service/activity/renderer/group.ex:23
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/group.ex:23
msgid "The group %{group} was updated by %{profile}." msgid "The group %{group} was updated by %{profile}."
msgstr "Chaidh am buidheann %{group} ùrachadh le %{profile}." msgstr "Chaidh am buidheann %{group} ùrachadh le %{profile}."
#: lib/service/activity/renderer/post.ex:47
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/post.ex:47
msgid "The post %{post} from group %{group} was deleted by %{profile}." msgid "The post %{post} from group %{group} was deleted by %{profile}."
msgstr "" msgstr ""
"Chaidh am post %{post} on bhuidheann %{group} a sguabadh às le %{profile}." "Chaidh am post %{post} on bhuidheann %{group} a sguabadh às le %{profile}."
#: lib/service/activity/renderer/post.ex:31
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/post.ex:31
msgid "The post %{post} from group %{group} was published by %{profile}." msgid "The post %{post} from group %{group} was published by %{profile}."
msgstr "" msgstr ""
"Chaidh am post %{post} on bhuidheann %{group} fhoillseachadh le %{profile}." "Chaidh am post %{post} on bhuidheann %{group} fhoillseachadh le %{profile}."
#: lib/service/activity/renderer/post.ex:39
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "Chaidh am post %{post} on bhuidheann %{group} ùrachadh le %{profile}." msgstr "Chaidh am post %{post} on bhuidheann %{group} ùrachadh le %{profile}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr "Dhùraich %{profile} am ball %{member}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -90,7 +90,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "" msgstr ""
@ -108,7 +108,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "" msgstr ""
@ -144,7 +144,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "" msgstr ""
@ -316,3 +316,13 @@ msgstr ""
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "" msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1226,7 +1226,7 @@ msgid "So long, and thanks for the fish!"
msgstr "Ata aquí, e grazas pola atención!" msgstr "Ata aquí, e grazas pola atención!"
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "Foches eliminada do grupo %{group}" msgstr "Foches eliminada do grupo %{group}"
@ -1916,7 +1916,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "Localización" msgstr "Localización"
@ -1925,3 +1925,50 @@ msgstr "Localización"
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr "Vas ir!"
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -525,7 +525,8 @@ msgid "You are not a member of this group"
msgstr "Non es membro deste grupo" msgstr "Non es membro deste grupo"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "Non es moderadora ou administradora deste grupo" msgstr "Non es moderadora ou administradora deste grupo"
@ -562,7 +563,7 @@ msgstr ""
"Non podes saír do evento porque es a única creadora do evento que participa" "Non podes saír do evento porque es a única creadora do evento que participa"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
"Non podes adxudicarte un rol menor neste grupo porque es a única " "Non podes adxudicarte un rol menor neste grupo porque es a única "
@ -808,12 +809,12 @@ msgid "This invitation doesn't exist."
msgstr "O convite non existe." msgstr "O convite non existe."
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "Este membro xa foi rexeitado." msgstr "Este membro xa foi rexeitado."
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "Non tes permiso para eliminar este membro." msgstr "Non tes permiso para eliminar este membro."
@ -1028,3 +1029,18 @@ msgstr "Tes que estar conectada para poder unirte a un grupo"
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "Tes que estar conectada para poder actualizar un grupo" msgstr "Tes que estar conectada para poder actualizar un grupo"
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr "Non tes permiso para eliminar este membro."
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -90,7 +90,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "" msgstr ""
@ -108,7 +108,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "" msgstr ""
@ -144,7 +144,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "" msgstr ""
@ -316,3 +316,13 @@ msgstr ""
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "" msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1082,7 +1082,7 @@ msgid "So long, and thanks for the fish!"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "" msgstr ""
@ -1667,7 +1667,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "Hely" msgstr "Hely"
@ -1676,3 +1676,50 @@ msgstr "Hely"
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -542,7 +542,8 @@ msgid "You are not a member of this group"
msgstr "Nem tagja ennek a csoportnak" msgstr "Nem tagja ennek a csoportnak"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "Nem moderátor vagy adminisztrátor ennél a csoportnál" msgstr "Nem moderátor vagy adminisztrátor ennél a csoportnál"
@ -579,7 +580,7 @@ msgstr ""
"Nem hagyhatja el az eseményt, mert Ön az egyedüli eseménylétrehozó résztvevő" "Nem hagyhatja el az eseményt, mert Ön az egyedüli eseménylétrehozó résztvevő"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
"Nem állíthatja magát alacsonyabb tagszerepre ennél a csoportnál, mert Ön az " "Nem állíthatja magát alacsonyabb tagszerepre ennél a csoportnál, mert Ön az "
@ -831,12 +832,12 @@ msgid "This invitation doesn't exist."
msgstr "Ez a meghívás nem létezik." msgstr "Ez a meghívás nem létezik."
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "Ez a tag már vissza lett utasítva." msgstr "Ez a tag már vissza lett utasítva."
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "Nincs meg a jogosultsága a tag eltávolításához." msgstr "Nincs meg a jogosultsága a tag eltávolításához."
@ -1048,3 +1049,18 @@ msgstr "Bejelentkezve kell lennie egy csoporthoz való csatlakozáshoz"
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "Bejelentkezve kell lennie egy csoport frissítéséhez" msgstr "Bejelentkezve kell lennie egy csoport frissítéséhez"
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr "Nincs meg a jogosultsága a tag eltávolításához."
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -102,7 +102,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "" msgstr ""
@ -120,7 +120,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "%{profile} keluar dari kelompok." msgstr "%{profile} keluar dari kelompok."
@ -156,7 +156,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "%{profile} memperbarui kelompok %{group}." msgstr "%{profile} memperbarui kelompok %{group}."
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "" msgstr ""
@ -326,3 +326,13 @@ msgstr ""
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "Postingan %{post} dari kelompok %{group} diperbarui oleh %{profile}." msgstr "Postingan %{post} dari kelompok %{group} diperbarui oleh %{profile}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1065,7 +1065,7 @@ msgid "So long, and thanks for the fish!"
msgstr "Sampai jumpa, dan terima kasih atas ikannya!" msgstr "Sampai jumpa, dan terima kasih atas ikannya!"
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "Anda telah dikeluarkan dari kelompok %{group}" msgstr "Anda telah dikeluarkan dari kelompok %{group}"
@ -1650,7 +1650,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "Lokasi" msgstr "Lokasi"
@ -1659,3 +1659,50 @@ msgstr "Lokasi"
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr "Anda ikut!"
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -516,7 +516,8 @@ msgid "You are not a member of this group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "" msgstr ""
@ -552,7 +553,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
@ -787,12 +788,12 @@ msgid "This invitation doesn't exist."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
@ -1002,3 +1003,18 @@ msgstr ""
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -90,7 +90,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "" msgstr ""
@ -108,7 +108,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "" msgstr ""
@ -144,7 +144,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "" msgstr ""
@ -316,3 +316,13 @@ msgstr ""
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "" msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1257,7 +1257,7 @@ msgid "So long, and thanks for the fish!"
msgstr "Addio, e grazie per il pesce!" msgstr "Addio, e grazie per il pesce!"
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "Sei stato rimosso dal gruppo %{group}" msgstr "Sei stato rimosso dal gruppo %{group}"
@ -1957,7 +1957,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "Posizione" msgstr "Posizione"
@ -1966,3 +1966,50 @@ msgstr "Posizione"
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr "Ce l'hai fatta!"
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -524,7 +524,8 @@ msgid "You are not a member of this group"
msgstr "Non sei un membro di questo gruppo" msgstr "Non sei un membro di questo gruppo"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "Non sei un moderatore o amministratore di questo gruppo" msgstr "Non sei un moderatore o amministratore di questo gruppo"
@ -561,7 +562,7 @@ msgstr ""
"Non puoi lasciare l'evento perchè sei l'unico partecipante creatore di eventi" "Non puoi lasciare l'evento perchè sei l'unico partecipante creatore di eventi"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
"Non puoi impostare te stesso per un ruolo di membro inferiore per questo " "Non puoi impostare te stesso per un ruolo di membro inferiore per questo "
@ -806,12 +807,12 @@ msgid "This invitation doesn't exist."
msgstr "Questo invito non esiste." msgstr "Questo invito non esiste."
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "Questo memebro è già stato rifiutato." msgstr "Questo memebro è già stato rifiutato."
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "Non hai il diritto di rimuovere questo membro." msgstr "Non hai il diritto di rimuovere questo membro."
@ -1025,3 +1026,18 @@ msgstr "È necessario effettuare il login per entrare a far parte di un gruppo"
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "È necessario effettuare il login per aggiornare un gruppo" msgstr "È necessario effettuare il login per aggiornare un gruppo"
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr "Non hai il diritto di rimuovere questo membro."
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -90,7 +90,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "" msgstr ""
@ -108,7 +108,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "" msgstr ""
@ -144,7 +144,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "" msgstr ""
@ -314,3 +314,13 @@ msgstr ""
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "" msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1025,7 +1025,7 @@ msgid "So long, and thanks for the fish!"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "" msgstr ""
@ -1610,7 +1610,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "" msgstr ""
@ -1619,3 +1619,50 @@ msgstr ""
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -509,7 +509,8 @@ msgid "You are not a member of this group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "" msgstr ""
@ -545,7 +546,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
@ -780,12 +781,12 @@ msgid "This invitation doesn't exist."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
@ -995,3 +996,18 @@ msgstr ""
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -90,7 +90,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "" msgstr ""
@ -108,7 +108,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "" msgstr ""
@ -144,7 +144,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "" msgstr ""
@ -316,3 +316,13 @@ msgstr ""
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "" msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1049,7 +1049,7 @@ msgid "So long, and thanks for the fish!"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "" msgstr ""
@ -1635,7 +1635,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "" msgstr ""
@ -1644,3 +1644,50 @@ msgstr ""
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -515,7 +515,8 @@ msgid "You are not a member of this group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "" msgstr ""
@ -551,7 +552,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
@ -786,12 +787,12 @@ msgid "This invitation doesn't exist."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
@ -1001,3 +1002,18 @@ msgstr ""
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -97,7 +97,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "%{profile} sletta ressursen %{resource}." msgstr "%{profile} sletta ressursen %{resource}."
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "%{profile} kasta ut medlemen %{member}." msgstr "%{profile} kasta ut medlemen %{member}."
@ -115,7 +115,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "%{profile} flytta ressursen %{resource}." msgstr "%{profile} flytta ressursen %{resource}."
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "%{profile} forlét gruppa." msgstr "%{profile} forlét gruppa."
@ -152,7 +152,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "%{profile} oppdaterte gruppa %{group}." msgstr "%{profile} oppdaterte gruppa %{group}."
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "%{profile} oppdaterte medlemen %{member}." msgstr "%{profile} oppdaterte medlemen %{member}."
@ -328,3 +328,13 @@ msgstr "%{profile} la ut innlegget %{post} i gruppa %{group}."
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "%{profile} oppdaterte innlegget %{post} i gruppa %{group}." msgstr "%{profile} oppdaterte innlegget %{post} i gruppa %{group}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr "%{profile} oppdaterte medlemen %{member}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1221,7 +1221,7 @@ msgid "So long, and thanks for the fish!"
msgstr "Ha det så lenge, og takk for all fisken!" msgstr "Ha det så lenge, og takk for all fisken!"
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "Du er fjerna frå gruppa %{group}" msgstr "Du er fjerna frå gruppa %{group}"
@ -1915,7 +1915,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "Stad" msgstr "Stad"
@ -1924,3 +1924,50 @@ msgstr "Stad"
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr "Du skal dit!"
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -538,7 +538,8 @@ msgid "You are not a member of this group"
msgstr "Du er ikkje medlem i denne gruppa" msgstr "Du er ikkje medlem i denne gruppa"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "Du er ikkje styrar eller administrator for denne gruppa" msgstr "Du er ikkje styrar eller administrator for denne gruppa"
@ -577,7 +578,7 @@ msgstr ""
"oppretta hendinga" "oppretta hendinga"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
"Du kan ikkje gje deg sjølv ei deltakarrolle i denne gruppa, fordi du er den " "Du kan ikkje gje deg sjølv ei deltakarrolle i denne gruppa, fordi du er den "
@ -823,12 +824,12 @@ msgid "This invitation doesn't exist."
msgstr "Invitasjonen finst ikkje." msgstr "Invitasjonen finst ikkje."
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "Denne medlemen har allereie fått avslag." msgstr "Denne medlemen har allereie fått avslag."
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "Du har ikkje løyve til å fjerna denne medlemen." msgstr "Du har ikkje løyve til å fjerna denne medlemen."
@ -1045,3 +1046,18 @@ msgstr "Du må vera innlogga for å bli med i ei gruppe"
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "Du må vera innlogga for å oppdatera ei gruppe" msgstr "Du må vera innlogga for å oppdatera ei gruppe"
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr "Du har ikkje løyve til å fjerna denne medlemen."
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -90,7 +90,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "" msgstr ""
@ -108,7 +108,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "" msgstr ""
@ -144,7 +144,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "" msgstr ""
@ -316,3 +316,13 @@ msgstr ""
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "" msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1126,7 +1126,7 @@ msgid "So long, and thanks for the fish!"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "Vos an tirat del grop %{group}" msgstr "Vos an tirat del grop %{group}"
@ -1720,7 +1720,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "Localizacion" msgstr "Localizacion"
@ -1729,3 +1729,50 @@ msgstr "Localizacion"
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr "I anatz!"
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -527,7 +527,8 @@ msgid "You are not a member of this group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "" msgstr ""
@ -563,7 +564,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
@ -798,12 +799,12 @@ msgid "This invitation doesn't exist."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
@ -1013,3 +1014,18 @@ msgstr "Devetz d'esser conectat per rejónher un grop"
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "Devetz d'esser conectat per metre à jorn un grop" msgstr "Devetz d'esser conectat per metre à jorn un grop"
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -90,7 +90,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "" msgstr ""
@ -108,7 +108,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "" msgstr ""
@ -144,7 +144,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "" msgstr ""
@ -318,3 +318,13 @@ msgstr ""
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "" msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1135,7 +1135,7 @@ msgid "So long, and thanks for the fish!"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "Zostałeś(-aś) usunięty(-a) z grupy %{group}" msgstr "Zostałeś(-aś) usunięty(-a) z grupy %{group}"
@ -1734,7 +1734,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "Miejsce" msgstr "Miejsce"
@ -1743,3 +1743,50 @@ msgstr "Miejsce"
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr "Weźmiesz udział!"
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -534,7 +534,8 @@ msgid "You are not a member of this group"
msgstr "Nie jesteś członkiem tej grupy" msgstr "Nie jesteś członkiem tej grupy"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "Nie jesteś moderatorem ani administratorem tej grupy" msgstr "Nie jesteś moderatorem ani administratorem tej grupy"
@ -570,7 +571,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
"Nie możesz przydzielić sobie niższej rangi grupy, ponieważ jesteś jedynym " "Nie możesz przydzielić sobie niższej rangi grupy, ponieważ jesteś jedynym "
@ -815,12 +816,12 @@ msgid "This invitation doesn't exist."
msgstr "To zaproszenie nie istnieje." msgstr "To zaproszenie nie istnieje."
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "Ten członek już został odrzucony." msgstr "Ten członek już został odrzucony."
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "Nie masz uprawnień do usunięcia tego członka." msgstr "Nie masz uprawnień do usunięcia tego członka."
@ -1030,3 +1031,18 @@ msgstr "Musisz być zalogowany(-a), aby dołączyć do grupy"
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "Musisz być zalogowany(-a), aby zaktualizować grupę" msgstr "Musisz być zalogowany(-a), aby zaktualizować grupę"
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr "Nie masz uprawnień do usunięcia tego członka."
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -90,7 +90,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "" msgstr ""
@ -108,7 +108,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "" msgstr ""
@ -144,7 +144,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "" msgstr ""
@ -316,3 +316,13 @@ msgstr ""
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "" msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1030,7 +1030,7 @@ msgid "So long, and thanks for the fish!"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "" msgstr ""
@ -1615,7 +1615,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "" msgstr ""
@ -1624,3 +1624,50 @@ msgstr ""
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -515,7 +515,8 @@ msgid "You are not a member of this group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "" msgstr ""
@ -551,7 +552,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
@ -786,12 +787,12 @@ msgid "This invitation doesn't exist."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
@ -1001,3 +1002,18 @@ msgstr ""
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -90,7 +90,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "" msgstr ""
@ -108,7 +108,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "" msgstr ""
@ -144,7 +144,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "" msgstr ""
@ -316,3 +316,13 @@ msgstr ""
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "" msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr ""
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1107,7 +1107,7 @@ msgid "So long, and thanks for the fish!"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "" msgstr ""
@ -1727,7 +1727,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "" msgstr ""
@ -1736,3 +1736,50 @@ msgstr ""
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -515,7 +515,8 @@ msgid "You are not a member of this group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "" msgstr ""
@ -551,7 +552,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
@ -786,12 +787,12 @@ msgid "This invitation doesn't exist."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "" msgstr ""
@ -1001,3 +1002,18 @@ msgstr ""
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

View File

@ -98,7 +98,7 @@ msgid "%{profile} deleted the resource %{resource}."
msgstr "%{profile} удалил ресурс %{resource}." msgstr "%{profile} удалил ресурс %{resource}."
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:58 #: lib/service/activity/renderer/member.ex:66
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}." msgid "%{profile} excluded member %{member}."
msgstr "%{profile} исключил участника %{member}." msgstr "%{profile} исключил участника %{member}."
@ -116,7 +116,7 @@ msgid "%{profile} moved the resource %{resource}."
msgstr "%{profile} переместил ресурс %{resource}." msgstr "%{profile} переместил ресурс %{resource}."
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:62 #: lib/service/activity/renderer/member.ex:70
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group." msgid "%{profile} quit the group."
msgstr "%{profile} вышел из группы." msgstr "%{profile} вышел из группы."
@ -152,7 +152,7 @@ msgid "%{profile} updated the group %{group}."
msgstr "%{profile} обновил группу %{group}." msgstr "%{profile} обновил группу %{group}."
#, elixir-format #, elixir-format
#: lib/service/activity/renderer/member.ex:54 #: lib/service/activity/renderer/member.ex:62
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}." msgid "%{profile} updated the member %{member}."
msgstr "%{profile} обновил участника %{member}." msgstr "%{profile} обновил участника %{member}."
@ -330,3 +330,13 @@ msgstr "Сообщение %{post} из группы %{group} было опуб
#: lib/service/activity/renderer/post.ex:39 #: lib/service/activity/renderer/post.ex:39
msgid "The post %{post} from group %{group} was updated by %{profile}." msgid "The post %{post} from group %{group} was updated by %{profile}."
msgstr "Сообщение %{post} из группы %{group} было обновлено %{profile}." msgstr "Сообщение %{post} из группы %{group} было обновлено %{profile}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:54
msgid "%{profile} approved the membership request from %{member}."
msgstr "%{profile} обновил участника %{member}."
#, elixir-format
#: lib/service/activity/renderer/member.ex:58
msgid "%{profile} rejected the membership request from %{member}."
msgstr ""

View File

@ -1257,7 +1257,7 @@ msgid "So long, and thanks for the fish!"
msgstr "Всего хорошего, и спасибо за рыбу!" msgstr "Всего хорошего, и спасибо за рыбу!"
#, elixir-format #, elixir-format
#: lib/web/email/member.ex:61 #: lib/web/email/member.ex:113
msgid "You have been removed from group %{group}" msgid "You have been removed from group %{group}"
msgstr "Вас исключили из группы %{group}" msgstr "Вас исключили из группы %{group}"
@ -1960,7 +1960,7 @@ msgstr ""
msgid "New end date:" msgid "New end date:"
msgstr "" msgstr ""
#, elixir-format, fuzzy #, elixir-format
#: lib/web/templates/email/event_updated.text.eex:10 #: lib/web/templates/email/event_updated.text.eex:10
msgid "New location:" msgid "New location:"
msgstr "Местонахождение" msgstr "Местонахождение"
@ -1969,3 +1969,50 @@ msgstr "Местонахождение"
#: lib/web/templates/email/event_updated.text.eex:8 #: lib/web/templates/email/event_updated.text.eex:8
msgid "New start date:" msgid "New start date:"
msgstr "" msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:13
#: lib/web/templates/email/group_membership_rejection.text.eex:1
msgid "Sorry, not this time!"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:52
msgid "View the group"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_approval.html.heex:13
#: lib/web/templates/email/group_membership_approval.text.eex:1
msgid "You're in!"
msgstr "Вы примете участие!"
#, elixir-format
#: lib/web/email/member.ex:60
msgid "Your membership request for group %{group} has been approved"
msgstr ""
#, elixir-format
#: lib/web/email/member.ex:89
msgid "Your membership request for group %{group} has been rejected"
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.text.eex:3
msgid "Your membership request for group %{group} has been rejected."
msgstr ""
#, elixir-format
#: lib/web/templates/email/group_membership_rejection.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.text.eex:3
msgid "Your membership request for group %{group} has been approved."
msgstr ""
#, elixir-format, fuzzy
#: lib/web/templates/email/group_membership_approval.html.heex:38
msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved."
msgstr ""

View File

@ -539,7 +539,8 @@ msgid "You are not a member of this group"
msgstr "Вы не состоите в этой группе" msgstr "Вы не состоите в этой группе"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:155 #: lib/graphql/resolvers/member.ex:155 lib/graphql/resolvers/member.ex:171
#: lib/graphql/resolvers/member.ex:186
msgid "You are not a moderator or admin for this group" msgid "You are not a moderator or admin for this group"
msgstr "Вы не модератор и не администратор этой группы" msgstr "Вы не модератор и не администратор этой группы"
@ -577,7 +578,7 @@ msgstr ""
"участником, создавшим его" "участником, создавшим его"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:159 #: lib/graphql/resolvers/member.ex:190
msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr "" msgstr ""
"Вы не можете назначить себе роль с меньшими правами для этой группы, потому " "Вы не можете назначить себе роль с меньшими правами для этой группы, потому "
@ -835,12 +836,12 @@ msgid "This invitation doesn't exist."
msgstr "Такого приглашения не существует." msgstr "Такого приглашения не существует."
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:185 #: lib/graphql/resolvers/member.ex:215
msgid "This member already has been rejected." msgid "This member already has been rejected."
msgstr "Этот участник уже был отклонён." msgstr "Этот участник уже был отклонён."
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:192 #: lib/graphql/resolvers/member.ex:239
msgid "You don't have the right to remove this member." msgid "You don't have the right to remove this member."
msgstr "У вас нет прав на удаление этого участника." msgstr "У вас нет прав на удаление этого участника."
@ -1056,3 +1057,18 @@ msgstr "Вам необходимо войти в систему, чтобы п
#: lib/graphql/resolvers/group.ex:373 #: lib/graphql/resolvers/group.ex:373
msgid "You need to be logged-in to update a group follow" msgid "You need to be logged-in to update a group follow"
msgstr "Вам необходимо войти в систему, чтобы обновить группу" msgstr "Вам необходимо войти в систему, чтобы обновить группу"
#, elixir-format
#: lib/graphql/resolvers/member.ex:208
msgid "This member does not exist"
msgstr ""
#, elixir-format
#: lib/graphql/resolvers/member.ex:232
msgid "You don't have the role needed to remove this member."
msgstr "У вас нет прав на удаление этого участника."
#, elixir-format
#: lib/graphql/resolvers/member.ex:250
msgid "You must be logged-in to remove a member"
msgstr ""

Some files were not shown because too many files have changed in this diff Show More