Merge branch 'improve-build-times' into 'master'

Improve build times

See merge request framasoft/mobilizon!608
This commit is contained in:
Thomas Citharel 2020-10-14 11:55:53 +02:00
commit 3847e97a64
94 changed files with 971 additions and 1114 deletions

View File

@ -30,7 +30,6 @@
"graphql": "^15.0.0", "graphql": "^15.0.0",
"graphql-tag": "^2.10.3", "graphql-tag": "^2.10.3",
"intersection-observer": "^0.11.0", "intersection-observer": "^0.11.0",
"javascript-time-ago": "^2.0.4",
"leaflet": "^1.4.0", "leaflet": "^1.4.0",
"leaflet.locatecontrol": "^0.72.0", "leaflet.locatecontrol": "^0.72.0",
"lodash": "^4.17.11", "lodash": "^4.17.11",
@ -54,7 +53,6 @@
}, },
"devDependencies": { "devDependencies": {
"@types/chai": "^4.2.11", "@types/chai": "^4.2.11",
"@types/javascript-time-ago": "^2.0.1",
"@types/leaflet": "^1.5.2", "@types/leaflet": "^1.5.2",
"@types/leaflet.locatecontrol": "^0.60.7", "@types/leaflet.locatecontrol": "^0.60.7",
"@types/lodash": "^4.14.141", "@types/lodash": "^4.14.141",

View File

@ -1,5 +1,9 @@
@import "variables.scss"; @import "variables.scss";
@import "~bulma";
@import "~bulma-divider";
@import "~buefy/src/scss/buefy";
// a { // a {
// color: $violet-2; // color: $violet-2;
// } // }

View File

@ -46,8 +46,6 @@ export default class ActorCard extends Vue {
</style> </style>
<style lang="scss"> <style lang="scss">
@import "../../variables.scss";
.tooltip { .tooltip {
display: block !important; display: block !important;
z-index: 10000; z-index: 10000;

View File

@ -88,7 +88,6 @@ export default class ParticipantCard extends Vue {
</script> </script>
<style lang="scss"> <style lang="scss">
@import "../../variables.scss";
.card-footer-item { .card-footer-item {
height: $control-height; height: $control-height;
} }

View File

@ -51,7 +51,7 @@
<b-table-column field="targetActor.updatedAt" :label="$t('Date')" sortable v-slot="props"> <b-table-column field="targetActor.updatedAt" :label="$t('Date')" sortable v-slot="props">
<span :title="$options.filters.formatDateTimeString(props.row.updatedAt)">{{ <span :title="$options.filters.formatDateTimeString(props.row.updatedAt)">{{
timeago(props.row.updatedAt) formatDistanceToNow(new Date(props.row.updatedAt), { locale: $dateFnsLocale })
}}</span></b-table-column }}</span></b-table-column
> >
@ -102,6 +102,7 @@
<script lang="ts"> <script lang="ts">
import { Component, Mixins } from "vue-property-decorator"; import { Component, Mixins } from "vue-property-decorator";
import { SnackbarProgrammatic as Snackbar } from "buefy"; import { SnackbarProgrammatic as Snackbar } from "buefy";
import { formatDistanceToNow } from "date-fns";
import { ACCEPT_RELAY, REJECT_RELAY, RELAY_FOLLOWERS } from "../../graphql/admin"; import { ACCEPT_RELAY, REJECT_RELAY, RELAY_FOLLOWERS } from "../../graphql/admin";
import { Paginate } from "../../types/paginate"; import { Paginate } from "../../types/paginate";
import { IFollower } from "../../types/actor/follower.model"; import { IFollower } from "../../types/actor/follower.model";
@ -126,6 +127,8 @@ export default class Followers extends Mixins(RelayMixin) {
RelayMixin = RelayMixin; RelayMixin = RelayMixin;
formatDistanceToNow = formatDistanceToNow;
async acceptRelays(): Promise<void> { async acceptRelays(): Promise<void> {
await this.checkedRows.forEach((row: IFollower) => { await this.checkedRows.forEach((row: IFollower) => {
this.acceptRelay(`${row.actor.preferredUsername}@${row.actor.domain}`); this.acceptRelay(`${row.actor.preferredUsername}@${row.actor.domain}`);

View File

@ -64,7 +64,7 @@
<b-table-column field="targetActor.updatedAt" :label="$t('Date')" sortable v-slot="props"> <b-table-column field="targetActor.updatedAt" :label="$t('Date')" sortable v-slot="props">
<span :title="$options.filters.formatDateTimeString(props.row.updatedAt)">{{ <span :title="$options.filters.formatDateTimeString(props.row.updatedAt)">{{
timeago(props.row.updatedAt) formatDistanceToNow(new Date(props.row.updatedAt), { locale: $dateFnsLocale })
}}</span></b-table-column }}</span></b-table-column
> >
@ -100,6 +100,7 @@
<script lang="ts"> <script lang="ts">
import { Component, Mixins } from "vue-property-decorator"; import { Component, Mixins } from "vue-property-decorator";
import { SnackbarProgrammatic as Snackbar } from "buefy"; import { SnackbarProgrammatic as Snackbar } from "buefy";
import { formatDistanceToNow } from "date-fns";
import { ADD_RELAY, RELAY_FOLLOWINGS, REMOVE_RELAY } from "../../graphql/admin"; import { ADD_RELAY, RELAY_FOLLOWINGS, REMOVE_RELAY } from "../../graphql/admin";
import { IFollower } from "../../types/actor/follower.model"; import { IFollower } from "../../types/actor/follower.model";
import { Paginate } from "../../types/paginate"; import { Paginate } from "../../types/paginate";
@ -126,6 +127,8 @@ export default class Followings extends Mixins(RelayMixin) {
RelayMixin = RelayMixin; RelayMixin = RelayMixin;
formatDistanceToNow = formatDistanceToNow;
async followRelay(e: Event): Promise<void> { async followRelay(e: Event): Promise<void> {
e.preventDefault(); e.preventDefault();
try { try {

View File

@ -24,7 +24,12 @@
<strong :class="{ organizer: commentFromOrganizer }">{{ comment.actor.name }}</strong> <strong :class="{ organizer: commentFromOrganizer }">{{ comment.actor.name }}</strong>
<small>@{{ usernameWithDomain(comment.actor) }}</small> <small>@{{ usernameWithDomain(comment.actor) }}</small>
<a class="comment-link has-text-grey" :href="commentURL"> <a class="comment-link has-text-grey" :href="commentURL">
<small>{{ timeago(new Date(comment.updatedAt)) }}</small> <small>{{
formatDistanceToNow(new Date(comment.updatedAt), {
locale: $dateFnsLocale,
addSuffix: true,
})
}}</small>
</a> </a>
</span> </span>
<a v-else class="comment-link has-text-grey" :href="commentURL"> <a v-else class="comment-link has-text-grey" :href="commentURL">
@ -130,8 +135,8 @@
<script lang="ts"> <script lang="ts">
import { Component, Prop, Vue, Ref } from "vue-property-decorator"; import { Component, Prop, Vue, Ref } from "vue-property-decorator";
import EditorComponent from "@/components/Editor.vue"; import EditorComponent from "@/components/Editor.vue";
import TimeAgo from "javascript-time-ago";
import { SnackbarProgrammatic as Snackbar } from "buefy"; import { SnackbarProgrammatic as Snackbar } from "buefy";
import { formatDistanceToNow } from "date-fns";
import { CommentModel, IComment } from "../../types/comment.model"; import { CommentModel, IComment } from "../../types/comment.model";
import { CURRENT_ACTOR_CLIENT } from "../../graphql/actor"; import { CURRENT_ACTOR_CLIENT } from "../../graphql/actor";
import { IPerson, usernameWithDomain } from "../../types/actor"; import { IPerson, usernameWithDomain } from "../../types/actor";
@ -171,18 +176,13 @@ export default class Comment extends Vue {
showReplies = false; showReplies = false;
timeAgoInstance: TimeAgo | null = null;
CommentModeration = CommentModeration; CommentModeration = CommentModeration;
usernameWithDomain = usernameWithDomain; usernameWithDomain = usernameWithDomain;
async mounted(): Promise<void> { formatDistanceToNow = formatDistanceToNow;
const localeName = this.$i18n.locale;
const locale = await import(`javascript-time-ago/locale/${localeName}`);
TimeAgo.addLocale(locale);
this.timeAgoInstance = new TimeAgo(localeName);
async mounted(): Promise<void> {
const { hash } = this.$route; const { hash } = this.$route;
if (hash.includes(`#comment-${this.comment.uuid}`)) { if (hash.includes(`#comment-${this.comment.uuid}`)) {
this.fetchReplies(); this.fetchReplies();
@ -243,13 +243,6 @@ export default class Comment extends Vue {
this.showReplies = true; this.showReplies = true;
} }
timeago(dateTime: Date): string {
if (this.timeAgoInstance != null) {
return this.timeAgoInstance.format(dateTime);
}
return "";
}
get commentSelected(): boolean { get commentSelected(): boolean {
return this.commentId === this.$route.hash; return this.commentId === this.$route.hash;
} }
@ -316,8 +309,6 @@ export default class Comment extends Vue {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/variables.scss";
form.reply { form.reply {
padding-bottom: 1rem; padding-bottom: 1rem;
} }

View File

@ -43,7 +43,10 @@
</span> </span>
<div class="post-infos"> <div class="post-infos">
<span :title="comment.insertedAt | formatDateTimeString"> <span :title="comment.insertedAt | formatDateTimeString">
{{ $timeAgo.format(new Date(comment.updatedAt), "twitter") || $t("Right now") }}</span {{
formatDistanceToNow(new Date(comment.updatedAt), { locale: $dateFnsLocale }) ||
$t("Right now")
}}</span
> >
</div> </div>
</div> </div>
@ -53,7 +56,13 @@
v-if="comment.insertedAt.getTime() !== comment.updatedAt.getTime()" v-if="comment.insertedAt.getTime() !== comment.updatedAt.getTime()"
:title="comment.updatedAt | formatDateTimeString" :title="comment.updatedAt | formatDateTimeString"
> >
{{ $t("Edited {ago}", { ago: $timeAgo.format(new Date(comment.updatedAt)) }) }} {{
$t("Edited {ago}", {
ago: formatDistanceToNow(new Date(comment.updatedAt), {
locale: $dateFnsLocale,
}),
})
}}
</p> </p>
</div> </div>
<div class="comment-deleted" v-else-if="!editMode"> <div class="comment-deleted" v-else-if="!editMode">
@ -76,7 +85,8 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { Component, Prop, Vue } from "vue-property-decorator"; import { Component, Prop, Vue } from "vue-property-decorator";
import { IComment, CommentModel } from "../../types/comment.model"; import { formatDistanceToNow } from "date-fns";
import { IComment } from "../../types/comment.model";
import { usernameWithDomain, IPerson } from "../../types/actor"; import { usernameWithDomain, IPerson } from "../../types/actor";
import { CURRENT_ACTOR_CLIENT } from "../../graphql/actor"; import { CURRENT_ACTOR_CLIENT } from "../../graphql/actor";
@ -99,14 +109,16 @@ export default class DiscussionComment extends Vue {
usernameWithDomain = usernameWithDomain; usernameWithDomain = usernameWithDomain;
formatDistanceToNow = formatDistanceToNow;
// isReportModalActive: boolean = false; // isReportModalActive: boolean = false;
toggleEditMode() { toggleEditMode(): void {
this.updatedComment = this.comment.text; this.updatedComment = this.comment.text;
this.editMode = !this.editMode; this.editMode = !this.editMode;
} }
updateComment() { updateComment(): void {
this.comment.text = this.updatedComment; this.comment.text = this.updatedComment;
this.$emit("update-comment", this.comment); this.$emit("update-comment", this.comment);
this.toggleEditMode(); this.toggleEditMode();
@ -114,8 +126,6 @@ export default class DiscussionComment extends Vue {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/variables.scss";
article.comment { article.comment {
display: flex; display: flex;
border-top: 1px solid #e9e9e9; border-top: 1px solid #e9e9e9;

View File

@ -16,7 +16,10 @@
<div class="title-and-date"> <div class="title-and-date">
<p class="discussion-minimalist-title">{{ discussion.title }}</p> <p class="discussion-minimalist-title">{{ discussion.title }}</p>
<span :title="actualDate | formatDateTimeString"> <span :title="actualDate | formatDateTimeString">
{{ $timeAgo.format(new Date(actualDate), "twitter") || $t("Right now") }}</span {{
formatDistanceToNowStrict(new Date(actualDate), { locale: $dateFnsLocale }) ||
$t("Right now")
}}</span
> >
</div> </div>
<div class="has-text-grey" v-if="!discussion.lastComment.deletedAt"> <div class="has-text-grey" v-if="!discussion.lastComment.deletedAt">
@ -28,6 +31,7 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { Component, Prop, Vue } from "vue-property-decorator"; import { Component, Prop, Vue } from "vue-property-decorator";
import { formatDistanceToNowStrict } from "date-fns";
import { IDiscussion } from "../../types/discussions"; import { IDiscussion } from "../../types/discussions";
import RouteName from "../../router/name"; import RouteName from "../../router/name";
@ -37,7 +41,9 @@ export default class DiscussionListItem extends Vue {
RouteName = RouteName; RouteName = RouteName;
get htmlTextEllipsis() { formatDistanceToNowStrict = formatDistanceToNowStrict;
get htmlTextEllipsis(): string {
const element = document.createElement("div"); const element = document.createElement("div");
if (this.discussion.lastComment && this.discussion.lastComment.text) { if (this.discussion.lastComment && this.discussion.lastComment.text) {
element.innerHTML = this.discussion.lastComment.text element.innerHTML = this.discussion.lastComment.text
@ -47,7 +53,7 @@ export default class DiscussionListItem extends Vue {
return element.innerText; return element.innerText;
} }
get actualDate() { get actualDate(): string | Date | undefined {
if (this.discussion.updatedAt === this.discussion.insertedAt && this.discussion.lastComment) { if (this.discussion.updatedAt === this.discussion.insertedAt && this.discussion.lastComment) {
return this.discussion.lastComment.publishedAt; return this.discussion.lastComment.publishedAt;
} }

View File

@ -552,8 +552,6 @@ export default class EditorComponent extends Vue {
} }
</script> </script>
<style lang="scss"> <style lang="scss">
@import "@/variables.scss";
$color-black: #000; $color-black: #000;
$color-white: #eee; $color-white: #eee;

View File

@ -27,23 +27,21 @@ export default class DateCalendarIcon extends Vue {
*/ */
@Prop({ required: true }) date!: string; @Prop({ required: true }) date!: string;
get dateObj() { get dateObj(): Date {
return new Date(this.$props.date); return new Date(this.$props.date);
} }
get month() { get month(): string {
return this.dateObj.toLocaleString(undefined, { month: "short" }); return this.dateObj.toLocaleString(undefined, { month: "short" });
} }
get day() { get day(): string {
return this.dateObj.toLocaleString(undefined, { day: "numeric" }); return this.dateObj.toLocaleString(undefined, { day: "numeric" });
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables.scss";
time.datetime-container { time.datetime-container {
background: $backgrounds; background: $backgrounds;
border: 1px solid $borders; border: 1px solid $borders;

View File

@ -115,8 +115,6 @@ export default class EventCard extends Vue {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables";
a.card { a.card {
display: block; display: block;
background: $secondary; background: $secondary;

View File

@ -275,8 +275,6 @@ export default class EventListCard extends mixins(ActorMixin, EventMixin) {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables";
article.box { article.box {
div.tag-container { div.tag-container {
position: absolute; position: absolute;

View File

@ -104,8 +104,6 @@ export default class EventListViewCard extends mixins(ActorMixin, EventMixin) {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables";
article.box { article.box {
div.content { div.content {
padding: 5px; padding: 5px;

View File

@ -20,8 +20,6 @@ export default class EventMetadataBlock extends Vue {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables.scss";
h2 { h2 {
font-size: 1.8rem; font-size: 1.8rem;
font-weight: 500; font-weight: 500;

View File

@ -44,8 +44,6 @@ export default class Footer extends Vue {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../variables.scss";
footer.footer { footer.footer {
color: $secondary; color: $secondary;
display: flex; display: flex;

View File

@ -32,8 +32,6 @@ export default class GroupSection extends Vue {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/variables.scss";
section { section {
display: flex; display: flex;
flex-direction: column; flex-direction: column;

View File

@ -54,7 +54,7 @@
<script lang="ts"> <script lang="ts">
import { Component, Prop, Vue } from "vue-property-decorator"; import { Component, Prop, Vue } from "vue-property-decorator";
import { IGroup, IMember, usernameWithDomain } from "@/types/actor"; import { IMember, usernameWithDomain } from "@/types/actor";
import RouteName from "../../router/name"; import RouteName from "../../router/name";
@Component @Component
@ -68,8 +68,6 @@ export default class InvitationCard extends Vue {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/variables.scss";
.media:not(.subfield) { .media:not(.subfield) {
background: lighten($primary, 40%); background: lighten($primary, 40%);
padding: 10px; padding: 10px;

View File

@ -4,7 +4,7 @@
<script lang="ts"> <script lang="ts">
import { Component, Prop, Vue } from "vue-property-decorator"; import { Component, Prop, Vue } from "vue-property-decorator";
// eslint-disable-next-line @typescript-eslint/ban-ts-ignore // eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore // @ts-ignore
import MobilizonLogo from "../assets/mobilizon_logo.svg?inline"; import MobilizonLogo from "../assets/mobilizon_logo.svg?inline";
@ -18,8 +18,6 @@ export default class Logo extends Vue {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../variables.scss";
svg { svg {
fill: $background-color; fill: $background-color;

View File

@ -216,8 +216,6 @@ export default class NavBar extends Vue {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../variables.scss";
nav { nav {
.navbar-item { .navbar-item {
a.button { a.button {

View File

@ -5,11 +5,17 @@
> >
<div class="title-info-wrapper"> <div class="title-info-wrapper">
<p class="post-minimalist-title">{{ post.title }}</p> <p class="post-minimalist-title">{{ post.title }}</p>
<small class="has-text-grey">{{ $timeAgo.format(new Date(post.insertedAt)) }}</small> <small class="has-text-grey">{{
formatDistanceToNow(new Date(post.publishAt || post.insertedAt), {
locale: $dateFnsLocale,
addSuffix: true,
})
}}</small>
</div> </div>
</router-link> </router-link>
</template> </template>
<script lang="ts"> <script lang="ts">
import { formatDistanceToNow } from "date-fns";
import { Component, Prop, Vue } from "vue-property-decorator"; import { Component, Prop, Vue } from "vue-property-decorator";
import RouteName from "../../router/name"; import RouteName from "../../router/name";
import { IPost } from "../../types/post.model"; import { IPost } from "../../types/post.model";
@ -19,6 +25,8 @@ export default class PostListItem extends Vue {
@Prop({ required: true, type: Object }) post!: IPost; @Prop({ required: true, type: Object }) post!: IPost;
RouteName = RouteName; RouteName = RouteName;
formatDistanceToNow = formatDistanceToNow;
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -114,8 +114,6 @@ export default class FolderItem extends Mixins(ResourceMixin) {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/variables.scss";
.resource-wrapper { .resource-wrapper {
display: flex; display: flex;
flex: 1; flex: 1;

View File

@ -57,8 +57,6 @@ export default class ResourceItem extends Vue {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/variables.scss";
.resource-wrapper { .resource-wrapper {
display: flex; display: flex;
flex: 1; flex: 1;

View File

@ -111,8 +111,6 @@ export default class ResourceSelector extends Vue {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables.scss";
.panel { .panel {
a.panel-block { a.panel-block {
cursor: default; cursor: default;

View File

@ -30,8 +30,6 @@ export default class SettingMenuItem extends Vue {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/variables.scss";
li.setting-menu-item { li.setting-menu-item {
font-size: 1.05rem; font-size: 1.05rem;
background-color: #fff1de; background-color: #fff1de;

View File

@ -37,8 +37,6 @@ export default class SettingMenuSection extends Vue {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/variables.scss";
li { li {
font-size: 1.3rem; font-size: 1.3rem;
background-color: $secondary; background-color: $secondary;

View File

@ -13,8 +13,6 @@ export default class Tag extends Vue {}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../variables.scss";
span.tag { span.tag {
background: $purple-3; background: $purple-3;
color: $violet-2; color: $violet-2;

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="card" v-if="todo"> <div class="card" v-if="todo">
<div class="card-content"> <div class="card-content">
<b-field :label="$t('Statut')"> <b-field :label="$t('Status')">
<b-checkbox size="is-large" v-model="status" /> <b-checkbox size="is-large" v-model="status" />
</b-field> </b-field>
<b-field :label="$t('Title')"> <b-field :label="$t('Title')">

View File

@ -12,8 +12,6 @@ import { Component, Vue } from "vue-property-decorator";
export default class Subtitle extends Vue {} export default class Subtitle extends Vue {}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/variables.scss";
h2 { h2 {
display: block; display: block;
margin: 15px 0 30px; margin: 15px 0 30px;

View File

@ -8,14 +8,12 @@ import { Component, Prop, Vue } from "vue-property-decorator";
export default class VerticalDivider extends Vue { export default class VerticalDivider extends Vue {
@Prop({ default: "Or" }) content!: string; @Prop({ default: "Or" }) content!: string;
get dataContent() { get dataContent(): string {
return this.content.toLocaleUpperCase(); return this.content.toLocaleUpperCase();
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/variables.scss";
.is-divider-vertical[data-content]::after { .is-divider-vertical[data-content]::after {
background-color: $body-background-color; background-color: $body-background-color;
} }

View File

@ -2,7 +2,7 @@ import nl2br from "@/filters/utils";
import { formatDateString, formatTimeString, formatDateTimeString } from "./datetime"; import { formatDateString, formatTimeString, formatDateTimeString } from "./datetime";
export default { export default {
install(vue: any) { install(vue: any): void {
vue.filter("formatDateString", formatDateString); vue.filter("formatDateString", formatDateString);
vue.filter("formatTimeString", formatTimeString); vue.filter("formatTimeString", formatTimeString);
vue.filter("formatDateTimeString", formatDateTimeString); vue.filter("formatDateTimeString", formatDateTimeString);

View File

@ -204,7 +204,7 @@
"Duplicate": "Dupliquer", "Duplicate": "Dupliquer",
"Edit": "Modifier", "Edit": "Modifier",
"Edit post": "Éditer le billet", "Edit post": "Éditer le billet",
"Edited {ago}": "Édité {ago}", "Edited {ago}": "Édité il y a {ago}",
"Eg: Stockholm, Dance, Chess…": "Par exemple : Lyon, Danse, Bridge…", "Eg: Stockholm, Dance, Chess…": "Par exemple : Lyon, Danse, Bridge…",
"Either on the {instance} instance or on another instance.": "Sur l'instance {instance} ou bien sur une autre instance.", "Either on the {instance} instance or on another instance.": "Sur l'instance {instance} ou bien sur une autre instance.",
"Either the account is already validated, either the validation token is incorrect.": "Soit le compte est déjà validé, soit le jeton de validation est incorrect.", "Either the account is already validated, either the validation token is incorrect.": "Soit le compte est déjà validé, soit le jeton de validation est incorrect.",

View File

@ -1,43 +0,0 @@
/* eslint-disable @typescript-eslint/camelcase */
import ar from "./ar.json";
import be from "./be.json";
import ca from "./ca.json";
import cs from "./cs.json";
import de from "./de.json";
import en_US from "./en_US.json";
import es from "./es.json";
import fi from "./fi.json";
import fr_FR from "./fr_FR.json";
import it from "./it.json";
import ja from "./ja.json";
import nl from "./nl.json";
import oc from "./oc.json";
import pl from "./pl.json";
import pt from "./pt.json";
import pt_BR from "./pt_BR.json";
import ru from "./ru.json";
import sv from "./sv.json";
export default {
ar,
be,
ca,
cs,
de,
en: en_US,
en_US,
es,
fi,
fr: fr_FR,
fr_FR,
it,
ja,
nl,
oc,
pl,
pt,
pt_BR,
ru,
sv,
};

View File

@ -1,19 +1,14 @@
{ {
"ar": "العربية", "ar": "العربية",
"bg": "Български",
"be": "Беларуская мова", "be": "Беларуская мова",
"br": "Brezhoneg",
"ca": "Català", "ca": "Català",
"co": "Corsu",
"cs": "čeština", "cs": "čeština",
"de": "Deutsch", "de": "Deutsch",
"en": "English", "en": "English",
"eo": "Esperanto",
"es": "Español", "es": "Español",
"fi": "suomi", "fi": "suomi",
"fr": "Français", "fr": "Français",
"gl": "Galego", "gl": "Galego",
"hu": "Magyar",
"it": "Italiano", "it": "Italiano",
"ja": "日本語", "ja": "日本語",
"nl": "Dutch", "nl": "Dutch",
@ -22,9 +17,5 @@
"pt": "Português", "pt": "Português",
"pt_PT": "Português (Portugal)", "pt_PT": "Português (Portugal)",
"ru": "Русский", "ru": "Русский",
"sq": "Shqip", "sv": "Svenska"
"sv": "Svenska",
"tr": "Türkçe",
"vi": "Tiếng Việt",
"zh_Hant_TW": "繁體中文(台灣)"
} }

View File

@ -6,33 +6,17 @@ import Component from "vue-class-component";
import VueScrollTo from "vue-scrollto"; import VueScrollTo from "vue-scrollto";
import VueMeta from "vue-meta"; import VueMeta from "vue-meta";
import VTooltip from "v-tooltip"; import VTooltip from "v-tooltip";
import TimeAgo from "javascript-time-ago";
import App from "./App.vue"; import App from "./App.vue";
import router from "./router"; import router from "./router";
import { NotifierPlugin } from "./plugins/notifier"; import { NotifierPlugin } from "./plugins/notifier";
import { DateFnsPlugin } from "./plugins/dateFns";
import filters from "./filters"; import filters from "./filters";
import { i18n } from "./utils/i18n"; import { i18n } from "./utils/i18n";
import messages from "./i18n";
import apolloProvider from "./vue-apollo"; import apolloProvider from "./vue-apollo";
Vue.config.productionTip = false; Vue.config.productionTip = false;
let language = document.documentElement.getAttribute("lang") as string;
language =
language ||
((window.navigator as any).userLanguage || window.navigator.language).replace(/-/, "_");
export const locale =
language && messages.hasOwnProperty(language) ? language : language.split("-")[0];
import(`javascript-time-ago/locale/${locale}`).then((localeFile) => {
TimeAgo.addLocale(localeFile);
Vue.prototype.$timeAgo = new TimeAgo(locale);
});
Vue.use(Buefy); Vue.use(Buefy);
Vue.use(NotifierPlugin); Vue.use(NotifierPlugin);
Vue.use(DateFnsPlugin, { locale });
Vue.use(filters); Vue.use(filters);
Vue.use(VueMeta); Vue.use(VueMeta);
Vue.use(VueScrollTo); Vue.use(VueScrollTo);

View File

@ -1,7 +1,6 @@
import { Component, Vue, Ref } from "vue-property-decorator"; import { Component, Vue, Ref } from "vue-property-decorator";
import { ActorType, IActor } from "@/types/actor"; import { ActorType, IActor } from "@/types/actor";
import { IFollower } from "@/types/actor/follower.model"; import { IFollower } from "@/types/actor/follower.model";
import TimeAgo from "javascript-time-ago";
@Component @Component
export default class RelayMixin extends Vue { export default class RelayMixin extends Vue {
@ -13,20 +12,11 @@ export default class RelayMixin extends Vue {
perPage = 10; perPage = 10;
timeAgoInstance: TimeAgo | null = null; toggle(row: Record<string, unknown>): void {
async mounted() {
const localeName = this.$i18n.locale;
const locale = await import(`javascript-time-ago/locale/${localeName}`);
TimeAgo.addLocale(locale);
this.timeAgoInstance = new TimeAgo(localeName);
}
toggle(row: object) {
this.table.toggleDetails(row); this.table.toggleDetails(row);
} }
async onPageChange(page: number) { async onPageChange(page: number): Promise<void> {
this.page = page; this.page = page;
await this.$apollo.queries.relayFollowings.fetchMore({ await this.$apollo.queries.relayFollowings.fetchMore({
variables: { variables: {
@ -53,11 +43,4 @@ export default class RelayMixin extends Vue {
(actor.preferredUsername === "relay" || actor.preferredUsername === actor.domain) (actor.preferredUsername === "relay" || actor.preferredUsername === actor.domain)
); );
} }
timeago(dateTime: string): string {
if (this.timeAgoInstance != null) {
return this.timeAgoInstance.format(new Date(dateTime));
}
return "";
}
} }

View File

@ -1,5 +1,5 @@
import Vue from "vue";
import Locale from "date-fns"; import Locale from "date-fns";
import VueInstance from "vue";
declare module "vue/types/vue" { declare module "vue/types/vue" {
interface Vue { interface Vue {
@ -7,8 +7,8 @@ declare module "vue/types/vue" {
} }
} }
export function DateFnsPlugin(vue: typeof Vue, { locale }: { locale: string }): void { export function DateFnsPlugin(vue: typeof VueInstance, { locale }: { locale: string }): void {
import(`date-fns/locale/${locale}/index.js`).then((localeEntity) => { import(`date-fns/locale/${locale}/index.js`).then((localeEntity) => {
Vue.prototype.$dateFnsLocale = localeEntity; VueInstance.prototype.$dateFnsLocale = localeEntity;
}); });
} }

View File

@ -1,4 +1,5 @@
import Vue from "vue"; /* eslint-disable no-shadow */
import VueInstance from "vue";
import { ColorModifiers } from "buefy/types/helpers.d"; import { ColorModifiers } from "buefy/types/helpers.d";
import { Route, RawLocation } from "vue-router"; import { Route, RawLocation } from "vue-router";
@ -12,39 +13,39 @@ declare module "vue/types/vue" {
beforeRouteEnter?( beforeRouteEnter?(
to: Route, to: Route,
from: Route, from: Route,
next: (to?: RawLocation | false | ((vm: Vue) => void)) => void next: (to?: RawLocation | false | ((vm: VueInstance) => void)) => void
): void; ): void;
beforeRouteLeave?( beforeRouteLeave?(
to: Route, to: Route,
from: Route, from: Route,
next: (to?: RawLocation | false | ((vm: Vue) => void)) => void next: (to?: RawLocation | false | ((vm: VueInstance) => void)) => void
): void; ): void;
beforeRouteUpdate?( beforeRouteUpdate?(
to: Route, to: Route,
from: Route, from: Route,
next: (to?: RawLocation | false | ((vm: Vue) => void)) => void next: (to?: RawLocation | false | ((vm: VueInstance) => void)) => void
): void; ): void;
} }
} }
export class Notifier { export class Notifier {
private readonly vue: typeof Vue; private readonly vue: typeof VueInstance;
constructor(vue: typeof Vue) { constructor(vue: typeof VueInstance) {
this.vue = vue; this.vue = vue;
} }
success(message: string) { success(message: string): void {
this.notification(message, "is-success"); this.notification(message, "is-success");
} }
error(message: string) { error(message: string): void {
this.notification(message, "is-danger"); this.notification(message, "is-danger");
} }
info(message: string) { info(message: string): void {
this.notification(message, "is-info"); this.notification(message, "is-info");
} }
@ -60,6 +61,6 @@ export class Notifier {
} }
/* eslint-disable */ /* eslint-disable */
export function NotifierPlugin(vue: typeof Vue): void { export function NotifierPlugin(vue: typeof VueInstance): void {
vue.prototype.$notifier = new Notifier(vue); vue.prototype.$notifier = new Notifier(vue);
} }

View File

@ -1,18 +1,70 @@
import Vue from "vue"; import Vue from "vue";
import VueI18n from "vue-i18n"; import VueI18n from "vue-i18n";
import messages from "../i18n/index"; import { DateFnsPlugin } from "@/plugins/dateFns";
import en from "../i18n/en_US.json";
import langs from "../i18n/langs.json";
const DEFAULT_LOCALE = "en";
let language = document.documentElement.getAttribute("lang") as string; let language = document.documentElement.getAttribute("lang") as string;
language = language || ((window.navigator as any).userLanguage || window.navigator.language).replace(/-/, "_"); language = language || ((window.navigator as any).userLanguage || window.navigator.language).replace(/-/, "_");
export const locale = language && messages.hasOwnProperty(language) ? language : language.split("-")[0]; export const locale =
language && Object.prototype.hasOwnProperty.call(langs, language) ? language : language.split("-")[0];
Vue.use(VueI18n); Vue.use(VueI18n);
console.log(en);
console.log(locale);
export const i18n = new VueI18n({ export const i18n = new VueI18n({
locale, // set locale locale: DEFAULT_LOCALE, // set locale
messages, // set locale messages messages: (en as unknown) as VueI18n.LocaleMessages, // set locale messages
fallbackLocale: "en_US", fallbackLocale: "en",
}); });
console.log(i18n);
Vue.use(DateFnsPlugin, { locale });
const loadedLanguages = ["en"];
function setI18nLanguage(lang: string): string {
i18n.locale = lang;
return lang;
}
function fileForLanguage(lang: string) {
const matches: Record<string, string> = {
fr: "fr_FR",
en: "en_US",
};
if (Object.prototype.hasOwnProperty.call(matches, lang)) {
return matches[lang];
}
return lang;
}
export async function loadLanguageAsync(lang: string): Promise<string> {
// If the same language
if (i18n.locale === lang) {
return Promise.resolve(setI18nLanguage(lang));
}
// If the language was already loaded
if (loadedLanguages.includes(lang)) {
return Promise.resolve(setI18nLanguage(lang));
}
console.log(fileForLanguage(lang));
// If the language hasn't been loaded yet
return import(/* webpackChunkName: "lang-[request]" */ `@/i18n/${fileForLanguage(lang)}.json`).then(
(newMessages: any) => {
i18n.setLocaleMessage(lang, newMessages.default);
loadedLanguages.push(lang);
return setI18nLanguage(lang);
}
);
}
loadLanguageAsync(locale);
export function formatList(list: string[]): string { export function formatList(list: string[]): string {
if (window.Intl && Intl.ListFormat) { if (window.Intl && Intl.ListFormat) {

View File

@ -135,7 +135,3 @@ $subtitle-sup-size: 15px;
$breadcrumb-item-color: $primary; $breadcrumb-item-color: $primary;
$checkbox-background-color: #fff; $checkbox-background-color: #fff;
$title-color: $violet-3; $title-color: $violet-3;
@import "~bulma";
@import "~bulma-divider";
@import "~buefy/src/scss/buefy";

View File

@ -119,8 +119,6 @@ export default class About extends Vue {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../variables.scss";
.hero.is-primary { .hero.is-primary {
background: $background-color; background: $background-color;

View File

@ -122,8 +122,6 @@ export default class AboutInstance extends Vue {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables.scss";
section { section {
&:not(:first-child) { &:not(:first-child) {
margin: 2rem auto; margin: 2rem auto;

View File

@ -166,8 +166,6 @@ export default class AboutMobilizon extends Vue {}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables.scss";
.hero.is-primary { .hero.is-primary {
background: $background-color; background: $background-color;
.subtitle { .subtitle {

View File

@ -51,8 +51,6 @@ export default class Privacy extends Vue {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/variables.scss";
main > .container { main > .container {
background: $white; background: $white;

View File

@ -27,8 +27,6 @@ export default class Rules extends Vue {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/variables.scss";
main > .container { main > .container {
background: $white; background: $white;
} }

View File

@ -144,8 +144,3 @@ export default class Profile extends Vue {
} }
} }
</script> </script>
<style lang="scss">
@import "../../variables";
@import "~bulma/sass/utilities/_all";
@import "~bulma/sass/components/dropdown.sass";
</style>

View File

@ -168,7 +168,6 @@ export default class Register extends mixins(identityEditionMixin) {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables.scss";
.avatar-enter-active { .avatar-enter-active {
transition: opacity 1s ease; transition: opacity 1s ease;
} }

View File

@ -359,8 +359,6 @@ export default class Settings extends Vue {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables.scss";
.notification a { .notification a {
color: $primary !important; color: $primary !important;
text-decoration: underline !important; text-decoration: underline !important;

View File

@ -145,14 +145,13 @@ export default class Users extends Vue {
}); });
} }
onFiltersChange({ email }: { email: string }) { onFiltersChange({ email }: { email: string }): void {
this.email = email; this.email = email;
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables.scss";
a.profile, a.profile,
a.user-profile { a.user-profile {
text-decoration: none; text-decoration: none;

View File

@ -296,8 +296,6 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/variables.scss";
main section > .container { main section > .container {
background: $white; background: $white;
} }

View File

@ -1044,8 +1044,6 @@ export default class Event extends EventMixin {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables";
.section { .section {
padding: 1rem 2rem 4rem; padding: 1rem 2rem 4rem;
} }

View File

@ -278,8 +278,6 @@ export default class MyEvents extends Vue {
<!-- Add "scoped" attribute to limit CSS to this component only --> <!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables";
main > .container { main > .container {
background: $white; background: $white;
} }

View File

@ -365,7 +365,7 @@ export default class Participants extends Vue {
nl2br = nl2br; nl2br = nl2br;
toggleQueueDetails(row: IParticipant) { toggleQueueDetails(row: IParticipant): void {
if (row.metadata.message && row.metadata.message.length < MESSAGE_ELLIPSIS_LENGTH) return; if (row.metadata.message && row.metadata.message.length < MESSAGE_ELLIPSIS_LENGTH) return;
this.queueTable.toggleDetails(row); this.queueTable.toggleDetails(row);
} }
@ -374,8 +374,6 @@ export default class Participants extends Vue {
<!-- Add "scoped" attribute to limit CSS to this component only --> <!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables.scss";
section { section {
padding: 1rem 0; padding: 1rem 0;
} }

View File

@ -546,8 +546,6 @@ export default class Group extends mixins(GroupMixin) {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables.scss";
div.container { div.container {
background: white; background: white;
margin-bottom: 3rem; margin-bottom: 3rem;

View File

@ -120,8 +120,6 @@ export default class MyEvents extends Vue {
<!-- Add "scoped" attribute to limit CSS to this component only --> <!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables";
main > .container { main > .container {
background: $white; background: $white;
} }

View File

@ -338,8 +338,6 @@ export default class Home extends Vue {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/variables.scss";
main > div > .container { main > div > .container {
background: $white; background: $white;
} }

View File

@ -58,8 +58,6 @@ export default class Interact extends Vue {
} }
</script> </script>
<style lang="scss"> <style lang="scss">
@import "@/variables.scss";
main > .container { main > .container {
background: $white; background: $white;
} }

View File

@ -443,8 +443,6 @@ export default class Report extends Vue {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/variables.scss";
tbody td img.image, tbody td img.image,
.note img.image { .note img.image {
display: inline; display: inline;

View File

@ -129,8 +129,6 @@ export default class Post extends Vue {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables.scss";
article { article {
section.heading-section { section.heading-section {
text-align: center; text-align: center;

View File

@ -366,8 +366,6 @@ export default class Search extends Vue {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@import "@/variables.scss";
main > .container { main > .container {
background: $white; background: $white;

View File

@ -323,8 +323,6 @@ export default class AccountSettings extends Vue {
} }
</script> </script>
<style lang="scss"> <style lang="scss">
@import "@/variables.scss";
.setting-title { .setting-title {
margin-top: 2rem; margin-top: 2rem;
margin-bottom: 1rem; margin-bottom: 1rem;

View File

@ -155,8 +155,6 @@ export default class Notifications extends Vue {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables.scss";
.field { .field {
&:not(:last-child) { &:not(:last-child) {
margin-bottom: 1.5rem; margin-bottom: 1.5rem;

View File

@ -17,7 +17,7 @@
v-model="$i18n.locale" v-model="$i18n.locale"
:placeholder="$t('Select a language')" :placeholder="$t('Select a language')"
> >
<option v-for="(language, lang) in languages" :value="lang" :key="lang"> <option v-for="(language, lang) in langs" :value="lang" :key="lang">
{{ language }} {{ language }}
</option> </option>
</b-select> </b-select>
@ -73,8 +73,10 @@ export default class Preferences extends Vue {
RouteName = RouteName; RouteName = RouteName;
langs: Record<string, string> = langs;
@Watch("loggedUser") @Watch("loggedUser")
setSavedTimezone(loggedUser: IUser) { setSavedTimezone(loggedUser: IUser): void {
if (loggedUser && loggedUser.settings.timezone) { if (loggedUser && loggedUser.settings.timezone) {
this.selectedTimezone = loggedUser.settings.timezone; this.selectedTimezone = loggedUser.settings.timezone;
} else { } else {
@ -87,22 +89,24 @@ export default class Preferences extends Vue {
} }
} }
// eslint-disable-next-line class-methods-use-this
sanitize(timezone: string): string { sanitize(timezone: string): string {
return timezone.split("_").join(" ").replace("St ", "St. ").split("/").join(" - "); return timezone.split("_").join(" ").replace("St ", "St. ").split("/").join(" - ");
} }
get timezones() { get timezones(): Record<string, string[]> {
if (!this.config || !this.config.timezones) return {}; if (!this.config || !this.config.timezones) return {};
return this.config.timezones.reduce((acc: { [key: string]: Array<string> }, val: string) => { return this.config.timezones.reduce((acc: { [key: string]: Array<string> }, val: string) => {
const components = val.split("/"); const components = val.split("/");
const [prefix, suffix] = [components.shift() as string, components.join("/")]; const [prefix, suffix] = [components.shift() as string, components.join("/")];
const pushOrCreate = ( const pushOrCreate = (
acc: { [key: string]: Array<string> }, acc2: { [key: string]: Array<string> },
prefix: string, prefix2: string,
suffix: string suffix2: string
) => { ) => {
(acc[prefix] = acc[prefix] || []).push(suffix); // eslint-disable-next-line no-param-reassign
return acc; (acc2[prefix2] = acc2[prefix2] || []).push(suffix2);
return acc2;
}; };
if (suffix) { if (suffix) {
return pushOrCreate(acc, prefix, suffix); return pushOrCreate(acc, prefix, suffix);
@ -111,22 +115,8 @@ export default class Preferences extends Vue {
}, {}); }, {});
} }
get languages(): object {
return this.$i18n.availableLocales.reduce((acc: object, lang: string) => {
// @ts-ignore
if (langs[lang]) {
return {
...acc,
// @ts-ignore
[lang]: langs[lang],
};
}
return acc;
}, {} as object);
}
@Watch("selectedTimezone") @Watch("selectedTimezone")
async updateTimezone() { async updateTimezone(): Promise<void> {
if (this.selectedTimezone !== this.loggedUser.settings.timezone) { if (this.selectedTimezone !== this.loggedUser.settings.timezone) {
await this.$apollo.mutate<{ setUserSetting: string }>({ await this.$apollo.mutate<{ setUserSetting: string }>({
mutation: SET_USER_SETTINGS, mutation: SET_USER_SETTINGS,
@ -138,7 +128,7 @@ export default class Preferences extends Vue {
} }
@Watch("$i18n.locale") @Watch("$i18n.locale")
async updateLocale() { async updateLocale(): Promise<void> {
await this.$apollo.mutate({ await this.$apollo.mutate({
mutation: UPDATE_USER_LOCALE, mutation: UPDATE_USER_LOCALE,
variables: { variables: {

View File

@ -212,9 +212,6 @@ export default class Register extends Vue {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../variables";
@import "../../common.scss";
.avatar-enter-active { .avatar-enter-active {
transition: opacity 1s ease; transition: opacity 1s ease;
} }

View File

@ -7,6 +7,7 @@
"importHelpers": true, "importHelpers": true,
"moduleResolution": "node", "moduleResolution": "node",
"experimentalDecorators": true, "experimentalDecorators": true,
"skipLibCheck": true,
"esModuleInterop": true, "esModuleInterop": true,
"allowSyntheticDefaultImports": true, "allowSyntheticDefaultImports": true,
"resolveJsonModule": true, "resolveJsonModule": true,

View File

@ -5,6 +5,7 @@ module.exports = {
runtimeCompiler: true, runtimeCompiler: true,
lintOnSave: true, lintOnSave: true,
filenameHashing: true, filenameHashing: true,
productionSourceMap: false,
outputDir: path.resolve(__dirname, "../priv/static"), outputDir: path.resolve(__dirname, "../priv/static"),
configureWebpack: (config) => { configureWebpack: (config) => {
// Limit the used memory when building // Limit the used memory when building
@ -25,6 +26,17 @@ module.exports = {
config.plugins.push(new ForkTsCheckerWebpackPlugin(forkTsCheckerOptions)); config.plugins.push(new ForkTsCheckerWebpackPlugin(forkTsCheckerOptions));
}, },
chainWebpack: (config) => {
// remove the prefetch plugin
config.plugins.delete("prefetch");
},
css: {
loaderOptions: {
scss: {
additionalData: `@import "@/variables.scss";`,
},
},
},
// configureWebpack: { // configureWebpack: {
// optimization: { // optimization: {
// splitChunks: { // splitChunks: {

View File

@ -1352,11 +1352,6 @@
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
"@types/javascript-time-ago@^2.0.1":
version "2.0.1"
resolved "https://registry.yarnpkg.com/@types/javascript-time-ago/-/javascript-time-ago-2.0.1.tgz#819ec39b467409e2fd6acb42bc53ae7d631bbdb0"
integrity sha512-6QWXsuqzfUMfsg1DTJan/MfUi80LGS1TOohSqxlgpBZEHH344xpl3LzgANTp7PPWf7Z/9S0l14RMQPF0vH7MIg==
"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6":
version "7.0.6" version "7.0.6"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0"
@ -7988,13 +7983,6 @@ javascript-stringify@^2.0.0, javascript-stringify@^2.0.1:
resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.0.1.tgz#6ef358035310e35d667c675ed63d3eb7c1aa19e5" resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.0.1.tgz#6ef358035310e35d667c675ed63d3eb7c1aa19e5"
integrity sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow== integrity sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow==
javascript-time-ago@^2.0.4:
version "2.2.8"
resolved "https://registry.yarnpkg.com/javascript-time-ago/-/javascript-time-ago-2.2.8.tgz#d2821816a648f4659f605e030418af7949f0564e"
integrity sha512-VU2GZ88QYl7zEfnKe2VecnPlXunr1awIAf21S13CRUUYlk6cVbmA81GApMXHIbDUfYfsJVcPjjB76KLEPO4fGA==
dependencies:
relative-time-format "^1.0.5"
jest-worker@^25.4.0: jest-worker@^25.4.0:
version "25.5.0" version "25.5.0"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1"
@ -11941,11 +11929,6 @@ relateurl@0.2.x:
resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
relative-time-format@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/relative-time-format/-/relative-time-format-1.0.5.tgz#3fb7c76ae39156afe0a3a7ff0cb7bf30aa0f0fb6"
integrity sha512-MAgx/YKcUQYJpIaWcfetPstElnWf26JxVis4PirdwVrrymFdbxyCSm6yENpfB1YuwFbtHSHksN3aBajVNxk10Q==
remark-parse@^7.0.0: remark-parse@^7.0.0:
version "7.0.2" version "7.0.2"
resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-7.0.2.tgz#41e7170d9c1d96c3d32cf1109600a9ed50dba7cf" resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-7.0.2.tgz#41e7170d9c1d96c3d32cf1109600a9ed50dba7cf"

View File

@ -17,8 +17,8 @@ defmodule Mobilizon.GraphQL.Schema.PostType do
field(:attributed_to, :actor, description: "The post's group") field(:attributed_to, :actor, description: "The post's group")
field(:visibility, :post_visibility, description: "The post's visibility") field(:visibility, :post_visibility, description: "The post's visibility")
field(:publish_at, :datetime, description: "When the post was published") field(:publish_at, :datetime, description: "When the post was published")
field(:inserted_at, :naive_datetime, description: "The post's creation date") field(:inserted_at, :datetime, description: "The post's creation date")
field(:updated_at, :naive_datetime, description: "The post's last update date") field(:updated_at, :datetime, description: "The post's last update date")
field(:tags, list_of(:tag), field(:tags, list_of(:tag),
resolve: &Tag.list_tags_for_post/3, resolve: &Tag.list_tags_for_post/3,

View File

@ -1643,12 +1643,17 @@ defmodule Mobilizon.Events do
where(query, [q], q.local == true) where(query, [q], q.local == true)
end end
@spec filter_local_or_from_followed_instances_events(Ecto.Query.t()) :: Ecto.Query.t() @spec filter_local_or_from_followed_instances_events(Ecto.Query.t()) ::
Ecto.Query.t()
defp filter_local_or_from_followed_instances_events(query) do defp filter_local_or_from_followed_instances_events(query) do
from(q in query, follower_actor_id = Mobilizon.Config.relay_actor_id()
left_join: s in Share,
on: s.uri == q.url, query
where: q.local == true or not is_nil(s.uri) |> join(:left, [q], s in Share, on: s.uri == q.url)
|> join(:left, [_q, ..., s], f in Follower, on: f.target_actor_id == s.actor_id)
|> where(
[q, ..., s, f],
q.local == true or (f.actor_id == ^follower_actor_id and not is_nil(s.uri))
) )
end end

View File

@ -61,7 +61,7 @@ defmodule Mobilizon.Posts.Post do
belongs_to(:picture, Picture, on_replace: :update) belongs_to(:picture, Picture, on_replace: :update)
many_to_many(:tags, Tag, join_through: "posts_tags", on_replace: :delete) many_to_many(:tags, Tag, join_through: "posts_tags", on_replace: :delete)
timestamps() timestamps(type: :utc_datetime)
end end
@required_attrs [ @required_attrs [

View File

@ -42,7 +42,7 @@
<tr> <tr>
<td bgcolor="#ffffff" align="left" style="padding: 20px 30px 0px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" > <td bgcolor="#ffffff" align="left" style="padding: 20px 30px 0px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" >
<p style="margin: 0;"> <p style="margin: 0;">
<%= gettext("Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too.") %> <%= gettext("Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too.", name: @follower.name, domain: @follower.domain) %>
</p> </p>
</td> </td>
</tr> </tr>

View File

@ -139,13 +139,13 @@ msgid "Current profile is not an administrator of the selected group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:514 #: lib/graphql/resolvers/user.ex:512
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248 #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80 #: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "" msgstr ""
@ -154,11 +154,6 @@ msgstr ""
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/group.ex:41 lib/graphql/resolvers/group.ex:55
msgid "Group with name %{name} not found"
msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
@ -254,7 +249,7 @@ msgid "User already disabled"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:489 #: lib/graphql/resolvers/user.ex:487
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "" msgstr ""
@ -829,7 +824,7 @@ msgid "Resource not found"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "" msgstr ""

View File

@ -113,13 +113,13 @@ msgid "Current profile is not an administrator of the selected group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:514 #: lib/graphql/resolvers/user.ex:512
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248 #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80 #: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "" msgstr ""
@ -128,11 +128,6 @@ msgstr ""
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/group.ex:41 lib/graphql/resolvers/group.ex:55
msgid "Group with name %{name} not found"
msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
@ -228,7 +223,7 @@ msgid "User already disabled"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:489 #: lib/graphql/resolvers/user.ex:487
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "" msgstr ""
@ -803,7 +798,7 @@ msgid "Resource not found"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "" msgstr ""

View File

@ -107,13 +107,13 @@ msgid "Current profile is not an administrator of the selected group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:514 #: lib/graphql/resolvers/user.ex:512
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248 #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80 #: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "" msgstr ""
@ -122,11 +122,6 @@ msgstr ""
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/group.ex:41 lib/graphql/resolvers/group.ex:55
msgid "Group with name %{name} not found"
msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
@ -222,7 +217,7 @@ msgid "User already disabled"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:489 #: lib/graphql/resolvers/user.ex:487
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "" msgstr ""
@ -797,7 +792,7 @@ msgid "Resource not found"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "" msgstr ""

View File

@ -113,13 +113,13 @@ msgid "Current profile is not an administrator of the selected group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:514 #: lib/graphql/resolvers/user.ex:512
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248 #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80 #: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "" msgstr ""
@ -128,11 +128,6 @@ msgstr ""
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/group.ex:41 lib/graphql/resolvers/group.ex:55
msgid "Group with name %{name} not found"
msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
@ -228,7 +223,7 @@ msgid "User already disabled"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:489 #: lib/graphql/resolvers/user.ex:487
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "" msgstr ""
@ -803,7 +798,7 @@ msgid "Resource not found"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "" msgstr ""

View File

@ -107,13 +107,13 @@ msgid "Current profile is not an administrator of the selected group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:514 #: lib/graphql/resolvers/user.ex:512
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248 #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80 #: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "" msgstr ""
@ -122,11 +122,6 @@ msgstr ""
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/group.ex:41 lib/graphql/resolvers/group.ex:55
msgid "Group with name %{name} not found"
msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
@ -222,7 +217,7 @@ msgid "User already disabled"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:489 #: lib/graphql/resolvers/user.ex:487
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "" msgstr ""
@ -797,7 +792,7 @@ msgid "Resource not found"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "" msgstr ""

View File

@ -117,13 +117,13 @@ msgid "Current profile is not an administrator of the selected group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:514 #: lib/graphql/resolvers/user.ex:512
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248 #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80 #: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "" msgstr ""
@ -132,11 +132,6 @@ msgstr ""
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/group.ex:41 lib/graphql/resolvers/group.ex:55
msgid "Group with name %{name} not found"
msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
@ -232,7 +227,7 @@ msgid "User already disabled"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:489 #: lib/graphql/resolvers/user.ex:487
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "" msgstr ""
@ -807,7 +802,7 @@ msgid "Resource not found"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "" msgstr ""

View File

@ -114,13 +114,13 @@ msgid "Current profile is not an administrator of the selected group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:514 #: lib/graphql/resolvers/user.ex:512
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248 #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80 #: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "" msgstr ""
@ -129,11 +129,6 @@ msgstr ""
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/group.ex:41 lib/graphql/resolvers/group.ex:55
msgid "Group with name %{name} not found"
msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
@ -229,7 +224,7 @@ msgid "User already disabled"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:489 #: lib/graphql/resolvers/user.ex:487
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "" msgstr ""
@ -804,7 +799,7 @@ msgid "Resource not found"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "" msgstr ""

File diff suppressed because it is too large Load Diff

View File

@ -93,75 +93,71 @@ msgstr "debe ser mayor o igual que% {number}"
msgid "must be equal to %{number}" msgid "must be equal to %{number}"
msgstr "debe ser igual a% {number}" msgstr "debe ser igual a% {number}"
#: lib/graphql/resolvers/user.ex:103
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:103
msgid "Cannot refresh the token" msgid "Cannot refresh the token"
msgstr "No se puede actualizar el token" msgstr "No se puede actualizar el token"
#: lib/graphql/resolvers/group.ex:139
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:139
msgid "Creator profile is not owned by the current user" msgid "Creator profile is not owned by the current user"
msgstr "El perfil del creador no es propiedad del usuario actual" msgstr "El perfil del creador no es propiedad del usuario actual"
#: lib/graphql/resolvers/group.ex:203
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:203
msgid "Current profile is not a member of this group" msgid "Current profile is not a member of this group"
msgstr "El perfil actual no es miembro de este grupo" msgstr "El perfil actual no es miembro de este grupo"
#: lib/graphql/resolvers/group.ex:207
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:207
msgid "Current profile is not an administrator of the selected group" msgid "Current profile is not an administrator of the selected group"
msgstr "El perfil actual no es un administrador del grupo seleccionado" msgstr "El perfil actual no es un administrador del grupo seleccionado"
#: lib/graphql/resolvers/user.ex:514
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:512
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "Error al guardar los parámetros del usuario" msgstr "Error al guardar los parámetros del usuario"
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "Grupo no encontrado" msgstr "Grupo no encontrado"
#: lib/graphql/resolvers/group.ex:69
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:69
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "No se encontró el grupo con ID% {id}" msgstr "No se encontró el grupo con ID% {id}"
#: lib/graphql/resolvers/group.ex:41 lib/graphql/resolvers/group.ex:55
#, elixir-format #, elixir-format
msgid "Group with name %{name} not found"
msgstr "No se encontró el grupo con el nombre% {name}"
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
#, elixir-format
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
msgstr "" msgstr ""
"Imposible autenticarse, su correo electrónico o contraseña no son válidos." "Imposible autenticarse, su correo electrónico o contraseña no son válidos."
#: lib/graphql/resolvers/group.ex:280
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:280
msgid "Member not found" msgid "Member not found"
msgstr "Miembro no encontrado" msgstr "Miembro no encontrado"
#, elixir-format
#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 #: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88
#: lib/graphql/resolvers/user.ex:417 #: lib/graphql/resolvers/user.ex:417
#, elixir-format
msgid "No profile found for the moderator user" msgid "No profile found for the moderator user"
msgstr "No se encontró el perfil del usuario moderador" msgstr "No se encontró el perfil del usuario moderador"
#: lib/graphql/resolvers/user.ex:195
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:195
msgid "No user to validate with this email was found" msgid "No user to validate with this email was found"
msgstr "No se encontró ningún usuario para validar con este correo electrónico" msgstr "No se encontró ningún usuario para validar con este correo electrónico"
#, elixir-format
#: lib/graphql/resolvers/person.ex:232 lib/graphql/resolvers/user.ex:76 #: lib/graphql/resolvers/person.ex:232 lib/graphql/resolvers/user.ex:76
#: lib/graphql/resolvers/user.ex:219 #: lib/graphql/resolvers/user.ex:219
#, elixir-format
msgid "No user with this email was found" msgid "No user with this email was found"
msgstr "No se encontró ningún usuario con este correo electrónico" msgstr "No se encontró ningún usuario con este correo electrónico"
#, elixir-format
#: lib/graphql/resolvers/comment.ex:50 lib/graphql/resolvers/comment.ex:112 #: lib/graphql/resolvers/comment.ex:50 lib/graphql/resolvers/comment.ex:112
#: lib/graphql/resolvers/event.ex:286 lib/graphql/resolvers/feed_token.ex:28 lib/graphql/resolvers/group.ex:245 #: lib/graphql/resolvers/event.ex:286 lib/graphql/resolvers/feed_token.ex:28 lib/graphql/resolvers/group.ex:245
#: lib/graphql/resolvers/member.ex:77 lib/graphql/resolvers/participant.ex:29 #: lib/graphql/resolvers/member.ex:77 lib/graphql/resolvers/participant.ex:29
@ -169,707 +165,706 @@ msgstr "No se encontró ningún usuario con este correo electrónico"
#: lib/graphql/resolvers/person.ex:191 lib/graphql/resolvers/person.ex:256 lib/graphql/resolvers/person.ex:288 #: lib/graphql/resolvers/person.ex:191 lib/graphql/resolvers/person.ex:256 lib/graphql/resolvers/person.ex:288
#: lib/graphql/resolvers/person.ex:301 lib/graphql/resolvers/picture.ex:75 lib/graphql/resolvers/report.ex:110 #: lib/graphql/resolvers/person.ex:301 lib/graphql/resolvers/picture.ex:75 lib/graphql/resolvers/report.ex:110
#: lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:57
#, elixir-format
msgid "Profile is not owned by authenticated user" msgid "Profile is not owned by authenticated user"
msgstr "El perfil no es propiedad del usuario autenticado" msgstr "El perfil no es propiedad del usuario autenticado"
#: lib/graphql/resolvers/user.ex:125
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:125
msgid "Registrations are not open" msgid "Registrations are not open"
msgstr "Las inscripciones no están abiertas" msgstr "Las inscripciones no están abiertas"
#: lib/graphql/resolvers/user.ex:330
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:330
msgid "The current password is invalid" msgid "The current password is invalid"
msgstr "La contraseña actual no es válida" msgstr "La contraseña actual no es válida"
#: lib/graphql/resolvers/user.ex:382
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:382
msgid "The new email doesn't seem to be valid" msgid "The new email doesn't seem to be valid"
msgstr "El nuevo correo electrónico no parece ser válido" msgstr "El nuevo correo electrónico no parece ser válido"
#: lib/graphql/resolvers/user.ex:379
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:379
msgid "The new email must be different" msgid "The new email must be different"
msgstr "El nuevo correo electrónico debe ser diferente" msgstr "El nuevo correo electrónico debe ser diferente"
#: lib/graphql/resolvers/user.ex:333
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:333
msgid "The new password must be different" msgid "The new password must be different"
msgstr "La nueva contraseña debe ser diferente" msgstr "La nueva contraseña debe ser diferente"
#, elixir-format
#: lib/graphql/resolvers/user.ex:376 lib/graphql/resolvers/user.ex:439 #: lib/graphql/resolvers/user.ex:376 lib/graphql/resolvers/user.ex:439
#: lib/graphql/resolvers/user.ex:442 #: lib/graphql/resolvers/user.ex:442
#, elixir-format
msgid "The password provided is invalid" msgid "The password provided is invalid"
msgstr "La contraseña proporcionada no es válida" msgstr "La contraseña proporcionada no es válida"
#: lib/graphql/resolvers/user.ex:337
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:337
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 ""
"La contraseña que ha elegido es demasiado corta. Asegúrese de que su " "La contraseña que ha elegido es demasiado corta. Asegúrese de que su "
"contraseña contenga al menos 6 caracteres." "contraseña contenga al menos 6 caracteres."
#: lib/graphql/resolvers/user.ex:215
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:215
msgid "This user can't reset their password" msgid "This user can't reset their password"
msgstr "Este usuario no puede restablecer su contraseña" msgstr "Este usuario no puede restablecer su contraseña"
#: lib/graphql/resolvers/user.ex:79
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:79
msgid "This user has been disabled" msgid "This user has been disabled"
msgstr "Este usuario ha sido inhabilitado" msgstr "Este usuario ha sido inhabilitado"
#: lib/graphql/resolvers/user.ex:179
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:179
msgid "Unable to validate user" msgid "Unable to validate user"
msgstr "No se puede validar al usuario" msgstr "No se puede validar al usuario"
#: lib/graphql/resolvers/user.ex:420
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:420
msgid "User already disabled" msgid "User already disabled"
msgstr "El usuario ya está inhabilitado" msgstr "El usuario ya está inhabilitado"
#: lib/graphql/resolvers/user.ex:489
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:487
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "El usuario solicitado no ha iniciado sesión" msgstr "El usuario solicitado no ha iniciado sesión"
#: lib/graphql/resolvers/group.ex:254
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:254
msgid "You are already a member of this group" msgid "You are already a member of this group"
msgstr "Ya eres miembro de este grupo" msgstr "Ya eres miembro de este grupo"
#: lib/graphql/resolvers/group.ex:287
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:287
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 "No puedes dejar este grupo porque eres el único administrador" msgstr "No puedes dejar este grupo porque eres el único administrador"
#: lib/graphql/resolvers/group.ex:251
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:251
msgid "You cannot join this group" msgid "You cannot join this group"
msgstr "No puedes unirte a este grupo" msgstr "No puedes unirte a este grupo"
#: lib/graphql/resolvers/group.ex:97
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:97
msgid "You may not list groups unless moderator." msgid "You may not list groups unless moderator."
msgstr "No puedes enumerar grupos a menos que seas moderador." msgstr "No puedes enumerar grupos a menos que seas moderador."
#: lib/graphql/resolvers/user.ex:387
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:387
msgid "You need to be logged-in to change your email" msgid "You need to be logged-in to change your email"
msgstr "Debes iniciar sesión para cambiar tu correo electrónico" msgstr "Debes iniciar sesión para cambiar tu correo electrónico"
#: lib/graphql/resolvers/user.ex:345
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:345
msgid "You need to be logged-in to change your password" msgid "You need to be logged-in to change your password"
msgstr "Debes iniciar sesión para cambiar tu contraseña" msgstr "Debes iniciar sesión para cambiar tu contraseña"
#: lib/graphql/resolvers/group.ex:212
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:212
msgid "You need to be logged-in to delete a group" msgid "You need to be logged-in to delete a group"
msgstr "Debes iniciar sesión para eliminar un grupo" msgstr "Debes iniciar sesión para eliminar un grupo"
#: lib/graphql/resolvers/user.ex:447
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:447
msgid "You need to be logged-in to delete your account" msgid "You need to be logged-in to delete your account"
msgstr "Debes iniciar sesión para eliminar su cuenta" msgstr "Debes iniciar sesión para eliminar su cuenta"
#: lib/graphql/resolvers/group.ex:259
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:259
msgid "You need to be logged-in to join a group" msgid "You need to be logged-in to join a group"
msgstr "Debes iniciar sesión para eliminar su cuenta" msgstr "Debes iniciar sesión para eliminar su cuenta"
#: lib/graphql/resolvers/group.ex:292
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:292
msgid "You need to be logged-in to leave a group" msgid "You need to be logged-in to leave a group"
msgstr "Debes iniciar sesión para dejar un grupo" msgstr "Debes iniciar sesión para dejar un grupo"
#: lib/graphql/resolvers/group.ex:177
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:177
msgid "You need to be logged-in to update a group" msgid "You need to be logged-in to update a group"
msgstr "Debes iniciar sesión para actualizar un grupo" msgstr "Debes iniciar sesión para actualizar un grupo"
#: lib/graphql/resolvers/user.ex:58
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:58
msgid "You need to have admin access to list users" msgid "You need to have admin access to list users"
msgstr "Necesitas tener acceso de administrador para listar usuarios" msgstr "Necesitas tener acceso de administrador para listar usuarios"
#: lib/graphql/resolvers/user.ex:108
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:108
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 "Debes tener un token existente para obtener un token de actualización" msgstr "Debes tener un token existente para obtener un token de actualización"
#: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222
msgid "You requested again a confirmation email too soon" msgid "You requested again a confirmation email too soon"
msgstr "" msgstr ""
"Solicitó de nuevo un correo electrónico de confirmación demasiado pronto" "Solicitó de nuevo un correo electrónico de confirmación demasiado pronto"
#: lib/graphql/resolvers/user.ex:128
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:128
msgid "Your email is not on the allowlist" msgid "Your email is not on the allowlist"
msgstr "Tu correo electrónico no está en la lista de permitidos" msgstr "Tu correo electrónico no está en la lista de permitidos"
#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94
msgid "Error while performing background task" msgid "Error while performing background task"
msgstr "Error al realizar la tarea en segundo plano" msgstr "Error al realizar la tarea en segundo plano"
#: lib/graphql/resolvers/actor.ex:27
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/actor.ex:27
msgid "No profile found with this ID" msgid "No profile found with this ID"
msgstr "No se encontró ningún perfil con este ID" msgstr "No se encontró ningún perfil con este ID"
#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91
msgid "No remote profile found with this ID" msgid "No remote profile found with this ID"
msgstr "No se encontró ningún perfil remoto con este ID" msgstr "No se encontró ningún perfil remoto con este ID"
#: lib/graphql/resolvers/actor.ex:69
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/actor.ex:69
msgid "Only moderators and administrators can suspend a profile" msgid "Only moderators and administrators can suspend a profile"
msgstr "Solo los moderadores y administradores pueden suspender un perfil" msgstr "Solo los moderadores y administradores pueden suspender un perfil"
#: lib/graphql/resolvers/actor.ex:99
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/actor.ex:99
msgid "Only moderators and administrators can unsuspend a profile" msgid "Only moderators and administrators can unsuspend a profile"
msgstr "" msgstr ""
"Solo los moderadores y administradores pueden anular la suspensión de un " "Solo los moderadores y administradores pueden anular la suspensión de un "
"perfil" "perfil"
#: lib/graphql/resolvers/actor.ex:24
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/actor.ex:24
msgid "Only remote profiles may be refreshed" msgid "Only remote profiles may be refreshed"
msgstr "Solo se pueden actualizar los perfiles remotos" msgstr "Solo se pueden actualizar los perfiles remotos"
#: lib/graphql/resolvers/actor.ex:61
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/actor.ex:61
msgid "Profile already suspended" msgid "Profile already suspended"
msgstr "Perfil ya suspendido" msgstr "Perfil ya suspendido"
#: lib/graphql/resolvers/participant.ex:96
#, elixir-format #, elixir-format
#: 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 "Su instancia requiere un correo electrónico válido" msgstr "Su instancia requiere un correo electrónico válido"
#: lib/graphql/resolvers/participant.ex:90
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/participant.ex:90
msgid "Anonymous participation is not enabled" msgid "Anonymous participation is not enabled"
msgstr "La participación anónima no está habilitada" msgstr "La participación anónima no está habilitada"
#: lib/graphql/resolvers/person.ex:188
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/person.ex:188
msgid "Cannot remove the last administrator of a group" msgid "Cannot remove the last administrator of a group"
msgstr "No se puede eliminar al último administrador de un grupo" msgstr "No se puede eliminar al último administrador de un grupo"
#: lib/graphql/resolvers/person.ex:185
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/person.ex:185
msgid "Cannot remove the last identity of a user" msgid "Cannot remove the last identity of a user"
msgstr "No se puede eliminar la última identidad de un usuario" msgstr "No se puede eliminar la última identidad de un usuario"
#: lib/graphql/resolvers/comment.ex:109
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/comment.ex:109
msgid "Comment is already deleted" msgid "Comment is already deleted"
msgstr "El comentario ya está eliminado" msgstr "El comentario ya está eliminado"
#: lib/graphql/resolvers/discussion.ex:61
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/discussion.ex:61
msgid "Discussion not found" msgid "Discussion not found"
msgstr "Discusión no encontrada" msgstr "Discusión no encontrada"
#: lib/graphql/resolvers/report.ex:62 lib/graphql/resolvers/report.ex:87
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/report.ex:62 lib/graphql/resolvers/report.ex:87
msgid "Error while saving report" msgid "Error while saving report"
msgstr "Error al guardar el informe" msgstr "Error al guardar el informe"
#: lib/graphql/resolvers/report.ex:113
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/report.ex:113
msgid "Error while updating report" msgid "Error while updating report"
msgstr "Error al actualizar el informe" msgstr "Error al actualizar el informe"
#: lib/graphql/resolvers/participant.ex:131
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/participant.ex:131
msgid "Event id not found" msgid "Event id not found"
msgstr "ID de evento no encontrado" msgstr "ID de evento no encontrado"
#, elixir-format
#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:238 #: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:238
#: lib/graphql/resolvers/event.ex:283 #: lib/graphql/resolvers/event.ex:283
#, elixir-format
msgid "Event not found" msgid "Event not found"
msgstr "Evento no encontrado" msgstr "Evento no encontrado"
#, elixir-format
#: lib/graphql/resolvers/participant.ex:87 #: lib/graphql/resolvers/participant.ex:87
#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:160 #: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:160
#, elixir-format
msgid "Event with this ID %{id} doesn't exist" msgid "Event with this ID %{id} doesn't exist"
msgstr "El evento con este ID%{id} no existe" msgstr "El evento con este ID%{id} no existe"
#: lib/graphql/resolvers/participant.ex:103
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/participant.ex:103
msgid "Internal Error" msgid "Internal Error"
msgstr "Error interno" msgstr "Error interno"
#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234
msgid "Moderator profile is not owned by authenticated user" msgid "Moderator profile is not owned by authenticated user"
msgstr "El perfil del moderador no es propiedad del usuario autenticado" msgstr "El perfil del moderador no es propiedad del usuario autenticado"
#: lib/graphql/resolvers/discussion.ex:181
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/discussion.ex:181
msgid "No discussion with ID %{id}" msgid "No discussion with ID %{id}"
msgstr "Sin discusión con ID%{id}" msgstr "Sin discusión con ID%{id}"
#: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:171
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:171
msgid "No profile found for user" msgid "No profile found for user"
msgstr "No se encontró perfil para el usuario" msgstr "No se encontró perfil para el usuario"
#: lib/graphql/resolvers/feed_token.ex:66
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/feed_token.ex:66
msgid "No such feed token" msgid "No such feed token"
msgstr "No existe tal token de alimentación" msgstr "No existe tal token de alimentación"
#: lib/graphql/resolvers/resource.ex:87
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/resource.ex:87
msgid "No such resource" msgid "No such resource"
msgstr "No existe tal recurso" msgstr "No existe tal recurso"
#: lib/graphql/resolvers/event.ex:202
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/event.ex:202
msgid "Organizer profile is not owned by the user" msgid "Organizer profile is not owned by the user"
msgstr "El perfil del organizador no es propiedad del usuario" msgstr "El perfil del organizador no es propiedad del usuario"
#: lib/graphql/resolvers/participant.ex:244
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/participant.ex:244
msgid "Participant already has role %{role}" msgid "Participant already has role %{role}"
msgstr "El participante ya tiene el rol%{role}" msgstr "El participante ya tiene el rol%{role}"
#, elixir-format
#: lib/graphql/resolvers/participant.ex:173 #: lib/graphql/resolvers/participant.ex:173
#: lib/graphql/resolvers/participant.ex:202 lib/graphql/resolvers/participant.ex:237 #: lib/graphql/resolvers/participant.ex:202 lib/graphql/resolvers/participant.ex:237
#: lib/graphql/resolvers/participant.ex:247 #: lib/graphql/resolvers/participant.ex:247
#, elixir-format
msgid "Participant not found" msgid "Participant not found"
msgstr "Participante no encontrado" msgstr "Participante no encontrado"
#: lib/graphql/resolvers/person.ex:31
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/person.ex:31
msgid "Person with ID %{id} not found" msgid "Person with ID %{id} not found"
msgstr "Persona con ID%{id} no encontrada" msgstr "Persona con ID%{id} no encontrada"
#: lib/graphql/resolvers/person.ex:52
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found" msgid "Person with username %{username} not found"
msgstr "Persona con nombre de usuario %{username} no encontrada" msgstr "Persona con nombre de usuario %{username} no encontrada"
#: lib/graphql/resolvers/picture.ex:45
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/picture.ex:45
msgid "Picture with ID %{id} was not found" msgid "Picture with ID %{id} was not found"
msgstr "No se encontró la foto con ID %{id}" msgstr "No se encontró la foto con ID %{id}"
#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198
msgid "Post ID is not a valid ID" msgid "Post ID is not a valid ID"
msgstr "La ID de publicación no es válida" msgstr "La ID de publicación no es válida"
#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201
msgid "Post doesn't exist" msgid "Post doesn't exist"
msgstr "La publicación no existe" msgstr "La publicación no existe"
#: lib/graphql/resolvers/member.ex:83
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:83
msgid "Profile invited doesn't exist" msgid "Profile invited doesn't exist"
msgstr "El perfil invitado no existe" msgstr "El perfil invitado no existe"
#: lib/graphql/resolvers/member.ex:92
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:92
msgid "Profile is already a member of this group" msgid "Profile is already a member of this group"
msgstr "Perfil ya es miembro de este grupo" msgstr "Perfil ya es miembro de este grupo"
#, elixir-format
#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 #: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171
#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:86 lib/graphql/resolvers/resource.ex:123 #: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:86 lib/graphql/resolvers/resource.ex:123
#: lib/graphql/resolvers/resource.ex:152 lib/graphql/resolvers/resource.ex:181 lib/graphql/resolvers/todos.ex:60 #: lib/graphql/resolvers/resource.ex:152 lib/graphql/resolvers/resource.ex:181 lib/graphql/resolvers/todos.ex:60
#: lib/graphql/resolvers/todos.ex:84 lib/graphql/resolvers/todos.ex:102 lib/graphql/resolvers/todos.ex:174 #: lib/graphql/resolvers/todos.ex:84 lib/graphql/resolvers/todos.ex:102 lib/graphql/resolvers/todos.ex:174
#: lib/graphql/resolvers/todos.ex:197 lib/graphql/resolvers/todos.ex:225 #: lib/graphql/resolvers/todos.ex:197 lib/graphql/resolvers/todos.ex:225
#, elixir-format
msgid "Profile is not member of group" msgid "Profile is not member of group"
msgstr "El perfil no es miembro del grupo" msgstr "El perfil no es miembro del grupo"
#: lib/graphql/resolvers/person.ex:154 lib/graphql/resolvers/person.ex:182
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/person.ex:154 lib/graphql/resolvers/person.ex:182
msgid "Profile not found" msgid "Profile not found"
msgstr "Perfil no encontrado" msgstr "Perfil no encontrado"
#: lib/graphql/resolvers/event.ex:104 lib/graphql/resolvers/participant.ex:241
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/event.ex:104 lib/graphql/resolvers/participant.ex:241
msgid "Provided moderator profile doesn't have permission on this event" msgid "Provided moderator profile doesn't have permission on this event"
msgstr "El perfil de moderador proporcionado no tiene permiso para este evento" msgstr "El perfil de moderador proporcionado no tiene permiso para este evento"
#: lib/graphql/resolvers/report.ex:38
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/report.ex:38
msgid "Report not found" msgid "Report not found"
msgstr "Informe no encontrado" msgstr "Informe no encontrado"
#: lib/graphql/resolvers/resource.ex:149 lib/graphql/resolvers/resource.ex:178
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/resource.ex:149 lib/graphql/resolvers/resource.ex:178
msgid "Resource doesn't exist" msgid "Resource doesn't exist"
msgstr "El recurso no existe" msgstr "El recurso no existe"
#: lib/graphql/resolvers/participant.ex:124
#, elixir-format #, elixir-format
#: 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 "El evento ya alcanzó su capacidad máxima" msgstr "El evento ya alcanzó su capacidad máxima"
#: lib/graphql/resolvers/participant.ex:267
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/participant.ex:267
msgid "This token is invalid" msgid "This token is invalid"
msgstr "Este token no es válido" msgstr "Este token no es válido"
#: lib/graphql/resolvers/todos.ex:168 lib/graphql/resolvers/todos.ex:222
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/todos.ex:168 lib/graphql/resolvers/todos.ex:222
msgid "Todo doesn't exist" msgid "Todo doesn't exist"
msgstr "Todo no existe" msgstr "Todo no existe"
#, elixir-format
#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:194 #: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:194
#: lib/graphql/resolvers/todos.ex:219 #: lib/graphql/resolvers/todos.ex:219
#, elixir-format
msgid "Todo list doesn't exist" msgid "Todo list doesn't exist"
msgstr "La lista de tareas pendientes no existe" msgstr "La lista de tareas pendientes no existe"
#: lib/graphql/resolvers/feed_token.ex:72
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/feed_token.ex:72
msgid "Token does not exist" msgid "Token does not exist"
msgstr "El token no existe" msgstr "El token no existe"
#: lib/graphql/resolvers/feed_token.ex:69
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/feed_token.ex:69
msgid "Token is not a valid UUID" msgid "Token is not a valid UUID"
msgstr "El token no es un UUID válido" msgstr "El token no es un UUID válido"
#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:323
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:323
msgid "User not found" msgid "User not found"
msgstr "Usuario no encontrado" msgstr "Usuario no encontrado"
#: lib/graphql/resolvers/person.ex:235
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/person.ex:235
msgid "You already have a profile for this user" msgid "You already have a profile for this user"
msgstr "Ya tienes un perfil para este usuario" msgstr "Ya tienes un perfil para este usuario"
#: lib/graphql/resolvers/participant.ex:134
#, elixir-format #, elixir-format
#: 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 "Ya eres participante de este evento" msgstr "Ya eres participante de este evento"
#: lib/graphql/resolvers/discussion.ex:185
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/discussion.ex:185
msgid "You are not a member of the group the discussion belongs to" msgid "You are not a member of the group the discussion belongs to"
msgstr "No eres miembro del grupo al que pertenece la discusión" msgstr "No eres miembro del grupo al que pertenece la discusión"
#: lib/graphql/resolvers/member.ex:86
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:86
msgid "You are not a member of this group" 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"
#: lib/graphql/resolvers/member.ex:143
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:143
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"
#: lib/graphql/resolvers/comment.ex:55
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/comment.ex:55
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 "No está permitido crear un comentario si no está conectado" msgstr "No está permitido crear un comentario si no está conectado"
#: lib/graphql/resolvers/feed_token.ex:44
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/feed_token.ex:44
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 "No puede crear un token de feed si no está conectado" msgstr "No puede crear un token de feed si no está conectado"
#: lib/graphql/resolvers/comment.ex:117
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/comment.ex:117
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 "No puede eliminar un comentario si no está conectado" msgstr "No puede eliminar un comentario si no está conectado"
#: lib/graphql/resolvers/feed_token.ex:81
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/feed_token.ex:81
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 "No puede eliminar un token de feed si no está conectado" msgstr "No puede eliminar un token de feed si no está conectado"
#: lib/graphql/resolvers/comment.ex:77
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/comment.ex:77
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 "No se le permite actualizar un comentario si no está conectado" msgstr "No se le permite actualizar un comentario si no está conectado"
#, elixir-format
#: lib/graphql/resolvers/participant.ex:167 #: lib/graphql/resolvers/participant.ex:167
#: lib/graphql/resolvers/participant.ex:196 #: lib/graphql/resolvers/participant.ex:196
#, elixir-format
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 "" msgstr ""
"No puedes abandonar el evento porque eres el único participante creador del " "No puedes abandonar el evento porque eres el único participante creador del "
"evento" "evento"
#: lib/graphql/resolvers/member.ex:147
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:147
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 "
"es el único administrador" "es el único administrador"
#: lib/graphql/resolvers/comment.ex:105
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/comment.ex:105
msgid "You cannot delete this comment" msgid "You cannot delete this comment"
msgstr "No puedes borrar este comentario" msgstr "No puedes borrar este comentario"
#: lib/graphql/resolvers/event.ex:279
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/event.ex:279
msgid "You cannot delete this event" msgid "You cannot delete this event"
msgstr "No puedes borrar este evento" msgstr "No puedes borrar este evento"
#: lib/graphql/resolvers/member.ex:89
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:89
msgid "You cannot invite to this group" msgid "You cannot invite to this group"
msgstr "No puedes invitar a este grupo" msgstr "No puedes invitar a este grupo"
#: lib/graphql/resolvers/feed_token.ex:75
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/feed_token.ex:75
msgid "You don't have permission to delete this token" msgid "You don't have permission to delete this token"
msgstr "No tienes permiso para eliminar este token" msgstr "No tienes permiso para eliminar este token"
#: lib/graphql/resolvers/admin.ex:52
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/admin.ex:52
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 "" msgstr ""
"Debe iniciar sesión y un moderador para enumerar los registros de acción" "Debe iniciar sesión y un moderador para enumerar los registros de acción"
#: lib/graphql/resolvers/report.ex:28
#, elixir-format #, elixir-format
#: 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 "Debe iniciar sesión y un moderador para enumerar los informes" msgstr "Debe iniciar sesión y un moderador para enumerar los informes"
#: lib/graphql/resolvers/report.ex:118
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/report.ex:118
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 "Debe iniciar sesión y ser un moderador para actualizar un informe" msgstr "Debe iniciar sesión y ser un moderador para actualizar un informe"
#: lib/graphql/resolvers/report.ex:43
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/report.ex:43
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 "Debe iniciar sesión y ser un moderador para actualizar un informe" msgstr "Debe iniciar sesión y ser un moderador para actualizar un informe"
#: lib/graphql/resolvers/admin.ex:208
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/admin.ex:208
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 "" msgstr ""
"Debe iniciar sesión y ser administrador para acceder a la configuración de " "Debe iniciar sesión y ser administrador para acceder a la configuración de "
"administrador" "administrador"
#: lib/graphql/resolvers/admin.ex:193
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/admin.ex:193
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 "" msgstr ""
"Debe iniciar sesión y ser administrador para acceder a las estadísticas del " "Debe iniciar sesión y ser administrador para acceder a las estadísticas del "
"panel" "panel"
#: lib/graphql/resolvers/admin.ex:232
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/admin.ex:232
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 "" msgstr ""
"Debe iniciar sesión y ser administrador para acceder a las estadísticas del " "Debe iniciar sesión y ser administrador para acceder a las estadísticas del "
"panel" "panel"
#: lib/graphql/resolvers/discussion.ex:66
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/discussion.ex:66
msgid "You need to be logged-in to access discussions" msgid "You need to be logged-in to access discussions"
msgstr "Debe iniciar sesión para acceder a las discusiones" msgstr "Debe iniciar sesión para acceder a las discusiones"
#: lib/graphql/resolvers/resource.ex:92
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/resource.ex:92
msgid "You need to be logged-in to access resources" msgid "You need to be logged-in to access resources"
msgstr "Debes iniciar sesión para acceder a los recursos" msgstr "Debes iniciar sesión para acceder a los recursos"
#: lib/graphql/resolvers/event.ex:213
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/event.ex:213
msgid "You need to be logged-in to create events" msgid "You need to be logged-in to create events"
msgstr "Debes iniciar sesión para crear eventos" msgstr "Debes iniciar sesión para crear eventos"
#: lib/graphql/resolvers/post.ex:139
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/post.ex:139
msgid "You need to be logged-in to create posts" msgid "You need to be logged-in to create posts"
msgstr "Debes iniciar sesión para crear publicaciones" msgstr "Debes iniciar sesión para crear publicaciones"
#: lib/graphql/resolvers/report.ex:81 lib/graphql/resolvers/report.ex:92
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/report.ex:81 lib/graphql/resolvers/report.ex:92
msgid "You need to be logged-in to create reports" msgid "You need to be logged-in to create reports"
msgstr "Debe iniciar sesión para crear informes" msgstr "Debe iniciar sesión para crear informes"
#: lib/graphql/resolvers/resource.ex:128
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/resource.ex:128
msgid "You need to be logged-in to create resources" msgid "You need to be logged-in to create resources"
msgstr "Debe iniciar sesión para crear recursos" msgstr "Debe iniciar sesión para crear recursos"
#: lib/graphql/resolvers/event.ex:291
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/event.ex:291
msgid "You need to be logged-in to delete an event" msgid "You need to be logged-in to delete an event"
msgstr "Debe iniciar sesión para eliminar un evento" msgstr "Debe iniciar sesión para eliminar un evento"
#: lib/graphql/resolvers/post.ex:209
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/post.ex:209
msgid "You need to be logged-in to delete posts" msgid "You need to be logged-in to delete posts"
msgstr "Debes iniciar sesión para eliminar publicaciones" msgstr "Debes iniciar sesión para eliminar publicaciones"
#: lib/graphql/resolvers/resource.ex:186
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/resource.ex:186
msgid "You need to be logged-in to delete resources" msgid "You need to be logged-in to delete resources"
msgstr "Debes iniciar sesión para eliminar recursos" msgstr "Debes iniciar sesión para eliminar recursos"
#: lib/graphql/resolvers/participant.ex:108
#, elixir-format #, elixir-format
#: 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 "Debes iniciar sesión para eliminar recursos" msgstr "Debes iniciar sesión para eliminar recursos"
#: lib/graphql/resolvers/participant.ex:207
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/participant.ex:207
msgid "You need to be logged-in to leave an event" msgid "You need to be logged-in to leave an event"
msgstr "Debes iniciar sesión para salir de un evento" msgstr "Debes iniciar sesión para salir de un evento"
#: lib/graphql/resolvers/event.ex:252
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/event.ex:252
msgid "You need to be logged-in to update an event" msgid "You need to be logged-in to update an event"
msgstr "Debe iniciar sesión para actualizar un evento" msgstr "Debe iniciar sesión para actualizar un evento"
#: lib/graphql/resolvers/post.ex:176
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/post.ex:176
msgid "You need to be logged-in to update posts" msgid "You need to be logged-in to update posts"
msgstr "Debes iniciar sesión para actualizar las publicaciones" msgstr "Debes iniciar sesión para actualizar las publicaciones"
#: lib/graphql/resolvers/resource.ex:157
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/resource.ex:157
msgid "You need to be logged-in to update resources" msgid "You need to be logged-in to update resources"
msgstr "Debes iniciar sesión para actualizar los recursos" msgstr "Debes iniciar sesión para actualizar los recursos"
#: lib/graphql/resolvers/resource.ex:204
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/resource.ex:204
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 "Debe iniciar sesión para ver una vista previa del recurso" msgstr "Debe iniciar sesión para ver una vista previa del recurso"
#: lib/graphql/resolvers/picture.ex:86
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/picture.ex:86
msgid "You need to login to upload a picture" msgid "You need to login to upload a picture"
msgstr "Debes iniciar sesión para subir una imagen" msgstr "Debes iniciar sesión para subir una imagen"
#: lib/graphql/resolvers/report.ex:84
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/report.ex:84
msgid "Reporter ID does not match the anonymous profile id" msgid "Reporter ID does not match the anonymous profile id"
msgstr "" msgstr ""
"La identificación del informante no coincide con la identificación del " "La identificación del informante no coincide con la identificación del "
"perfil anónimo" "perfil anónimo"
#: lib/graphql/resolvers/report.ex:59
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/report.ex:59
msgid "Reporter profile is not owned by authenticated user" msgid "Reporter profile is not owned by authenticated user"
msgstr "El perfil del denunciante no es propiedad de un usuario autenticado" msgstr "El perfil del denunciante no es propiedad de un usuario autenticado"
#: lib/graphql/resolvers/resource.ex:120
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/resource.ex:120
msgid "Parent resource doesn't belong to this group" msgid "Parent resource doesn't belong to this group"
msgstr "El recurso principal no pertenece a este grupo" msgstr "El recurso principal no pertenece a este grupo"
#: lib/graphql/resolvers/participant.ex:93
#, elixir-format #, elixir-format
#: 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 "El ID de perfil proporcionado no es el del perfil anónimo" msgstr "El ID de perfil proporcionado no es el del perfil anónimo"
#: lib/mobilizon/users/user.ex:109
#, elixir-format #, elixir-format
#: lib/mobilizon/users/user.ex:109
msgid "The chosen password is too short." msgid "The chosen password is too short."
msgstr "La contraseña elegida es demasiado corta." msgstr "La contraseña elegida es demasiado corta."
#: lib/mobilizon/users/user.ex:138
#, elixir-format #, elixir-format
#: lib/mobilizon/users/user.ex:138
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 "" msgstr ""
"El token de registro ya está en uso, esto parece un problema de nuestra " "El token de registro ya está en uso, esto parece un problema de nuestra "
"parte." "parte."
#: lib/mobilizon/users/user.ex:104
#, elixir-format #, elixir-format
#: lib/mobilizon/users/user.ex:104
msgid "This email is already used." msgid "This email is already used."
msgstr "Este correo electrónico ya está en uso." msgstr "Este correo electrónico ya está en uso."
#: lib/graphql/error.ex:88
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:88
msgid "Post not found" msgid "Post not found"
msgstr "Informe no encontrado" msgstr "Informe no encontrado"
#: lib/graphql/error.ex:75
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:75
msgid "Invalid arguments passed" msgid "Invalid arguments passed"
msgstr "Se pasaron argumentos no válidos" msgstr "Se pasaron argumentos no válidos"
#: lib/graphql/error.ex:81
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:81
msgid "Invalid credentials" msgid "Invalid credentials"
msgstr "Credenciales no válidas" msgstr "Credenciales no válidas"
#: lib/graphql/error.ex:79
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:79
msgid "Reset your password to login" msgid "Reset your password to login"
msgstr "Restablezca su contraseña para iniciar sesión" msgstr "Restablezca su contraseña para iniciar sesión"
#: lib/graphql/error.ex:86
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:86
msgid "Resource not found" msgid "Resource not found"
msgstr "Recurso no encontrado" msgstr "Recurso no encontrado"
#: lib/graphql/error.ex:90
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "Algo salió mal" msgstr "Algo salió mal"
#: lib/graphql/error.ex:74
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:74
msgid "Unknown Resource" msgid "Unknown Resource"
msgstr "Recurso desconocido" msgstr "Recurso desconocido"
#: lib/graphql/error.ex:84
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:84
msgid "You don't have permission to do this" msgid "You don't have permission to do this"
msgstr "No tienes permiso para hacer esto" msgstr "No tienes permiso para hacer esto"
#: lib/graphql/error.ex:76
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:76
msgid "You need to be logged in" msgid "You need to be logged in"
msgstr "Debes iniciar sesión" msgstr "Debes iniciar sesión"
#: lib/graphql/resolvers/member.ex:112
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:112
msgid "You can't accept this invitation with this profile." msgid "You can't accept this invitation with this profile."
msgstr "No puedes aceptar esta invitación con este perfil." msgstr "No puedes aceptar esta invitación con este perfil."
#: lib/graphql/resolvers/member.ex:129
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/member.ex:129
msgid "You can't reject this invitation with this profile." msgid "You can't reject this invitation with this profile."
msgstr "No puedes rechazar esta invitación con este perfil." msgstr "No puedes rechazar esta invitación con este perfil."
#: lib/graphql/resolvers/picture.ex:78
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/picture.ex:78
msgid "File doesn't have an allowed MIME type." msgid "File doesn't have an allowed MIME type."
msgstr "El archivo no tiene un tipo MIME permitido." msgstr "El archivo no tiene un tipo MIME permitido."
#: lib/graphql/resolvers/group.ex:172
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:172
msgid "Profile is not administrator for the group" msgid "Profile is not administrator for the group"
msgstr "El perfil no es miembro del grupo" msgstr "El perfil no es miembro del grupo"
#: lib/graphql/resolvers/event.ex:241
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/event.ex:241
msgid "You can't edit this event." msgid "You can't edit this event."
msgstr "No puedes borrar este evento." msgstr "No puedes borrar este evento."
#: lib/graphql/resolvers/event.ex:244
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/event.ex:244
msgid "You can't attribute this event to this profile." msgid "You can't attribute this event to this profile."
msgstr "No puedes rechazar esta invitación con este perfil." msgstr "No puedes rechazar esta invitación con este perfil."

View File

@ -114,13 +114,13 @@ msgid "Current profile is not an administrator of the selected group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:514 #: lib/graphql/resolvers/user.ex:512
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248 #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80 #: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "" msgstr ""
@ -129,11 +129,6 @@ msgstr ""
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/group.ex:41 lib/graphql/resolvers/group.ex:55
msgid "Group with name %{name} not found"
msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
@ -229,7 +224,7 @@ msgid "User already disabled"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:489 #: lib/graphql/resolvers/user.ex:487
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "" msgstr ""
@ -804,7 +799,7 @@ msgid "Resource not found"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "" msgstr ""

View File

@ -116,13 +116,13 @@ 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 #, elixir-format
#: lib/graphql/resolvers/user.ex:514 #: lib/graphql/resolvers/user.ex:512
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 #, elixir-format
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248 #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80 #: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "Groupe non trouvé" msgstr "Groupe non trouvé"
@ -131,11 +131,6 @@ msgstr "Groupe non trouvé"
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/group.ex:41 lib/graphql/resolvers/group.ex:55
msgid "Group with name %{name} not found"
msgstr "Groupe avec le nom %{name} non trouvé"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
@ -233,7 +228,7 @@ 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 #, elixir-format
#: lib/graphql/resolvers/user.ex:489 #: lib/graphql/resolvers/user.ex:487
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"
@ -810,7 +805,7 @@ msgid "Resource not found"
msgstr "Ressource non trouvée" msgstr "Ressource non trouvée"
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "Quelque chose s'est mal passé" msgstr "Quelque chose s'est mal passé"

File diff suppressed because it is too large Load Diff

View File

@ -114,13 +114,13 @@ msgid "Current profile is not an administrator of the selected group"
msgstr "Il profilo corrente non è amministratore del gruppo selezionato" msgstr "Il profilo corrente non è amministratore del gruppo selezionato"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:514 #: lib/graphql/resolvers/user.ex:512
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "Errore nel salvare le preferenze utente" msgstr "Errore nel salvare le preferenze utente"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248 #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80 #: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "Gruppo non trovato" msgstr "Gruppo non trovato"
@ -129,11 +129,6 @@ msgstr "Gruppo non trovato"
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "Gruppo con ID %{id} non trovato" msgstr "Gruppo con ID %{id} non trovato"
#, elixir-format
#: lib/graphql/resolvers/group.ex:41 lib/graphql/resolvers/group.ex:55
msgid "Group with name %{name} not found"
msgstr "Gruppo con nome %{name} non trovato"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
@ -229,7 +224,7 @@ msgid "User already disabled"
msgstr "Utente già disabilitato" msgstr "Utente già disabilitato"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:489 #: lib/graphql/resolvers/user.ex:487
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "L'utente richiesto non è loggato" msgstr "L'utente richiesto non è loggato"
@ -804,7 +799,7 @@ msgid "Resource not found"
msgstr "Segnalazione non trovata" msgstr "Segnalazione non trovata"
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "" msgstr ""

View File

@ -101,13 +101,13 @@ msgid "Current profile is not an administrator of the selected group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:514 #: lib/graphql/resolvers/user.ex:512
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248 #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80 #: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "" msgstr ""
@ -116,11 +116,6 @@ msgstr ""
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/group.ex:41 lib/graphql/resolvers/group.ex:55
msgid "Group with name %{name} not found"
msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
@ -216,7 +211,7 @@ msgid "User already disabled"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:489 #: lib/graphql/resolvers/user.ex:487
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "" msgstr ""
@ -791,7 +786,7 @@ msgid "Resource not found"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "" msgstr ""

View File

@ -107,13 +107,13 @@ msgid "Current profile is not an administrator of the selected group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:514 #: lib/graphql/resolvers/user.ex:512
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248 #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80 #: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "" msgstr ""
@ -122,11 +122,6 @@ msgstr ""
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/group.ex:41 lib/graphql/resolvers/group.ex:55
msgid "Group with name %{name} not found"
msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
@ -222,7 +217,7 @@ msgid "User already disabled"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:489 #: lib/graphql/resolvers/user.ex:487
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "" msgstr ""
@ -797,7 +792,7 @@ msgid "Resource not found"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "" msgstr ""

View File

@ -114,13 +114,13 @@ msgid "Current profile is not an administrator of the selected group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:514 #: lib/graphql/resolvers/user.ex:512
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248 #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80 #: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "" msgstr ""
@ -129,11 +129,6 @@ msgstr ""
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/group.ex:41 lib/graphql/resolvers/group.ex:55
msgid "Group with name %{name} not found"
msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
@ -229,7 +224,7 @@ msgid "User already disabled"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:489 #: lib/graphql/resolvers/user.ex:487
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "" msgstr ""
@ -804,7 +799,7 @@ msgid "Resource not found"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "" msgstr ""

View File

@ -121,13 +121,13 @@ msgid "Current profile is not an administrator of the selected group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:514 #: lib/graphql/resolvers/user.ex:512
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248 #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80 #: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "" msgstr ""
@ -136,11 +136,6 @@ msgstr ""
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/group.ex:41 lib/graphql/resolvers/group.ex:55
msgid "Group with name %{name} not found"
msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
@ -236,7 +231,7 @@ msgid "User already disabled"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:489 #: lib/graphql/resolvers/user.ex:487
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "" msgstr ""
@ -811,7 +806,7 @@ msgid "Resource not found"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "" msgstr ""

View File

@ -107,13 +107,13 @@ msgid "Current profile is not an administrator of the selected group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:514 #: lib/graphql/resolvers/user.ex:512
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248 #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80 #: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "" msgstr ""
@ -122,11 +122,6 @@ msgstr ""
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/group.ex:41 lib/graphql/resolvers/group.ex:55
msgid "Group with name %{name} not found"
msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
@ -222,7 +217,7 @@ msgid "User already disabled"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:489 #: lib/graphql/resolvers/user.ex:487
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "" msgstr ""
@ -797,7 +792,7 @@ msgid "Resource not found"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "" msgstr ""

View File

@ -107,13 +107,13 @@ msgid "Current profile is not an administrator of the selected group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:514 #: lib/graphql/resolvers/user.ex:512
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248 #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80 #: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "" msgstr ""
@ -122,11 +122,6 @@ msgstr ""
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/group.ex:41 lib/graphql/resolvers/group.ex:55
msgid "Group with name %{name} not found"
msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
@ -222,7 +217,7 @@ msgid "User already disabled"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:489 #: lib/graphql/resolvers/user.ex:487
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "" msgstr ""
@ -797,7 +792,7 @@ msgid "Resource not found"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "" msgstr ""

View File

@ -113,13 +113,13 @@ msgid "Current profile is not an administrator of the selected group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:514 #: lib/graphql/resolvers/user.ex:512
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248 #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80 #: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "" msgstr ""
@ -128,11 +128,6 @@ msgstr ""
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "" msgstr ""
#, elixir-format
#: lib/graphql/resolvers/group.ex:41 lib/graphql/resolvers/group.ex:55
msgid "Group with name %{name} not found"
msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
@ -228,7 +223,7 @@ msgid "User already disabled"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:489 #: lib/graphql/resolvers/user.ex:487
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "" msgstr ""
@ -803,7 +798,7 @@ msgid "Resource not found"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "" msgstr ""

View File

@ -114,13 +114,13 @@ msgid "Current profile is not an administrator of the selected group"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:514 #: lib/graphql/resolvers/user.ex:512
msgid "Error while saving user settings" msgid "Error while saving user settings"
msgstr "Ett fel uppstod när användarinställningarna skulle sparas" msgstr "Ett fel uppstod när användarinställningarna skulle sparas"
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/group.ex:200 lib/graphql/resolvers/group.ex:248 #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:200
#: lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80 #: lib/graphql/resolvers/group.ex:248 lib/graphql/resolvers/group.ex:283 lib/graphql/resolvers/member.ex:80
msgid "Group not found" msgid "Group not found"
msgstr "Gruppen kunde inte hittas" msgstr "Gruppen kunde inte hittas"
@ -129,11 +129,6 @@ msgstr "Gruppen kunde inte hittas"
msgid "Group with ID %{id} not found" msgid "Group with ID %{id} not found"
msgstr "Gruppen med %{id} kunde inte hittas" msgstr "Gruppen med %{id} kunde inte hittas"
#, elixir-format
#: lib/graphql/resolvers/group.ex:41 lib/graphql/resolvers/group.ex:55
msgid "Group with name %{name} not found"
msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:83 #: lib/graphql/resolvers/user.ex:83
msgid "Impossible to authenticate, either your email or password are invalid." msgid "Impossible to authenticate, either your email or password are invalid."
@ -229,7 +224,7 @@ msgid "User already disabled"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/graphql/resolvers/user.ex:489 #: lib/graphql/resolvers/user.ex:487
msgid "User requested is not logged-in" msgid "User requested is not logged-in"
msgstr "" msgstr ""
@ -804,7 +799,7 @@ msgid "Resource not found"
msgstr "Resursen kunde inte hittas" msgstr "Resursen kunde inte hittas"
#, elixir-format #, elixir-format
#: lib/graphql/error.ex:90 #: lib/graphql/error.ex:91
msgid "Something went wrong" msgid "Something went wrong"
msgstr "" msgstr ""

View File

@ -6,6 +6,7 @@ defmodule Mobilizon.EventsTest do
alias Mobilizon.Actors.Actor alias Mobilizon.Actors.Actor
alias Mobilizon.Events alias Mobilizon.Events
alias Mobilizon.Events.{Event, Participant, Session, Tag, TagRelation, Track} alias Mobilizon.Events.{Event, Participant, Session, Tag, TagRelation, Track}
alias Mobilizon.Federation.ActivityPub.Relay
alias Mobilizon.Service.Workers alias Mobilizon.Service.Workers
alias Mobilizon.Storage.Page alias Mobilizon.Storage.Page
@ -19,10 +20,54 @@ defmodule Mobilizon.EventsTest do
category: "meeting" category: "meeting"
} }
describe "list_events/5" do
setup do
actor = insert(:actor)
event = insert(:event, organizer_actor: actor, visibility: :public, local: true)
Mobilizon.Config.clear_config_cache()
{:ok, actor: actor, event: event}
end
test "list_events/0 returns all events", %{event: event} do
assert event.title == hd(Events.list_events()).title
end
test "list_events/5 returns events from other instances if we follow them",
%{event: _event} do
events = Events.list_events()
assert length(events) == 1
%Actor{id: remote_instance_actor_id} = remote_instance_actor = insert(:instance_actor)
%Actor{id: remote_actor_id} = insert(:actor, domain: "somedomain.tld", user: nil)
%Event{url: remote_event_url} = insert(:event, local: false, title: "My Remote event")
Mobilizon.Share.create(remote_event_url, remote_instance_actor_id, remote_actor_id)
%Actor{} = own_instance_actor = Relay.get_actor()
insert(:follower, target_actor: remote_instance_actor, actor: own_instance_actor)
events = Events.list_events()
assert length(events) == 2
assert events |> Enum.any?(fn event -> event.title == "My Remote event" end)
end
test "list_events/5 doesn't return events from other instances if we don't follow them anymore",
%{event: _event} do
%Actor{id: remote_instance_actor_id} = insert(:instance_actor)
%Actor{id: remote_actor_id} = insert(:actor, domain: "somedomain.tld", user: nil)
%Event{url: remote_event_url} = insert(:event, local: false, title: "My Remote event")
Mobilizon.Share.create(remote_event_url, remote_instance_actor_id, remote_actor_id)
events = Events.list_events()
assert length(events) == 1
assert events |> Enum.all?(fn event -> event.title != "My Remote event" end)
end
end
describe "events" do describe "events" do
setup do setup do
actor = insert(:actor) actor = insert(:actor)
event = insert(:event, organizer_actor: actor, visibility: :public) event = insert(:event, organizer_actor: actor, visibility: :public, local: true)
Workers.BuildSearch.insert_search_event(event) Workers.BuildSearch.insert_search_event(event)
{:ok, actor: actor, event: event} {:ok, actor: actor, event: event}
end end
@ -41,10 +86,6 @@ defmodule Mobilizon.EventsTest do
} }
@invalid_attrs %{begins_on: nil, description: nil, ends_on: nil, title: nil} @invalid_attrs %{begins_on: nil, description: nil, ends_on: nil, title: nil}
test "list_events/0 returns all events", %{event: event} do
assert event.title == hd(Events.list_events()).title
end
test "get_event!/1 returns the event with given id", %{event: event} do test "get_event!/1 returns the event with given id", %{event: event} do
assert Events.get_event!(event.id).title == event.title assert Events.get_event!(event.id).title == event.title
refute Ecto.assoc_loaded?(Events.get_event!(event.id).organizer_actor) refute Ecto.assoc_loaded?(Events.get_event!(event.id).organizer_actor)

View File

@ -78,6 +78,28 @@ defmodule Mobilizon.Factory do
) )
end end
def instance_actor_factory do
preferred_username = "relay"
domain = "#{sequence("mydomain")}.com"
struct!(
actor_factory(),
%{
preferred_username: preferred_username,
type: :Application,
url: "http://#{domain}/#{preferred_username}",
followers_url: Actor.build_url(preferred_username, :followers),
following_url: Actor.build_url(preferred_username, :following),
members_url: Actor.build_url(preferred_username, :members),
resources_url: Actor.build_url(preferred_username, :resources),
inbox_url: Actor.build_url(preferred_username, :inbox),
outbox_url: Actor.build_url(preferred_username, :outbox),
user: nil,
domain: domain
}
)
end
def follower_factory do def follower_factory do
uuid = Ecto.UUID.generate() uuid = Ecto.UUID.generate()