From a7bb52e7b3edc70ffb14c2d5de514e960f02d814 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Van=20Rompay?= Date: Fri, 18 Dec 2020 21:54:59 +0100 Subject: [PATCH 001/114] add missing deps in dev Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 9c73fff55..f29551792 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ FROM bitwalker/alpine-elixir:latest RUN apk add inotify-tools postgresql-client yarn file -RUN apk add --no-cache make gcc libc-dev argon2 imagemagick +RUN apk add --no-cache make gcc libc-dev argon2 imagemagick cmake build-base RUN mix local.hex --force && mix local.rebar --force From 08df0be1b777a611c382374f380d1fe610ccfa6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Van=20Rompay?= Date: Sat, 19 Dec 2020 13:38:04 +0100 Subject: [PATCH 002/114] update location of litepub JSON-LD context previous URL returns "HTTP 301 Moved Permanently" --- lib/federation/activity_pub/utils.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/federation/activity_pub/utils.ex b/lib/federation/activity_pub/utils.ex index f2117cf03..32855aff7 100644 --- a/lib/federation/activity_pub/utils.ex +++ b/lib/federation/activity_pub/utils.ex @@ -34,7 +34,7 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do %{ "@context" => [ "https://www.w3.org/ns/activitystreams", - "https://litepub.social/litepub/context.jsonld", + "https://litepub.social/context.jsonld", %{ "sc" => "http://schema.org#", "ical" => "http://www.w3.org/2002/12/cal/ical#", From 8a4369b0f329e3402539ece973311e4908935bcd Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 21 Dec 2020 10:08:30 +0100 Subject: [PATCH 003/114] Add missing deps to Dockerfile Signed-off-by: Thomas Citharel --- Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index f29551792..01cde6868 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,6 @@ FROM bitwalker/alpine-elixir:latest -RUN apk add inotify-tools postgresql-client yarn file -RUN apk add --no-cache make gcc libc-dev argon2 imagemagick cmake build-base +RUN apk add --no-cache inotify-tools postgresql-client yarn file make gcc libc-dev argon2 imagemagick cmake build-base libwebp-tools bash ncurses RUN mix local.hex --force && mix local.rebar --force From 6120a48d2061084be2a7416e0005d7673f152f0d Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 21 Dec 2020 10:08:43 +0100 Subject: [PATCH 004/114] Move Postgis image to official one Signed-off-by: Thomas Citharel --- docker-compose.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 3df763f40..8726415ba 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,10 +1,10 @@ -version: '3' +version: "3" services: postgres: container_name: mobilizon_db restart: unless-stopped - image: mdillon/postgis:11 + image: postgis/postgis:13-3.0 environment: POSTGRES_PASSWORD: postgres POSTGRES_DB: mobilizon_dev @@ -15,7 +15,7 @@ services: restart: unless-stopped build: . volumes: - - '.:/app' + - ".:/app" ports: - "4000:4000" depends_on: From 0d7e41cf6a9ba1fb5e411e4459380bb51e9ec818 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jos=C3=A9=20m?= Date: Sat, 19 Dec 2020 05:22:39 +0000 Subject: [PATCH 005/114] Translated using Weblate (Galician) Currently translated at 99.8% (824 of 825 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/ --- js/src/i18n/gl.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/js/src/i18n/gl.json b/js/src/i18n/gl.json index e8e0b48ba..6f997c336 100644 --- a/js/src/i18n/gl.json +++ b/js/src/i18n/gl.json @@ -288,6 +288,7 @@ "General": "Xeral", "General information": "Información xeral", "Getting location": "Obtendo localización", + "Getting there": "Chegar alí", "Glossary": "Glosario", "Go": "Ir", "Go to the event page": "Ir á páxina do evento", @@ -304,6 +305,7 @@ "Group {displayName} created": "Creado o grupo {displayName}", "Group {groupTitle} reported": "Grupo {groupTitle} denunciado", "Groups": "Grupos", + "Groups are not enabled on this instance.": "Os grupos non están activados nesta instancia.", "Groups are spaces for coordination and preparation to better organize events and manage your community.": "Os grupos son espazos de coordinación e preparación, para organizar os eventos e xestionar a comunidade.", "Headline picture": "Imaxe de cabeceira", "Hide replies": "Agochar respostas", @@ -720,6 +722,7 @@ "Tomorrow": "Mañán", "Transfer to {outsideDomain}": "Transferir a {outsideDomain}", "Type": "Tipo", + "Type or select a date…": "Escribe o elixe unha data…", "URL": "URL", "URL copied to clipboard": "URL copiado ó portapapeis", "Unable to detect timezone.": "Non se detectou a zona horaria.", @@ -783,6 +786,7 @@ "Write something…": "Escribe algo…", "You are not an administrator for this group.": "Non es administradora deste grupo.", "You are not part of any group": "Non formas parte de ningún grupo", + "You are not part of any group.": "Non formas parte de ningún grupo.", "You are participating in this event anonymously": "Participas neste evento de xeito anónimo", "You are participating in this event anonymously but didn't confirm participation": "Participas neste evento de xeito anónimo pero non confirmaches a participación", "You can add tags by hitting the Enter key or by adding a comma": "Podes engadir etiquetas premento Enter ou con vírgulas", @@ -791,6 +795,7 @@ "You can try another search term or drag and drop the marker on the map": "Podes intentalo con outro termo de busca ou arrastrar e soltar a marca no mapa", "You can't change your password because you are registered through {provider}.": "Non podes cambiar o contrasinal porque estás rexistrada en {provider}.", "You didn't create or join any event yet": "Non creaches nin te uniches a ningún evento", + "You didn't create or join any event yet.": "Aínda non te uniches nin creaches un evento.", "You don't follow any instances yet.": "Aínda non segues ningunha instancia.", "You have been disconnected": "Desconectáronte", "You have been invited by {invitedBy} to the following group:": "Foches convidada por {invitedBy} ó seguinte grupo:", From 50a4c55e573fa76dfd0a6a93d79d4a5e1661633a Mon Sep 17 00:00:00 2001 From: Tash Lisiecki Date: Mon, 21 Dec 2020 14:39:23 +0000 Subject: [PATCH 006/114] Translated using Weblate (Polish) Currently translated at 94.4% (779 of 825 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/pl/ --- js/src/i18n/pl.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/src/i18n/pl.json b/js/src/i18n/pl.json index aa4c3b18f..dd0ef7134 100644 --- a/js/src/i18n/pl.json +++ b/js/src/i18n/pl.json @@ -67,7 +67,7 @@ "Anonymous participations": "Anonimowy udział", "Any day": "Dowolny dzień", "Anyone can join freely": "Każdy może dołączyć", - "Anyone wanting to be a member from your group will be able to from your group page.": "Każdy, kot chce zostać członkiem Twojej grupy będzie mógł dołączyć ze strony Twojej grupy.", + "Anyone wanting to be a member from your group will be able to from your group page.": "Każdy, kto chce zostać członkiem Twojej grupy będzie mógł dołączyć ze strony Twojej grupy.", "Application": "Aplikacja", "Approve": "Zatwierdź", "Are you really sure you want to delete your whole account? You'll lose everything. Identities, settings, events created, messages and participations will be gone forever.": "Czy na pewno chcesz usunąć całe swoje konto? Stracisz wszystko. Tożsamości, ustawienia, utworzone wydarzenia, wiadomości i uczestnictwa zostaną na zawsze usunięte.", @@ -498,7 +498,7 @@ "Participants": "Uczestnicy", "Participate": "Weź udział", "Participate using your email address": "Weź udział używając adresu e-mail", - "Participation approval": "Przyjmowanie uzdiału", + "Participation approval": "Przyjmowanie udziału", "Participation confirmation": "Zatwierdzanie udziału", "Participation notifications": "Powiadomienia o udziale", "Participation requested!": "Poproszono o udział!", From 8529d8c69b052c2f6d6a1a5b69b91e00f0ecd826 Mon Sep 17 00:00:00 2001 From: x Date: Thu, 24 Dec 2020 19:50:45 +0000 Subject: [PATCH 007/114] Translated using Weblate (Italian) Currently translated at 100.0% (825 of 825 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/it/ --- js/src/i18n/it.json | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/js/src/i18n/it.json b/js/src/i18n/it.json index 660ed440b..ad6d11cdb 100644 --- a/js/src/i18n/it.json +++ b/js/src/i18n/it.json @@ -149,6 +149,7 @@ "Create a pad": "Crea un pad", "Create a videoconference": "Crea una videoconferenza", "Create an account": "Crea un account", + "Create event": "Crea un evento", "Create group": "Crea gruppo", "Create my event": "Crea il mio evento", "Create my group": "Crea il mio gruppo", @@ -203,6 +204,8 @@ "Displayed nickname": "Nickname visualizzato", "Displayed on homepage and meta tags. Describe what Mobilizon is and what makes this instance special in a single paragraph.": "Visualizzato sulla home page e nei meta tag. Descrivi cos'è Mobilizon e cosa rende speciale questa istanza in un solo paragrafo.", "Do not receive any mail": "Non ricevere email", + "Do you wish to {create_event} or {explore_events}?": "Desideri {create_event} o {explore_events}?", + "Do you wish to {create_group} or {explore_groups}?": "Desideri {create_group} o {explore_groups}?", "Domain": "Dominio", "Don't show @{organizer} as event host alongside @{group}": "Non mostrare @{organizer} come conduttore dell'evento assieme a @{group}", "Draft": "Bozza", @@ -276,6 +279,7 @@ "General": "Generali", "General information": "Informazioni generali", "Getting location": "Ottieni posizione", + "Getting there": "Arrivarci", "Glossary": "Glossario", "Go": "Vai", "Go to the event page": "Vai alla pagina dell'evento", @@ -291,6 +295,7 @@ "Group {displayName} created": "Gruppo {displayName} creato", "Group {groupTitle} reported": "Gruppo {groupTitle} segnalato", "Groups": "Gruppi", + "Groups are not enabled on this instance.": "I gruppi non sono abilitati su questa istanza.", "Groups are spaces for coordination and preparation to better organize events and manage your community.": "I gruppi sono spazi di coordinamento e preparazione per organizzare al meglio gli eventi e gestire la tua comunità.", "Headline picture": "immagine della prima pagina", "Hide replies": "Nascondi risposte", @@ -689,9 +694,12 @@ "Tomorrow": "Domani", "Transfer to {outsideDomain}": "Trasferire a {outsideDomain}", "Type": "Tipo", + "Type or select a date…": "Digita o seleziona una data…", "URL": "URL", "URL copied to clipboard": "URL copiato negli appunti", "Unable to detect timezone.": "Impossibile rilevare il fuso orario.", + "Unable to load event for participation. The error details are provided below:": "Impossibile caricare l'evento per la partecipazione. Di seguito vengono forniti i dettagli dell'errore:", + "Unable to save your participation in this browser.": "Impossibile salvare la tua partecipazione in questo browser.", "Unfortunately, this instance isn't opened to registrations": "Sfortunatamente, questa istanza non è aperta a registrazioni", "Unfortunately, your participation request was rejected by the organizers.": "Sfortunatamente, la tua richiesta di partecipazione è stata rifiutata da chi organizza l'evento.", "Unknown": "Sconosciuto", @@ -715,6 +723,7 @@ "Users": "Utenti", "View a reply": "|Vedi una risposta|Vedi {totalReplies} risposte", "View all": "Visualizza tutto", + "View all events": "Visualizza tutti gli eventi", "View all posts": "Visualizza tutti i post", "View all upcoming events": "Visualizza tutti i prossimi eventi", "View event page": "Vedi pagina evento", @@ -743,6 +752,7 @@ "Will allow to display and manage your participation status on the event page when using this device. Uncheck if you're using a public device.": "Consentirà di visualizzare e gestire lo stato di partecipazione sulla pagina dell'evento quando si utilizza questo dispositivo. Deseleziona se stai utilizzando un dispositivo pubblico.", "Write something…": "Scrivi qualcosa…", "You are not an administrator for this group.": "Non sei un amministratore di questo gruppo.", + "You are not part of any group.": "Non fai parte di nessun gruppo.", "You are participating in this event anonymously": "Stai partecipando a questo evento in forma anonima", "You are participating in this event anonymously but didn't confirm participation": "Stai partecipando a questo evento in forma anonima ma non hai confermato la partecipazione", "You can add tags by hitting the Enter key or by adding a comma": "Puoi aggiungere etichette premendo il tasto Invio o aggiungendo una virgola", @@ -750,6 +760,7 @@ "You can pick your timezone into your preferences.": "Puoi scegliere il tuo fuso orario nelle preferenze.", "You can try another search term or drag and drop the marker on the map": "Puoi provare un altro termine di ricerca o trascinare il marcatore sulla mappa", "You can't change your password because you are registered through {provider}.": "Non puoi cambiare la tua password perché sei registrato con {provider}.", + "You didn't create or join any event yet.": "Non hai ancora creato o partecipato a nessun evento.", "You don't follow any instances yet.": "Non segui ancora nessuna istanza.", "You have been disconnected": "Sei stato disconnesso", "You have been invited by {invitedBy} to the following group:": "Sei stato invitato da {invitedBy} al seguente gruppo:", @@ -759,11 +770,13 @@ "You have one event today.": "Non hai eventi oggi | Hai un evento oggi. | Hai {count} eventi oggi", "You have one event tomorrow.": "Non hai eventi domani | Hai un evento domani | Hai {count} eventi domani", "You may clear all participation information for this device with the buttons below.": "Puoi rimuovere tutte le informazioni di partecipazione da questo dispositivo col bottone qui sotto.", + "You may now close this window, or {return_to_event}.": "Ora puoi chiudere questa finestra, o {return_to_event}.", "You may now close this window.": "Ora puoi chiudere questa finestra.", "You need to create the group before you create an event.": "Devi creare un gruppo prima di creare un evento.", "You need to login.": "Devi accedere.", "You will be able to add an avatar and set other options in your account settings.": "Potrai aggiungere un avatar e impostare altre opzioni nelle impostazioni del tuo account.", "You will be redirected to the original instance": "Sarai reindirizzato verso l'istanza originale", + "You will find here all the events you have created or of which you are a participant.": "Qui troverai tutti gli eventi che hai creato o di cui sei partecipante.", "You wish to participate to the following event": "Desideri partecipare all'evento seguente", "You'll get a weekly recap every Monday for upcoming events, if you have any.": "Rivecerai un riassunto settimanale degli eventi in arrivo ogni Lunedì, se ce ne sono.", "You'll need to transmit the group URL so people may access the group's profile. The group won't be findable in Mobilizon's search or regular search engines.": "Dovrai trasmettere l'URL del gruppo in modo che le persone possano accedere al profilo del gruppo. Il gruppo non sarà rintracciabile nella ricerca di Mobilizon o nei normali motori di ricerca.", @@ -787,6 +800,8 @@ "Your participation status has been changed": "Lo stato della tua partecipazione è cambiato", "Your participation status is saved only on this device and will be deleted one month after the event's passed.": "Il tuo stato di partecipazione è salvato solo su questo dispositivo e sarà cancellato un mese dopo che l'evento si è concluso.", "Your participation still has to be approved by the organisers.": "La tua partecipazione deve ancora essere approvata dagli organizzatori.", + "Your participation will be validated once you click the confirmation link into the email, and after the organizer manually validates your participation.": "La tua partecipazione verrà convalidata dopo aver fatto clic sul collegamento di conferma nell'email, e dopo che l'organizzatore ha convalidato manualmente la tua partecipazione.", + "Your participation will be validated once you click the confirmation link into the email.": "La tua partecipazione verrà convalidata dopo aver fatto clic sul collegamento di conferma nell'email.", "Your profile will be shown as contact.": "Il tuo profilo sarà mostrato come contatto.", "Your timezone is currently set to {timezone}.": "Il fuso orario è attualmente impostato su {timezone}.", "Your timezone was detected as {timezone}.": "Il tuo fuso orario è stato rilevato come {timezone}.", @@ -799,10 +814,14 @@ "any distance": "qualsiasi distanza", "as {identity}": "come {identità}", "contact uninformed": "contatto disinformato", + "create a group": "crea un gruppo", + "create an event": "crea un evento", "default Mobilizon privacy policy": "Politica predefinita di Mobilizon sulla riservatezza", "default Mobilizon terms": "condizioni predefinite di Mobilizon", "digital habits of activists": "Abitudini digitali degli attivisti", "e.g. 10 Rue Jangot": "ad es. via Jangot, 10", + "explore the events": "esplora gli eventi", + "explore the groups": "esplora i gruppi", "firstDayOfWeek": "0", "fit the needs and uses of the people": "Soddisfa i bisogni e gli utilizzi delle persone", "full rules": "regole complete", @@ -811,6 +830,7 @@ "more than 1360 contributors": "più di 1360 donatori", "profile@instance": "profilo@istanza", "report #{report_number}": "relazione", + "return to the event's page": "torna alla pagina dell'evento", "terms of service": "termini di servizio", "with another identity…": "con altra identità…", "{approved} / {total} seats": "{approved} / {total} posti", From ee02d0013a184f71aabbdbfb70656415e680876d Mon Sep 17 00:00:00 2001 From: fadelkon Date: Tue, 29 Dec 2020 16:21:44 +0000 Subject: [PATCH 008/114] Translated using Weblate (Catalan) Currently translated at 100.0% (825 of 825 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/ca/ --- js/src/i18n/ca.json | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/js/src/i18n/ca.json b/js/src/i18n/ca.json index 93946d262..2b609b828 100644 --- a/js/src/i18n/ca.json +++ b/js/src/i18n/ca.json @@ -26,6 +26,7 @@ "Abandon edition": "Canceŀla l'edició", "About": "Quant a", "About Mobilizon": "Quant a Mobilizon", + "About anonymous participation": "Quant a la participació anònima", "About this event": "Sobre aquesta activitat", "About this instance": "Quant a aquesta instància", "About {instance}": "Quant a {instance}", @@ -84,6 +85,7 @@ "Are you sure you want to cancel the event edition? You'll lose all modifications.": "Segur que vols canceŀlar l'edició? Perdràs tots els canvis que hagis fet.", "Are you sure you want to cancel your participation at event \"{title}\"?": "Segur que vols deixar de participar a l'activitat \"{title}\"?", "Are you sure you want to delete this event? This action cannot be reverted.": "Segur que vols esborrar aquesta activitat? Aquesta acció és irreversible.", + "As the event organizer has chosen to manually validate participation requests, your participation will be really confirmed only once you receive an email stating it's being accepted.": "Com que l'organitzadora de l'activitat ha triat validar manualment les soŀlicituds per participar-hi, hauràs d'esperar la seva decisió. T'arribarà un correu comunicant-te-la.", "Assigned to": "Assignat a", "Avatar": "Avatar", "Back to previous page": "Tornar a la pàgina anterior", @@ -102,6 +104,7 @@ "Cancel edition": "Canceŀla l'edició", "Cancel my participation request…": "Canceŀla la meva soŀlicitud de participació…", "Cancel my participation…": "Canceŀla la meva participació…", + "Cancelled": "Canceŀlada", "Cancelled: Won't happen": "Canceŀlada: No es farà", "Category": "Categoria", "Change": "Canvia-la", @@ -112,6 +115,9 @@ "Change timezone": "Canvia el fus horari", "Check your inbox (and your junk mail folder).": "Mira la teva safata d'entrada (i la de brossa, per si de cas).", "Clear": "Esborra", + "Clear participation data for all events": "Esborra les dades d'assistència de totes les activitats", + "Clear participation data for this event": "Esborra les dades d'assistència per aquesta activitat", + "Click for more information": "Fes clic per a més informació", "Click to select": "Clica per triar", "Click to upload": "Clica per pujar", "Close": "Deshabilita", @@ -144,6 +150,7 @@ "Create a videoconference": "Crea una videoconferència", "Create an account": "Crea un compte", "Create and manage several identities from the same account": "Crea i gestiona diverses identitats des del mateix compte", + "Create event": "Crea una activitat", "Create group": "Crea un grup", "Create my event": "Crea l'activitat", "Create my group": "Crea el grup", @@ -201,6 +208,8 @@ "Displayed nickname": "Sobrenom per mostrar", "Displayed on homepage and meta tags. Describe what Mobilizon is and what makes this instance special in a single paragraph.": "Es mostrarà a la pàgina d'inici i a les etiquetes meta. Hauria d'explicar en un sol paragraf què és Mobilizon i què fa que aquesta instància sigui especial.", "Do not receive any mail": "No vull rebre cap correu", + "Do you wish to {create_event} or {explore_events}?": "Vols {create_event} o {explore_events}?", + "Do you wish to {create_group} or {explore_groups}?": "Vols {create_group} o {explore_groups}?", "Domain": "Domini", "Don't show @{organizer} as event host alongside @{group}": "No mostris @{organizer} com a organitzadora amb @{group}", "Draft": "Esborrany", @@ -279,6 +288,7 @@ "General": "General", "General information": "Informació general", "Getting location": "Obtenció d'ubicació", + "Getting there": "Com arribar-hi", "Glossary": "Glossari", "Go": "Anar", "Go to the event page": "Porta'm a la pàgina de l'activitat", @@ -296,6 +306,7 @@ "Group {displayName} created": "S'ha creat el grup {displayName}", "Group {groupTitle} reported": "S'ha denunciat el grup {groupTitle}", "Groups": "Grups", + "Groups are not enabled on this instance.": "Els grups no estan disponibles en aquesta instància.", "Groups are spaces for coordination and preparation to better organize events and manage your community.": "Els grups són espais de coordinació i preparació per organitzar millor les activitats i gestionar una comunitat.", "Headline picture": "Imatge de capçalera", "Hide replies": "Amaga les respostes", @@ -374,6 +385,7 @@ "Limited number of places": "Places limitades", "List title": "Títol de la llista", "Load more": "Carrega'n més", + "Loading comments…": "S'estan carregant els comentaris…", "Local": "Local", "Locality": "Localitat", "Location": "Ubicació", @@ -654,6 +666,7 @@ "Suspend group": "Suspen el grup", "Suspended": "Suspesa", "Task lists": "Llista de tasques", + "Tentative": "Provisional", "Tentative: Will be confirmed later": "Provisional: Ho confirmaran més endavant", "Terms": "Condicions", "Terms of service": "Condicions del servei", @@ -725,9 +738,12 @@ "Tomorrow": "Demà", "Transfer to {outsideDomain}": "Transfereix a {outsideDomain}", "Type": "Escriu", + "Type or select a date…": "Escriu o tria una data…", "URL": "URL", "URL copied to clipboard": "S'ha copiat la URL al portapapers", "Unable to detect timezone.": "No s'ha pogut detectar el fus horari.", + "Unable to load event for participation. The error details are provided below:": "No s'ha pogut carregar l'activitat. Els detalls de l'error es detallen a sota:", + "Unable to save your participation in this browser.": "No s'ha pogut desar al navegador la teva assistència.", "Unfortunately, this instance isn't opened to registrations": "Malauradament, aquesta instància no està oberta a nous comptes", "Unfortunately, your participation request was rejected by the organizers.": "Malauradament, l'organització de l'activitat ha rebutjat la teva soŀlicitud de participació.", "Unknown": "Desconegut", @@ -744,12 +760,14 @@ "Update my event": "Actualitza l'activitat", "Update post": "Actualitza la publicació", "Updated": "S'ha actualitzat", + "Uploaded media size": "Mida dels arxius pujats", "Use my location": "Agafa la meva ubicació", "User": "Usuària", "Username": "Nom d'usuària", "Users": "Usuàries", "View a reply": "|Mostra la resposta|Mostra les {totalReplies} resposta", "View all": "Mostra-ho tot", + "View all events": "Mostra totes les activitats", "View all posts": "Mostra totes les publicacions", "View all upcoming events": "Mostra les activitats properes en temps", "View event page": "Mostra la pàgina de l'activitat", @@ -786,6 +804,7 @@ "You are already a participant of this event.": "Ja figures com a participant d'aquesta activitat.", "You are already logged-in.": "Ja tens una sessió iniciada.", "You are not an administrator for this group.": "No ets administrador/a d'aquest grup.", + "You are not part of any group.": "No formes de cap grup.", "You are participating in this event anonymously": "Estàs registrada anònimament com a participant", "You are participating in this event anonymously but didn't confirm participation": "Figures com a participant anònima d'aquesta activitat però no has confirmat la participació", "You can add tags by hitting the Enter key or by adding a comma": "Pots afegir etiquetes prement Enter o afegint una coma", @@ -794,6 +813,7 @@ "You can try another search term or drag and drop the marker on the map": "Pots provar amb altres paraules de cerca o arrossegar l'indicador al mapa", "You can't change your password because you are registered through {provider}.": "No pots canviar la teva contrasenya perquè estàs registrat/da amb {provider}.", "You can't remove your last identity.": "No pots esborrar la teva única identitat.", + "You didn't create or join any event yet.": "No t'has apuntat a cap activitat ni n'has creat cap.", "You don't follow any instances yet.": "Encara no pots seguir cap instància.", "You have been disconnected": "S'ha desconnectat la sessió", "You have been invited by {invitedBy} to the following group:": "{invitedBy} t'ha convidat a afegir-te al següent grup:", @@ -803,11 +823,14 @@ "You have one event today.": "No tens cap activitat avui|Avui tens una activitat|Avui tens {count} activitats", "You have one event tomorrow.": "No tens cap activitat per demà|Demà tens una activitat|Demà tens {count} activitats", "You may also ask to {resend_confirmation_email}.": "També pots demanar {resend_confirmation_email}.", + "You may clear all participation information for this device with the buttons below.": "Pots esborrar tota la informació d'assistències que hi ha en aquest dispositiu amb els botons de sota.", + "You may now close this window, or {return_to_event}.": "Ja pots tancar aquesta finestra o {return_to_event}.", "You may now close this window.": "Ja pots tancar aquesta finestra.", "You need to create the group before you create an event.": "Has de tenir un grup per poder crear una activitat.", "You need to login.": "Has d'iniciar sessió.", "You will be able to add an avatar and set other options in your account settings.": "Pots afegir un avatar i editar altres opcions en les preferències del compte.", "You will be redirected to the original instance": "Seràs redirigit/da a la instància original", + "You will find here all the events you have created or of which you are a participant.": "Aquí hi trobaràs totes les activitats que hagis creat o a les quals estiguis apuntat/da.", "You wish to participate to the following event": "Vols participar en l'activitat següent", "You'll get a weekly recap every Monday for upcoming events, if you have any.": "Rebràs un recordatori cada dilluns que tinguis activitats properes planificades.", "You'll need to transmit the group URL so people may access the group's profile. The group won't be findable in Mobilizon's search or regular search engines.": "Hauràs de fer arribar l'enllaç del grup a les persones que vulguis que accedeixin al perfil del grup. No es podrà trobar en la cerca de Mobilizon ni als motors de cerca generals.", @@ -831,7 +854,10 @@ "Your participation request has been validated": "Has estat validat/da com a participant", "Your participation request is being validated": "Se t'està validant com a participant", "Your participation status has been changed": "Ha canviat l'estat de participació", + "Your participation status is saved only on this device and will be deleted one month after the event's passed.": "L'estat de la teva assistència només es desa en aquest dispositiu, i té una caducitat d'un mes a partir del final de l'activitat.", "Your participation still has to be approved by the organisers.": "Les organitzadores encara no t'han aprovat com a participant.", + "Your participation will be validated once you click the confirmation link into the email, and after the organizer manually validates your participation.": "Es validarà la teva participació un cop hagis seguit l'enllaç de confirmació del correu, que t'arribarà després que una organitzadora accepti la teva soŀlicitud.", + "Your participation will be validated once you click the confirmation link into the email.": "La teva assistència serà validada un cop hagis fet clic a l'enllaç de confirmació que t'arribarà al correu.", "Your profile will be shown as contact.": "Es mostrarà el teu perfil com a contacte.", "Your timezone is currently set to {timezone}.": "El fus horari que tens configurat és {timezone}.", "Your timezone was detected as {timezone}.": "S'ha detectat el fus horari {timezone}.", @@ -845,9 +871,13 @@ "any distance": "qualsevol distància", "as {identity}": "com a {identity}", "contact uninformed": "contacte", + "create a group": "crea un grup", + "create an event": "crea una activitat", "default Mobilizon privacy policy": "política de privacitat per defecte de Mobilizon", "default Mobilizon terms": "condicions de Mobilizon per defecte", "e.g. 10 Rue Jangot": "ex.: 13 Rue del Percebe", + "explore the events": "explora les activitats", + "explore the groups": "explora els grups", "firstDayOfWeek": "0", "full rules": "normes completes", "iCal Feed": "Flux iCal", @@ -860,6 +890,7 @@ "report #{report_number}": "denúncia #{report_number}", "resend confirmation email": "reenvia el mail de confirmació", "respect of the fundamental freedoms": "respecte per les llibertats fonamentals", + "return to the event's page": "torna a la pàgina de l'activitat", "terms of service": "condicions del servei", "with another identity…": "amb una altra identitat…", "{approved} / {total} seats": "{approved} / {total} places", From aaf82cc3199f0af0fe41c447cfdd3f1ec2e8de55 Mon Sep 17 00:00:00 2001 From: A jeremias Date: Sat, 2 Jan 2021 17:35:08 +0000 Subject: [PATCH 009/114] Translated using Weblate (Portuguese) Currently translated at 7.8% (65 of 825 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/pt/ --- js/src/i18n/pt.json | 68 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/js/src/i18n/pt.json b/js/src/i18n/pt.json index 0967ef424..0940180be 100644 --- a/js/src/i18n/pt.json +++ b/js/src/i18n/pt.json @@ -1 +1,67 @@ -{} +{ + "A user-friendly, emancipatory and ethical tool for gathering, organising, and mobilising.": "É uma ferramenta simples, emanicipatória e ética para juntar, organizar e mobilizar.", + "A validation email was sent to {email}": "Um email de validação, foi enviado para {email}", + "Abandon editing": "Abandonar edição", + "About": "Sobre", + "About Mobilizon": "Sobre o Mobilizon", + "About this event": "Sobre este evento", + "About this instance": "Sobre esta instância", + "Accepted": "Aceite", + "Account": "Conta", + "Add": "Adicionar", + "Add a note": "Adicionar nota", + "Add an address": "Adicionar morada", + "Add an instance": "Adicionar instância", + "Add some tags": "Adicionar tags", + "Add to my calendar": "Adicionar ao meu calendário", + "Additional comments": "Comentários adicionais", + "Admin": "Administrador", + "Admin settings successfully saved.": "Definições de administração gravadas.", + "Administration": "Administração", + "All the places have already been taken": "Todos os lugares estão ocupados|Um lugar está livre|{places} lugares estão livres", + "Allow registrations": "Permitir registos", + "Anonymous participant": "Participante anonimo", + "Anonymous participants will be asked to confirm their participation through e-mail.": "Para os participantes anónimos será pedido para comfirmar a sua participação através do email.", + "Anonymous participations": "Participação anónima", + "Are you really sure you want to delete your whole account? You'll lose everything. Identities, settings, events created, messages and participations will be gone forever.": "Tens a certeza que realmente queres apagar a tua conta? Vais perder tudo. Identidades, defenições, eventos criados, mensagens e participações vão desaparecer para sempre.", + "Are you sure you want to delete this comment? This action cannot be undone.": "Tens a certeza que queres apagar este comentário? Esta acção não pode ser desfeita.", + "Are you sure you want to delete this event? This action cannot be undone. You may want to engage the discussion with the event creator or edit its event instead.": "Tens a certeza que queres apagar este evento? Esta acção não pode ser desfeita. Talvez queiras impulsionar uma discussão com o criador deste evento ou apenas editar este evento.", + "Are you sure you want to cancel the event creation? You'll lose all modifications.": "Tens a certeza que queres cancelar a criação deste evento? Vais perder todas as modificações.", + "Are you sure you want to cancel the event edition? You'll lose all modifications.": "Tens a certeza que queres cancelar esta edição de evento? Vais perder todas as modificações.", + "Are you sure you want to cancel your participation at event \"{title}\"?": "Tens a certeza que queres cancelar a participação no evento \"{title}\"?", + "Are you sure you want to delete this event? This action cannot be reverted.": "Tens a certeza que queres apagar a participação no evento ? A tua acção não pode ser revertida.", + "Avatar": "Avatar", + "Back to previous page": "Voltar à página anterior", + "Before you can login, you need to click on the link inside it to validate your account.": "Antes de entrar, precisas de clicar no link dentro para validar a tua conta.", + "By @{username}": "Por @{username}", + "Cancel": "Cancelar", + "Cancel anonymous participation": "Cancelar participação anónima", + "Cancel creation": "Aborto", + "Cancel edition": "Cancelar edição", + "Cancel my participation request…": "Cancelar o meu pedido de participação…", + "Cancel my participation…": "Cancelar a minha participação…", + "Cancelled: Won't happen": "Cancelado: Não acontecerá", + "Change": "Mudar", + "Change my email": "Mudar o meu email", + "Change my identity…": "Mudar a minha identidade…", + "Change my password": "Mudar a minha palavra-passe", + "Clear": "Limpar", + "Click to select": "Clicar para selecionar", + "Click to upload": "Clicar para carregar", + "Close": "Fechar", + "Close comments for all (except for admins)": "Fechar os comentários para todos ( excepto administradores)", + "Closed": "Fechado", + "Comment deleted": "Apagar comentário", + "Comment from @{username} reported": "Comentário de @ {username} reportado", + "Comments": "Comentário", + "Confirm my participation": "Comfirmar a minha participação", + "Confirm my particpation": "Confirmar a minha participação", + "Confirmed: Will happen": "Confirmado: Vai acontecer", + "Continue editing": "Continuar a editar", + "Country": "País", + "Create a new event": "Criar um novo evento", + "Create a new group": "Criar um novo grupo", + "Create a new identity": "Criar uma nova identidade", + "Create group": "Criar grupo", + "Please do not use it in any real way.": "Por favor não utilize isto para eventos reais." +} From 4b15cdbda73a6b0c98b7ec6019860b041dae30e0 Mon Sep 17 00:00:00 2001 From: Filip Bengtsson Date: Sat, 2 Jan 2021 14:03:55 +0000 Subject: [PATCH 010/114] Translated using Weblate (Swedish) Currently translated at 37.2% (307 of 825 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sv/ --- js/src/i18n/sv.json | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/js/src/i18n/sv.json b/js/src/i18n/sv.json index eb9fd6de7..1f0620d56 100644 --- a/js/src/i18n/sv.json +++ b/js/src/i18n/sv.json @@ -36,6 +36,7 @@ "Avatar": "Avatar", "Back to previous page": "Tillbaka till föregående sida", "Before you can login, you need to click on the link inside it to validate your account.": "Innan du loggar in måste du klicka på länken inuti det för att validera ditt konto.", + "By @{group}": "Av @{group}", "By @{username}": "Av @{username}", "By {username} and {group}": "Av {username} och {group}", "Cancel": "Avbryt", @@ -86,6 +87,7 @@ "Custom text": "Anpassad text", "Dashboard": "Kontrollpanel", "Date": "Datum", + "Date and time": "Datum och tid", "Date and time settings": "Datum- och tidsinställningar", "Date parameters": "Datumparametrar", "Default": "Standard", @@ -111,6 +113,7 @@ "Domain": "Domän", "Draft": "Utkast", "Drafts": "Utkast", + "Duplicate": "Kopiera", "Edit": "Redigera", "Eg: Stockholm, Dance, Chess…": "E.g.: Stockholm, Dans, Schack…", "Either on the {instance} instance or on another instance.": "Antingen på instansen {instance}, eller någon annan.", @@ -137,12 +140,13 @@ "Ex: mobilizon.fr": "T.ex: mobilizon.fr", "Exclude": "Exkludera", "Explore": "Utforska", + "Explore events": "Utforska evenemang", "Featured events": "Utvalda evenemang", "Features": "Utvalda", "Find an address": "Hitta en adress", "Find an instance": "Hitta en instans", "Followers": "Följare", - "For instance: London, Taekwondo, Architecture…": "Till exempel: London, Taekwondo, Arkitektur…", + "For instance: London, Taekwondo, Architecture…": "Till exempel: London, Taekwondo, Arkitektur …", "Forgot your password ?": "Glömt ditt lösenord?", "From a birthday party with friends and family to a march for climate change, right now, our gatherings are trapped inside the tech giants’ platforms. How can we organize, how can we click “Attend,” without providing private data to Facebook or locking ourselves up inside MeetUp?": "Från en födelsedagsfest med vänner och familj till en demonstration för klimatet, just nu är våra evenemang bundna till teknikjättarnas platformer. Hur kan vi organisera, hur kan vi klicka \"Kommer,\" utan att ge upp privat information till Facebook eller låsa upp oss själva i MeetUp?", "From the {startDate} at {startTime} to the {endDate}": "Från {startDate} klockan {startTime} till {endDate}", @@ -165,12 +169,13 @@ "Identity {displayName} created": "Identiteten {displayName} skapad", "Identity {displayName} deleted": "Identiteten {displayName} raderad", "Identity {displayName} updated": "Identiteten {displayName} uppdaterad", - "If an account with this email exists, we just sent another confirmation email to {email}": "Om ett konto med den här e-postadressen finns skickade vi precis ett till bekräftelsemail till {email}", + "If an account with this email exists, we just sent another confirmation email to {email}": "Om ett konto med den här e-postadressen finns skickade vi precis ett till meddelande till {email}", "If this identity is the only administrator of some groups, you need to delete them before being able to delete this identity.": "Om den här identiteten är den enda administratören av vissa grupper måste du radera dem innan du kan radera den här identiteten.", "Impossible to login, your email or password seems incorrect.": "Kunde inte logga in, din e-postadress eller ditt lösenord verkar inte stämma.", "In the meantime, please consider that the software is not (yet) finished. More information {onBlog}.": "Under tiden, kom ihåg att mjukvaran inte är färdig (ännu). Mer information {onBlog}.", "Installing Mobilizon will allow communities to free themselves from the services of tech giants by creating their own event platform.": "Att installera Mobilizon kommer tillåta gemenskaper att fria sig själva från teknikjättarnas tjänster genom att skapa sina egna platformar för evenamang.", "Join {instance}, a Mobilizon instance": "Gå med i {instance}, en Mobilizon instans", + "Key words": "Nyckelord", "Last published event": "Senast publicerade evenemang", "Last week": "Senaste veckan", "Learn more": "Lär dig mer", @@ -182,6 +187,7 @@ "Limited number of places": "Begränsat antal platser", "Load more": "Ladda fler", "Locality": "Plats", + "Location": "Plats", "Log in": "Logga in", "Log out": "Logga ut", "Login": "Logga in", @@ -194,6 +200,7 @@ "Moderated comments (shown after approval)": "Modererade kommentarer (visas när de godkänts)", "My account": "Mitt konto", "My events": "Mina evenemang", + "My groups": "Mina grupper", "My identities": "Mina identiteter", "Name": "Namn", "New password": "Nytt lösenord", @@ -207,16 +214,17 @@ "Number of places": "Antal platser", "OK": "Okej", "Old password": "Gammalt lösenord", - "On {date}": "Den {date}", - "On {date} ending at {endTime}": "Den {date}, slut klockan {endTime}", - "On {date} from {startTime} to {endTime}": "Den {date} från {startTime} till {endTime}", - "On {date} starting at {startTime}": "Den {date} med start klockan {startTime}", + "On {date}": "På {date}", + "On {date} ending at {endTime}": "På {date}, slut klockan {endTime}", + "On {date} from {startTime} to {endTime}": "På {date} från {startTime} till {endTime}", + "On {date} starting at {startTime}": "På {date} med start klockan {startTime}", "One person is going": "Ingen kommer|En person kommer|{approved} personer kommer", "Only accessible through link and search (private)": "Endast tillgänglig via länk och sök (privat)", "Only alphanumeric characters and underscores are supported.": "Endast bokstäver, siffror och understreck stöds.", "Opened reports": "Öppnade rapporter", "Organized": "Organiserad", - "Organized by {name}": "Organiserad av {namn}", + "Organized by": "Organiseras av", + "Organized by {name}": "Organiseras av {namn}", "Organizer": "Organisatör", "Otherwise this identity will just be removed from the group administrators.": "Annars kommer den här identiteten bara raderas från gruppens administratörer.", "Page limited to my group (asks for auth)": "Sida begränsad till min grupp (frågar efter autentisering)", @@ -239,6 +247,8 @@ "Please read the full rules": "Vänligen läs reglerna", "Please refresh the page and retry.": "Vänligen ladda om sidan och försök igen.", "Please type at least 5 characters": "Vänligen skriv minst 5 karaktärer", + "Post a comment": "Skriv en kommentar", + "Post a reply": "Skriv ett svar", "Postal Code": "Postkod", "Private event": "Privat evenemang", "Private feeds": "Privata feeds", @@ -250,6 +260,7 @@ "Publish": "Publicera", "Published events": "Publicerade evenemang", "RSS/Atom Feed": "RSS/Atom-feed", + "Radius": "Avstånd", "Read Framasoft’s statement of intent on the Framablog": "Läs Framasofts uttalande om intention på Framabloggen", "Region": "Region", "Register": "Registrera", @@ -259,6 +270,7 @@ "Reject": "Avfärda", "Rejected": "Avfärdad", "Rejected participations": "Avfärdade deltaganden", + "Reply": "Svara", "Report": "Rapportera", "Report this event": "Rapportera det här evenemanget", "Requests": "Förfrågningar", @@ -284,6 +296,7 @@ "Status": "Status", "Street": "Gata", "Tentative: Will be confirmed later": "Preliminär: Kommer bekräftas senare", + "Terms": "Användarvillkor", "The content came from another server. Transfer an anonymous copy of the report?": "Innehållet kom rån en annan server. Överför en anonym kopia av rapporten?", "The current identity doesn't have any permission on this event. You should probably change it.": "Den aktiva identiteten har inga behörigheter på det här evenemanget. Du borde antagligen ändra det.", "The draft event has been updated": "Utkastet har uppdaterats", @@ -316,8 +329,10 @@ "Upcoming": "Kommande", "Update event {name}": "Uppdatera evenemang {name}", "Update my event": "Uppdatera mitt evenemang", + "Use my location": "Använd min plats", "Username": "Användarnamn", "Users": "Användare", + "View a reply": "Inga svar|Visa 1 svar|Vsa {totalReplies} svar", "View event page": "Visa evenemangsidan", "View everything": "Visa allt", "View page on {hostname} (in a new window)": "Visa sidan hos {hostname} (öppnas i ett nytt fönster)", @@ -357,6 +372,7 @@ "Your participation has been requested": "Ditt deltagande har förfrågats", "a decentralised federation protocol": "ett decentraliserat federationsprotokoll", "e.g. 10 Rue Jangot": "e.g. 10 Rue Jangot", + "explore the events": "utforska evenemang", "firstDayOfWeek": "0", "iCal Feed": "iCal-feed", "interconnect with others like it": "sammanlänka med liknande", From 4c0c7b4181cd4fd4d8e1a53b379729fd4e31013e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eivind=20=C3=98deg=C3=A5rd?= Date: Tue, 5 Jan 2021 07:38:35 +0000 Subject: [PATCH 011/114] Translated using Weblate (Norwegian Nynorsk) Currently translated at 100.0% (825 of 825 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nn/ --- js/src/i18n/nn.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/js/src/i18n/nn.json b/js/src/i18n/nn.json index fc6f1baee..dcd228541 100644 --- a/js/src/i18n/nn.json +++ b/js/src/i18n/nn.json @@ -143,6 +143,7 @@ "Create a pad": "Lag ei kladdebok", "Create a videoconference": "Lag ein videokonferanse", "Create an account": "Lag ein konto", + "Create event": "Lag hending", "Create group": "Lag ei gruppe", "Create my event": "Lag hendinga mi", "Create my group": "Lag gruppa mi", @@ -197,6 +198,8 @@ "Displayed nickname": "Synleg kallenamn", "Displayed on homepage and meta tags. Describe what Mobilizon is and what makes this instance special in a single paragraph.": "Står på heimesida og meta-skildring. Skriv kva Mobilizon er, og kva som gjer denne nettstaden spesiell, i eitt avsnitt.", "Do not receive any mail": "Ikkje få nokon epostar", + "Do you wish to {create_event} or {explore_events}?": "Vil du {create_event} eller {explore_events}?", + "Do you wish to {create_group} or {explore_groups}?": "Vil du {create_group} eller {explore_groups}?", "Domain": "Domene", "Don't show @{organizer} as event host alongside @{group}": "Ikkje syn @{organizer} som vert ved sidan av @{group}", "Draft": "Kladd", @@ -267,6 +270,7 @@ "General": "Allment", "General information": "Allmenne opplysingar", "Getting location": "Hentar plass", + "Getting there": "Kvar skjer det", "Glossary": "Ordliste", "Go": "Gå", "Go to the event page": "Gå til hendingssida", @@ -282,6 +286,7 @@ "Group {displayName} created": "Gruppa {displayName} er oppretta", "Group {groupTitle} reported": "Gruppa {groupTitle} er rapportert", "Groups": "Grupper", + "Groups are not enabled on this instance.": "Denne nettstaden bruker ikkje grupper.", "Groups are spaces for coordination and preparation to better organize events and manage your community.": "Grupper er stader der du koordinerer og førebur deg for å skipa til hendingar og handtera brukarsamfunnet ditt.", "Headline picture": "Hovudbilete", "Hide replies": "Gøym svar", @@ -676,6 +681,7 @@ "Tomorrow": "I morgon", "Transfer to {outsideDomain}": "Overfør til {outsideDomain}", "Type": "Type", + "Type or select a date…": "Skriv inn eller vel ein dato…", "URL": "URL-adresse", "URL copied to clipboard": "Adressa er kopiert til utklippstavla", "Unable to detect timezone.": "Greidde ikkje finna tidssonen.", @@ -704,6 +710,7 @@ "Users": "Brukarar", "View a reply": "|Sjå eitt svar|Sjå {totalReplies} svar", "View all": "Sjå alle", + "View all events": "Sjå alle hendingar", "View all posts": "Sjå alle innlegga", "View all upcoming events": "Sjå alle komande hendingar", "View event page": "Sjå på hendingssida", @@ -732,6 +739,7 @@ "Will allow to display and manage your participation status on the event page when using this device. Uncheck if you're using a public device.": "Lèt deg syna og handtera deltakarstatusen din på hendingssida når du bruker denne eininga. Fjern merkinga viss du bruker ei offentleg eining.", "Write something…": "Skriv noko…", "You are not an administrator for this group.": "Du er ikkje styrar for denne gruppa.", + "You are not part of any group.": "Du er ikkje med i noko gruppe.", "You are participating in this event anonymously": "Du deltek på denne hendinga anonymt", "You are participating in this event anonymously but didn't confirm participation": "Du deltek på denne hendinga anonymt, men har ikkje stadfesta at du deltek", "You can add tags by hitting the Enter key or by adding a comma": "Du kan leggja til merkelappar ved å trykkja Enter eller skriva eit komma", @@ -739,6 +747,7 @@ "You can pick your timezone into your preferences.": "Du kan velja tidssone i innstillingane dine.", "You can try another search term or drag and drop the marker on the map": "Du kan søkja etter noko anna, eller dra og sleppa markøren på kartet", "You can't change your password because you are registered through {provider}.": "Du kan ikkje endra passordet ditt, fordi du er registrert gjennom {provider}.", + "You didn't create or join any event yet.": "Du har ikkje laga eller vorte med på hendingar enno.", "You don't follow any instances yet.": "Du fylgjer ingen nettstader enno.", "You have been disconnected": "Du er fråkopla", "You have been invited by {invitedBy} to the following group:": "{invitedBy} har invitert deg til denne gruppa:", @@ -754,6 +763,7 @@ "You need to login.": "Du må logga inn.", "You will be able to add an avatar and set other options in your account settings.": "Du kan laga eit profilbilete og gjera andre val i kontoinnstillingane dine.", "You will be redirected to the original instance": "Du blir send vidare til den opphavelege nettstaden", + "You will find here all the events you have created or of which you are a participant.": "Her finn du alle hendingane du har laga eller deltek på.", "You wish to participate to the following event": "Du ynskjer å delta på denne hendinga", "You'll get a weekly recap every Monday for upcoming events, if you have any.": "Du vil få eit samandrag kvar måndag over komande hendingar, om du har nokon.", "You'll need to transmit the group URL so people may access the group's profile. The group won't be findable in Mobilizon's search or regular search engines.": "Du må senda ut gruppeadressa slik at folk kan sjå gruppeprofilen. Du vil ikkje finna gruppa i Mobilizon-søk eller vanlege søkjemotorar.", @@ -791,9 +801,13 @@ "any distance": "alle avstandar", "as {identity}": "som {identity}", "contact uninformed": "ingen kontakt informert", + "create a group": "laga ei gruppe", + "create an event": "laga ei hending", "default Mobilizon privacy policy": "standard personvern for Mobilizon", "default Mobilizon terms": "Standardvilkår for Mobilizon", "e.g. 10 Rue Jangot": "td. Kaigata 10", + "explore the events": "utforska hendingane", + "explore the groups": "utforska gruppene", "firstDayOfWeek": "1", "full rules": "fullstendige reglar", "iCal Feed": "iCal-straum", From 4d534d431c9391600099ba9ad69576d7729042c1 Mon Sep 17 00:00:00 2001 From: Vodoyo Kamal Date: Thu, 7 Jan 2021 12:04:06 +0000 Subject: [PATCH 012/114] Translated using Weblate (Bengali) Currently translated at 0.4% (4 of 825 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/bn/ --- js/src/i18n/bn.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/js/src/i18n/bn.json b/js/src/i18n/bn.json index 0967ef424..02a1ebe43 100644 --- a/js/src/i18n/bn.json +++ b/js/src/i18n/bn.json @@ -1 +1,6 @@ -{} +{ + "Accepted": "অনুমদিত", + "Account": "অ্", + "Add": "যোগ", + "Admin": "অ্যাড" +} From 3f856daf419a75a476e38d04761ec45c6e4279d7 Mon Sep 17 00:00:00 2001 From: setop Date: Sun, 10 Jan 2021 00:01:57 +0100 Subject: [PATCH 013/114] add "hr"to allowed tags in HTML because it doesn't hurt and it is useful in event description and all other HTML content --- lib/service/formatter/default_scrubbler.ex | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/service/formatter/default_scrubbler.ex b/lib/service/formatter/default_scrubbler.ex index e0f8ac707..cf353fc05 100644 --- a/lib/service/formatter/default_scrubbler.ex +++ b/lib/service/formatter/default_scrubbler.ex @@ -73,6 +73,7 @@ defmodule Mobilizon.Service.Formatter.DefaultScrubbler do Meta.allow_tag_with_these_attributes(:h3, []) Meta.allow_tag_with_these_attributes(:h4, []) Meta.allow_tag_with_these_attributes(:h5, []) + Meta.allow_tag_with_these_attributes(:hr, []) Meta.strip_everything_not_covered() end From a82e309fb927b95384f2808f72e98363608cf55a Mon Sep 17 00:00:00 2001 From: Kate Date: Sun, 10 Jan 2021 19:00:24 +0000 Subject: [PATCH 014/114] Translated using Weblate (German) Currently translated at 98.9% (816 of 825 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/ --- js/src/i18n/de.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/src/i18n/de.json b/js/src/i18n/de.json index beb2e436d..5d606c4f2 100644 --- a/js/src/i18n/de.json +++ b/js/src/i18n/de.json @@ -97,7 +97,7 @@ "Begins on": "Beginnt um", "Bold": "Fett", "By @{group}": "Von @{group}", - "By @{username}": "Nach @{username}", + "By @{username}": "von @{username}", "By {author}": "Von {author}", "By {group}": "Von {group}", "By {username} and {group}": "Nach {username} und {group}", @@ -235,7 +235,7 @@ "Enabled": "Aktiviert", "Ends on…": "Endet mit…", "Enjoy discovering Mobilizon!": "Viel Spaß beim Entdecken von Mobilizon!", - "Enter the link URL": "Füge die URL ein", + "Enter the link URL": "Fügen Sie die URL ein", "Enter your email address below, and we'll email you instructions on how to change your password.": "Gib unten deine E-Mail-Adresse ein und wir senden dir per E-Mail Anweisungen, wie du dein Passwort zurücksetzen kannst.", "Enter your own privacy policy. HTML tags allowed. The {mobilizon_privacy_policy} is provided as template.": "Gebe deine eigene Datenschutzerklärung ein. HTML tags sind erlaubt. Die {mobilizon_privacy_policy} ist als Vorlage bereitgestellt.", "Enter your own terms. HTML tags allowed. The {mobilizon_terms} are provided as template.": "Gib deine eigenen Bedingungen an. HTML-Tags sind erlaubt. Die {mobilizon_terms} sind als Vorlage gegeben.", From aac52fa54c64228e2e94700ea0b942a0d39ff068 Mon Sep 17 00:00:00 2001 From: fluxx Date: Sun, 10 Jan 2021 19:00:04 +0000 Subject: [PATCH 015/114] Translated using Weblate (German) Currently translated at 98.9% (816 of 825 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/ --- js/src/i18n/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/src/i18n/de.json b/js/src/i18n/de.json index 5d606c4f2..5df4f9b16 100644 --- a/js/src/i18n/de.json +++ b/js/src/i18n/de.json @@ -233,7 +233,7 @@ "Email address": "E-Mail-Adresse", "Email notifications": "E-Mail-Benachrichtigungen", "Enabled": "Aktiviert", - "Ends on…": "Endet mit…", + "Ends on…": "Endet auf…", "Enjoy discovering Mobilizon!": "Viel Spaß beim Entdecken von Mobilizon!", "Enter the link URL": "Fügen Sie die URL ein", "Enter your email address below, and we'll email you instructions on how to change your password.": "Gib unten deine E-Mail-Adresse ein und wir senden dir per E-Mail Anweisungen, wie du dein Passwort zurücksetzen kannst.", From 1483fe0f5049d9aa8b85dff262efcde74f8c9f55 Mon Sep 17 00:00:00 2001 From: Malik Date: Sun, 10 Jan 2021 18:59:40 +0000 Subject: [PATCH 016/114] Translated using Weblate (German) Currently translated at 98.9% (816 of 825 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/ --- js/src/i18n/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/src/i18n/de.json b/js/src/i18n/de.json index 5df4f9b16..1947bdf11 100644 --- a/js/src/i18n/de.json +++ b/js/src/i18n/de.json @@ -125,7 +125,7 @@ "Click to select": "Klicken zum Auswählen", "Click to upload": "Klicken zum Hochladen", "Close": "Schließen", - "Close comments for all (except for admins)": "Schließe die Kommentare für alle (außer für Administratoren)", + "Close comments for all (except for admins)": "Kommentare für alle sperren (außer für Admins)", "Closed": "Geschlossen", "Comment deleted": "Kommentar gelöscht", "Comment from @{username} reported": "Kommentar von @{username} gemeldet", From a7205ea15f8cd145e6cd519df09792a6242d350e Mon Sep 17 00:00:00 2001 From: Kate Date: Sun, 10 Jan 2021 19:26:34 +0000 Subject: [PATCH 017/114] Translated using Weblate (German) Currently translated at 98.9% (816 of 825 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/ --- js/src/i18n/de.json | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/js/src/i18n/de.json b/js/src/i18n/de.json index 1947bdf11..25b7fffe3 100644 --- a/js/src/i18n/de.json +++ b/js/src/i18n/de.json @@ -70,30 +70,30 @@ "An instance is an installed version of the Mobilizon software running on a server. An instance can be run by anyone using the {mobilizon_software} or other federated apps, aka the “fediverse”. This instance's name is {instance_name}. Mobilizon is a federated network of multiple instances (just like email servers), users registered on different instances may communicate even though they didn't register on the same instance.": "Als Instanz bezeichnen wir eine Installation der Mobilizon-Software auf einem Server. Eine Instanz kann von jedem mit Hilfe der {mobilizon_software} oder anderer kompatibler Software betrieben werden. Der Name dieser Instanz lautet „{instance_name}“. Diese Instanz ist Teil des „Fediverse“, einem Netzwerk aus vielen verbundenen Instanzen, die alle miteinander kommunizieren können. Nutzer:innen von verschiedenen Instanzen können so - genau wie beim E-Mail-System - miteinander kommunizieren, auch wenn sie Accounts bei völlig verschiedenen Instanzen registriert haben.", "An “application programming interface” or “API” is a communication protocol that allows software components to communicate with each other. The Mobilizon API, for example, can allow third-party software tools to communicate with Mobilizon instances to carry out certain actions, such as posting events on your behalf, automatically and remotely.": "Eine Programmierschnittstelle, auch API genannt (von englisch „application programming interface“) definiert ein Kommunikationsprotokoll, das Softwarekomponenten erlaubt, miteinander zu interagieren. Die Mobilizon-API ermöglicht Drittanbietersoftware beispielsweise automatisiert bestimmte Aktionen auszuführen, z.B. das Erstellen von Veranstaltungen in deinem Namen.", "And {number} comments": "Und {number} Kommentare", - "Anonymous participant": "Anonyme Teilnehmer:in", - "Anonymous participants will be asked to confirm their participation through e-mail.": "Anonyme Teilnehmer:innen werden gebeten, ihre Teilnahme per E-Mail zu bestätigen.", + "Anonymous participant": "Anonymer Teilnehmer", + "Anonymous participants will be asked to confirm their participation through e-mail.": "Anonyme Teilnehmer werden gebeten, ihre Teilnahme per E-Mail zu bestätigen.", "Anonymous participations": "Anonyme Teilnehmer", "Any day": "Egal wann", "Anyone can join freely": "Jeder kann frei beitreten", "Anyone wanting to be a member from your group will be able to from your group page.": "Jeder, der ein Mitglied Ihrer Gruppe werden möchte, kann dies von Ihrer Gruppenseite aus tun.", "Application": "Anwendung", "Approve": "Bestätigen", - "Are you really sure you want to delete your whole account? You'll lose everything. Identities, settings, events created, messages and participations will be gone forever.": "Bist du dir sicher, dass du den gesamten Account löschen möchtest? Du verlierst dadurch alles. Identitäten, Einstellungen, erstellte Events, Nachrichten, Teilnahmen sind dann für immer verschwunden.", + "Are you really sure you want to delete your whole account? You'll lose everything. Identities, settings, events created, messages and participations will be gone forever.": "Sind Sie sich sicher, dass Sie Ihren gesamten Nutzeraccount löschen möchten? Sie verlieren dadurch alles. Identitäten, Einstellungen, erstellte Veranstaltungen, Nachrichten, Teilnahmen sind dann für immer verschwunden.", "Are you sure you want to completely delete this group? All members - including remote ones - will be notified and removed from the group, and all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed.": "Sind Sie sicher, dass Sie diese Gruppe vollständig löschen wollen? Alle Mitglieder - auch die entfernten - werden benachrichtigt und aus der Gruppe entfernt, und alle Daten der Gruppe (Ereignisse, Beiträge, Diskussionen, ToDos...) werden unwiederbringlich zerstört.", - "Are you sure you want to delete this comment? This action cannot be undone.": "Bist du sicher, dass du diesen Kommentar löschen willst? Diese Aktion kann nicht rückgängig gemacht werden.", - "Are you sure you want to delete this event? This action cannot be undone. You may want to engage the discussion with the event creator or edit its event instead.": "Bist du sicher, dass du diese Veranstaltung löschen willst? Diese Aktion kann nicht rückgängig gemacht werden.", - "Are you sure you want to suspend this group? All members - including remote ones - will be notified and removed from the group, and all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed.": "Sind Sie sicher, dass Sie diese Gruppe suspendieren wollen? Alle Mitglieder - auch die entfernten - werden benachrichtigt und aus der Gruppe entfernt, und alle Daten der Gruppe (Ereignisse, Beiträge, Diskussionen, ToDos...) werden unwiederbringlich zerstört.", - "Are you sure you want to suspend this group? As this group originates from instance {instance}, this will only remove local members and delete the local data, as well as rejecting all the future data.": "Sind Sie sicher, dass Sie diese Gruppe suspendieren wollen? Da diese Gruppe von der Instanz {instance} stammt, werden dadurch nur die lokalen Mitglieder entfernt und die lokalen Daten gelöscht, sowie alle zukünftigen Daten verworfen.", - "Are you sure you want to cancel the event creation? You'll lose all modifications.": "Bist Du dir sicher, dass du das Erstellen der Veranstaltung abbrechen möchtest? Alle Änderungen werden verloren gehen.", - "Are you sure you want to cancel the event edition? You'll lose all modifications.": "Bist du dir sicher, dass Du die Bearbeitung der Veranstaltung abbrechen möchtest? Alle Änderungen werden verloren gehen.", - "Are you sure you want to cancel your participation at event \"{title}\"?": "Bist Du dir sicher, dass Du nicht mehr an der Veranstaltung \"{title}\" teilnehmen möchtest?", - "Are you sure you want to delete this event? This action cannot be reverted.": "Bist Du dir sicher, dass Du diese Veranstaltung löschen möchtest? Dies kann nicht rückgängig gemacht werden.", + "Are you sure you want to delete this comment? This action cannot be undone.": "Sind Sie sicher, dass Sie diesen Kommentar löschen wollen? Diese Aktion kann nicht rückgängig gemacht werden.", + "Are you sure you want to delete this event? This action cannot be undone. You may want to engage the discussion with the event creator or edit its event instead.": "Sind Sie sicher, dass Sie diese Veranstaltung löschen wollen? Diese Aktion kann nicht rückgängig gemacht werden.", + "Are you sure you want to suspend this group? All members - including remote ones - will be notified and removed from the group, and all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed.": "Möchten Sie diese Gruppe wirklich auflösen? Alle Mitglieder - einschließlich externe - werden benachrichtigt und aus der Gruppe entfernt. Es werden alle Gruppendaten (Veranstaltungen, Beiträge, Diskussionen, Aufgaben, ...) irreversibel gelöscht.", + "Are you sure you want to suspend this group? As this group originates from instance {instance}, this will only remove local members and delete the local data, as well as rejecting all the future data.": "Möchten Sie diese Gruppe wirklich auflösen? Da diese Gruppe von einer anderen Instanz ({instance}) stammt, werden nur lokale Mitglieder und Daten entfernt und zukünftige Daten abgelehnt.", + "Are you sure you want to cancel the event creation? You'll lose all modifications.": "Sind Sie sich sicher, dass Sie das Erstellen der Veranstaltung abbrechen möchten? Alle Änderungen werden verloren gehen.", + "Are you sure you want to cancel the event edition? You'll lose all modifications.": "Sind Sie sich sicher, dass die Veranstaltung abrechen möchten? Sie verlieren dann alle Änderungen.", + "Are you sure you want to cancel your participation at event \"{title}\"?": "Sind Sie sicher, dass Sie Ihre Teilnahme an der Veranstaltung \"{Titel}\" stornieren möchten?", + "Are you sure you want to delete this event? This action cannot be reverted.": "Sind Sie sicher, dass Sie diese Veranstaltung löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", "As the event organizer has chosen to manually validate participation requests, your participation will be really confirmed only once you receive an email stating it's being accepted.": "Da der Veranstalter sich entschieden hat, die Teilnahmeanfragen manuell zu validieren, wird Ihre Teilnahme erst dann wirklich bestätigt, wenn Sie eine E-Mail erhalten, in der die Annahme bestätigt wird.", "Assigned to": "Zugewiesen an", "Avatar": "Profilbild", "Back to previous page": "Zurück zur vorherigen Seite", "Banner": "Banner", - "Before you can login, you need to click on the link inside it to validate your account.": "Bevor Du dich einloggen kannst, musst Du den Link anklicken, um deinen Account zu überprüfen.", + "Before you can login, you need to click on the link inside it to validate your account.": "Bevor Sie sich anmelden können, müssen Sie auf den darin enthaltenen Link klicken, um Ihr Konto zu validieren.", "Begins on": "Beginnt um", "Bold": "Fett", "By @{group}": "Von @{group}", @@ -142,7 +142,7 @@ "Congratulations, your account is now created!": "Glückwunsch, dein Account wurde jetzt erstellt!", "Contact": "Kontakt", "Continue editing": "Bearbeitung fortsetzen", - "Cookies and Local storage": "Cookies und lokale Website-Daten", + "Cookies and Local storage": "Cookies und lokaler Web-Storage", "Country": "Land", "Create": "Erstellen", "Create a calc": "Erstelle ein Tabellenkalkulations-Dokument", @@ -190,19 +190,19 @@ "Delete Event": "Veranstaltung löschen", "Delete account": "Account löschen", "Delete conversation": "Lösche Konversation", - "Delete event": "Event löschen", + "Delete event": "Veranstaltung löschen", "Delete everything": "Alles löschen", - "Delete group": "Lösche Gruppe", - "Delete my account": "Meinen Account löschen", + "Delete group": "Gruppe löschen", + "Delete my account": "Mein Konto löschen", "Delete post": "Beitrag löschen", "Delete this identity": "Diese Identität löschen", - "Delete your identity": "Deine Identität löschen", + "Delete your identity": "Ihre Identität löschen", "Delete {eventTitle}": "Lösche {eventTitle}", "Delete {preferredUsername}": "Lösche {preferredUsername}", "Deleting comment": "Lösche Kommentar", - "Deleting event": "Lösche Event", - "Deleting my account will delete all of my identities.": "Das Löschen meines Accounts wird all meine Identitäten löschen.", - "Deleting your Mobilizon account": "Lösche dein Mobilizon Konto", + "Deleting event": "Lösche Veranstaltung", + "Deleting my account will delete all of my identities.": "Das Löschen meines Accounts wird alle meine Identitäten löschen.", + "Deleting your Mobilizon account": "Löschen Sie Ihr Mobilizon Konto", "Demote": "zurückstufen", "Description": "Beschreibung", "Didn't receive the instructions ?": "Bestätigungsmail nicht erhalten?", @@ -233,7 +233,7 @@ "Email address": "E-Mail-Adresse", "Email notifications": "E-Mail-Benachrichtigungen", "Enabled": "Aktiviert", - "Ends on…": "Endet auf…", + "Ends on…": "Endet am…", "Enjoy discovering Mobilizon!": "Viel Spaß beim Entdecken von Mobilizon!", "Enter the link URL": "Fügen Sie die URL ein", "Enter your email address below, and we'll email you instructions on how to change your password.": "Gib unten deine E-Mail-Adresse ein und wir senden dir per E-Mail Anweisungen, wie du dein Passwort zurücksetzen kannst.", @@ -733,7 +733,7 @@ "This installation (called “instance“) can easily {interconnect}, thanks to {protocol}.": "Diese Installation (genannt \"Instanz\") kann sich dank {protocol} ganz einfach {interconnect}.", "This instance isn't opened to registrations, but you can register on other instances.": "Diese Instanz lässt keine Registrierungen zu, aber Du kannst dich auf anderen Instanzen registrieren.", "This instance, {instanceName} ({domain}), hosts your profile, so remember its name.": "Diese Instanz, {instanceName} ({domain}), hostet Ihr Profil, merken Sie sich also ihren Namen.", - "This is a demonstration site to test Mobilizon.": "Dies ist ein Demo-Seite, um Mobilizon zu testen.", + "This is a demonstration site to test Mobilizon.": "Dies ist eine Demoseite zum kennenlernen von Mobilizon.", "This is a demonstration site to test the beta version of Mobilizon.": "Dies ist eine Demo-Seite, um die Beta-Version von Mobilizon zu testen.", "This is like your federated username ({username}) for groups. It will allow the group to be found on the federation, and is guaranteed to be unique.": "Dies ist wie Ihr föderierter Benutzername ({username}) für Gruppen. Damit kann die Gruppe im Verbund gefunden werden und ist garantiert eindeutig.", "This month": "Diesen Monat", From c4f762c146035acb0180105581a209478c18979f Mon Sep 17 00:00:00 2001 From: fluxx Date: Sun, 10 Jan 2021 19:00:51 +0000 Subject: [PATCH 018/114] Translated using Weblate (German) Currently translated at 98.9% (816 of 825 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/ --- js/src/i18n/de.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/src/i18n/de.json b/js/src/i18n/de.json index 25b7fffe3..a89a04a23 100644 --- a/js/src/i18n/de.json +++ b/js/src/i18n/de.json @@ -235,7 +235,7 @@ "Enabled": "Aktiviert", "Ends on…": "Endet am…", "Enjoy discovering Mobilizon!": "Viel Spaß beim Entdecken von Mobilizon!", - "Enter the link URL": "Fügen Sie die URL ein", + "Enter the link URL": "Gib den Link ein", "Enter your email address below, and we'll email you instructions on how to change your password.": "Gib unten deine E-Mail-Adresse ein und wir senden dir per E-Mail Anweisungen, wie du dein Passwort zurücksetzen kannst.", "Enter your own privacy policy. HTML tags allowed. The {mobilizon_privacy_policy} is provided as template.": "Gebe deine eigene Datenschutzerklärung ein. HTML tags sind erlaubt. Die {mobilizon_privacy_policy} ist als Vorlage bereitgestellt.", "Enter your own terms. HTML tags allowed. The {mobilizon_terms} are provided as template.": "Gib deine eigenen Bedingungen an. HTML-Tags sind erlaubt. Die {mobilizon_terms} sind als Vorlage gegeben.", @@ -251,7 +251,7 @@ "Error while validating participation request": "Bei Deiner Teilnahmebestätigung ist ein Fehler aufgetreten", "Ethical alternative to Facebook events, groups and pages, Mobilizon is a tool designed to serve you. Period.": "Ethische Alternative zu Facebook-Events, -Gruppen und -Seiten. Mobilizon ist ein Werkzeug, das Ihnen dienen soll. Punkt.", "Event": "Veranstaltung", - "Event already passed": "Veranstaltung hat bereits stattgefunden", + "Event already passed": "Veranstaltung liegt in der Vergangenheit", "Event cancelled": "Veranstaltung abgesagt", "Event creation": "Veranstaltung anlegen", "Event edition": "Veranstaltung bearbeiten", @@ -274,7 +274,7 @@ "Featured events": "Vorgestellte Veranstaltungen", "Features": "Funktionen", "Federated Group Name": "Federierter Gruppenname", - "Federation": "Föderation", + "Federation": "Föderierung", "Fetch more": "Mehr abrufen", "Find an address": "Adresse finden", "Find an instance": "Eine Instanz finden", From b69daa7b54f36c167531b065bd5dfac32405c0c7 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 21 Dec 2020 15:47:26 +0100 Subject: [PATCH 019/114] Attach event ics files to event-related emails Signed-off-by: Thomas Citharel --- lib/service/export/icalendar.ex | 13 +++++++++++-- lib/web/email/email.ex | 18 +++++++++++++++++- lib/web/email/event.ex | 1 + lib/web/email/notification.ex | 1 + lib/web/email/participation.ex | 1 + mix.exs | 1 + test/service/export/icalendar_test.exs | 2 +- 7 files changed, 33 insertions(+), 4 deletions(-) diff --git a/lib/service/export/icalendar.ex b/lib/service/export/icalendar.ex index a9d06e94a..902712334 100644 --- a/lib/service/export/icalendar.ex +++ b/lib/service/export/icalendar.ex @@ -3,7 +3,7 @@ defmodule Mobilizon.Service.Export.ICalendar do Export an event to iCalendar format. """ - alias Mobilizon.{Actors, Events, Users} + alias Mobilizon.{Actors, Config, Events, Users} alias Mobilizon.Actors.Actor alias Mobilizon.Addresses.Address alias Mobilizon.Events.{Event, FeedToken} @@ -11,6 +11,8 @@ defmodule Mobilizon.Service.Export.ICalendar do alias Mobilizon.Storage.Page alias Mobilizon.Users.User + @vendor "Mobilizon #{Config.instance_version()}" + @doc """ Export a public event to iCalendar format. @@ -19,12 +21,19 @@ defmodule Mobilizon.Service.Export.ICalendar do @spec export_public_event(Event.t()) :: {:ok, String.t()} def export_public_event(%Event{visibility: visibility} = event) when visibility in [:public, :unlisted] do - {:ok, %ICalendar{events: [do_export_event(event)]} |> ICalendar.to_ics(vendor: "Mobilizon")} + export_event(event) end @spec export_public_event(Event.t()) :: {:error, :event_not_public} def export_public_event(%Event{}), do: {:error, :event_not_public} + @doc """ + Export an event to iCalendar format + """ + def export_event(%Event{} = event) do + {:ok, %ICalendar{events: [do_export_event(event)]} |> ICalendar.to_ics(vendor: @vendor)} + end + @spec do_export_event(Event.t()) :: ICalendar.Event.t() defp do_export_event(%Event{} = event) do %ICalendar.Event{ diff --git a/lib/web/email/email.ex b/lib/web/email/email.ex index ac5a31e44..936503f88 100644 --- a/lib/web/email/email.ex +++ b/lib/web/email/email.ex @@ -6,7 +6,9 @@ defmodule Mobilizon.Web.Email do use Bamboo.Phoenix, view: Mobilizon.Web.EmailView alias Ecto.UUID - alias Mobilizon.Config + alias Mobilizon.{Config, Events} + alias Mobilizon.Events.Event + alias Mobilizon.Service.Export.ICalendar alias Mobilizon.Web.EmailView @spec base_email(keyword()) :: Bamboo.Email.t() @@ -40,4 +42,18 @@ defmodule Mobilizon.Web.Email do Timex.format!(DateTime.utc_now(), "{WDshort}, {D} {Mshort} {YYYY} {h24}:{m}:{s} {Z}") end end + + def add_event_attachment(%Bamboo.Email{} = email, %Event{id: event_id}) do + with {:ok, %Event{} = event} <- Events.get_event_with_preload(event_id), + {:ok, event_ics_data} <- ICalendar.export_event(event) do + put_attachment(email, %Bamboo.Attachment{ + filename: Slugger.slugify_downcase(event.title), + content_type: "text/calendar", + data: event_ics_data + }) + else + _ -> + email + end + end end diff --git a/lib/web/email/event.ex b/lib/web/email/event.ex index b7b36e481..2a34fb347 100644 --- a/lib/web/email/event.ex +++ b/lib/web/email/event.ex @@ -46,6 +46,7 @@ defmodule Mobilizon.Web.Email.Event do |> assign(:changes, changes) |> assign(:subject, subject) |> assign(:timezone, timezone) + |> Email.add_event_attachment(event) |> render(:event_updated) end diff --git a/lib/web/email/notification.ex b/lib/web/email/notification.ex index 76fd83ff0..e27b13efb 100644 --- a/lib/web/email/notification.ex +++ b/lib/web/email/notification.ex @@ -30,6 +30,7 @@ defmodule Mobilizon.Web.Email.Notification do |> assign(:locale, locale) |> assign(:participant, participant) |> assign(:subject, subject) + |> Email.add_event_attachment(event) |> render(:before_event_notification) end diff --git a/lib/web/email/participation.ex b/lib/web/email/participation.ex index d3cc31ac6..132c0d8a2 100644 --- a/lib/web/email/participation.ex +++ b/lib/web/email/participation.ex @@ -118,6 +118,7 @@ defmodule Mobilizon.Web.Email.Participation do |> assign(:locale, locale) |> assign(:event, event) |> assign(:subject, subject) + |> Email.add_event_attachment(event) |> render(:event_participation_approved) end diff --git a/mix.exs b/mix.exs index bdd09654a..5294e8c90 100644 --- a/mix.exs +++ b/mix.exs @@ -133,6 +133,7 @@ defmodule Mobilizon.Mixfile do {:xml_builder, "~> 2.1.1", override: true}, {:remote_ip, "~> 0.2.0"}, {:ex_cldr_languages, "~> 0.2.1"}, + {:slugger, "~> 0.3"}, # Dev and test dependencies {:phoenix_live_reload, "~> 1.2", only: [:dev, :e2e]}, {:ex_machina, "~> 2.3", only: [:dev, :test]}, diff --git a/test/service/export/icalendar_test.exs b/test/service/export/icalendar_test.exs index 94c170654..9d5329f0a 100644 --- a/test/service/export/icalendar_test.exs +++ b/test/service/export/icalendar_test.exs @@ -17,7 +17,7 @@ defmodule Mobilizon.Service.ICalendarTest do BEGIN:VCALENDAR CALSCALE:GREGORIAN VERSION:2.0 - PRODID:-//ICalendar//Mobilizon//EN + PRODID:-//ICalendar//Mobilizon #{Mobilizon.Config.instance_version()}//EN BEGIN:VEVENT CATEGORIES:#{event.tags |> Enum.map(& &1.title) |> Enum.join(",")} DESCRIPTION:Ceci est une description avec une première phrase assez longue\\,\\n puis sur une seconde ligne From 2215d509844ad42d87cfe9f68eb7660bc1b90af6 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 11 Jan 2021 11:30:03 +0100 Subject: [PATCH 020/114] Upgrade deps Signed-off-by: Thomas Citharel --- js/package.json | 22 +- js/yarn.lock | 907 ++++++++++++++++++++++++------------------------ mix.exs | 4 +- mix.lock | 32 +- 4 files changed, 487 insertions(+), 478 deletions(-) diff --git a/js/package.json b/js/package.json index 67cfc5aa6..bb4ed4401 100644 --- a/js/package.json +++ b/js/package.json @@ -4,12 +4,12 @@ "private": true, "scripts": { "serve": "vue-cli-service serve", - "build:assets": "vue-cli-service build --modern", - "build:pictures": "bash ./scripts/build/pictures.sh", "build": "yarn run build:assets && yarn run build:pictures", "test:unit": "LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 vue-cli-service test:unit", "test:e2e": "vue-cli-service test:e2e", - "lint": "vue-cli-service lint" + "lint": "vue-cli-service lint", + "build:assets": "vue-cli-service build --modern", + "build:pictures": "bash ./scripts/build/pictures.sh" }, "dependencies": { "@absinthe/socket": "^0.2.1", @@ -67,14 +67,14 @@ "@types/vuedraggable": "^2.23.0", "@typescript-eslint/eslint-plugin": "^4.0.1", "@typescript-eslint/parser": "^4.0.1", - "@vue/cli-plugin-babel": "~4.5.9", - "@vue/cli-plugin-e2e-cypress": "~4.5.9", - "@vue/cli-plugin-eslint": "~4.5.9", - "@vue/cli-plugin-pwa": "~4.5.9", - "@vue/cli-plugin-router": "~4.5.9", - "@vue/cli-plugin-typescript": "~4.5.9", - "@vue/cli-plugin-unit-jest": "~4.5.0", - "@vue/cli-service": "~4.5.9", + "@vue/cli-plugin-babel": "~4.5.10", + "@vue/cli-plugin-e2e-cypress": "~4.5.10", + "@vue/cli-plugin-eslint": "~4.5.10", + "@vue/cli-plugin-pwa": "~4.5.10", + "@vue/cli-plugin-router": "~4.5.10", + "@vue/cli-plugin-typescript": "~4.5.10", + "@vue/cli-plugin-unit-jest": "~4.5.10", + "@vue/cli-service": "~4.5.10", "@vue/eslint-config-prettier": "^6.0.0", "@vue/eslint-config-typescript": "^7.0.0", "@vue/test-utils": "^1.1.0", diff --git a/js/yarn.lock b/js/yarn.lock index 3084d685c..6b8ab25eb 100644 --- a/js/yarn.lock +++ b/js/yarn.lock @@ -27,7 +27,7 @@ core-js "2.6.0" zen-observable "0.8.11" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11", "@babel/code-frame@^7.8.3": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== @@ -60,7 +60,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.12.10", "@babel/generator@^7.4.0": +"@babel/generator@^7.12.10", "@babel/generator@^7.12.11", "@babel/generator@^7.4.0": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af" integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA== @@ -129,7 +129,7 @@ dependencies: "@babel/types" "^7.12.1" -"@babel/helper-function-name@^7.10.4": +"@babel/helper-function-name@^7.10.4", "@babel/helper-function-name@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42" integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA== @@ -226,7 +226,7 @@ dependencies: "@babel/types" "^7.12.1" -"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": +"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a" integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g== @@ -271,15 +271,15 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.7", "@babel/parser@^7.4.3": +"@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.4.3": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== "@babel/plugin-proposal-async-generator-functions@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e" - integrity sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A== + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz#04b8f24fd4532008ab4e79f788468fd5a8476566" + integrity sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-remap-async-to-generator" "^7.12.1" @@ -294,9 +294,9 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-proposal-decorators@^7.8.3": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz#59271439fed4145456c41067450543aee332d15f" - integrity sha512-knNIuusychgYN8fGJHONL0RbFxLGawhXOJNLBk75TniTsZZeA+wdkDuv6wp4lGwzQEKjZi6/WYtnb3udNPmQmQ== + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.12.tgz#067a6d3d6ca86d54cf56bb183239199c20daeafe" + integrity sha512-fhkE9lJYpw2mjHelBpM2zCbaA11aov2GJs7q4cFaXNrWx0H3bW58H9Esy2rdtYOghFBEYUDRIpvlgi+ZD+AvvQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" @@ -514,9 +514,9 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-block-scoping@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.11.tgz#83ae92a104dbb93a7d6c6dd1844f351083c46b4f" - integrity sha512-atR1Rxc3hM+VPg/NvNvfYw0npQEAcHuJ+MGZnFn6h3bo+1U3BWXMdFMlvVRApBTWKQMX7SOwRJZA5FBF/JQbvA== + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz#d93a567a152c22aea3b1929bb118d1d0a175cdca" + integrity sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" @@ -855,24 +855,24 @@ "@babel/types" "^7.12.7" "@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5", "@babel/traverse@^7.4.3": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.10.tgz#2d1f4041e8bf42ea099e5b2dc48d6a594c00017a" - integrity sha512-6aEtf0IeRgbYWzta29lePeYSk+YAFIC3kyqESeft8o5CkFlYIMX+EQDDWEiAQ9LHOA3d0oHdgrSsID/CKqXJlg== + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376" + integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w== dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.10" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.12.10" - "@babel/types" "^7.12.10" + "@babel/code-frame" "^7.12.11" + "@babel/generator" "^7.12.11" + "@babel/helper-function-name" "^7.12.11" + "@babel/helper-split-export-declaration" "^7.12.11" + "@babel/parser" "^7.12.11" + "@babel/types" "^7.12.12" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.11.tgz#a86e4d71e30a9b6ee102590446c98662589283ce" - integrity sha512-ukA9SQtKThINm++CX1CwmliMrE54J6nIYB5XTwL5f/CLFW9owfls+YSU8tVW15RQ2w+a3fSbPjC6HdQNtWZkiA== +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" + integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== dependencies: "@babel/helper-validator-identifier" "^7.12.11" lodash "^4.17.19" @@ -1162,18 +1162,18 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== +"@nodelib/fs.scandir@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" + integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== dependencies: - "@nodelib/fs.stat" "2.0.3" + "@nodelib/fs.stat" "2.0.4" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== +"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" + integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== "@nodelib/fs.stat@^1.1.2": version "1.1.3" @@ -1181,11 +1181,11 @@ integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== "@nodelib/fs.walk@^1.2.3": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + version "1.2.6" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" + integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== dependencies: - "@nodelib/fs.scandir" "2.1.3" + "@nodelib/fs.scandir" "2.1.4" fastq "^1.6.0" "@popperjs/core@^2.4.4": @@ -1357,9 +1357,9 @@ jest-diff "^24.3.0" "@types/jest@^26.0.18": - version "26.0.19" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.19.tgz#e6fa1e3def5842ec85045bd5210e9bb8289de790" - integrity sha512-jqHoirTG61fee6v6rwbnEuKhpSKih0tuhqeFbCmMmErhtu3BYlOZaXWjffgOstMM4S/3iQD31lI5bGLTrs97yQ== + version "26.0.20" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.20.tgz#cd2f2702ecf69e86b586e1f5223a60e454056307" + integrity sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA== dependencies: jest-diff "^26.0.0" pretty-format "^26.0.0" @@ -1384,9 +1384,9 @@ "@types/geojson" "*" "@types/lodash@^4.14.141": - version "4.14.165" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.165.tgz#74d55d947452e2de0742bad65270433b63a8c30f" - integrity sha512-tjSSOTHhI5mCHTy/OOXYIhi2Wt1qcbHmuXD1Ha7q70CgI/I71afO4XtLb/cVexki1oVYchpul/TOuu3Arcdxrg== + version "4.14.167" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.167.tgz#ce7d78553e3c886d4ea643c37ec7edc20f16765e" + integrity sha512-w7tQPjARrvdeBkX/Rwg95S592JwxqOjmms3zWQ0XZgSyxSLdzWaYH3vErBhdVS/lRBX7F8aBYcYJYTr5TMGOzw== "@types/mime@*": version "2.0.3" @@ -1409,9 +1409,9 @@ integrity sha512-6nlq2eEh75JegDGUXis9wGTYIJpUvbori4qx++PRKQsV3YRkaqUNPNykzphniqPSZADXCouBuAnyptjUkMkhvw== "@types/node@*", "@types/node@>=6": - version "14.14.14" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.14.tgz#f7fd5f3cc8521301119f63910f0fb965c7d761ae" - integrity sha512-UHnOPWVWV1z+VV8k6L1HhG7UbGBgIdghqF3l9Ny9ApPghbjICXkUJSd/b9gOgQfjM1r+37cipdw/HJ3F6ICEnQ== + version "14.14.20" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.20.tgz#f7974863edd21d1f8a494a73e8e2b3658615c340" + integrity sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -1460,9 +1460,9 @@ "@types/prosemirror-model" "*" "@types/prosemirror-view@*", "@types/prosemirror-view@^1.11.4": - version "1.16.1" - resolved "https://registry.yarnpkg.com/@types/prosemirror-view/-/prosemirror-view-1.16.1.tgz#09d66e2518366fd8d6c316c35c621bc374a0414c" - integrity sha512-vsL7QB9Qmg9HcBTWsOkmBEGMF0CfA/SZgtqlUArQglnDWV40ZJYonkjBzyP+YhurMC/s4JT4T2vzfnv7rFF/cg== + version "1.17.0" + resolved "https://registry.yarnpkg.com/@types/prosemirror-view/-/prosemirror-view-1.17.0.tgz#7e283038730a67c35521c8dbc932765a70291edd" + integrity sha512-1OALGaiRmq3c+Y35QVrqqlEykWEszYYx08jAPBhYe6M+YbC6Y2LnmCDXjEOTI1oToJwoADHFPGHl4W59L3fgGg== dependencies: "@types/prosemirror-model" "*" "@types/prosemirror-state" "*" @@ -1573,9 +1573,9 @@ source-map "^0.6.0" "@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + version "20.2.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" + integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== "@types/yargs@^13.0.0": version "13.0.11" @@ -1592,17 +1592,17 @@ "@types/yargs-parser" "*" "@types/zen-observable@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.1.tgz#5668c0bce55a91f2b9566b1d8a4c0a8dbbc79764" - integrity sha512-wmk0xQI6Yy7Fs/il4EpOcflG4uonUpYGqvZARESLc2oy4u69fkatFLbJOeW4Q6awO15P4rduAe6xkwHevpXcUQ== + version "0.8.2" + resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.2.tgz#808c9fa7e4517274ed555fa158f2de4b4f468e71" + integrity sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg== "@typescript-eslint/eslint-plugin@^4.0.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.10.0.tgz#19ed3baf4bc4232c5a7fcd32eaca75c3a5baf9f3" - integrity sha512-h6/V46o6aXpKRlarP1AiJEXuCJ7cMQdlpfMDrcllIgX3dFkLwEBTXAoNP98ZoOmqd1xvymMVRAI4e7yVvlzWEg== + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.12.0.tgz#00d1b23b40b58031e6d7c04a5bc6c1a30a2e834a" + integrity sha512-wHKj6q8s70sO5i39H2g1gtpCXCvjVszzj6FFygneNFyIAxRvNSVz9GML7XpqrB9t7hNutXw+MHnLN/Ih6uyB8Q== dependencies: - "@typescript-eslint/experimental-utils" "4.10.0" - "@typescript-eslint/scope-manager" "4.10.0" + "@typescript-eslint/experimental-utils" "4.12.0" + "@typescript-eslint/scope-manager" "4.12.0" debug "^4.1.1" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" @@ -1620,15 +1620,15 @@ eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/experimental-utils@4.10.0": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.10.0.tgz#dbf5d0f89802d5feaf7d11e5b32df29bbc2f3a0e" - integrity sha512-opX+7ai1sdWBOIoBgpVJrH5e89ra1KoLrJTz0UtWAa4IekkKmqDosk5r6xqRaNJfCXEfteW4HXQAwMdx+jjEmw== +"@typescript-eslint/experimental-utils@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.12.0.tgz#372838e76db76c9a56959217b768a19f7129546b" + integrity sha512-MpXZXUAvHt99c9ScXijx7i061o5HEjXltO+sbYfZAAHxv3XankQkPaNi5myy0Yh0Tyea3Hdq1pi7Vsh0GJb0fA== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.10.0" - "@typescript-eslint/types" "4.10.0" - "@typescript-eslint/typescript-estree" "4.10.0" + "@typescript-eslint/scope-manager" "4.12.0" + "@typescript-eslint/types" "4.12.0" + "@typescript-eslint/typescript-estree" "4.12.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" @@ -1644,32 +1644,32 @@ eslint-visitor-keys "^1.1.0" "@typescript-eslint/parser@^4.0.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.10.0.tgz#1a622b0847b765b2d8f0ede6f0cdd85f03d76031" - integrity sha512-amBvUUGBMadzCW6c/qaZmfr3t9PyevcSWw7hY2FuevdZVp5QPw/K76VSQ5Sw3BxlgYCHZcK6DjIhSZK0PQNsQg== + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.12.0.tgz#e1cf30436e4f916c31fcc962158917bd9e9d460a" + integrity sha512-9XxVADAo9vlfjfoxnjboBTxYOiNY93/QuvcPgsiKvHxW6tOZx1W4TvkIQ2jB3k5M0pbFP5FlXihLK49TjZXhuQ== dependencies: - "@typescript-eslint/scope-manager" "4.10.0" - "@typescript-eslint/types" "4.10.0" - "@typescript-eslint/typescript-estree" "4.10.0" + "@typescript-eslint/scope-manager" "4.12.0" + "@typescript-eslint/types" "4.12.0" + "@typescript-eslint/typescript-estree" "4.12.0" debug "^4.1.1" -"@typescript-eslint/scope-manager@4.10.0": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.10.0.tgz#dbd7e1fc63d7363e3aaff742a6f2b8afdbac9d27" - integrity sha512-WAPVw35P+fcnOa8DEic0tQUhoJJsgt+g6DEcz257G7vHFMwmag58EfowdVbiNcdfcV27EFR0tUBVXkDoIvfisQ== +"@typescript-eslint/scope-manager@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.12.0.tgz#beeb8beca895a07b10c593185a5612f1085ef279" + integrity sha512-QVf9oCSVLte/8jvOsxmgBdOaoe2J0wtEmBr13Yz0rkBNkl5D8bfnf6G4Vhox9qqMIoG7QQoVwd2eG9DM/ge4Qg== dependencies: - "@typescript-eslint/types" "4.10.0" - "@typescript-eslint/visitor-keys" "4.10.0" + "@typescript-eslint/types" "4.12.0" + "@typescript-eslint/visitor-keys" "4.12.0" "@typescript-eslint/types@3.10.1": version "3.10.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== -"@typescript-eslint/types@4.10.0": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.10.0.tgz#12f983750ebad867f0c806e705c1953cd6415789" - integrity sha512-+dt5w1+Lqyd7wIPMa4XhJxUuE8+YF+vxQ6zxHyhLGHJjHiunPf0wSV8LtQwkpmAsRi1lEOoOIR30FG5S2HS33g== +"@typescript-eslint/types@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.12.0.tgz#fb891fe7ccc9ea8b2bbd2780e36da45d0dc055e5" + integrity sha512-N2RhGeheVLGtyy+CxRmxdsniB7sMSCfsnbh8K/+RUIXYYq3Ub5+sukRCjVE80QerrUBvuEvs4fDhz5AW/pcL6g== "@typescript-eslint/typescript-estree@3.10.1": version "3.10.1" @@ -1685,13 +1685,13 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/typescript-estree@4.10.0": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.10.0.tgz#1e62e45fd57866afd42daf5e9fb6bd4e8dbcfa75" - integrity sha512-mGK0YRp9TOk6ZqZ98F++bW6X5kMTzCRROJkGXH62d2azhghmq+1LNLylkGe6uGUOQzD452NOAEth5VAF6PDo5g== +"@typescript-eslint/typescript-estree@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.12.0.tgz#3963418c850f564bdab3882ae23795d115d6d32e" + integrity sha512-gZkFcmmp/CnzqD2RKMich2/FjBTsYopjiwJCroxqHZIY11IIoN0l5lKqcgoAPKHt33H2mAkSfvzj8i44Jm7F4w== dependencies: - "@typescript-eslint/types" "4.10.0" - "@typescript-eslint/visitor-keys" "4.10.0" + "@typescript-eslint/types" "4.12.0" + "@typescript-eslint/visitor-keys" "4.12.0" debug "^4.1.1" globby "^11.0.1" is-glob "^4.0.1" @@ -1706,12 +1706,12 @@ dependencies: eslint-visitor-keys "^1.1.0" -"@typescript-eslint/visitor-keys@4.10.0": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.10.0.tgz#9478822329a9bc8ebcc80623d7f79a01da5ee451" - integrity sha512-hPyz5qmDMuZWFtHZkjcCpkAKHX8vdu1G3YsCLEd25ryZgnJfj6FQuJ5/O7R+dB1ueszilJmAFMtlU4CA6se3Jg== +"@typescript-eslint/visitor-keys@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.12.0.tgz#a470a79be6958075fa91c725371a83baf428a67a" + integrity sha512-hVpsLARbDh4B9TKYz5cLbcdMIOAoBYgFPCSP9FFS/liSF+b33gVNq8JHY3QGhHNVz85hObvL7BEYLlgx553WCw== dependencies: - "@typescript-eslint/types" "4.10.0" + "@typescript-eslint/types" "4.12.0" eslint-visitor-keys "^2.0.0" "@vue/babel-helper-vue-jsx-merge-props@^1.2.1": @@ -1719,22 +1719,22 @@ resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz#31624a7a505fb14da1d58023725a4c5f270e6a81" integrity sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA== -"@vue/babel-helper-vue-transform-on@^1.0.0-rc.2": - version "1.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.0-rc.2.tgz#7246341f666e7c6e65b13da420e2ce85714fbbca" - integrity sha512-1+7CwjQ0Kasml6rHoNQUmbISwqLNNfFVBUcZl6QBremUl296ZmLrVQPqJP5pyAAWjZke5bpI1hlj+LVVuT7Jcg== +"@vue/babel-helper-vue-transform-on@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.0.tgz#8cbec6bbcae53626ad70139061be5e73403c9a62" + integrity sha512-svFuKPoXP92TJ76ztENOglOsLjcMGUXkdeQhYDxl6KBnZCpqFjqx6RodUPWFg1bj4zsUVsfoIh1RibLO86fUUQ== "@vue/babel-plugin-jsx@^1.0.0-0": - version "1.0.0-rc.5" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.0.0-rc.5.tgz#e440be2d0775ee3828cba2c38a03b19a92174865" - integrity sha512-IUxERGiEeX9i1Vt9UtBYqOtfPYjOwEP0sFyPRI8xjkXAhJpaAIwa8JdcYakOqzIlXwhk3XD+7VFdyr/v+rLLFw== + version "1.0.1" + resolved "https://registry.yarnpkg.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.0.1.tgz#8ece4e521888fabe2c96adca428606e5cea55f54" + integrity sha512-pE1YlINZBzqaLeSNfrvo0nNvYjtWTBU+sXUrx65sLW7DL+nDCZcAVeVkMFDcpT1jIahx4hI3EzOcGZE6oLPLoA== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.0.0" "@babel/template" "^7.0.0" "@babel/traverse" "^7.0.0" "@babel/types" "^7.0.0" - "@vue/babel-helper-vue-transform-on" "^1.0.0-rc.2" + "@vue/babel-helper-vue-transform-on" "^1.0.0" camelcase "^6.0.0" html-tags "^3.1.0" svg-tags "^1.0.0" @@ -1751,10 +1751,10 @@ lodash.kebabcase "^4.1.1" svg-tags "^1.0.0" -"@vue/babel-preset-app@^4.5.9": - version "4.5.9" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-4.5.9.tgz#a4ef1830a21301e4f77d7cd4a04555d8a01eaf33" - integrity sha512-d2H4hFnJsGnZtJAAZIbo1dmQJ2SI1MYix1Tc9/etlnJtCDPRHeCNodCSeuLgDwnoAyT3unzyHmTtaO56KRDuOQ== +"@vue/babel-preset-app@^4.5.10": + version "4.5.10" + resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-4.5.10.tgz#359180d8c720e30a09214d534aa208dbfc399d7f" + integrity sha512-IHOyfWqgNNM863NjGmX6s2MIF+ILkJZardHcr7bGrxu5mNBT+p0GOGRQU4sN/adDkEQ9cyAxokm/GIeeoRrnOg== dependencies: "@babel/core" "^7.11.0" "@babel/helper-compilation-targets" "^7.9.6" @@ -1836,68 +1836,68 @@ "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" camelcase "^5.0.0" -"@vue/cli-overlay@^4.5.9": - version "4.5.9" - resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-4.5.9.tgz#393418b6d5eaf8638f599c939cb425838257d37c" - integrity sha512-E2PWv6tCdUz+eEDj2Th2oxiKmzMe02qi0PcxiNaO7oaqggmEOrp1rLgop7DWpiLDBiqUZk2x0vjK/q2Tz8z/eg== +"@vue/cli-overlay@^4.5.10": + version "4.5.10" + resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-4.5.10.tgz#4eeacca20973e6601ec916c85457bd19aa45f9de" + integrity sha512-BydPsWJTXHTzH8wBcN1rinwLe5QRee52sf/Tceixpn4VVZCio2k8VkNG/o6hRTA+MeGuetXOhmAz0UQfIxfX8w== -"@vue/cli-plugin-babel@~4.5.9": - version "4.5.9" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.9.tgz#a0998754bdd08ed8402a7bef494ecb16cee17e92" - integrity sha512-2tzaJU5yqAfXVhg1aYyd/Yfif6brv+tDZ49D1aOk7ZgMIwH5YUa0yo5HPcPOcmfpoVoNYcpqVYRfyT4EXIYSpg== +"@vue/cli-plugin-babel@~4.5.10": + version "4.5.10" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.10.tgz#16c712dd44606c504e6e22977e8bdba25746a661" + integrity sha512-vWEGj3w9mbV27WBJslCmQP1l+hmdOiCHn0hmmHOrCdELm/WK/2/iXQEsPSXujtVd7TQgiaFgvvHmHurBlC/+3w== dependencies: "@babel/core" "^7.11.0" - "@vue/babel-preset-app" "^4.5.9" - "@vue/cli-shared-utils" "^4.5.9" + "@vue/babel-preset-app" "^4.5.10" + "@vue/cli-shared-utils" "^4.5.10" babel-loader "^8.1.0" cache-loader "^4.1.0" thread-loader "^2.1.3" webpack "^4.0.0" -"@vue/cli-plugin-e2e-cypress@~4.5.9": - version "4.5.9" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-e2e-cypress/-/cli-plugin-e2e-cypress-4.5.9.tgz#f5f629232128c1a4aff07b1d004da8e2b93d98ae" - integrity sha512-UUlA3wt5gqMxQ8BhvtwQ/4poMcx/6/dwhrXVUFizkYQs3Az8HDt5GHjrd02FN1shRc3JtfsNvkFiRa0ToIm7zw== +"@vue/cli-plugin-e2e-cypress@~4.5.10": + version "4.5.10" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-e2e-cypress/-/cli-plugin-e2e-cypress-4.5.10.tgz#69bf718e61bee65bbfc5ab4c40033b9e206f0685" + integrity sha512-0j42utcD5Jnw0M5A2Zhgt23GmbKOkJ3fjqSVqd0uHM4IXuPLe8Kcem9MZ1wmeWeCAbG4BBSk1QQZhTrnFolt6Q== dependencies: - "@vue/cli-shared-utils" "^4.5.9" + "@vue/cli-shared-utils" "^4.5.10" cypress "^3.8.3" eslint-plugin-cypress "^2.10.3" -"@vue/cli-plugin-eslint@~4.5.9": - version "4.5.9" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.9.tgz#7d7f8a48b8e73e6b19fe2f54b39c78850a9ab33d" - integrity sha512-wTsWRiRWPW5ik4bgtlh4P4h63Zgjsyvqx2FY0kcj+bSAnQGPJ3bKUOMU9KQP5EyNH6pAXMVGh2LEXK9WwJMf1w== +"@vue/cli-plugin-eslint@~4.5.10": + version "4.5.10" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.10.tgz#ba150292d7d51c96ce1a87f2782f05f644a0eb4b" + integrity sha512-2ud8lurlMJCtcErjhYBcTWhu5eN79sCBGz5dHBAmtLP0k7p7xZq7/1mo2ahnZioUskYrfz94Vo9i+D3pOUMuMQ== dependencies: - "@vue/cli-shared-utils" "^4.5.9" + "@vue/cli-shared-utils" "^4.5.10" eslint-loader "^2.2.1" globby "^9.2.0" inquirer "^7.1.0" webpack "^4.0.0" yorkie "^2.0.0" -"@vue/cli-plugin-pwa@~4.5.9": - version "4.5.9" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-pwa/-/cli-plugin-pwa-4.5.9.tgz#05c0a9797ddf2611069069f4a04e2fcc1273f838" - integrity sha512-r+Mf5siw/kC/JQr8nImI2W65yc7O2IhPRd0fN0mMPxElW0n5NT2TIOOb7Y602mSDTlwqBPA3/GIpxgJkdjZ7Mw== +"@vue/cli-plugin-pwa@~4.5.10": + version "4.5.10" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-pwa/-/cli-plugin-pwa-4.5.10.tgz#e415a1ae339bf697b0656e3774dfad031c9564ed" + integrity sha512-scYCwOX5A9hkIF9PFkeQQMDcE/OSKDg3BCYrm7TcmRCtmY77jqRNcdX+KoUTPrt8A1b4OHFbzHs95C/r4y9eHw== dependencies: - "@vue/cli-shared-utils" "^4.5.9" + "@vue/cli-shared-utils" "^4.5.10" webpack "^4.0.0" workbox-webpack-plugin "^4.3.1" -"@vue/cli-plugin-router@^4.5.9", "@vue/cli-plugin-router@~4.5.9": - version "4.5.9" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-router/-/cli-plugin-router-4.5.9.tgz#b3d23a8083d26a81bd09bf9c8d010a3e4e4b13d0" - integrity sha512-eBBfbZpQ1sJrdlx8i7iReFxSnuzwmrv+s2OCT3kjBd6uWRqGnD4VihpS4srC7vZLzDQrDplumSn0a93L9Qf3wQ== +"@vue/cli-plugin-router@^4.5.10", "@vue/cli-plugin-router@~4.5.10": + version "4.5.10" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-router/-/cli-plugin-router-4.5.10.tgz#546eaf6295bb125ce2365fb6db83548979776b0d" + integrity sha512-roiZTx2W59kTRaqNzHEnjnakP89MS+pVf3zWBlwsNXZpQuvqwFvoNfH/nBSJjqGRgZTRtCUe6vGgVPUEFYi/cg== dependencies: - "@vue/cli-shared-utils" "^4.5.9" + "@vue/cli-shared-utils" "^4.5.10" -"@vue/cli-plugin-typescript@~4.5.9": - version "4.5.9" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-typescript/-/cli-plugin-typescript-4.5.9.tgz#dc7428c2260c431fbab42377381cf21b3bb36cfd" - integrity sha512-DE8+F5q70PS+cnmKS+xhRqbtnAcrWB6zIoA9FTHD8QQ9Rnjc5HKTGFmh63gCAzFulYIOMZsNlySfYJfeJMqFSg== +"@vue/cli-plugin-typescript@~4.5.10": + version "4.5.10" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-typescript/-/cli-plugin-typescript-4.5.10.tgz#8d8b02df7724dff75b1b93f8317f7d7f59742ac6" + integrity sha512-Eo1D+ejv/gFHFwhM6bwYwcU4ZU12vhOnlTkGPWDpjV0EpB9gNOUJTWoYH3b72q/xcP/jyfvPxuezGQBtEPanZg== dependencies: "@types/webpack-env" "^1.15.2" - "@vue/cli-shared-utils" "^4.5.9" + "@vue/cli-shared-utils" "^4.5.10" cache-loader "^4.1.0" fork-ts-checker-webpack-plugin "^3.1.1" globby "^9.2.0" @@ -1909,15 +1909,15 @@ optionalDependencies: fork-ts-checker-webpack-plugin-v5 "npm:fork-ts-checker-webpack-plugin@^5.0.11" -"@vue/cli-plugin-unit-jest@~4.5.0": - version "4.5.9" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-unit-jest/-/cli-plugin-unit-jest-4.5.9.tgz#85e8e4d9de460db15e585769986b7f0fe369f18a" - integrity sha512-ijgwghS0SMUrJc1irMJYzH1Slv8oV3pQ/PKNuy60APdpOD/f6LDtJCJPaBGfSJQtMvcANslm1FIV1lqrNWtbPw== +"@vue/cli-plugin-unit-jest@~4.5.10": + version "4.5.10" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-unit-jest/-/cli-plugin-unit-jest-4.5.10.tgz#0c319fc951a94dd3d4c4e6e24a1f1fd9424f0c64" + integrity sha512-x4IPonIpzFmJWD4RvUInSYFDy9W8Ck0h5oxG/3vKQlDR3y2E3Zgh/p0DvcFn6krCXzCJDxGQ+YmxKE0AsUVgYw== dependencies: "@babel/core" "^7.11.0" "@babel/plugin-transform-modules-commonjs" "^7.9.6" "@types/jest" "^24.0.19" - "@vue/cli-shared-utils" "^4.5.9" + "@vue/cli-shared-utils" "^4.5.10" babel-core "^7.0.0-bridge.0" babel-jest "^24.9.0" babel-plugin-transform-es2015-modules-commonjs "^6.26.2" @@ -1930,15 +1930,15 @@ ts-jest "^24.2.0" vue-jest "^3.0.5" -"@vue/cli-plugin-vuex@^4.5.9": - version "4.5.9" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.9.tgz#5ae8f1500c7e29406b02fac82cceaeab86c1e83a" - integrity sha512-mFNIJhYiJjzCgytkDHX00ROy5Yzl7prkZpUbeDE0biwcLteMf2s3qZVbESOQl6GcviqcfEt2f3tHQQtLNa+OLg== +"@vue/cli-plugin-vuex@^4.5.10": + version "4.5.10" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.10.tgz#bad1fc538d09df0e67454594f707782d63667f39" + integrity sha512-Z5pnL3Eg2uwkKqP09NoM46/rwQCJ1j/1cZMgO4JF817O9n5AsFgV456UE6lK2cVCvIfvt7+S3HLrSPZUsYNQjQ== -"@vue/cli-service@~4.5.9": - version "4.5.9" - resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-4.5.9.tgz#3ca3112a44183caace411d51d0b6a616e2e197b1" - integrity sha512-E3XlfM0q+UnnjbC9rwLIWNo2umZCRwnlMJY0KOhY1hFvqisGIYzFmQQ4o01KGyTx2BZNMuQg7Kw+BZ5gyM1Wig== +"@vue/cli-service@~4.5.10": + version "4.5.10" + resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-4.5.10.tgz#f08df6689fe50809b5e14dad3d7bd7b86e5c639d" + integrity sha512-HnVkbc+Zb6J1lu0ojuKC6aQ4PjCW2fqlJE0G9Zqg+7VsUZ2e15UVRoIXj2hcIWtQiFF6n2FDxEkvZLslht9rkg== dependencies: "@intervolga/optimize-cssnano-plugin" "^1.0.5" "@soda/friendly-errors-webpack-plugin" "^1.7.1" @@ -1946,10 +1946,10 @@ "@types/minimist" "^1.2.0" "@types/webpack" "^4.0.0" "@types/webpack-dev-server" "^3.11.0" - "@vue/cli-overlay" "^4.5.9" - "@vue/cli-plugin-router" "^4.5.9" - "@vue/cli-plugin-vuex" "^4.5.9" - "@vue/cli-shared-utils" "^4.5.9" + "@vue/cli-overlay" "^4.5.10" + "@vue/cli-plugin-router" "^4.5.10" + "@vue/cli-plugin-vuex" "^4.5.10" + "@vue/cli-shared-utils" "^4.5.10" "@vue/component-compiler-utils" "^3.1.2" "@vue/preload-webpack-plugin" "^1.1.0" "@vue/web-component-wrapper" "^1.2.0" @@ -1996,12 +1996,12 @@ webpack-dev-server "^3.11.0" webpack-merge "^4.2.2" optionalDependencies: - vue-loader-v16 "npm:vue-loader@^16.0.0-beta.7" + vue-loader-v16 "npm:vue-loader@^16.1.0" -"@vue/cli-shared-utils@^4.5.9": - version "4.5.9" - resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-4.5.9.tgz#487cea4b4282f4dff907ee7d8abba8dd0dd03ccd" - integrity sha512-anvsrv+rkQC+hgxaT2nQQxnSWSsIzyysZ36LO7qPjXvDRBvcvKLAAviFlUkYbZ+ntbV8puzJ3zw+gUhQw4SEVA== +"@vue/cli-shared-utils@^4.5.10": + version "4.5.10" + resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-4.5.10.tgz#e3b84c38bba19c6d995278b15261da865790561c" + integrity sha512-Lid6FflDqcvo/JBIBjUriAQ1RkQaKbBpzXSLEK/JmoKkQRHW/rRhDLGI1dEVyOLYnDEiL1m8o1xPJaplUUiXpA== dependencies: "@hapi/joi" "^15.0.1" chalk "^2.4.2" @@ -2324,6 +2324,16 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.0.3.tgz#13ae747eff125cafb230ac504b2406cf371eece2" + integrity sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + alphanum-sort@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" @@ -2643,6 +2653,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" @@ -2943,9 +2958,9 @@ binary-extensions@^1.0.0: integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== binary-extensions@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" - integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== bindings@^1.5.0: version "1.5.0" @@ -3116,16 +3131,16 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.15.0: - version "4.16.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.0.tgz#410277627500be3cb28a1bfe037586fbedf9488b" - integrity sha512-/j6k8R0p3nxOC6kx5JGAxsnhc9ixaWJfYc+TNTzxg6+ARaESAvQGV7h0uNOB4t+pLQJZWzcrMxXOxjgsCj3dqQ== +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.0: + version "4.16.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766" + integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA== dependencies: - caniuse-lite "^1.0.30001165" + caniuse-lite "^1.0.30001173" colorette "^1.2.1" - electron-to-chromium "^1.3.621" + electron-to-chromium "^1.3.634" escalade "^3.1.1" - node-releases "^1.1.67" + node-releases "^1.1.69" bs-logger@0.x: version "0.2.6" @@ -3292,12 +3307,12 @@ cachedir@1.3.0: os-homedir "^1.0.1" call-bind@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" - integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.1.tgz#29aca9151f8ddcfd5b9b786898f005f425e88567" + integrity sha512-tvAvUwNcRikl3RVF20X9lsYmmepsovzTWeJiXjO0PkJp15uy/6xKFZOQtuiSULwYW+6ToZBprphCgWXC2dSgcQ== dependencies: function-bind "^1.1.1" - get-intrinsic "^1.0.0" + get-intrinsic "^1.0.2" call-me-maybe@^1.0.1: version "1.0.1" @@ -3361,10 +3376,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001165: - version "1.0.30001168" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001168.tgz#6fcd098c139d003b9bd484cbb9ca26cb89907f9a" - integrity sha512-P2zmX7swIXKu+GMMR01TWa4csIKELTNnZKc+f1CjebmZJQtTAEXmpQSoKVJVVcvPGAA0TEYTOUp3VehavZSFPQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001173: + version "1.0.30001174" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001174.tgz#0f2aca2153fd88ceb07a2bb982fc2acb787623c4" + integrity sha512-tqClL/4ThQq6cfFXH3oJL4rifFBeM6gTkphjao5kgwMaW9yn0tKgQLAEfKzDwj6HQWCB/aWo8kTFlSvIN8geEA== capture-exit@^2.0.0: version "2.0.0" @@ -3427,9 +3442,9 @@ check-types@^8.0.3: integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== "chokidar@>=2.0.0 <4.0.0", chokidar@^3.3.0, chokidar@^3.4.1: - version "3.4.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" - integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== + version "3.5.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.0.tgz#458a4816a415e9d3b3caa4faec2b96a6935a9e65" + integrity sha512-JgQM9JS92ZbFR4P90EvmzNpSGhpPBGBSj10PILeDyYFwp4h2/D9OM03wsJ4zW1fEp4ka2DGrnUeD7FuvQ2aZ2Q== dependencies: anymatch "~3.1.1" braces "~3.0.2" @@ -3439,7 +3454,7 @@ check-types@^8.0.3: normalize-path "~3.0.0" readdirp "~3.5.0" optionalDependencies: - fsevents "~2.1.2" + fsevents "~2.3.1" chokidar@^2.1.8: version "2.1.8" @@ -3534,16 +3549,16 @@ cli-cursor@^3.1.0: restore-cursor "^3.1.0" cli-highlight@^2.1.4: - version "2.1.9" - resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.9.tgz#4f4ecb05326d70d56d4b4249fabf9a70fb002497" - integrity sha512-t8RNIZgiI24i/mslZ8XT8o660RUj5ZbUJpEZrZa/BNekTzdC2LfMRAnt0Y7sgzNM4FGW5tmWg/YnbTH8o1eIOQ== + version "2.1.10" + resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.10.tgz#26a087da9209dce4fcb8cf5427dc97cd96ac173a" + integrity sha512-CcPFD3JwdQ2oSzy+AMG6j3LRTkNjM82kzcSKzoVw6cLanDCJNlsLjeqVTOTfOfucnWv5F0rmBemVf1m9JiIasw== dependencies: chalk "^4.0.0" highlight.js "^10.0.0" mz "^2.4.0" parse5 "^5.1.1" parse5-htmlparser2-tree-adapter "^6.0.0" - yargs "^15.0.0" + yargs "^16.0.0" cli-spinners@^0.1.2: version "0.1.2" @@ -3595,6 +3610,15 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + clone@2.x, clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" @@ -3868,11 +3892,11 @@ copy-webpack-plugin@^5.1.1: webpack-log "^2.0.0" core-js-compat@^3.6.5, core-js-compat@^3.8.0: - version "3.8.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.1.tgz#8d1ddd341d660ba6194cbe0ce60f4c794c87a36e" - integrity sha512-a16TLmy9NVD1rkjUGbwuyWkiDoN0FDpAwrfLONvHFQx0D9k7J9y0srwMT8QP/Z6HE3MIFaVynEeYwZwPX1o5RQ== + version "3.8.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.2.tgz#3717f51f6c3d2ebba8cbf27619b57160029d1d4c" + integrity sha512-LO8uL9lOIyRRrQmZxHZFl1RV+ZbcsAkFWTktn5SmH40WgLtSNYN4m4W2v9ONT147PxBY/XrRhrWq8TlvObyUjQ== dependencies: - browserslist "^4.15.0" + browserslist "^4.16.0" semver "7.0.0" core-js@2.6.0: @@ -3886,9 +3910,9 @@ core-js@^2.4.0, core-js@^2.5.0: integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.6.4, core-js@^3.6.5: - version "3.8.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.1.tgz#f51523668ac8a294d1285c3b9db44025fda66d47" - integrity sha512-9Id2xHY1W7m8hCl8NkhQn5CufmF/WuR30BTRewvCXc1aZd3kMECwNZ69ndLbekKfakw9Rf2Xyc+QR6E7Gg+obg== + version "3.8.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.2.tgz#0a1fd6709246da9ca8eff5bb0cbd15fba9ac7044" + integrity sha512-FfApuSRgrR6G5s58casCBd9M2k+4ikuu4wbW6pJyYU7bd9zvFc9qf7vr5xmrZOhT9nn+8uwlH1oRR9jTnFoA3A== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -4030,17 +4054,7 @@ css-select-base-adapter@^0.1.1: resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== -css-select@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-select@^2.0.0: +css-select@^2.0.0, css-select@^2.0.2: version "2.1.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== @@ -4066,11 +4080,6 @@ css-tree@^1.1.2: mdn-data "2.0.14" source-map "^0.6.1" -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== - css-what@^3.2.1: version "3.4.2" resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" @@ -4287,7 +4296,7 @@ debug@3.2.6: dependencies: ms "^2.1.1" -debug@^3.1.0, debug@^3.1.1, debug@^3.2.5: +debug@^3.1.0, debug@^3.1.1, debug@^3.2.6: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== @@ -4569,14 +4578,6 @@ domready@1.0.8: resolved "https://registry.yarnpkg.com/domready/-/domready-1.0.8.tgz#91f252e597b65af77e745ae24dd0185d5e26d58c" integrity sha1-kfJS5Ze2Wvd+dFriTdAYXV4m1Yw= -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= - dependencies: - dom-serializer "0" - domelementtype "1" - domutils@^1.5.1, domutils@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" @@ -4658,10 +4659,10 @@ ejs@^2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== -electron-to-chromium@^1.3.621: - version "1.3.629" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.629.tgz#a08d13b64d90e3c77ec5b9bffa3efbc5b4a00969" - integrity sha512-iSPPJtPvHrMAvYOt+9cdbDmTasPqwnwz4lkP8Dn200gDNUBQOLQ96xUsWXBwXslAo5XxdoXAoQQ3RAy4uao9IQ== +electron-to-chromium@^1.3.634: + version "1.3.635" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.635.tgz#8d1591eeca6b257d380061a2c04f0b3cc6c9e33b" + integrity sha512-RRriZOLs9CpW6KTLmgBqyUdnY0QNqqWs0HOtuQGGEMizOTNNn1P7sGRBxARnUeLejOsgwjDyRqT3E/CSst02ZQ== elegant-spinner@^1.0.1: version "1.0.1" @@ -4844,9 +4845,9 @@ eslint-config-prettier@^6.0.0: get-stdin "^6.0.0" eslint-config-prettier@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-7.0.0.tgz#c1ae4106f74e6c0357f44adb076771d032ac0e97" - integrity sha512-8Y8lGLVPPZdaNA7JXqnvETVC7IiVRgAP6afQu9gOQRn90YY3otMNh+x7Vr2vMePQntF+5erdSUBqSzCmU/AxaQ== + version "7.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz#5402eb559aa94b894effd6bddfa0b1ca051c858f" + integrity sha512-9sm5/PxaFG7qNJvJzTROMM1Bk1ozXVTKI0buKOyb0Bsr1hrwi0H/TzxF/COtf1uxikIK8SwhX7K6zg78jAzbeA== eslint-loader@^2.2.1: version "2.2.1" @@ -4867,16 +4868,16 @@ eslint-plugin-cypress@^2.10.3: globals "^11.12.0" eslint-plugin-prettier@^3.1.3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.0.tgz#61e295349a65688ffac0b7808ef0a8244bdd8d40" - integrity sha512-tMTwO8iUWlSRZIwS9k7/E4vrTsfvsrcM5p1eftyuqWH25nKsz/o6/54I7jwQ/3zobISyC7wMy9ZsFwgTxOcOpQ== + version "3.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7" + integrity sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ== dependencies: prettier-linter-helpers "^1.0.0" eslint-plugin-vue@^7.0.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.3.0.tgz#0faf0fcf0e1b1052bf800d4dee42d64f50679cb0" - integrity sha512-4rc9xrZgwT4aLz3XE6lrHu+FZtDLWennYvtzVvvS81kW9c65U4DUzQQWAFjDCgCFvN6HYWxi7ueEtxZVSB+f0g== + version "7.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.4.1.tgz#2526ef0c010c218824a89423dbe6ddbe76f04fd6" + integrity sha512-W/xPNHYIkGJphLUM2UIYYGKbRw3BcDoMIPY9lu1TTa2YLiZoxurddfnmOP+UOVywxb5vi438ejzwvKdZqydtIw== dependencies: eslint-utils "^2.1.0" natural-compare "^1.4.0" @@ -4917,9 +4918,9 @@ eslint-visitor-keys@^2.0.0: integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== eslint@^7.7.0, eslint@^7.9.0: - version "7.15.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.15.0.tgz#eb155fb8ed0865fcf5d903f76be2e5b6cd7e0bc7" - integrity sha512-Vr64xFDT8w30wFll643e7cGrIkPEU50yIiI36OdSIDoSGguIeaLzBo0vpGvzo9RECUqq7htURfwEtKqwytkqzA== + version "7.17.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.17.0.tgz#4ccda5bf12572ad3bf760e6f195886f50569adb0" + integrity sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ== dependencies: "@babel/code-frame" "^7.0.0" "@eslint/eslintrc" "^0.2.2" @@ -4955,7 +4956,7 @@ eslint@^7.7.0, eslint@^7.9.0: semver "^7.2.1" strip-ansi "^6.0.0" strip-json-comments "^3.1.0" - table "^5.2.3" + table "^6.0.4" text-table "^0.2.0" v8-compile-cache "^2.0.3" @@ -5316,9 +5317,9 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fastq@^1.6.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.9.0.tgz#e16a72f338eaca48e91b5c23593bcc2ef66b7947" - integrity sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w== + version "1.10.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.0.tgz#74dbefccade964932cdf500473ef302719c652bb" + integrity sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA== dependencies: reusify "^1.0.4" @@ -5329,14 +5330,7 @@ fault@^1.0.0: dependencies: format "^0.2.0" -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.1: +faye-websocket@^0.11.3: version "0.11.3" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== @@ -5489,7 +5483,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0, find-up@^4.1.0: +find-up@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -5543,6 +5537,13 @@ follow-redirects@^1.0.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7" integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg== +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -5695,10 +5696,10 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== +fsevents@~2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f" + integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw== function-bind@^1.1.1: version "1.1.1" @@ -5715,12 +5716,12 @@ gensync@^1.0.0-beta.1: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1: +get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.0: +get-intrinsic@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== @@ -5870,9 +5871,9 @@ globals@^9.18.0: integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== globby@^11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" - integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== + version "11.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" + integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" @@ -6080,10 +6081,10 @@ hex-color-regex@^1.1.0: resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== -highlight.js@^10.0.0, highlight.js@~10.4.0: - version "10.4.1" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.4.1.tgz#d48fbcf4a9971c4361b3f95f302747afe19dbad0" - integrity sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg== +highlight.js@^10.0.0, highlight.js@~10.5.0: + version "10.5.0" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.5.0.tgz#3f09fede6a865757378f2d9ebdcbc15ba268f98f" + integrity sha512-xTmvd9HiIHR6L53TMC7TKolEj65zG1XU+Onr8oi86mYa+nLcIbxTTWkpW7CsEwv/vK7u1zb8alZIMLDqqN6KTw== hmac-drbg@^1.0.0: version "1.0.1" @@ -6144,9 +6145,9 @@ html-encoding-sniffer@^1.0.2: whatwg-encoding "^1.0.1" html-entities@^1.3.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.3.tgz#3dca638a43ee7de316fc23067398491152ad4736" - integrity sha512-/VulV3SYni1taM7a4RMdceqzJWR39gpZHjBwUnsCFKWV/GJkD14CJ5F7eWcZozmHJK0/f/H5U3b3SiPkuvxMgg== + version "1.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== html-escaper@^2.0.0: version "2.0.2" @@ -6189,7 +6190,7 @@ html-webpack-plugin@^3.2.0: toposort "^1.0.0" util.promisify "1.0.0" -htmlparser2@^3.3.0, htmlparser2@^3.8.3: +htmlparser2@^3.10.1, htmlparser2@^3.8.3: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== @@ -6239,9 +6240,9 @@ http-errors@~1.7.2: toidentifier "1.0.0" http-parser-js@>=0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" - integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== + version "0.5.3" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" + integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== http-proxy-middleware@0.19.1: version "0.19.1" @@ -6341,9 +6342,9 @@ import-fresh@^2.0.0: resolve-from "^3.0.0" import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" - integrity sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw== + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -6542,7 +6543,7 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.4, is-callable@^1.2.2: +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== @@ -7338,9 +7339,9 @@ js-base64@^2.1.9: integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== js-beautify@^1.6.12, js-beautify@^1.6.14: - version "1.13.0" - resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.13.0.tgz#a056d5d3acfd4918549aae3ab039f9f3c51eebb2" - integrity sha512-/Tbp1OVzZjbwzwJQFIlYLm9eWQ+3aYbBXLSaqb1mEJzhcQAfrqMMQYtjb6io+U6KpD0ID4F+Id3/xcjH3l/sqA== + version "1.13.1" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.13.1.tgz#5b9879672beaaa26d0dc25b8fd9a52944e2985e8" + integrity sha512-RGc3cSmQR3xPzTtIFAMwHK0R84MwDNpxpZgoQGySGdzShfNjBjHXqz99kMFwXDGlMSFVJVlsUXBFfqKUzJbzUg== dependencies: config-chain "^1.1.12" editorconfig "^0.15.3" @@ -7472,6 +7473,11 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -7494,7 +7500,7 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json3@^3.3.2: +json3@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== @@ -7888,13 +7894,13 @@ lower-case@^1.1.1: resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= -lowlight@^1.14.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.17.0.tgz#a1143b2fba8239df8cd5893f9fe97aaf8465af4a" - integrity sha512-vmtBgYKD+QVNy7tIa7ulz5d//Il9R4MooOVh4nkOf9R9Cb/Dk5TXMSTieg/vDulkBkIWj59/BIlyFQxT9X1oAQ== +lowlight@^1.17.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.18.0.tgz#cfff11cfb125ca66f1c12cb43d27fff68cbeafa9" + integrity sha512-Zlc3GqclU71HRw5fTOy00zz5EOlqAdKMYhOFIO8ay4SQEDQgFuhR8JNwDIzAGMLoqTsWxe0elUNmq5o2USRAzw== dependencies: fault "^1.0.0" - highlight.js "~10.4.0" + highlight.js "~10.5.0" lru-cache@^4.0.1, lru-cache@^4.1.2, lru-cache@^4.1.5: version "4.1.5" @@ -8097,22 +8103,17 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== - -"mime-db@>= 1.43.0 < 2": +mime-db@1.45.0, "mime-db@>= 1.43.0 < 2": version "1.45.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + version "2.1.28" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" + integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== dependencies: - mime-db "1.44.0" + mime-db "1.45.0" mime@1.6.0: version "1.6.0" @@ -8452,10 +8453,10 @@ node-notifier@^5.4.2: shellwords "^0.1.1" which "^1.3.0" -node-releases@^1.1.67: - version "1.1.67" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.67.tgz#28ebfcccd0baa6aad8e8d4d8fe4cbc49ae239c12" - integrity sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg== +node-releases@^1.1.69: + version "1.1.69" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.69.tgz#3149dbde53b781610cd8b486d62d86e26c3725f6" + integrity sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA== nopt@^5.0.0: version "5.0.0" @@ -8525,7 +8526,7 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" -nth-check@^1.0.2, nth-check@~1.0.1: +nth-check@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== @@ -8606,7 +8607,7 @@ object.assign@^4.1.0, object.assign@^4.1.1: has-symbols "^1.0.1" object-keys "^1.1.1" -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0, object.getownpropertydescriptors@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz#0dfda8d108074d9c563e80490c883b6661091544" integrity sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng== @@ -9573,9 +9574,9 @@ prettier@^1.18.2: integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== pretty-bytes@^5.1.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.1.tgz#cd89f79bbcef21e3d21eb0da68ffe93f803e884b" - integrity sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA== + version "5.5.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.5.0.tgz#0cecda50a74a941589498011cf23275aa82b339e" + integrity sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA== pretty-error@^2.0.2: version "2.1.2" @@ -9694,15 +9695,7 @@ prosemirror-history@^1.1.3: prosemirror-transform "^1.0.0" rope-sequence "^1.3.0" -prosemirror-inputrules@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-1.1.2.tgz#487e46c763e1212a4577397aba7706139084f012" - integrity sha512-Ja5Z3BWestlHYGvtSGqyvxMeB8QEuBjlHM8YnKtLGUXMDp965qdDV4goV8lJb17kIWHk7e7JNj6Catuoa3302g== - dependencies: - prosemirror-state "^1.0.0" - prosemirror-transform "^1.0.0" - -prosemirror-inputrules@^1.1.2: +prosemirror-inputrules@1.1.3, prosemirror-inputrules@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-1.1.3.tgz#93f9199ca02473259c30d7e352e4c14022d54638" integrity sha512-ZaHCLyBtvbyIHv0f5p6boQTIJjlD6o2NPZiEaZWT2DA+j591zS29QQEMT4lBqwcLW3qRSf7ZvoKNbf05YrsStw== @@ -9718,7 +9711,7 @@ prosemirror-keymap@1.1.4, prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2: prosemirror-state "^1.0.0" w3c-keyname "^2.2.0" -prosemirror-model@1.11.2, prosemirror-model@1.9.1, prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.11.2, prosemirror-model@^1.8.1: +prosemirror-model@1.13.1, prosemirror-model@1.9.1, prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.13.1, prosemirror-model@^1.8.1: version "1.9.1" resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.9.1.tgz#8c08cf556f593c5f015548d2c1a6825661df087f" integrity sha512-Qblh8pm1c7Ll64sYLauwwzjimo/tFg1zW3Q3IWhKRhvfOEgRKqa6dC5pRrAa+XHOIjBFEYrqbi52J5bqA2dV8Q== @@ -9764,19 +9757,19 @@ prosemirror-utils@^0.9.6: resolved "https://registry.yarnpkg.com/prosemirror-utils/-/prosemirror-utils-0.9.6.tgz#3d97bd85897e3b535555867dc95a51399116a973" integrity sha512-UC+j9hQQ1POYfMc5p7UFxBTptRiGPR7Kkmbl3jVvU8VgQbkI89tR/GK+3QYC8n+VvBZrtAoCrJItNhWSxX3slA== -prosemirror-view@1.15.7: - version "1.15.7" - resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.15.7.tgz#b6ce82a08b7ffa8ff06b64ab36ec357229c66aa6" - integrity sha512-fSSXphXg+82qb4xNsHT0mX6ro0Wu1/l+WIFO5jYfyjd42r6ZWSg0gFItLgqOVPxoKQOlrPJUhrozTxiqx0EXOg== +prosemirror-view@1.16.5: + version "1.16.5" + resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.16.5.tgz#1a4646832e16c1cf116b54b9becf4b0663821125" + integrity sha512-cFEjzhqQZIRDALEgQt8CNn+Qb+BUOvNxxaljaWoCbAYlsWGMiNNQG06I1MwbRNDcwnZKeFmOGpLEB4eorYYGig== dependencies: prosemirror-model "^1.1.0" prosemirror-state "^1.0.0" prosemirror-transform "^1.1.0" -prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.15.7: - version "1.16.5" - resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.16.5.tgz#1a4646832e16c1cf116b54b9becf4b0663821125" - integrity sha512-cFEjzhqQZIRDALEgQt8CNn+Qb+BUOvNxxaljaWoCbAYlsWGMiNNQG06I1MwbRNDcwnZKeFmOGpLEB4eorYYGig== +prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.16.5: + version "1.17.1" + resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.17.1.tgz#468616c889d33bc268a9b57451a49acbfebe942f" + integrity sha512-n56IjZoJKEQYTh43KVmXMwJPQ+q4jEoPK7vhrb86Q//NxvNdzXWBPM0O8RhMD0wZBZS87WA+TQbftLq4p9WGrg== dependencies: prosemirror-model "^1.1.0" prosemirror-state "^1.0.0" @@ -10100,9 +10093,9 @@ regjsgen@^0.5.1: integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== regjsparser@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + version "0.6.6" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.6.tgz#6d8c939d1a654f78859b08ddcc4aa777f3fa800a" + integrity sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ== dependencies: jsesc "~0.5.0" @@ -10117,13 +10110,13 @@ remove-trailing-separator@^1.0.1: integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= renderkid@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.4.tgz#d325e532afb28d3f8796ffee306be8ffd6fc864c" - integrity sha512-K2eXrSOJdq+HuKzlcjOlGoOarUu5SDguDEhE7+Ah4zuOWL40j8A/oHvLlLob9PSTNvVnBd+/q0Er1QfpEuem5g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.5.tgz#483b1ac59c6601ab30a7a596a5965cabccfdd0a5" + integrity sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ== dependencies: - css-select "^1.1.0" + css-select "^2.0.2" dom-converter "^0.2" - htmlparser2 "^3.3.0" + htmlparser2 "^3.10.1" lodash "^4.17.20" strip-ansi "^3.0.0" @@ -10224,6 +10217,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -10450,9 +10448,9 @@ sass-loader@^10.0.1: semver "^7.3.2" sass@^1.29.0: - version "1.30.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.30.0.tgz#60bbbbaf76ba10117e61c6c24f00161c3d60610e" - integrity sha512-26EUhOXRLaUY7+mWuRFqGeGGNmhB1vblpTENO1Z7mAzzIZeVxZr9EZoaY1kyGLFWdSOZxRMAufiN2mkbO6dAlw== + version "1.32.2" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.2.tgz#66dc0250bc86c15d19ddee7135e93d0cf3d3257b" + integrity sha512-u1pUuzqwz3SAgvHSWp1k0mRhX82b2DdlVnP6UIetQPZtYbuJUDaPQhZE12jyjB7vYeOScfz9WPsZJB6Rpk7heA== dependencies: chokidar ">=2.0.0 <4.0.0" @@ -10509,7 +10507,7 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selfsigned@^1.10.7: +selfsigned@^1.10.8: version "1.10.8" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== @@ -10701,14 +10699,14 @@ slice-ansi@0.0.4: resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" snapdragon-node@^2.0.1: version "2.1.1" @@ -10740,26 +10738,26 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sockjs-client@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" - integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== +sockjs-client@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.0.tgz#2f8ff5d4b659e0d092f7aba0b7c386bd2aa20add" + integrity sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q== dependencies: - debug "^3.2.5" + debug "^3.2.6" eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" + faye-websocket "^0.11.3" + inherits "^2.0.4" + json3 "^3.3.3" + url-parse "^1.4.7" -sockjs@0.3.20: - version "0.3.20" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" - integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== +sockjs@^0.3.21: + version "0.3.21" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" + integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== dependencies: - faye-websocket "^0.10.0" + faye-websocket "^0.11.3" uuid "^3.4.0" - websocket-driver "0.6.5" + websocket-driver "^0.7.4" sort-keys@^1.0.0: version "1.1.2" @@ -10769,9 +10767,9 @@ sort-keys@^1.0.0: is-plain-obj "^1.0.0" sortablejs@^1.10.1: - version "1.12.0" - resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.12.0.tgz#ee6d7ece3598c2af0feb1559d98595e5ea37cbd6" - integrity sha512-bPn57rCjBRlt2sC24RBsu40wZsmLkSo2XeqG8k6DC1zru5eObQUIPPZAQG7W2SJ8FZQYq+BEJmvuw1Zxb3chqg== + version "1.13.0" + resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.13.0.tgz#3ab2473f8c69ca63569e80b1cd1b5669b51269e9" + integrity sha512-RBJirPY0spWCrU5yCmWM1eFs/XgX2J5c6b275/YyxFRgnzPhKl/TDeU2hNR8Dt7ITq66NRPM4UlOt+e5O4CFHg== source-list-map@^2.0.0: version "2.0.1" @@ -11272,15 +11270,15 @@ symbol-tree@^3.2.2: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== +table@^6.0.4: + version "6.0.7" + resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" + integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" + ajv "^7.0.2" + lodash "^4.17.20" + slice-ansi "^4.0.0" + string-width "^4.2.0" tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" @@ -11416,63 +11414,63 @@ tippy.js@^6.2.3: dependencies: "@popperjs/core" "^2.4.4" -tiptap-commands@^1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/tiptap-commands/-/tiptap-commands-1.15.0.tgz#a2c7623bf7cfd6008a443c1003079a1f6ea8b894" - integrity sha512-/o4R/99G4oOSnFXmS90hVpUuLx03HFM/NY7uBEYzhlJmW+3A+1wXVu77zP/I+Ohx0kfBi8yyAxYCa9YX9ahnjg== +tiptap-commands@^1.16.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/tiptap-commands/-/tiptap-commands-1.16.0.tgz#02ba31c386ab22c3999ea620787761e014b99809" + integrity sha512-/8QUHLOqyGc0d8KVzGlFJtf71gtK4+yxF/BURbUQyee1YshhbUYFV1xMG0muSyqdxWDuvKB5BUPqyEfckdiYeg== dependencies: prosemirror-commands "^1.1.4" prosemirror-inputrules "^1.1.2" - prosemirror-model "^1.11.2" + prosemirror-model "^1.13.1" prosemirror-schema-list "^1.1.4" prosemirror-state "^1.3.3" prosemirror-tables "^1.1.1" prosemirror-utils "^0.9.6" - tiptap-utils "^1.11.0" + tiptap-utils "^1.12.0" tiptap-extensions@^1.29.1: - version "1.33.2" - resolved "https://registry.yarnpkg.com/tiptap-extensions/-/tiptap-extensions-1.33.2.tgz#7ea8965c0cb6d22908ab3394a5b58efcbe3901e6" - integrity sha512-8Xj3L3k2tvJzcTfTPCC5oj0wMLWK77+uAwA7dGrz9X5A0Q0de0Ug3ym+sUaojsjNQ22gsPq0dN8VM6+mVqrfrQ== + version "1.34.0" + resolved "https://registry.yarnpkg.com/tiptap-extensions/-/tiptap-extensions-1.34.0.tgz#59889315ebb843c2b7a7326090a0f5ec13873bd0" + integrity sha512-aKTGGPW6dWdVQfyXnuG4KLF+wWE5h7RZYCY72VkaybE1xft2lVcMvWl5G1wi4mvo9RVZYR8SJSGFzLsWLetOkg== dependencies: - lowlight "^1.14.0" + lowlight "^1.17.0" prosemirror-collab "^1.2.2" prosemirror-history "^1.1.3" - prosemirror-model "^1.11.2" + prosemirror-model "^1.13.1" prosemirror-state "^1.3.3" prosemirror-tables "^1.1.1" prosemirror-transform "^1.2.8" prosemirror-utils "^0.9.6" - prosemirror-view "^1.15.7" - tiptap "^1.30.0" - tiptap-commands "^1.15.0" - tiptap-utils "^1.11.0" + prosemirror-view "^1.16.5" + tiptap "^1.31.0" + tiptap-commands "^1.16.0" + tiptap-utils "^1.12.0" -tiptap-utils@^1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/tiptap-utils/-/tiptap-utils-1.11.0.tgz#2da8f5a2e5cde2d3c53cdf42ab335f947e18dfe6" - integrity sha512-lv/Fj8vZxPLSxHoDQVG2XVJC5h/Txtcrg+uArtvsZbVDFYyT1Boa/pal7YPQD7572uBlzlh3YtBPcFwcRBCGJA== +tiptap-utils@^1.12.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/tiptap-utils/-/tiptap-utils-1.12.0.tgz#56b8cb95db8af8172083f1c7e0cab74a8c6d6ca9" + integrity sha512-FdygaOf2EbC55Ba9cEAz2DPuyOD9XAfSo3ICxuCjP5JGV7o9nULF1ABZbVHVdx6A52vsu7v4MOHs8f5hDrW7pw== dependencies: - prosemirror-model "^1.11.2" + prosemirror-model "^1.13.1" prosemirror-state "^1.3.3" prosemirror-tables "^1.1.1" prosemirror-utils "^0.9.6" -tiptap@^1.26.0, tiptap@^1.30.0: - version "1.30.0" - resolved "https://registry.yarnpkg.com/tiptap/-/tiptap-1.30.0.tgz#5fa6649a26e79a34aba494282e37d11c8a7419be" - integrity sha512-zvSwxvBjp2ZchtX1+ZwCI7bx8n5FZrKW5aPTsQWt7WaWOkYZ23lYoT2dvk2b8JJhWnLWAOeTTnGTPpA6AxhOsw== +tiptap@^1.26.0, tiptap@^1.31.0: + version "1.31.0" + resolved "https://registry.yarnpkg.com/tiptap/-/tiptap-1.31.0.tgz#298775603b5e16afe36448c486a2bd1e63ffa690" + integrity sha512-FY0juyY7yQwASvGKzle9ndCXlqMzBHZxUQDx2ybI8ghWVNavkMWUUDa+QGbscITYlQc2y43G0QEOqhzzZGLZ7g== dependencies: prosemirror-commands "1.1.4" prosemirror-dropcursor "1.3.2" prosemirror-gapcursor "1.1.5" - prosemirror-inputrules "1.1.2" + prosemirror-inputrules "1.1.3" prosemirror-keymap "1.1.4" - prosemirror-model "1.11.2" + prosemirror-model "1.13.1" prosemirror-state "1.3.3" - prosemirror-view "1.15.7" - tiptap-commands "^1.15.0" - tiptap-utils "^1.11.0" + prosemirror-view "1.16.5" + tiptap-commands "^1.16.0" + tiptap-utils "^1.12.0" tmp@0.1.0: version "0.1.0" @@ -11673,9 +11671,9 @@ tsutils@^2.29.0: tslib "^1.8.1" tsutils@^3.17.1: - version "3.17.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" - integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + version "3.19.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.19.1.tgz#d8566e0c51c82f32f9c25a4d367cd62409a547a9" + integrity sha512-GEdoBf5XI324lu7ycad7s6laADfnAqCw6wLGI+knxvw9vsIYBaJfYdmeCEG3FMMUiSm3OGgNb+m6utsWf5h9Vw== dependencies: tslib "^1.8.1" @@ -11872,9 +11870,9 @@ upper-case@^1.1.1: integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= uri-js@^4.2.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" - integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" @@ -11892,7 +11890,7 @@ url-loader@^2.0.0, url-loader@^2.2.0: mime "^2.4.4" schema-utils "^2.5.0" -url-parse@^1.4.3: +url-parse@^1.4.3, url-parse@^1.4.7: version "1.4.7" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== @@ -11933,7 +11931,18 @@ util.promisify@1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" -util.promisify@^1.0.0, util.promisify@~1.0.0: +util.promisify@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" + integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + for-each "^0.3.3" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.1" + +util.promisify@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== @@ -12084,9 +12093,9 @@ vue-i18n-extract@^1.0.2: js-yaml "^3.14.0" vue-i18n@^8.14.0: - version "8.22.2" - resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.22.2.tgz#58299a5a050e67b4f799d96fee7dd8bd269e0907" - integrity sha512-rb569fVJInPUgS/bbCxEQ9DrAoFTntuJvYoK4Fpk2VfNbA09WzdTKk57ppjz3S+ps9hW+p9H+2ASgMvojedkow== + version "8.22.3" + resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.22.3.tgz#4ac0fdc3e71d4fe188938c40a9ffca32cde60732" + integrity sha512-Vhyx7sZEmmW/aZLkzSlXei08Rv3hTondx4J9wbOjnThocTIK1QiXV6QRdT4BTnhT24JixDSf6kGkxqCXSaJ3Jw== vue-jest@^3.0.5: version "3.0.7" @@ -12105,7 +12114,7 @@ vue-jest@^3.0.5: tsconfig "^7.0.0" vue-template-es2015-compiler "^1.6.0" -"vue-loader-v16@npm:vue-loader@^16.0.0-beta.7": +"vue-loader-v16@npm:vue-loader@^16.1.0": version "16.1.2" resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-16.1.2.tgz#5c03b6c50d2a5f983c7ceba15c50d78ca2b298f4" integrity sha512-8QTxh+Fd+HB6fiL52iEVLKqE9N1JSlMXLR92Ijm6g8PZrwIxckgpqjPDWRP5TWxdiPaHR+alUWsnu1ShQOwt+Q== @@ -12321,9 +12330,9 @@ webpack-dev-middleware@^3.7.2: webpack-log "^2.0.0" webpack-dev-server@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" - integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== + version "3.11.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz#c74028bf5ba8885aaf230e48a20e8936ab8511f0" + integrity sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -12345,11 +12354,11 @@ webpack-dev-server@^3.11.0: p-retry "^3.0.1" portfinder "^1.0.26" schema-utils "^1.0.0" - selfsigned "^1.10.7" + selfsigned "^1.10.8" semver "^6.3.0" serve-index "^1.9.1" - sockjs "0.3.20" - sockjs-client "1.4.0" + sockjs "^0.3.21" + sockjs-client "^1.5.0" spdy "^4.0.2" strip-ansi "^3.0.1" supports-color "^6.1.0" @@ -12383,9 +12392,9 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack- source-map "~0.6.1" webpack@^4.0.0: - version "4.44.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" - integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== + version "4.45.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.45.0.tgz#bcdc1ddb43959adb47f8974e60d944027267c1be" + integrity sha512-JhDaVi4CbRcwLLAoqC7eugMSMJnZbIfE2AyjaZ19pnOIh/R2O/lXOiXA2tQFN0iXEcxgpPJsPJHW2wOWqiTLcw== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-module-context" "1.9.0" @@ -12411,14 +12420,7 @@ webpack@^4.0.0: watchpack "^1.7.4" webpack-sources "^1.4.1" -websocket-driver@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" - integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= - dependencies: - websocket-extensions ">=0.1.1" - -websocket-driver@>=0.5.1: +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -12653,6 +12655,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -12682,9 +12693,9 @@ ws@^6.0.0, ws@^6.2.1: async-limiter "~1.0.0" ws@^7.0.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.1.tgz#a333be02696bd0e54cea0434e21dcc8a9ac294bb" - integrity sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ== + version "7.4.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.2.tgz#782100048e54eb36fe9843363ab1c68672b261dd" + integrity sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA== xml-name-validator@^3.0.0: version "3.0.0" @@ -12706,6 +12717,11 @@ y18n@^4.0.0: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== +y18n@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" + integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== + yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" @@ -12741,13 +12757,10 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" +yargs-parser@^20.2.2: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== yargs@^13.3.0, yargs@^13.3.2: version "13.3.2" @@ -12765,22 +12778,18 @@ yargs@^13.3.0, yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^15.0.0: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== +yargs@^16.0.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" + y18n "^5.0.5" + yargs-parser "^20.2.2" yauzl@2.10.0: version "2.10.0" diff --git a/mix.exs b/mix.exs index 5294e8c90..fba4764e3 100644 --- a/mix.exs +++ b/mix.exs @@ -77,7 +77,7 @@ defmodule Mobilizon.Mixfile do {:gettext, "~> 0.11"}, {:cowboy, "~> 2.6"}, {:guardian, "~> 2.0"}, - {:guardian_db, "~> 2.0.2"}, + {:guardian_db, "~> 2.1.0"}, {:guardian_phoenix, "~> 2.0"}, {:argon2_elixir, "~> 2.0"}, {:cors_plug, "~> 2.0"}, @@ -140,7 +140,7 @@ defmodule Mobilizon.Mixfile do {:excoveralls, "~> 0.13.0", only: :test}, {:ex_doc, "~> 0.23", only: [:dev, :test], runtime: false}, {:mix_test_watch, "~> 1.0", only: :dev, runtime: false}, - {:ex_unit_notifier, "~> 0.1", only: :test}, + {:ex_unit_notifier, "~> 1.0", only: :test}, {:dialyxir, "~> 1.0.0", only: [:dev], runtime: false}, {:exvcr, "~> 0.12", only: :test}, {:credo, "~> 1.5", only: [:dev, :test], runtime: false}, diff --git a/mix.lock b/mix.lock index 95b829bf2..f32177363 100644 --- a/mix.lock +++ b/mix.lock @@ -3,14 +3,14 @@ "absinthe_ecto": {:hex, :absinthe_ecto, "0.1.3", "420b68129e79fe4571a4838904ba03e282330d335da47729ad52ffd7b8c5fcb1", [:mix], [{:absinthe, "~> 1.3.0 or ~> 1.4.0", [hex: :absinthe, repo: "hexpm", optional: false]}, {:ecto, ">= 0.0.0", [hex: :ecto, repo: "hexpm", optional: false]}], "hexpm", "355b9db34abfab96ae1e025434b66e11002babcf4fe6b7144d26ff7548985f52"}, "absinthe_phoenix": {:hex, :absinthe_phoenix, "2.0.0", "01c6a90af0ca12ee08d0fb93e23f9890d75bb6d3027f49ee4383bc03058ef5c3", [:mix], [{:absinthe, "~> 1.5.0", [hex: :absinthe, repo: "hexpm", optional: false]}, {:absinthe_plug, "~> 1.5.0", [hex: :absinthe_plug, repo: "hexpm", optional: false]}, {:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.5", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.13", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}], "hexpm", "7ffbfe9fb82a14cafb78885cc2cef4f9d454bbbe2c95eec12b5463f5a20d1020"}, "absinthe_plug": {:hex, :absinthe_plug, "1.5.2", "995de73f0afa763e0aae17e4e0e4affbb5d79e33199bf7e075aeb07f1fb6b7d1", [:mix], [{:absinthe, "~> 1.5.0", [hex: :absinthe, repo: "hexpm", optional: false]}, {:plug, "~> 1.3.2 or ~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "e03549bce5bb77d7b4a9bd68c69f442b0f4409b723b9ce41683ac5c1c70b5958"}, - "argon2_elixir": {:hex, :argon2_elixir, "2.3.0", "e251bdafd69308e8c1263e111600e6d68bd44f23d2cccbe43fcb1a417a76bc8e", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "28ccb63bff213aecec1f7f3dde9648418b031f822499973281d8f494b9d5a3b3"}, + "argon2_elixir": {:hex, :argon2_elixir, "2.4.0", "2a22ea06e979f524c53b42b598fc6ba38cdcbc977a155e33e057732cfb1fb311", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "4ea82e183cf8e7f66dab1f767fedcfe6a195e140357ef2b0423146b72e0a551d"}, "atomex": {:hex, :atomex, "0.3.0", "19b5d1a2aef8706dbd307385f7d5d9f6f273869226d317492c396c7bacf26402", [:mix], [{:xml_builder, "~> 2.0.0", [hex: :xml_builder, repo: "hexpm", optional: false]}], "hexpm", "025dbc3a3e99380894791a093019f535d0ef6cf1916f6ec1b778ac107fcfc3e4"}, "auto_linker": {:git, "https://git.pleroma.social/pleroma/auto_linker.git", "95e8188490e97505c56636c1379ffdf036c1fdde", [ref: "95e8188490e97505c56636c1379ffdf036c1fdde"]}, "bamboo": {:hex, :bamboo, "1.6.0", "adfb583bef028923aae6f22deaea6667290561da1246058556ecaeb0fec5a175", [:mix], [{:hackney, ">= 1.13.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "454e67feacbc9b6e00553ce1d2fba003c861e0035600d59b09d6159985b17f9b"}, "bamboo_smtp": {:hex, :bamboo_smtp, "3.0.0", "b7f0c371af96a1cb7131908918b02abb228f9db234910bf10cf4fb177c083259", [:mix], [{:bamboo, "~> 1.2", [hex: :bamboo, repo: "hexpm", optional: false]}, {:gen_smtp, "~> 0.15.0", [hex: :gen_smtp, repo: "hexpm", optional: false]}], "hexpm", "77cb1fa3076b24109e54df622161fe1e5619376b4ecf86d8b99b46f327acc49f"}, "bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm", "7af5c7e09fe1d40f76c8e4f9dd2be7cebd83909f31fee7cd0e9eadc567da8353"}, "cachex": {:hex, :cachex, "3.3.0", "6f2ebb8f27491fe39121bd207c78badc499214d76c695658b19d6079beeca5c2", [:mix], [{:eternal, "~> 1.2", [hex: :eternal, repo: "hexpm", optional: false]}, {:jumper, "~> 1.0", [hex: :jumper, repo: "hexpm", optional: false]}, {:sleeplocks, "~> 1.1", [hex: :sleeplocks, repo: "hexpm", optional: false]}, {:unsafe, "~> 1.0", [hex: :unsafe, repo: "hexpm", optional: false]}], "hexpm", "d90e5ee1dde14cef33f6b187af4335b88748b72b30c038969176cd4e6ccc31a1"}, - "certifi": {:hex, :certifi, "2.5.2", "b7cfeae9d2ed395695dd8201c57a2d019c0c43ecaf8b8bcb9320b40d6662f340", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "3b3b5f36493004ac3455966991eaf6e768ce9884693d9968055aeeeb1e575040"}, + "certifi": {:hex, :certifi, "2.5.3", "70bdd7e7188c804f3a30ee0e7c99655bc35d8ac41c23e12325f36ab449b70651", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "ed516acb3929b101208a9d700062d520f3953da3b6b918d866106ffa980e1c10"}, "cldr_utils": {:hex, :cldr_utils, "2.14.0", "edcef8dd2654b93d84a90087f3536ffabf9c9d82b34ff82bc9ca54c0668b3a4a", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "6903356ff6988342a29b90637eece4ca98a4ed2b9759c22233d3474ade57645a"}, "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"}, "comeonin": {:hex, :comeonin, "5.3.1", "7fe612b739c78c9c1a75186ef2d322ce4d25032d119823269d0aa1e2f1e20025", [:mix], [], "hexpm", "d6222483060c17f0977fad1b7401ef0c5863c985a64352755f366aee3799c245"}, @@ -19,7 +19,7 @@ "cowboy": {:hex, :cowboy, "2.8.0", "f3dc62e35797ecd9ac1b50db74611193c29815401e53bac9a5c0577bd7bc667d", [:rebar3], [{:cowlib, "~> 2.9.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.7.1", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "4643e4fba74ac96d4d152c75803de6fad0b3fa5df354c71afdd6cbeeb15fac8a"}, "cowboy_telemetry": {:hex, :cowboy_telemetry, "0.3.1", "ebd1a1d7aff97f27c66654e78ece187abdc646992714164380d8a041eda16754", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "3a6efd3366130eab84ca372cbd4a7d3c3a97bdfcfb4911233b035d117063f0af"}, "cowlib": {:hex, :cowlib, "2.9.1", "61a6c7c50cf07fdd24b2f45b89500bb93b6686579b069a89f88cb211e1125c78", [:rebar3], [], "hexpm", "e4175dc240a70d996156160891e1c62238ede1729e45740bdd38064dad476170"}, - "credo": {:hex, :credo, "1.5.3", "f345253655f2efe1e4693a03437606462681e91303ebc9e3909c14268effc37a", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "f7e238c10051cc22515e3f75754200b567d93c00d93be81fc59d47bc3dfdc5be"}, + "credo": {:hex, :credo, "1.5.4", "9914180105b438e378e94a844ec3a5088ae5875626fc945b7c1462b41afc3198", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "cf51af45eadc0a3f39ba13b56fdac415c91b34f7b7533a13dc13550277141bc4"}, "dataloader": {:hex, :dataloader, "1.0.8", "114294362db98a613f231589246aa5b0ce847412e8e75c4c94f31f204d272cbf", [:mix], [{:ecto, ">= 3.4.3 and < 4.0.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "eaf3c2aa2bc9dbd2f1e960561d616b7f593396c4754185b75904f6d66c82a667"}, "db_connection": {:hex, :db_connection, "2.3.1", "4c9f3ed1ef37471cbdd2762d6655be11e38193904d9c5c1c9389f1b891a3088e", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}], "hexpm", "abaab61780dde30301d840417890bd9f74131041afd02174cf4e10635b3a63f5"}, "decimal": {:hex, :decimal, "1.9.0", "83e8daf59631d632b171faabafb4a9f4242c514b0a06ba3df493951c08f64d07", [:mix], [], "hexpm", "b1f2343568eed6928f3e751cf2dffde95bfaa19dd95d09e8a9ea92ccfd6f7d85"}, @@ -32,7 +32,7 @@ "ecto_shortuuid": {:hex, :ecto_shortuuid, "0.1.3", "d36aede64edf256e4b769be2ad15a8ad5d9d1ff8ad46befe39e8cb4489abcd05", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:shortuuid, "~> 2.1.1", [hex: :shortuuid, repo: "hexpm", optional: false]}], "hexpm", "d215c8ced7125265de94d55abc696125942caef33439cf281fafded9744a4294"}, "ecto_sql": {:hex, :ecto_sql, "3.5.3", "1964df0305538364b97cc4661a2bd2b6c89d803e66e5655e4e55ff1571943efd", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.5.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.3.0 or ~> 0.4.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d2f53592432ce17d3978feb8f43e8dc0705e288b0890caf06d449785f018061c"}, "elixir_feed_parser": {:hex, :elixir_feed_parser, "2.1.0", "bb96fb6422158dc7ad59de62ef211cc69d264acbbe63941a64a5dce97bbbc2e6", [:mix], [{:timex, "~> 3.4", [hex: :timex, repo: "hexpm", optional: false]}], "hexpm", "2d3c62fe7b396ee3b73d7160bc8fadbd78bfe9597c98c7d79b3f1038d9cba28f"}, - "elixir_make": {:hex, :elixir_make, "0.6.1", "8faa29a5597faba999aeeb72bbb9c91694ef8068f0131192fb199f98d32994ef", [:mix], [], "hexpm", "35d33270680f8d839a4003c3e9f43afb595310a592405a00afc12de4c7f55a18"}, + "elixir_make": {:hex, :elixir_make, "0.6.2", "7dffacd77dec4c37b39af867cedaabb0b59f6a871f89722c25b28fcd4bd70530", [:mix], [], "hexpm", "03e49eadda22526a7e5279d53321d1cced6552f344ba4e03e619063de75348d9"}, "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, "esaml": {:git, "git://github.com/wrren/esaml.git", "2cace5778e4323216bcff2085ca9739e42a68a42", [branch: "ueberauth_saml"]}, "eternal": {:hex, :eternal, "1.2.1", "d5b6b2499ba876c57be2581b5b999ee9bdf861c647401066d3eeed111d096bc4", [:mix], [], "hexpm", "b14f1dc204321429479c569cfbe8fb287541184ed040956c8862cb7a677b8406"}, @@ -45,11 +45,11 @@ "ex_crypto": {:hex, :ex_crypto, "0.10.0", "af600a89b784b36613a989da6e998c1b200ff1214c3cfbaf8deca4aa2f0a1739", [:mix], [{:poison, ">= 2.0.0", [hex: :poison, repo: "hexpm", optional: false]}], "hexpm", "ccc7472cfe8a0f4565f97dce7e9280119bf15a5ea51c6535e5b65f00660cde1c"}, "ex_doc": {:hex, :ex_doc, "0.23.0", "a069bc9b0bf8efe323ecde8c0d62afc13d308b1fa3d228b65bca5cf8703a529d", [:mix], [{:earmark_parser, "~> 1.4.0", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm", "f5e2c4702468b2fd11b10d39416ddadd2fcdd173ba2a0285ebd92c39827a5a16"}, "ex_ical": {:hex, :ex_ical, "0.2.0", "4b928b554614704016cc0c9ee226eb854da9327a1cc460457621ceacb1ac29a6", [:mix], [{:timex, "~> 3.1", [hex: :timex, repo: "hexpm", optional: false]}], "hexpm", "db76473b2ae0259e6633c6c479a5a4d8603f09497f55c88f9ef4d53d2b75befb"}, - "ex_machina": {:hex, :ex_machina, "2.4.0", "09a34c5d371bfb5f78399029194a8ff67aff340ebe8ba19040181af35315eabb", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm", "a20bc9ddc721b33ea913b93666c5d0bdca5cbad7a67540784ae277228832d72c"}, + "ex_machina": {:hex, :ex_machina, "2.5.0", "8143cd1bf25364f197b089230c0e463941d5909b84c1a8491393ebf97a4b53fa", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm", "8f24851c32b3f9f8adb11335f1e4801ea76a2e0dfa21d8c4bc40ee0d6156c084"}, "ex_optimizer": {:hex, :ex_optimizer, "0.1.1", "62da37e206fc2233ff7a4e54e40eae365c40f96c81992fcd15b782eb25169b80", [:mix], [{:file_info, "~> 0.0.4", [hex: :file_info, repo: "hexpm", optional: false]}], "hexpm", "e6f5c059bcd58b66be2f6f257fdc4f69b74b0fa5c9ddd669486af012e4b52286"}, - "ex_unit_notifier": {:hex, :ex_unit_notifier, "0.1.4", "36a2dcab829f506e01bf17816590680dd1474407926d43e64c1263e627c364b8", [:mix], [], "hexpm", "fddf5054dd5fd2f809e837b749570baa5c9798e11d0163921baec49b7d5762f2"}, + "ex_unit_notifier": {:hex, :ex_unit_notifier, "1.0.0", "85a95b4666b1300412798c76a33344b69f00fab99519c48839780ce2678dfead", [:mix], [], "hexpm", "ed54c8cf4a4ddb3230ef8a23071dd371e5d64cc4026a2b047532c1db4ca58e6d"}, "exactor": {:hex, :exactor, "2.2.4", "5efb4ddeb2c48d9a1d7c9b465a6fffdd82300eb9618ece5d34c3334d5d7245b1", [:mix], [], "hexpm", "1222419f706e01bfa1095aec9acf6421367dcfab798a6f67c54cf784733cd6b5"}, - "excoveralls": {:hex, :excoveralls, "0.13.3", "edc5f69218f84c2bf61b3609a22ddf1cec0fbf7d1ba79e59f4c16d42ea4347ed", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "cc26f48d2f68666380b83d8aafda0fffc65dafcc8d8650358e0b61f6a99b1154"}, + "excoveralls": {:hex, :excoveralls, "0.13.4", "7b0baee01fe150ef81153e6ffc0fc68214737f54570dc257b3ca4da8e419b812", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "faae00b3eee35cdf0342c10b669a7c91f942728217d2a7c7f644b24d391e6190"}, "exgravatar": {:hex, :exgravatar, "2.0.2", "638412896170409da114f98947d3f8d4f38e851b0e329c1cc4cd324d5e2ea081", [:mix], [], "hexpm", "f3deb5baa6fcf354a965d794ee73a956d95f1f79f41bddf69800c713cfb014a1"}, "exjsx": {:hex, :exjsx, "4.0.0", "60548841e0212df401e38e63c0078ec57b33e7ea49b032c796ccad8cde794b5c", [:mix], [{:jsx, "~> 2.8.0", [hex: :jsx, repo: "hexpm", optional: false]}], "hexpm", "32e95820a97cffea67830e91514a2ad53b888850442d6d395f53a1ac60c82e07"}, "exvcr": {:hex, :exvcr, "0.12.2", "e8fc0beeb62924d3b755b2718a161b13cb4ed53311378e5e587606c15190c8ed", [:mix], [{:exactor, "~> 2.2", [hex: :exactor, repo: "hexpm", optional: false]}, {:exjsx, "~> 4.0", [hex: :exjsx, repo: "hexpm", optional: false]}, {:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: true]}, {:httpotion, "~> 3.1", [hex: :httpotion, repo: "hexpm", optional: true]}, {:ibrowse, "4.4.0", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:meck, "~> 0.8", [hex: :meck, repo: "hexpm", optional: false]}], "hexpm", "63776555a1bd003ff60635aead47461ced1ff985c66427421ad344e317ba983c"}, @@ -67,9 +67,9 @@ "gettext": {:hex, :gettext, "0.18.2", "7df3ea191bb56c0309c00a783334b288d08a879f53a7014341284635850a6e55", [:mix], [], "hexpm", "f9f537b13d4fdd30f3039d33cb80144c3aa1f8d9698e47d7bcbcc8df93b1f5c5"}, "git_status": {:hex, :git_status, "0.1.0", "228b5d2e62c60a157314ff7398a92ab9a108005f4e532d4ecb07bc62fdd67e85", [:mix], [], "hexpm", "2393ee163f71ff75d5374bf20ceab6ea200249ed1beee5a4a31a8e599710de19"}, "guardian": {:hex, :guardian, "2.1.1", "1f02b349f6ba765647cc834036a8d76fa4bd65605342fe3a031df3c99d0d411a", [:mix], [{:jose, "~> 1.8", [hex: :jose, repo: "hexpm", optional: false]}, {:plug, "~> 1.3.3 or ~> 1.4", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "189b87ba7ce6b40d6ba029138098b96ffc4ae78f229f5b39539b9141af8bf0f8"}, - "guardian_db": {:hex, :guardian_db, "2.0.3", "18c847efbf7ec3c0dd44c7aecaeeb2777588bbb8d2073ffc36e71037108b3be6", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.1", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:guardian, "~> 1.0 or ~> 2.0", [hex: :guardian, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.13", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "17306e09498bca379fb8eded2ac44d7690f738ca14b17080d06a948d034ea087"}, + "guardian_db": {:hex, :guardian_db, "2.1.0", "ec95a9d99cdd1e550555d09a7bb4a340d8887aad0697f594590c2fd74be02426", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.1", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:guardian, "~> 1.0 or ~> 2.0", [hex: :guardian, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.13", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "f8e7d543ac92c395f3a7fd5acbe6829faeade57d688f7562e2f0fca8f94a0d70"}, "guardian_phoenix": {:hex, :guardian_phoenix, "2.0.1", "89a817265af09a6ddf7cb1e77f17ffca90cea2db10ff888375ef34502b2731b1", [:mix], [{:guardian, "~> 2.0", [hex: :guardian, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.3", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "21f439246715192b231f228680465d1ed5fbdf01555a4a3b17165532f5f9a08c"}, - "hackney": {:hex, :hackney, "1.16.0", "5096ac8e823e3a441477b2d187e30dd3fff1a82991a806b2003845ce72ce2d84", [:rebar3], [{:certifi, "2.5.2", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.1", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.0", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.6", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "3bf0bebbd5d3092a3543b783bf065165fa5d3ad4b899b836810e513064134e18"}, + "hackney": {:hex, :hackney, "1.17.0", "717ea195fd2f898d9fe9f1ce0afcc2621a41ecfe137fae57e7fe6e9484b9aa99", [:rebar3], [{:certifi, "~>2.5", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "64c22225f1ea8855f584720c0e5b3cd14095703af1c9fbc845ba042811dc671c"}, "hammox": {:hex, :hammox, "0.2.5", "55436c392c242ae893ebddda8ad20bafb3a5fd6d9899dd44dbf29b84420cf316", [:mix], [{:mox, "~> 0.5", [hex: :mox, repo: "hexpm", optional: false]}, {:ordinal, "~> 0.1", [hex: :ordinal, repo: "hexpm", optional: false]}], "hexpm", "c4862a86eeec8531f14795b584677870c58a4c8de5eab5730904db3a27b836f2"}, "hashids": {:hex, :hashids, "2.0.4", "ea47a2c2018b7ffb4f5ac9b0f8ea0af6d6159b9e190c5ed09f0ea83276968e0f", [:mix], [], "hexpm", "812e2c7ae763609a47acdd4c64d58c72f63bcfd741e6c605127e43af1507e019"}, "html_entities": {:hex, :html_entities, "0.5.1", "1c9715058b42c35a2ab65edc5b36d0ea66dd083767bef6e3edb57870ef556549", [:mix], [], "hexpm", "30efab070904eb897ff05cd52fa61c1025d7f8ef3a9ca250bc4e6513d16c32de"}, @@ -78,14 +78,14 @@ "http_signatures": {:hex, :http_signatures, "0.1.0", "4e4b501a936dbf4cb5222597038a89ea10781776770d2e185849fa829686b34c", [:mix], [], "hexpm", "f8a7b3731e3fd17d38fa6e343fcad7b03d6874a3b0a108c8568a71ed9c2cf824"}, "httpoison": {:hex, :httpoison, "1.7.0", "abba7d086233c2d8574726227b6c2c4f6e53c4deae7fe5f6de531162ce9929a0", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "975cc87c845a103d3d1ea1ccfd68a2700c211a434d8428b10c323dc95dc5b980"}, "icalendar": {:git, "https://github.com/tcitworld/icalendar.git", "bd08e872c125f70a87c3ac7d87ea2f22a5577059", []}, - "idna": {:hex, :idna, "6.0.1", "1d038fb2e7668ce41fbf681d2c45902e52b3cb9e9c77b55334353b222c2ee50c", [:rebar3], [{:unicode_util_compat, "0.5.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "a02c8a1c4fd601215bb0b0324c8a6986749f807ce35f25449ec9e69758708122"}, + "idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"}, "inet_cidr": {:hex, :inet_cidr, "1.0.4", "a05744ab7c221ca8e395c926c3919a821eb512e8f36547c062f62c4ca0cf3d6e", [:mix], [], "hexpm", "64a2d30189704ae41ca7dbdd587f5291db5d1dda1414e0774c29ffc81088c1bc"}, "ip_reserved": {:hex, :ip_reserved, "0.1.0", "5c3b6df25eb875618e489db47e00fb8dac53bc2b0dc2d546b713e6141210fe9f", [:mix], [{:inet_cidr, "~> 1.0.0", [hex: :inet_cidr, repo: "hexpm", optional: false]}], "hexpm", "88b0e96f40048f214b9e90e64eaebbf18acfec066008d7ef993b08282b2fe484"}, "jason": {:hex, :jason, "1.2.2", "ba43e3f2709fd1aa1dce90aaabfd039d000469c05c56f0b8e31978e03fa39052", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "18a228f5f0058ee183f29f9eae0805c6e59d61c3b006760668d8d18ff0d12179"}, - "jose": {:hex, :jose, "1.10.1", "16d8e460dae7203c6d1efa3f277e25b5af8b659febfc2f2eb4bacf87f128b80a", [:mix, :rebar3], [], "hexpm", "3c7ddc8a9394b92891db7c2771da94bf819834a1a4c92e30857b7d582e2f8257"}, + "jose": {:hex, :jose, "1.11.1", "59da64010c69aad6cde2f5b9248b896b84472e99bd18f246085b7b9fe435dcdb", [:mix, :rebar3], [], "hexpm", "078f6c9fb3cd2f4cfafc972c814261a7d1e8d2b3685c0a76eb87e158efff1ac5"}, "jsx": {:hex, :jsx, "2.8.3", "a05252d381885240744d955fbe3cf810504eb2567164824e19303ea59eef62cf", [:mix, :rebar3], [], "hexpm", "fc3499fed7a726995aa659143a248534adc754ebd16ccd437cd93b649a95091f"}, "jumper": {:hex, :jumper, "1.0.1", "3c00542ef1a83532b72269fab9f0f0c82bf23a35e27d278bfd9ed0865cecabff", [:mix], [], "hexpm", "318c59078ac220e966d27af3646026db9b5a5e6703cb2aa3e26bcfaba65b7433"}, - "linkify": {:hex, :linkify, "0.4.0", "7845b6ac33050a41acaf9318923ce6e7f3854418be9a5f22184de103f7a68ff9", [:mix], [], "hexpm", "a0ceb4c78591fecccf1d99fecc10c13dba75a307c663c80e28af9e2cdd9776ee"}, + "linkify": {:hex, :linkify, "0.4.1", "f881eb3429ae88010cf736e6fb3eed406c187bcdd544902ec937496636b7c7b3", [:mix], [], "hexpm", "ce98693f54ae9ace59f2f7a8aed3de2ef311381a8ce7794804bd75484c371dda"}, "makeup": {:hex, :makeup, "1.0.5", "d5a830bc42c9800ce07dd97fa94669dfb93d3bf5fcf6ea7a0c67b2e0e4a7f26c", [:mix], [{:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cfa158c02d3f5c0c665d0af11512fed3fba0144cf1aadee0f2ce17747fba2ca9"}, "makeup_elixir": {:hex, :makeup_elixir, "0.15.0", "98312c9f0d3730fde4049985a1105da5155bfe5c11e47bdc7406d88e01e4219b", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.1", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "75ffa34ab1056b7e24844c90bfc62aaf6f3a37a15faa76b07bc5eba27e4a8b4a"}, "meck": {:hex, :meck, "0.8.13", "ffedb39f99b0b99703b8601c6f17c7f76313ee12de6b646e671e3188401f7866", [:rebar3], [], "hexpm", "d34f013c156db51ad57cc556891b9720e6a1c1df5fe2e15af999c84d6cebeb1a"}, @@ -106,7 +106,7 @@ "oban": {:hex, :oban, "2.3.4", "ec7509b9af2524d55f529cb7aee93d36131ae0bf0f37706f65d2fe707f4d9fd8", [:mix], [{:ecto_sql, ">= 3.4.3", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.14", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c70ca0434758fd1805422ea4446af5e910ddc697c0c861549c8f0eb0cfbd2fdf"}, "ordinal": {:hex, :ordinal, "0.1.0", "2f7a1a64ff4be44b8a674718bb00d1584188fe92fa2fa48b95b1e72096d74a34", [:mix], [], "hexpm", "9f3d0a50c285ac99faa9626376e11afa6fc83d42e95166768b37d176cff485a3"}, "paddle": {:hex, :paddle, "0.1.4", "3697996d79e3d771d6f7560a23e4bad1ed7b7f7fd3e784f97bc39565963b2b13", [:mix], [], "hexpm", "fc719a9e7c86f319b9f4bf413d6f0f326b0c4930d5bc6630d074598ed38e2143"}, - "parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm", "17ef63abde837ad30680ea7f857dd9e7ced9476cdd7b0394432af4bfc241b960"}, + "parse_trans": {:hex, :parse_trans, "3.3.1", "16328ab840cc09919bd10dab29e431da3af9e9e7e7e6f0089dd5a2d2820011d8", [:rebar3], [], "hexpm", "07cd9577885f56362d414e8c4c4e6bdf10d43a8767abb92d24cbe8b24c54888b"}, "phoenix": {:hex, :phoenix, "1.5.7", "2923bb3af924f184459fe4fa4b100bd25fa6468e69b2803dfae82698269aa5e0", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 2.13", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.1.2 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "774cd64417c5a3788414fdbb2be2eb9bcd0c048d9e6ad11a0c1fd67b7c0d0978"}, "phoenix_ecto": {:hex, :phoenix_ecto, "4.2.1", "13f124cf0a3ce0f1948cf24654c7b9f2347169ff75c1123f44674afee6af3b03", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 2.15", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "478a1bae899cac0a6e02be1deec7e2944b7754c04e7d4107fc5a517f877743c0"}, "phoenix_html": {:hex, :phoenix_html, "2.14.3", "51f720d0d543e4e157ff06b65de38e13303d5778a7919bcc696599e5934271b8", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "efd697a7fff35a13eeeb6b43db884705cba353a1a41d127d118fda5f90c8e80f"}, @@ -129,8 +129,8 @@ "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.6", "cf344f5692c82d2cd7554f5ec8fd961548d4fd09e7d22f5b62482e5aeaebd4b0", [:make, :mix, :rebar3], [], "hexpm", "bdb0d2471f453c88ff3908e7686f86f9be327d065cc1ec16fa4540197ea04680"}, "telemetry": {:hex, :telemetry, "0.4.2", "2808c992455e08d6177322f14d3bdb6b625fbcfd233a73505870d8738a2f4599", [:rebar3], [], "hexpm", "2d1419bd9dda6a206d7b5852179511722e2b18812310d304620c7bd92a13fcef"}, "tesla": {:hex, :tesla, "1.4.0", "1081bef0124b8bdec1c3d330bbe91956648fb008cf0d3950a369cda466a31a87", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:exjsx, ">= 3.0.0", [hex: :exjsx, repo: "hexpm", optional: true]}, {:finch, "~> 0.3", [hex: :finch, repo: "hexpm", optional: true]}, {:fuse, "~> 2.4", [hex: :fuse, repo: "hexpm", optional: true]}, {:gun, "~> 1.3", [hex: :gun, repo: "hexpm", optional: true]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: true]}, {:ibrowse, "~> 4.4.0", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.0", [hex: :mint, repo: "hexpm", optional: true]}, {:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "bf1374a5569f5fca8e641363b63f7347d680d91388880979a33bc12a6eb3e0aa"}, - "timex": {:hex, :timex, "3.6.2", "845cdeb6119e2fef10751c0b247b6c59d86d78554c83f78db612e3290f819bc2", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 0.1.8 or ~> 0.5 or ~> 1.0.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "26030b46199d02a590be61c2394b37ea25a3664c02fafbeca0b24c972025d47a"}, - "tzdata": {:hex, :tzdata, "1.0.4", "a3baa4709ea8dba552dca165af6ae97c624a2d6ac14bd265165eaa8e8af94af6", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "b02637db3df1fd66dd2d3c4f194a81633d0e4b44308d36c1b2fdfd1e4e6f169b"}, + "timex": {:hex, :timex, "3.6.3", "58ce6c9eda8ed47fc80c24dde09d481465838d3bcfc230949287fc1b0b0041c1", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 0.1.8 or ~> 0.5 or ~> 1.0.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "6d69f4f95fcf5684102a9cb3cf92c5ba6545bd60ed8d8a6a93cd2a4a4fb0d9ec"}, + "tzdata": {:hex, :tzdata, "1.0.5", "69f1ee029a49afa04ad77801febaf69385f3d3e3d1e4b56b9469025677b89a28", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "55519aa2a99e5d2095c1e61cc74c9be69688f8ab75c27da724eb8279ff402a5a"}, "ueberauth": {:hex, :ueberauth, "0.6.3", "d42ace28b870e8072cf30e32e385579c57b9cc96ec74fa1f30f30da9c14f3cc0", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "afc293d8a1140d6591b53e3eaf415ca92842cb1d32fad3c450c6f045f7f91b60"}, "ueberauth_discord": {:hex, :ueberauth_discord, "0.5.2", "afc5d68879575c365972fd4d7cf7b01c16f7d062fc6bf7e86e2595736ac41127", [:mix], [{:oauth2, "~> 1.0 or ~> 2.0", [hex: :oauth2, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.6.3", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "bbd7701d8fef02623fb106ed7c24427ed2327ef769bcb1d2eba5670e54716cdc"}, "ueberauth_facebook": {:hex, :ueberauth_facebook, "0.8.1", "c254be4ab367c276773c2e41d3c0fe343ae118e244afc8d5a4e3e5c438951fdc", [:mix], [{:oauth2, "~> 1.0 or ~> 2.0", [hex: :oauth2, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.6.0", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "c2cf210ef45bd20611234ef17517f9d1dff6b31d3fb6ad96789143eb0943f540"}, @@ -141,7 +141,7 @@ "ueberauth_keycloak_strategy": {:git, "https://github.com/tcitworld/ueberauth_keycloak.git", "d892f0f9daf9e0023319b69ac2f7c2c6edff2b14", [branch: "upgrade-deps"]}, "ueberauth_saml": {:git, "https://github.com/wrren/ueberauth_saml.git", "dfcb4ae3f509afec0f442ce455c41feacac24511", []}, "ueberauth_twitter": {:hex, :ueberauth_twitter, "0.4.0", "4b98620341bc91bac90459093bba093c650823b6e2df35b70255c493c17e9227", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:oauther, "~> 1.1", [hex: :oauther, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.6", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "fb29c9047ca263038c0c61f5a0ec8597e8564aba3f2b4cb02704b60205fd4468"}, - "unicode_util_compat": {:hex, :unicode_util_compat, "0.5.0", "8516502659002cec19e244ebd90d312183064be95025a319a6c7e89f4bccd65b", [:rebar3], [], "hexpm", "d48d002e15f5cc105a696cf2f1bbb3fc72b4b770a184d8420c8db20da2674b38"}, + "unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"}, "unsafe": {:hex, :unsafe, "1.0.1", "a27e1874f72ee49312e0a9ec2e0b27924214a05e3ddac90e91727bc76f8613d8", [:mix], [], "hexpm", "6c7729a2d214806450d29766abc2afaa7a2cbecf415be64f36a6691afebb50e5"}, "uuid": {:git, "git://github.com/botsunit/erlang-uuid", "1effbbbd200f9f5d9d5154e81b83fe8e4c3fe714", [branch: "master"]}, "xml_builder": {:hex, :xml_builder, "2.1.4", "e60e21c0a39b9dd8dec1db5a2525c713f7fe4e85ed247caedf22a9bcdd2d5069", [:mix], [], "hexpm", "48188a4df8b9168ceb8318d128299bce064d272e18967349b2592347c434e677"}, From 962e9aade558c83dc922f4ef48c8342509a70ed3 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 11 Jan 2021 13:58:40 +0100 Subject: [PATCH 021/114] Split CI Signed-off-by: Thomas Citharel --- .gitlab-ci.yml | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dad82f161..73ba72c52 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -30,19 +30,26 @@ cache: - js/node_modules - cache/Cypress -lint: +lint-elixir: stage: check script: - export EXITVALUE=0 - mix deps.get - mix credo --strict -a || export EXITVALUE=1 - mix format --check-formatted --dry-run || export EXITVALUE=1 + - exit $EXITVALUE + +lint-front: + image: node:14 + stage: check + before_script: + - export EXITVALUE=0 - cd js + script: - yarn install - yarn run lint || export EXITVALUE=1 - yarn run prettier -c . || export EXITVALUE=1 - - yarn run build:assets - - cd ../ + - yarn run build:assets || export EXITVALUE=1 - exit $EXITVALUE artifacts: expire_in: 1 day @@ -75,7 +82,7 @@ exunit: - MIX_ENV=test mix ecto.create - MIX_ENV=test mix ecto.migrate dependencies: - - lint + - lint-elixir script: - mix coveralls @@ -85,7 +92,7 @@ jest: - cd js - yarn install dependencies: - - lint + - lint-front script: - yarn run test:unit --no-color artifacts: From 1bc3c1db096ebc0b83b9c8380647900e5a107e0a Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 11 Jan 2021 17:35:27 +0100 Subject: [PATCH 022/114] Use workbox 5 to avoid CDN call to Google Signed-off-by: Thomas Citharel --- js/package.json | 3 +- js/yarn.lock | 429 +++++++++++++++++++++++++++++++++--------------- yarn.lock | 4 - 3 files changed, 295 insertions(+), 141 deletions(-) delete mode 100644 yarn.lock diff --git a/js/package.json b/js/package.json index bb4ed4401..4b9a6510f 100644 --- a/js/package.json +++ b/js/package.json @@ -95,6 +95,7 @@ }, "resolutions": { "prosemirror-model": "1.9.1", - "prosemirror-state": "1.3.3" + "prosemirror-state": "1.3.3", + "workbox-webpack-plugin": "5.1.3" } } diff --git a/js/yarn.lock b/js/yarn.lock index 6b8ab25eb..c831fde31 100644 --- a/js/yarn.lock +++ b/js/yarn.lock @@ -27,7 +27,7 @@ core-js "2.6.0" zen-observable "0.8.11" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== @@ -39,7 +39,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw== -"@babel/core@^7.1.0", "@babel/core@^7.11.0": +"@babel/core@^7.1.0", "@babel/core@^7.11.0", "@babel/core@^7.8.4": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== @@ -748,7 +748,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/preset-env@^7.11.0": +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.8.4": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.11.tgz#55d5f7981487365c93dbbc84507b1c7215e857f9" integrity sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw== @@ -838,7 +838,7 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.11.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.11.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== @@ -935,7 +935,7 @@ resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== -"@hapi/joi@^15.0.0", "@hapi/joi@^15.0.1": +"@hapi/joi@^15.0.1", "@hapi/joi@^15.1.0": version "15.1.1" resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== @@ -1193,6 +1193,34 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.6.0.tgz#f022195afdfc942e088ee2101285a1d31c7d727f" integrity sha512-cPqjjzuFWNK3BSKLm0abspP0sp/IGOli4p5I5fKFAzdS8fvjdOwDCfZqAaIiXd9lPkOWi3SUUfZof3hEb7J/uw== +"@rollup/plugin-node-resolve@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" + integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q== + dependencies: + "@rollup/pluginutils" "^3.0.8" + "@types/resolve" "0.0.8" + builtin-modules "^3.1.0" + is-module "^1.0.0" + resolve "^1.14.2" + +"@rollup/plugin-replace@^2.3.1": + version "2.3.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.3.4.tgz#7dd84c17755d62b509577f2db37eb524d7ca88ca" + integrity sha512-waBhMzyAtjCL1GwZes2jaE9MjuQ/DQF2BatH3fRivUF3z0JBFrU0U6iBNC/4WR+2rLKhaAhPWDNPYp4mI6RqdQ== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@soda/friendly-errors-webpack-plugin@^1.7.1": version "1.8.0" resolved "https://registry.yarnpkg.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.0.tgz#84751d82a93019d5c92c0cf0e45ac59087cd2240" @@ -1208,6 +1236,14 @@ resolved "https://registry.yarnpkg.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz#a53515db25d8038374381b73af20bb4f2e508d87" integrity sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w== +"@surma/rollup-plugin-off-main-thread@^1.1.1": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58" + integrity sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A== + dependencies: + ejs "^2.6.1" + magic-string "^0.25.0" + "@types/anymatch@*": version "1.3.1" resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" @@ -1274,6 +1310,16 @@ resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== +"@types/estree@*": + version "0.0.45" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" + integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + "@types/express-serve-static-core@*": version "4.17.17" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.17.tgz#6ba02465165b6c9c3d8db3a28def6b16fc9b70f5" @@ -1483,6 +1529,13 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== +"@types/resolve@0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + "@types/serve-static@*": version "1.13.8" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.8.tgz#851129d434433c7082148574ffec263d58309c46" @@ -3202,6 +3255,11 @@ builtin-modules@^1.1.1: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= +builtin-modules@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -4017,6 +4075,11 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= + css-color-names@0.0.4, css-color-names@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" @@ -5007,6 +5070,16 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -5306,7 +5379,7 @@ fast-glob@^3.1.1: micromatch "^4.0.2" picomatch "^2.2.1" -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -5633,15 +5706,6 @@ fs-extra@5.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -5651,6 +5715,15 @@ fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-extra@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" @@ -6694,6 +6767,11 @@ is-installed-globally@0.1.0: global-dirs "^0.1.0" is-path-inside "^1.0.0" +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + is-negative-zero@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" @@ -7488,13 +7566,6 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= - dependencies: - jsonify "~0.0.0" - json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -7540,11 +7611,6 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= - jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -7812,7 +7878,7 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.template@^4.4.0: +lodash.template@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== @@ -7924,6 +7990,13 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + dependencies: + sourcemap-codec "^1.4.4" + make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -9041,7 +9114,7 @@ phoenix@^1.4.11: resolved "https://registry.yarnpkg.com/phoenix/-/phoenix-1.5.7.tgz#86775bc51271e49930fd7d879ec3ec2addd6bf08" integrity sha512-RgVdTRsK5NpnUPkjPyLg9P8qQQvuDaUsazH06t+ARu9EnPryQ7asE76VDjVZ43fqjY/p8er6y6OQb17YViG47g== -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== @@ -9573,7 +9646,7 @@ prettier@^1.18.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -pretty-bytes@^5.1.0: +pretty-bytes@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.5.0.tgz#0cecda50a74a941589498011cf23275aa82b339e" integrity sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA== @@ -10272,7 +10345,7 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.x, resolve@^1.10.0, resolve@^1.3.2: +resolve@1.x, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.3.2: version "1.19.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== @@ -10351,6 +10424,41 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rollup-plugin-babel@^4.3.3: + version "4.4.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" + integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + rollup-pluginutils "^2.8.1" + +rollup-plugin-terser@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz#8c650062c22a8426c64268548957463bf981b413" + integrity sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w== + dependencies: + "@babel/code-frame" "^7.5.5" + jest-worker "^24.9.0" + rollup-pluginutils "^2.8.2" + serialize-javascript "^4.0.0" + terser "^4.6.2" + +rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +rollup@^1.31.1: + version "1.32.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" + integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== + dependencies: + "@types/estree" "*" + "@types/node" "*" + acorn "^7.1.0" + rope-sequence@^1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/rope-sequence/-/rope-sequence-1.3.2.tgz#a19e02d72991ca71feb6b5f8a91154e48e3c098b" @@ -10815,6 +10923,11 @@ source-map@^0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +sourcemap-codec@^1.4.4: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -11285,6 +11398,20 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + +tempy@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" + integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== + dependencies: + temp-dir "^1.0.0" + type-fest "^0.3.1" + unique-string "^1.0.0" + terser-webpack-plugin@^1.4.3: version "1.4.5" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" @@ -11315,7 +11442,7 @@ terser-webpack-plugin@^2.3.6: terser "^4.6.12" webpack-sources "^1.4.3" -terser@^4.1.2, terser@^4.6.12: +terser@^4.1.2, terser@^4.6.12, terser@^4.6.2: version "4.8.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== @@ -11713,6 +11840,11 @@ type-fest@^0.11.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== +type-fest@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + type-fest@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" @@ -11821,6 +11953,13 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= + dependencies: + crypto-random-string "^1.0.0" + universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -11859,7 +11998,7 @@ untildify@3.0.3: resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz#1e7b42b140bcfd922b22e70ca1265bfe3634c7c9" integrity sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA== -upath@^1.1.1: +upath@^1.1.1, upath@^1.1.2, upath@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== @@ -12383,7 +12522,7 @@ webpack-merge@^4.2.2: dependencies: lodash "^4.17.15" -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: +webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -12488,140 +12627,158 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -workbox-background-sync@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950" - integrity sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg== +workbox-background-sync@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz#5ae0bbd455f4e9c319e8d827c055bb86c894fd12" + integrity sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA== dependencies: - workbox-core "^4.3.1" + workbox-core "^5.1.4" -workbox-broadcast-update@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz#e2c0280b149e3a504983b757606ad041f332c35b" - integrity sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA== +workbox-broadcast-update@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz#0eeb89170ddca7f6914fa3523fb14462891f2cfc" + integrity sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA== dependencies: - workbox-core "^4.3.1" + workbox-core "^5.1.4" -workbox-build@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz#414f70fb4d6de47f6538608b80ec52412d233e64" - integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== +workbox-build@^5.1.3: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-5.1.4.tgz#23d17ed5c32060c363030c8823b39d0eabf4c8c7" + integrity sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow== dependencies: - "@babel/runtime" "^7.3.4" - "@hapi/joi" "^15.0.0" + "@babel/core" "^7.8.4" + "@babel/preset-env" "^7.8.4" + "@babel/runtime" "^7.8.4" + "@hapi/joi" "^15.1.0" + "@rollup/plugin-node-resolve" "^7.1.1" + "@rollup/plugin-replace" "^2.3.1" + "@surma/rollup-plugin-off-main-thread" "^1.1.1" common-tags "^1.8.0" - fs-extra "^4.0.2" - glob "^7.1.3" - lodash.template "^4.4.0" - pretty-bytes "^5.1.0" + fast-json-stable-stringify "^2.1.0" + fs-extra "^8.1.0" + glob "^7.1.6" + lodash.template "^4.5.0" + pretty-bytes "^5.3.0" + rollup "^1.31.1" + rollup-plugin-babel "^4.3.3" + rollup-plugin-terser "^5.3.1" + source-map "^0.7.3" + source-map-url "^0.4.0" stringify-object "^3.3.0" strip-comments "^1.0.2" - workbox-background-sync "^4.3.1" - workbox-broadcast-update "^4.3.1" - workbox-cacheable-response "^4.3.1" - workbox-core "^4.3.1" - workbox-expiration "^4.3.1" - workbox-google-analytics "^4.3.1" - workbox-navigation-preload "^4.3.1" - workbox-precaching "^4.3.1" - workbox-range-requests "^4.3.1" - workbox-routing "^4.3.1" - workbox-strategies "^4.3.1" - workbox-streams "^4.3.1" - workbox-sw "^4.3.1" - workbox-window "^4.3.1" + tempy "^0.3.0" + upath "^1.2.0" + workbox-background-sync "^5.1.4" + workbox-broadcast-update "^5.1.4" + workbox-cacheable-response "^5.1.4" + workbox-core "^5.1.4" + workbox-expiration "^5.1.4" + workbox-google-analytics "^5.1.4" + workbox-navigation-preload "^5.1.4" + workbox-precaching "^5.1.4" + workbox-range-requests "^5.1.4" + workbox-routing "^5.1.4" + workbox-strategies "^5.1.4" + workbox-streams "^5.1.4" + workbox-sw "^5.1.4" + workbox-window "^5.1.4" -workbox-cacheable-response@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz#f53e079179c095a3f19e5313b284975c91428c91" - integrity sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw== +workbox-cacheable-response@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz#9ff26e1366214bdd05cf5a43da9305b274078a54" + integrity sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA== dependencies: - workbox-core "^4.3.1" + workbox-core "^5.1.4" -workbox-core@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-4.3.1.tgz#005d2c6a06a171437afd6ca2904a5727ecd73be6" - integrity sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg== +workbox-core@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-5.1.4.tgz#8bbfb2362ecdff30e25d123c82c79ac65d9264f4" + integrity sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg== -workbox-expiration@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-4.3.1.tgz#d790433562029e56837f341d7f553c4a78ebe921" - integrity sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw== +workbox-expiration@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-5.1.4.tgz#92b5df461e8126114943a3b15c55e4ecb920b163" + integrity sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ== dependencies: - workbox-core "^4.3.1" + workbox-core "^5.1.4" -workbox-google-analytics@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz#9eda0183b103890b5c256e6f4ea15a1f1548519a" - integrity sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg== +workbox-google-analytics@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz#b3376806b1ac7d7df8418304d379707195fa8517" + integrity sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA== dependencies: - workbox-background-sync "^4.3.1" - workbox-core "^4.3.1" - workbox-routing "^4.3.1" - workbox-strategies "^4.3.1" + workbox-background-sync "^5.1.4" + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + workbox-strategies "^5.1.4" -workbox-navigation-preload@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz#29c8e4db5843803b34cd96dc155f9ebd9afa453d" - integrity sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw== +workbox-navigation-preload@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz#30d1b720d26a05efc5fa11503e5cc1ed5a78902a" + integrity sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ== dependencies: - workbox-core "^4.3.1" + workbox-core "^5.1.4" -workbox-precaching@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-4.3.1.tgz#9fc45ed122d94bbe1f0ea9584ff5940960771cba" - integrity sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ== +workbox-precaching@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-5.1.4.tgz#874f7ebdd750dd3e04249efae9a1b3f48285fe6b" + integrity sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA== dependencies: - workbox-core "^4.3.1" + workbox-core "^5.1.4" -workbox-range-requests@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz#f8a470188922145cbf0c09a9a2d5e35645244e74" - integrity sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA== +workbox-range-requests@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz#7066a12c121df65bf76fdf2b0868016aa2bab859" + integrity sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw== dependencies: - workbox-core "^4.3.1" + workbox-core "^5.1.4" -workbox-routing@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-4.3.1.tgz#a675841af623e0bb0c67ce4ed8e724ac0bed0cda" - integrity sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g== +workbox-routing@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-5.1.4.tgz#3e8cd86bd3b6573488d1a2ce7385e547b547e970" + integrity sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw== dependencies: - workbox-core "^4.3.1" + workbox-core "^5.1.4" -workbox-strategies@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-4.3.1.tgz#d2be03c4ef214c115e1ab29c9c759c9fe3e9e646" - integrity sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw== +workbox-strategies@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-5.1.4.tgz#96b1418ccdfde5354612914964074d466c52d08c" + integrity sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA== dependencies: - workbox-core "^4.3.1" + workbox-core "^5.1.4" + workbox-routing "^5.1.4" -workbox-streams@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-4.3.1.tgz#0b57da70e982572de09c8742dd0cb40a6b7c2cc3" - integrity sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA== +workbox-streams@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-5.1.4.tgz#05754e5e3667bdc078df2c9315b3f41210d8cac0" + integrity sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw== dependencies: - workbox-core "^4.3.1" + workbox-core "^5.1.4" + workbox-routing "^5.1.4" -workbox-sw@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz#df69e395c479ef4d14499372bcd84c0f5e246164" - integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== +workbox-sw@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-5.1.4.tgz#2bb34c9f7381f90d84cef644816d45150011d3db" + integrity sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA== -workbox-webpack-plugin@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz#47ff5ea1cc074b6c40fb5a86108863a24120d4bd" - integrity sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ== +workbox-webpack-plugin@5.1.3, workbox-webpack-plugin@^4.3.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.3.tgz#a7070e3ea0eedb6f87e11fd916ec5d4430a6e348" + integrity sha512-gxSkZ9GFLrMNC/8DGNRjcMhrt8iu+MMXhH/Fpo3wo9rKaSMsI7esGq0klTH/UloP9pNvBizVydysrB52eRhI7w== dependencies: - "@babel/runtime" "^7.0.0" - json-stable-stringify "^1.0.1" - workbox-build "^4.3.1" + "@babel/runtime" "^7.5.5" + fast-json-stable-stringify "^2.0.0" + source-map-url "^0.4.0" + upath "^1.1.2" + webpack-sources "^1.3.0" + workbox-build "^5.1.3" -workbox-window@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-4.3.1.tgz#ee6051bf10f06afa5483c9b8dfa0531994ede0f3" - integrity sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg== +workbox-window@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-5.1.4.tgz#2740f7dea7f93b99326179a62f1cc0ca2c93c863" + integrity sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw== dependencies: - workbox-core "^4.3.1" + workbox-core "^5.1.4" worker-farm@^1.7.0: version "1.7.0" diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index fb57ccd13..000000000 --- a/yarn.lock +++ /dev/null @@ -1,4 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - From c2987beb312644dea6191f259351832485537c88 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 11 Jan 2021 18:02:21 +0100 Subject: [PATCH 023/114] Fix group avatar upload Close #549 Signed-off-by: Thomas Citharel --- js/src/views/Group/Create.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/src/views/Group/Create.vue b/js/src/views/Group/Create.vue index b0517fe97..ab61f3efa 100644 --- a/js/src/views/Group/Create.vue +++ b/js/src/views/Group/Create.vue @@ -166,7 +166,7 @@ export default class CreateGroup extends mixins(IdentityEditionMixin) { if (this.avatarFile) { avatarObj = { avatar: { - picture: { + media: { name: this.avatarFile.name, alt: `${this.group.preferredUsername}'s avatar`, file: this.avatarFile, @@ -178,7 +178,7 @@ export default class CreateGroup extends mixins(IdentityEditionMixin) { if (this.bannerFile) { bannerObj = { banner: { - picture: { + media: { name: this.bannerFile.name, alt: `${this.group.preferredUsername}'s banner`, file: this.bannerFile, From 7657cadbbdd4f7d6d65ddcb3d034afcdbe2698db Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 11 Jan 2021 18:21:38 +0100 Subject: [PATCH 024/114] Sort group events by asc: begins_on Signed-off-by: Thomas Citharel --- lib/mobilizon/events/events.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mobilizon/events/events.ex b/lib/mobilizon/events/events.ex index 305ec501b..9d6792940 100644 --- a/lib/mobilizon/events/events.ex +++ b/lib/mobilizon/events/events.ex @@ -1276,7 +1276,7 @@ defmodule Mobilizon.Events do from( e in Event, where: e.attributed_to_id == ^group_id, - order_by: [desc: :id] + order_by: [asc: :begins_on] ) end From a133612d9fa3dc6026fbcd07f9f452352f36ae0b Mon Sep 17 00:00:00 2001 From: setop Date: Tue, 12 Jan 2021 10:28:20 +0100 Subject: [PATCH 025/114] fix search results sorted by id instead of by begins_on --- lib/mobilizon/events/events.ex | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/mobilizon/events/events.ex b/lib/mobilizon/events/events.ex index 9d6792940..916efc708 100644 --- a/lib/mobilizon/events/events.ex +++ b/lib/mobilizon/events/events.ex @@ -520,7 +520,8 @@ defmodule Mobilizon.Events do |> events_for_tags(args) |> events_for_location(args) |> filter_local_or_from_followed_instances_events() - |> order_by([q], asc: q.id) + |> filter_public_visibility() + |> event_order_begins_on_asc() |> Page.build_page(page, limit) end @@ -1341,8 +1342,6 @@ defmodule Mobilizon.Events do @spec events_for_search_query(String.t()) :: Ecto.Query.t() defp events_for_search_query(search_string) do Event - |> where([e], e.visibility == ^:public) - |> distinct([e], e.id) |> do_event_for_search_query(search_string) end From 016d8620fefe52ef1c396e4afb2a691003bb1923 Mon Sep 17 00:00:00 2001 From: Kate Date: Sun, 10 Jan 2021 19:36:52 +0000 Subject: [PATCH 026/114] Translated using Weblate (German) Currently translated at 98.9% (816 of 825 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/ --- js/src/i18n/de.json | 46 ++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/js/src/i18n/de.json b/js/src/i18n/de.json index a89a04a23..d3eda3f6f 100644 --- a/js/src/i18n/de.json +++ b/js/src/i18n/de.json @@ -235,7 +235,7 @@ "Enabled": "Aktiviert", "Ends on…": "Endet am…", "Enjoy discovering Mobilizon!": "Viel Spaß beim Entdecken von Mobilizon!", - "Enter the link URL": "Gib den Link ein", + "Enter the link URL": "Geben Sie die URL ein", "Enter your email address below, and we'll email you instructions on how to change your password.": "Gib unten deine E-Mail-Adresse ein und wir senden dir per E-Mail Anweisungen, wie du dein Passwort zurücksetzen kannst.", "Enter your own privacy policy. HTML tags allowed. The {mobilizon_privacy_policy} is provided as template.": "Gebe deine eigene Datenschutzerklärung ein. HTML tags sind erlaubt. Die {mobilizon_privacy_policy} ist als Vorlage bereitgestellt.", "Enter your own terms. HTML tags allowed. The {mobilizon_terms} are provided as template.": "Gib deine eigenen Bedingungen an. HTML-Tags sind erlaubt. Die {mobilizon_terms} sind als Vorlage gegeben.", @@ -246,9 +246,9 @@ "Error while login with {provider}. This login provider doesn't exist.": "Fehler bei der Anmeldung über {provider}. Dieser Anbieter existiert nicht.", "Error while reporting group {groupTitle}": "Fehler beim melden der Gruppe {groupTitle}", "Error while saving report.": "Fehler beim Speichern der Meldung.", - "Error while validating account": "Fehler beim Bestätigen des Accounts", + "Error while validating account": "Fehler beim Bestätigen des Kontos", "Error while validating participation": "Fehler beim Bestätigen der Teilnahme", - "Error while validating participation request": "Bei Deiner Teilnahmebestätigung ist ein Fehler aufgetreten", + "Error while validating participation request": "Bei Ihrer Teilnahmebestätigung ist ein Fehler aufgetreten", "Ethical alternative to Facebook events, groups and pages, Mobilizon is a tool designed to serve you. Period.": "Ethische Alternative zu Facebook-Events, -Gruppen und -Seiten. Mobilizon ist ein Werkzeug, das Ihnen dienen soll. Punkt.", "Event": "Veranstaltung", "Event already passed": "Veranstaltung liegt in der Vergangenheit", @@ -335,7 +335,7 @@ "If this identity is the only administrator of some groups, you need to delete them before being able to delete this identity.": "Falls diese Identität die einzige Administrator:in einer oder mehrerer Gruppen sein sollte, musst du zunächst die Gruppen löschen, bevor du diese Identität löschen kannst.", "If you are being asked for your federated indentity, it's composed of your username and your instance. For instance, the federated identity for your first profile is:": "Wenn Sie nach Ihrer föderierten Identität gefragt werden, setzt sich diese aus Ihrem Benutzernamen und Ihrer Instanz zusammen. Die föderierte Identität für Ihr erstes Profil lautet zum Beispiel:", "If you have opted for manual validation of participants, Mobilizon will send you an email to inform you of new participations to be processed. You can choose the frequency of these notifications below.": "Wenn Sie sich für die manuelle Validierung von Teilnehmern entschieden haben, sendet Ihnen Mobilizon eine E-Mail, um Sie über neue zu bearbeitende Teilnahmen zu informieren. Sie können die Häufigkeit dieser Benachrichtigungen unten auswählen.", - "If you want, you may send a message to the event organizer here.": "Wenn Du möchtest, kannst du der Organisator:in hier eine Nachricht hinterlassen.", + "If you want, you may send a message to the event organizer here.": "Wenn Sie möchten, können Sie dem Organisator eine Nachricht hinterlassen.", "Impossible to login, your email or password seems incorrect.": "Login nicht möglich. Deine E-Mail-Adresse oder dein Passwort ist falsch.", "In the following context, an application is a software, either provided by the Mobilizon team or by a 3rd-party, used to interact with your instance.": "Im Folgenden meinen wir mit Anwendung eine Software, über die du mit deiner Instanz interagierst. Diese Software kann vom Mobilizon-Team oder von Dritten bereitgestellt werden.", "In the meantime, please consider that the software is not (yet) finished. More information {onBlog}.": "Bitte beachte, dass diese Software noch nicht fertig ist. Mehr Informationen {onBlog}.", @@ -377,7 +377,7 @@ "Last sign-in": "Letzter Log-in", "Last week": "Letzte Woche", "Latest posts": "Neuste Beiträge", - "Learn more": "Erfahre mehr", + "Learn more": "Mehr erfahren", "Learn more about Mobilizon": "Erfahre mehr über Mobilizon", "Learn more about {instance}": "Lerne mehr über {instance}", "Leave": "Verlassen", @@ -411,7 +411,7 @@ "Members": "Mitglieder", "Message": "Nachricht", "Mobilizon": "Mobilizon", - "Mobilizon is a federated network. You can interact with this event from a different server.": "Mobilizon ist ein föderiertes Netzwerk. Du kannst mit dieser Veranstaltung von verschiedenen Server aus interagieren.", + "Mobilizon is a federated network. You can interact with this event from a different server.": "Mobilizon ist ein föderiertes Netzwerk.Sie könnenmit dieser Veranstaltung von verschiedenen Servern aus interagieren.", "Mobilizon is a federated software, meaning you can interact - depending on your admin's federation settings - with content from other instances, such as joining groups or events that were created elsewhere.": "Mobilizon ist eine föderierte Software, d.h. Sie können - abhängig von Ihren Admin-Föderationseinstellungen - mit Inhalten aus anderen Instanzen interagieren, z.B. Gruppen oder Veranstaltungen beitreten, die anderswo erstellt wurden.", "Mobilizon is a free/libre software that will allow communities to create their own spaces to publish events in order to better emancipate themselves from tech giants.": "Mobilizon ist Freie Software (Open Source), welche es Gemeinschaften erlaubt ihre eigenen Räume zu schaffen, um Veranstaltungen anzukündigen und sich aus der Abhängigkeit von Tech-Giganten zu lösen.", "Mobilizon is a tool that helps you find, create and organise events.": "Mobilizon ist ein Werkzeug, das Ihnen beim Finden, Erstellen und Organisieren von Veranstaltungen hilft.", @@ -431,7 +431,7 @@ "Move": "Verschieben", "Move \"{resourceName}\"": "„{resourceName}“ verschieben", "Move resource to {folder}": "Verschiebe Ressource nach {folder}", - "My account": "Mein Account", + "My account": "Mein Konto", "My events": "Meine Veranstaltungen", "My groups": "Meine Gruppen", "My identities": "Meine Identitäten", @@ -517,7 +517,7 @@ "Organized": "Organisiert", "Organized by": "Organisiert von", "Organized by {name}": "Organisiert von {name}", - "Organizer": "Organisator:in", + "Organizer": "Organisator", "Organizer notifications": "Benachrichtigungen für Organisator:innen", "Organizers": "Organisator:innen", "Other": "Andere", @@ -528,10 +528,10 @@ "Page limited to my group (asks for auth)": "Seite ist auf meine Gruppe beschränkt (nach Authentifizierung fragen)", "Page not found": "Seite nicht gefunden", "Parent folder": "Übergeordneter Ordner", - "Participant": "Teilnehmer:in", + "Participant": "Teilnehmer", "Participant already was rejected.": "Teilnehmer:in wurde bereits abgelehnt.", "Participant has already been approved as participant.": "Teilnehmer:in wurde bereits bestätigt.", - "Participants": "Teilnehmer:innen", + "Participants": "Teilnehmer", "Participate": "Teilnehmen", "Participate using your email address": "Nehme mit deiner E-Mail-Adresse teil", "Participation approval": "Teilnahmebestätigung", @@ -562,7 +562,7 @@ "Post": "Beitrag", "Post a comment": "Schreibe einen Kommentar", "Post a public message": "Schreibe eine öffentliche Nachricht", - "Post a reply": "Schreibe eine Antwort", + "Post a reply": "Antwort schreiben", "Postal Code": "Postleitzahl", "Posts": "Beiträge", "Powered by {mobilizon}. © 2018 - {date} The Mobilizon Contributors - Made with the financial support of {contributors}.": "Betrieben mit {mobilizon}. © 2018 - {date} Mobilizon-Mitwirkende - Mit finanzieller Unterstützung von {contributors}.", @@ -601,7 +601,7 @@ "Register an account on {instanceName}!": "Erstelle einen Account auf {instanceName}!", "Register for an event by choosing one of your identities": "Registriere dich für eine Veranstaltung, indem Du eine deiner Identitäten wählst", "Register on this instance": "Auf dieser Instanz registrieren", - "Registration is allowed, anyone can register.": "Registrierung erlaubt, jede:r kann teilnehmen.", + "Registration is allowed, anyone can register.": "Registrierung erlaubt, jeder kann teilnehmen.", "Registration is closed.": "Registrierung geschlossen.", "Registration is currently closed.": "Registrierungen sind aktuell geschlossen.", "Registrations": "Registrierung", @@ -694,9 +694,9 @@ "The event has been published": "Die Veranstaltung wurde veröffentlicht", "The event has been updated": "Die Veranstaltung wurde aktualisiert", "The event has been updated and published": "Die Veranstaltung wurde aktualisiert und veröffentlicht", - "The event organiser has chosen to validate manually participations. Do you want to add a little note to explain why you want to participate to this event?": "Der/die Veranstalter:in hat sich dafür entschieden, Teilnahmeanfragen manuell zu überprüfen. Möchtest Du eine kurze Nachricht hinterlassen, in der du erklärst, warum du an der Veranstaltung teilnehmen möchtest?", + "The event organiser has chosen to validate manually participations. Do you want to add a little note to explain why you want to participate to this event?": "Der Veranstalter hat sich dafür entschieden, Teilnahmeanfragen manuell zu überprüfen. Möchten Sie eine kurze Nachricht hinterlassen, in der Sie erklären, warum Sie an der Veranstaltung teilnehmen möchten?", "The event organizer didn't add any description.": "Die Organisator:in hat keine Beschreibung hinzugefügt.", - "The event organizer manually approves participations. Since you've chosen to participate without an account, please explain why you want to participate to this event.": "Die Organisator:in möchte Teilnahmen manuell bestätigen. Wenn Du ohne Konto teilnehmen möchtest, erkläre bitte warum Du an der Veranstaltung interessiert bist.", + "The event organizer manually approves participations. Since you've chosen to participate without an account, please explain why you want to participate to this event.": "Der Organisator möchte Teilnahmen manuell bestätigen. Wenn Sie ohne Konto teilnehmen möchten, erklären Sie bitte warum Sie an der Veranstaltung interessiert sind.", "The event title will be ellipsed.": "Der Titel der Veranstaltung wird verkürzt dargestellt.", "The event will show as attributed to this group.": "Das Ereignis wird als dieser Gruppe zugehörig angezeigt.", "The event will show as attributed to your personal profile.": "Das Ereignis wird als Ihrem persönlichen Profil zugewiesen angezeigt.", @@ -709,16 +709,16 @@ "The new password must be different": "Das neue Passwort muss unterschiedlich sein", "The only way for your group to get new members is if an admininistrator invites them.": "Die einzige Möglichkeit für Ihre Gruppe, neue Mitglieder zu bekommen, ist, wenn ein Administrator sie einlädt.", "The organiser has chosen to close comments.": "Der Veranstalter hat beschlossen, die Kommentare zu schließen.", - "The page you're looking for doesn't exist.": "Die Seite, nach der du suchst, existiert nicht.", + "The page you're looking for doesn't exist.": "Die Seite, nach der Sie suchen existiert nicht.", "The password provided is invalid": "Das angegebene Passwort ist ungültig", "The password was successfully changed": "Das Passwort wurde erfolgreich geändert", - "The report will be sent to the moderators of your instance. You can explain why you report this content below.": "Die Meldung wird an die Moderator:innen deiner Instanz gesendet. Du kannst unten erläutern, warum Du diesen Inhalt meldest.", + "The report will be sent to the moderators of your instance. You can explain why you report this content below.": "Die Meldung wird an die Moderatoren Ihrer Instanz gesendet. Sie können unten erläutern, warum Sie diesen Inhalt melden.", "The user account you're trying to login as has not been confirmed yet. Check your email inbox and eventually your spam folder.": "Der Account, mit dem Du dich einloggen willst, wurde noch nicht bestätigt. Schau in deinem E-Mail-Postfach und in deinem Spam-Ordner nach.", "The {default_privacy_policy} will be used. They will be translated in the user's language.": "Die {default_privacy_policy} wird verwendet. Sie wird in die Sprache der Nutzer:in übersetzt.", - "The {default_terms} will be used. They will be translated in the user's language.": "Die {default_terms} werden verwendet. Sie werden in die Sprache der Nutzer:in übersetzt.", - "There are {participants} participants.": "Es gibt {participants} Teilnehmer:innen.", - "There will be no way to recover your data.": "Es gibt keinen Weg deine Daten wiederherszustellen.", - "These events may interest you": "Diese Veranstaltungen könnten dich interessieren", + "The {default_terms} will be used. They will be translated in the user's language.": "Die {default_terms} werden verwendet. Sie werden in die Sprache der Nuttzer übersetzt.", + "There are {participants} participants.": "Es gibt {participants} Teilnehmer.", + "There will be no way to recover your data.": "Es gibt keinen Weg Ihre Daten wiederherszustellen.", + "These events may interest you": "Diese Veranstaltungen könnten Sie interessieren", "This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "Diese Mobilizon-Instanz und die Organisator:in akzeptieren anonyme Teilnahmen, aber eine Bestätigung per E-Mail ist erforderlich.", "This URL is not supported": "Diese URL wird nicht unterstützt", "This email is already registered as participant for this event": "Diese E-Mail-Adresse ist bereits als Teilnehmer:in für die Veranstaltung registriert", @@ -729,9 +729,9 @@ "This group is invite-only": "Diese Gruppe ist nur für Eingeladene", "This identifier is unique to your profile. It allows others to find you.": "Diese Kennung ist eindeutig für Ihr Profil. Sie ermöglicht es anderen, Sie zu finden.", "This identity is not a member of any group.": "Diese Identität ist nicht Mitglied in einer Gruppe.", - "This information is saved only on your computer. Click for details": "Diese Information ist nur auf deinem Computer gespeichert. Klicke für mehr Details", + "This information is saved only on your computer. Click for details": "Diese Information ist nur auf Ihrem Computer gespeichert. Klicken Sie für mehr Details", "This installation (called “instance“) can easily {interconnect}, thanks to {protocol}.": "Diese Installation (genannt \"Instanz\") kann sich dank {protocol} ganz einfach {interconnect}.", - "This instance isn't opened to registrations, but you can register on other instances.": "Diese Instanz lässt keine Registrierungen zu, aber Du kannst dich auf anderen Instanzen registrieren.", + "This instance isn't opened to registrations, but you can register on other instances.": "Diese Instanz lässt keine Registrierungen zu, aber Sie können sich auf anderen Instanzen registrieren.", "This instance, {instanceName} ({domain}), hosts your profile, so remember its name.": "Diese Instanz, {instanceName} ({domain}), hostet Ihr Profil, merken Sie sich also ihren Namen.", "This is a demonstration site to test Mobilizon.": "Dies ist eine Demoseite zum kennenlernen von Mobilizon.", "This is a demonstration site to test the beta version of Mobilizon.": "Dies ist eine Demo-Seite, um die Beta-Version von Mobilizon zu testen.", @@ -749,7 +749,7 @@ "To achieve your registration, please create a first identity profile.": "Erstelle bitte deine erste Identität, um die Registrierung abzuschließen.", "To activate more notifications, head over to the notification settings.": "Um mehr Benachrichtigungen zu aktivieren, schau in den Benachrichtigungs-Einstellungen vorbei.", "To change the world, change the software": "Um die Welt zu ändern, muss man die Software ändern", - "To confirm, type your event title \"{eventTitle}\"": "Gib zur Bestätigung deinen Veranstaltungstitel „{eventTitle}“ ein", + "To confirm, type your event title \"{eventTitle}\"": "Geben Sie zur Bestätigung Ihren Veranstaltungstitel „{eventTitle}“ ein", "To confirm, type your identity username \"{preferredUsername}\"": "Gib zur Bestätigung den Nutzernamen deiner Identität „{preferredUsername}“ ein", "To create and manage multiples identities from a same account": "So erstellen und verwalten Sie mehrere Identitäten über ein und dasselbe Konto", "To create and manage your events": "So erstellen und verwalten Sie Ihre Ereignisse", From 0b8538a65bd5a665bf82e1bd2e6607ba8428da49 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 12 Jan 2021 11:18:04 +0100 Subject: [PATCH 027/114] Fix FeedController test Signed-off-by: Thomas Citharel --- test/web/controllers/feed_controller_test.exs | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/test/web/controllers/feed_controller_test.exs b/test/web/controllers/feed_controller_test.exs index 7d141b263..f6250cca2 100644 --- a/test/web/controllers/feed_controller_test.exs +++ b/test/web/controllers/feed_controller_test.exs @@ -95,8 +95,23 @@ defmodule Mobilizon.Web.FeedControllerTest do group = insert(:group, visibility: :public) tag1 = insert(:tag, title: "iCalendar", slug: "icalendar") tag2 = insert(:tag, title: "Apple", slug: "apple") - event1 = insert(:event, organizer_actor: actor, attributed_to: group, tags: [tag1]) - event2 = insert(:event, organizer_actor: actor, attributed_to: group, tags: [tag1, tag2]) + + event1 = + insert(:event, + organizer_actor: actor, + attributed_to: group, + tags: [tag1], + title: "Event One" + ) + + event2 = + insert(:event, + organizer_actor: actor, + attributed_to: group, + tags: [tag1, tag2], + title: "Event Two", + begins_on: DateTime.add(DateTime.utc_now(), 3_600 * 12 * 4) + ) conn = conn @@ -110,7 +125,7 @@ defmodule Mobilizon.Web.FeedControllerTest do assert res =~ "BEGIN:VCALENDAR" assert response_content_type(conn, :calendar) =~ "charset=utf-8" - [entry1, entry2] = entries = ExIcal.parse(res) + [entry2, entry1] = entries = ExIcal.parse(res) Enum.each(entries, fn entry -> assert entry.summary in [event1.title, event2.title] From 24461be7031ec50002ae59ae1169f162451c07ed Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 12 Jan 2021 16:31:09 +0100 Subject: [PATCH 028/114] Fix events not showing on homepage Signed-off-by: Thomas Citharel --- js/src/i18n/en_US.json | 3 ++- js/src/i18n/fr_FR.json | 3 ++- js/src/views/Home.vue | 19 +++++++++++++------ 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/js/src/i18n/en_US.json b/js/src/i18n/en_US.json index 24f6c7b79..2bca14ff1 100644 --- a/js/src/i18n/en_US.json +++ b/js/src/i18n/en_US.json @@ -823,5 +823,6 @@ "Do you wish to {create_group} or {explore_groups}?": "Do you wish to {create_group} or {explore_groups}?", "Type or select a date…": "Type or select a date…", "Getting there": "Getting there", - "Groups are not enabled on this instance.": "Groups are not enabled on this instance." + "Groups are not enabled on this instance.": "Groups are not enabled on this instance.", + "The events you created are not shown here.": "The events you created are not shown here." } diff --git a/js/src/i18n/fr_FR.json b/js/src/i18n/fr_FR.json index f3a5e6570..6245bfcfd 100644 --- a/js/src/i18n/fr_FR.json +++ b/js/src/i18n/fr_FR.json @@ -917,5 +917,6 @@ "Do you wish to {create_group} or {explore_groups}?": "Voulez-vous {create_group} ou {explore_groups} ?", "Type or select a date…": "Entrez ou sélectionnez une date…", "Getting there": "S'y rendre", - "Groups are not enabled on this instance.": "Les groupes ne sont pas activés sur cette instance." + "Groups are not enabled on this instance.": "Les groupes ne sont pas activés sur cette instance.", + "The events you created are not shown here.": "Les événements que vous avez créé ne s'affichent pas ici." } diff --git a/js/src/views/Home.vue b/js/src/views/Home.vue index 993501e50..482172935 100644 --- a/js/src/views/Home.vue +++ b/js/src/views/Home.vue @@ -259,9 +259,13 @@ - {{ - $t("No events found") - }} + {{ $t("No events found") }}
+ + {{ + $t("The events you created are not shown here.") + }} +
@@ -444,7 +448,7 @@ export default class Home extends Vue { ); } - get goingToEvents(): Map> { + get thisWeekGoingToEvents(): IParticipant[] { const res = this.currentUserParticipations.filter( ({ event, role }) => event.beginsOn != null && @@ -456,8 +460,11 @@ export default class Home extends Vue { (a: IParticipant, b: IParticipant) => a.event.beginsOn.getTime() - b.event.beginsOn.getTime() ); + return res; + } - return res.reduce( + get goingToEvents(): Map> { + return this.thisWeekGoingToEvents.reduce( ( acc: Map>, participation: IParticipant @@ -496,7 +503,7 @@ export default class Home extends Vue { get filteredFeaturedEvents(): IEvent[] { return this.events.elements.filter( ({ id }) => - !this.currentUserParticipations + !this.thisWeekGoingToEvents .filter( (participation) => participation.role === ParticipantRole.CREATOR ) From 5d8ad897fde2693c57769710d61f974b7967eb4e Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 12 Jan 2021 17:12:38 +0100 Subject: [PATCH 029/114] Fix collection next attribute and add prev attribute Closes #546 Signed-off-by: Thomas Citharel --- lib/web/views/activity_pub/actor_view.ex | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/web/views/activity_pub/actor_view.ex b/lib/web/views/activity_pub/actor_view.ex index 9ca6293bc..0e61e75a6 100644 --- a/lib/web/views/activity_pub/actor_view.ex +++ b/lib/web/views/activity_pub/actor_view.ex @@ -153,9 +153,19 @@ defmodule Mobilizon.Web.ActivityPub.ActorView do "orderedItems" => Enum.map(collection, &item/1) } - if offset < total do - Map.put(map, "next", Actor.build_url(preferred_username, endpoint, page: page + 1)) - end + map = + if offset < total do + Map.put(map, "next", Actor.build_url(preferred_username, endpoint, page: page + 1)) + else + map + end + + map = + if offset > total do + Map.put(map, "prev", Actor.build_url(preferred_username, endpoint, page: page - 1)) + else + map + end map end From 3375b5f7745bbc461770a15c4d04fc83924a6b6e Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 13 Jan 2021 09:59:56 +0100 Subject: [PATCH 030/114] Fix french translation for weekly notifications Signed-off-by: Thomas Citharel --- priv/gettext/fr/LC_MESSAGES/default.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/priv/gettext/fr/LC_MESSAGES/default.po b/priv/gettext/fr/LC_MESSAGES/default.po index dd798572f..cabd84efc 100644 --- a/priv/gettext/fr/LC_MESSAGES/default.po +++ b/priv/gettext/fr/LC_MESSAGES/default.po @@ -394,8 +394,8 @@ msgstr "Vous avez été invité par %{inviter} à rejoindre le groupe %{group}" #: lib/web/email/notification.ex:70 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" -msgstr[0] "Un événement prévu aujourd'hui" -msgstr[1] "%{nb_events} événements prévus aujourd'hui" +msgstr[0] "Un événement prévu cette semaine" +msgstr[1] "%{nb_events} événements prévus cette semaine" #, elixir-format #: lib/web/email/notification.ex:92 From 775d51131be4eb13468e7d9be2c6678303e692a1 Mon Sep 17 00:00:00 2001 From: Taru Luojola Date: Tue, 12 Jan 2021 15:55:27 +0000 Subject: [PATCH 031/114] Translated using Weblate (Finnish) Currently translated at 100.0% (826 of 826 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fi/ --- js/src/i18n/fi.json | 1 + 1 file changed, 1 insertion(+) diff --git a/js/src/i18n/fi.json b/js/src/i18n/fi.json index af3500c56..39291a733 100644 --- a/js/src/i18n/fi.json +++ b/js/src/i18n/fi.json @@ -714,6 +714,7 @@ "The event will show as attributed to this group.": "Tapahtuma näytetään liitettynä tähän ryhmään.", "The event will show as attributed to your personal profile.": "Tapahtuma näytetään liitettynä henkilökohtaiseen profiiliisi.", "The event will show the group as organizer.": "Ryhmä näkyy tapahtuman järjestäjänä.", + "The events you created are not shown here.": "Luomiasi tapahtumia ei näytetä tässä.", "The group will be publicly listed in search results and may be suggested in the explore section. Only public informations will be shown on it's page.": "Ryhmä näkyy julkisissa hakutuloksissa, ja sitä voidaan esitellä esittelyosiossa. Esittelysivulla näytetään vain julkisia tietoja.", "The instance administrator is the person or entity that runs this Mobilizon instance.": "Palvelimen ylläpitäjä on tämän Mobilizon-palvelimen toiminnasta vastaava henkilö tai taho.", "The member was removed from the group {group}": "Jäsen poistettiin ryhmästä {group}", From 0ff093c22151f6ac97bd1c2b4cce5a554ee7fd8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jos=C3=A9=20m?= Date: Wed, 13 Jan 2021 04:40:25 +0000 Subject: [PATCH 032/114] Translated using Weblate (Galician) Currently translated at 99.8% (825 of 826 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/ --- js/src/i18n/gl.json | 1 + 1 file changed, 1 insertion(+) diff --git a/js/src/i18n/gl.json b/js/src/i18n/gl.json index 6f997c336..b12c69252 100644 --- a/js/src/i18n/gl.json +++ b/js/src/i18n/gl.json @@ -672,6 +672,7 @@ "The event will show as attributed to this group.": "O evento aparecerá atribuído a este grupo.", "The event will show as attributed to your personal profile.": "O evento aparecerá atribuído ó teu perfil persoal.", "The event will show the group as organizer.": "O evento mostrará ó grupo como organizador.", + "The events you created are not shown here.": "Os eventos que ti creaches non se mostran aquí.", "The group will be publicly listed in search results and may be suggested in the explore section. Only public informations will be shown on it's page.": "Este grupo aparecerá en resultados de buscas e podería ser suxerido na sección descubrir. Só se mostrará información pública nesta páxina.", "The instance administrator is the person or entity that runs this Mobilizon instance.": "A administradora da instancia é a persoa ou entidade que xestiona a instancia Mobilizon.", "The member was removed from the group {group}": "A usuaria foi eliminada do grupo {group}", From 4dff52bbe0d8fab61a6e4e65dbd4fc397bb5a513 Mon Sep 17 00:00:00 2001 From: Thomas Parisot Date: Mon, 21 Dec 2020 16:56:38 +0100 Subject: [PATCH 033/114] Release Elixir and frontend assets as part of the release --- .gitignore | 1 + .gitlab-ci.yml | 80 +++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 80 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2c09e1644..8791c51f5 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ erl_crash.dump # secrets files as long as you replace their contents by environment # variables. /config/*.secret.exs +/config/releases.exs /setup_db.psql diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 73ba72c52..cc6f55fd0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,6 +5,7 @@ stages: - test - deploy - docker + - release variables: MIX_ENV: "test" @@ -20,6 +21,11 @@ variables: MOBILIZON_DATABASE_HOST: $POSTGRES_HOST GEOLITE_CITIES_PATH: "/usr/share/GeoIP/GeoLite2-City.mmdb" MOBILIZON_INSTANCE_REGISTRATIONS_OPEN: "true" + # Release elements + PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${PACKAGE_VERSION}" + ELIXIR_ASSET: "${CI_PROJECT_NAME}-standalone-${CI_COMMIT_TAG}.tar.gz" + FRONTEND_ASSET: "${CI_PROJECT_NAME}-frontend-${CI_COMMIT_TAG}.tar.gz" + cache: key: ${CI_COMMIT_REF_SLUG} @@ -81,7 +87,8 @@ exunit: - mix deps.get - MIX_ENV=test mix ecto.create - MIX_ENV=test mix ecto.migrate - dependencies: + needs: + - deps - lint-elixir script: - mix coveralls @@ -170,3 +177,74 @@ build-docker-tag: - tags variables: DOCKER_IMAGE_NAME: framasoft/mobilizon:$CI_COMMIT_TAG + +build-release-frontend: + stage: release + image: node:14-alpine + before_script: + - apk add --no-cache python build-base libwebp-tools bash imagemagick ncurses + script: + - yarn --cwd "js" install + - yarn --cwd "js" run build + artifacts: + expire_in: 1 day + paths: + - priv/static + + +build-release-elixir: + stage: release + image: elixir:alpine + before_script: + - apk add --no-cache build-base git cmake + variables: + MIX_ENV: "prod" + script: + - mix local.hex --force + - mix local.rebar --force + - mix deps.get + - cp docker/production/releases.exs ./config/ + - mix phx.digest + - mix release + needs: + - build-release-frontend + artifacts: + expire_in: 1 day + paths: + - _build/prod/rel + +build-release-upload: + stage: release + image: curlimages/curl:latest + # rules: + # - if: $CI_COMMIT_TAG + script: | + ls -R _build + tar czf /tmp/${ELIXIR_ASSET} -C _build/prod/rel mobilizon + tar czf /tmp/${FRONTEND_ASSET} -C priv/static . + ls -al /tmp/*.tar.gz + + curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "_build/${ELIXIR_ASSET}" ${PACKAGE_REGISTRY_URL}/${ELIXIR_ASSET} + curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "_build/${FRONTEND_ASSET}" ${PACKAGE_REGISTRY_URL}/${FRONTEND_ASSET} + artifacts: + expire_in: 1 day + when: on_success + paths: + - _build/${ELIXIR_ASSET} + - _build/${FRONTEND_ASSET} + needs: + - build-release-elixir + +build-release-create: + stage: release + image: registry.gitlab.com/gitlab-org/release-cli:latest + rules: + - if: $CI_COMMIT_TAG + script: | + release-cli create --name "Release $CI_COMMIT_SHA" \ + --tag-name "$CI_COMMIT_TAG" \ + --assets-link "{\"name\":\"${ELIXIR_ASSET}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${ELIXIR_ASSET}\"}" \ + --assets-link "{\"name\":\"${FRONTEND_ASSET}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${FRONTEND_ASSET}\"}" + needs: + - build-release-upload + From 49acf2784dc604f18056fe6d3bbae40c8307e3e0 Mon Sep 17 00:00:00 2001 From: Thomas Parisot Date: Wed, 23 Dec 2020 00:01:25 +0100 Subject: [PATCH 034/114] Fasten release process --- .gitlab-ci.yml | 169 +++++++++++++++++++++++-------------------------- 1 file changed, 79 insertions(+), 90 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cc6f55fd0..5db7d9c8e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,14 +1,17 @@ image: tcitworld/mobilizon-ci stages: + - install - check + - build - test + - package + - upload - deploy - - docker - - release variables: MIX_ENV: "test" + YARN_CACHE_FOLDER: "js/.yarn" # DB Variables for Postgres / Postgis POSTGRES_DB: mobilizon_test POSTGRES_USER: postgres @@ -22,107 +25,114 @@ variables: GEOLITE_CITIES_PATH: "/usr/share/GeoIP/GeoLite2-City.mmdb" MOBILIZON_INSTANCE_REGISTRATIONS_OPEN: "true" # Release elements - PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${PACKAGE_VERSION}" - ELIXIR_ASSET: "${CI_PROJECT_NAME}-standalone-${CI_COMMIT_TAG}.tar.gz" - FRONTEND_ASSET: "${CI_PROJECT_NAME}-frontend-${CI_COMMIT_TAG}.tar.gz" + PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}" cache: - key: ${CI_COMMIT_REF_SLUG} + key: "${CI_COMMIT_REF_SLUG}" paths: - ~/.cache/Cypress - - _build/ - - deps/ - - js/node_modules - cache/Cypress + - deps/ + - _build/ + - js/node_modules + - js/.yarn + +# Installed dependencies are cached across the pipeline +# So there is no need to reinstall them all the time +# It saves minutes during a pipeline build time +install: + stage: install + script: + - yarn --cwd "js" install --frozen-lockfile + - mix deps.get + - mix compile lint-elixir: stage: check script: - export EXITVALUE=0 - - mix deps.get - mix credo --strict -a || export EXITVALUE=1 - mix format --check-formatted --dry-run || export EXITVALUE=1 - exit $EXITVALUE lint-front: - image: node:14 stage: check before_script: - export EXITVALUE=0 - cd js script: - - yarn install - yarn run lint || export EXITVALUE=1 - yarn run prettier -c . || export EXITVALUE=1 - - yarn run build:assets || export EXITVALUE=1 - exit $EXITVALUE + +build-frontend: + stage: build + before_script: + - apt update + - apt install -y --no-install-recommends python build-essential webp imagemagick gifsicle jpegoptim optipng pngquant + script: + - yarn --cwd "js" run build artifacts: - expire_in: 1 day - when: on_success + expire_in: 5 days paths: - - priv/static + - priv/static + needs: + - lint-front deps: stage: check script: - export EXITVALUE=0 - - mix deps.get - mix hex.outdated || export EXITVALUE=1 - - cd js - - yarn outdated || export EXITVALUE=1 + - yarn --cwd "js" outdated || export EXITVALUE=1 - exit $EXITVALUE allow_failure: true + needs: + - install exunit: stage: test services: - name: mdillon/postgis:11 alias: postgres + variables: + MIX_ENV: test before_script: - - cd js - - yarn install - - yarn run build:assets - - cd ../ - - mix deps.get - - MIX_ENV=test mix ecto.create - - MIX_ENV=test mix ecto.migrate - needs: - - deps - - lint-elixir + - mix ecto.create + - mix ecto.migrate script: - mix coveralls jest: stage: test - before_script: - - cd js - - yarn install - dependencies: + needs: - lint-front + before_script: + - yarn add --dev jest-junit script: - - yarn run test:unit --no-color + - yarn --cwd "js" run test:unit --no-color --ci --reporters=default --reporters=jest-junit artifacts: when: always paths: - js/coverage + reports: + junit: + - js/junit.xml expire_in: 30 days + # cypress: # stage: test # services: # - name: mdillon/postgis:11 # alias: postgres +# variables: +# MIX_ENV=e2e # script: -# - mix deps.get -# - cd js -# - yarn install -# - npx cypress install # just to be sure -# - yarn run build -# - cd ../ -# - MIX_ENV=e2e mix ecto.create -# - MIX_ENV=e2e mix ecto.migrate -# - MIX_ENV=e2e mix run priv/repo/e2e.seed.exs -# - MIX_ENV=e2e mix phx.server & +# - mix ecto.create +# - mix ecto.migrate +# - mix run priv/repo/e2e.seed.exs +# - mix phx.server & # - cd js # - npx wait-on http://localhost:4000 # - if [ -z "$CYPRESS_KEY" ]; then npx cypress run; else npx cypress run --record --parallel --key $CYPRESS_KEY; fi @@ -138,13 +148,10 @@ jest: # # - mkdir public # # Mobilizon documentation is now on https://framagit.org/framasoft/joinmobilizon/documentation # # Mix docs disabled because of https://github.com/elixir-lang/ex_doc/issues/1172 -# # - mix deps.get # # - mix docs # # - mv doc public/backend -# #- cd js -# #- yarn install -# #- yarn run styleguide:build -# #- mv styleguide ../public/frontend +# #- yarn run --cwd "js" styleguide:build +# #- mv js/styleguide public/frontend # only: # - master # artifacts: @@ -153,7 +160,7 @@ jest: # - public .docker: &docker - stage: docker + stage: build cache: {} image: name: gcr.io/kaniko-project/executor:debug @@ -178,73 +185,55 @@ build-docker-tag: variables: DOCKER_IMAGE_NAME: framasoft/mobilizon:$CI_COMMIT_TAG -build-release-frontend: - stage: release - image: node:14-alpine +package-app: + stage: package before_script: - - apk add --no-cache python build-base libwebp-tools bash imagemagick ncurses - script: - - yarn --cwd "js" install - - yarn --cwd "js" run build - artifacts: - expire_in: 1 day - paths: - - priv/static - - -build-release-elixir: - stage: release - image: elixir:alpine - before_script: - - apk add --no-cache build-base git cmake + - apt update + - apt install -y --no-install-recommends build-essential git cmake variables: MIX_ENV: "prod" script: - mix local.hex --force - mix local.rebar --force - - mix deps.get - cp docker/production/releases.exs ./config/ - mix phx.digest - mix release - needs: - - build-release-frontend artifacts: - expire_in: 1 day + expire_in: 2 days paths: - _build/prod/rel -build-release-upload: - stage: release +release-upload: + stage: upload image: curlimages/curl:latest # rules: # - if: $CI_COMMIT_TAG script: | - ls -R _build - tar czf /tmp/${ELIXIR_ASSET} -C _build/prod/rel mobilizon - tar czf /tmp/${FRONTEND_ASSET} -C priv/static . - ls -al /tmp/*.tar.gz + APP_VERSION="${CI_COMMIT_TAG:-0.0.0}" + APP_ASSET="${CI_PROJECT_NAME}-standalone-${APP_VERSION}.tar.gz" - curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "_build/${ELIXIR_ASSET}" ${PACKAGE_REGISTRY_URL}/${ELIXIR_ASSET} - curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "_build/${FRONTEND_ASSET}" ${PACKAGE_REGISTRY_URL}/${FRONTEND_ASSET} + echo "Artifact: ${APP_ASSET}" + tar czf ${APP_ASSET} -C _build/prod/rel mobilizon + ls -al ${APP_ASSET} + + curl --silent --show-error --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "${APP_ASSET}" ${PACKAGE_REGISTRY_URL}/${APP_VERSION}/${APP_ASSET} artifacts: expire_in: 1 day when: on_success paths: - - _build/${ELIXIR_ASSET} - - _build/${FRONTEND_ASSET} - needs: - - build-release-elixir + - ${APP_ASSET} -build-release-create: - stage: release +release-create: + stage: deploy image: registry.gitlab.com/gitlab-org/release-cli:latest rules: - if: $CI_COMMIT_TAG + dependencies: [] script: | + APP_VERSION="${CI_COMMIT_TAG}" + APP_ASSET="${CI_PROJECT_NAME}-standalone-${APP_VERSION}.tar.gz" + release-cli create --name "Release $CI_COMMIT_SHA" \ --tag-name "$CI_COMMIT_TAG" \ - --assets-link "{\"name\":\"${ELIXIR_ASSET}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${ELIXIR_ASSET}\"}" \ - --assets-link "{\"name\":\"${FRONTEND_ASSET}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${FRONTEND_ASSET}\"}" - needs: - - build-release-upload + --assets-link "{\"name\":\"${APP_ASSET}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${APP_VERSION}/${APP_ASSET}\"}" From 5c720522582ce3653054fb87a46dc91ac8b91e58 Mon Sep 17 00:00:00 2001 From: Thomas Parisot Date: Wed, 13 Jan 2021 09:05:39 +0100 Subject: [PATCH 035/114] Publish Docker images when tagged on main repo --- .gitlab-ci.yml | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5db7d9c8e..c976eaa3f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -26,10 +26,11 @@ variables: MOBILIZON_INSTANCE_REGISTRATIONS_OPEN: "true" # Release elements PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}" + ARCH: "amd64" cache: - key: "${CI_COMMIT_REF_SLUG}" + key: "${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}" paths: - ~/.cache/Cypress - cache/Cypress @@ -152,8 +153,8 @@ jest: # # - mv doc public/backend # #- yarn run --cwd "js" styleguide:build # #- mv js/styleguide public/frontend -# only: -# - master +# rules: +# - if: '$CI_COMMIT_BRANCH == "master"' # artifacts: # expire_in: 1 hour # paths: @@ -173,15 +174,19 @@ jest: build-docker-master: <<: *docker - only: - - schedules + rules: + - if: '$CI_PROJECT_NAMESPACE != "framasoft"' + when: never + - if: '$CI_PIPELINE_SOURCE == "schedule"' variables: DOCKER_IMAGE_NAME: framasoft/mobilizon:master build-docker-tag: <<: *docker - only: - - tags + rules: + - if: '$CI_PROJECT_NAMESPACE != "framasoft"' + when: never + - if: $CI_COMMIT_TAG variables: DOCKER_IMAGE_NAME: framasoft/mobilizon:$CI_COMMIT_TAG @@ -206,11 +211,11 @@ package-app: release-upload: stage: upload image: curlimages/curl:latest - # rules: - # - if: $CI_COMMIT_TAG + rules: + - if: $CI_COMMIT_TAG script: | - APP_VERSION="${CI_COMMIT_TAG:-0.0.0}" - APP_ASSET="${CI_PROJECT_NAME}-standalone-${APP_VERSION}.tar.gz" + APP_VERSION="${CI_COMMIT_TAG}" + APP_ASSET="${CI_PROJECT_NAME}_${APP_VERSION}_${ARCH}.tar.gz" echo "Artifact: ${APP_ASSET}" tar czf ${APP_ASSET} -C _build/prod/rel mobilizon @@ -221,7 +226,7 @@ release-upload: expire_in: 1 day when: on_success paths: - - ${APP_ASSET} + - mobilizon_*.tar.gz release-create: stage: deploy @@ -229,11 +234,12 @@ release-create: rules: - if: $CI_COMMIT_TAG dependencies: [] + cache: {} script: | APP_VERSION="${CI_COMMIT_TAG}" - APP_ASSET="${CI_PROJECT_NAME}-standalone-${APP_VERSION}.tar.gz" + APP_ASSET="${CI_PROJECT_NAME}_${APP_VERSION}_${ARCH}.tar.gz" - release-cli create --name "Release $CI_COMMIT_SHA" \ + release-cli create --name "$CI_PROJECT_TITLE v$CI_COMMIT_TAG" \ --tag-name "$CI_COMMIT_TAG" \ --assets-link "{\"name\":\"${APP_ASSET}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${APP_VERSION}/${APP_ASSET}\"}" From b70321e377b5997a46fc7a505bd2d3826dfe7aa0 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 12 Jan 2021 19:47:10 +0100 Subject: [PATCH 036/114] Add JUnit report to Jest front-end tests Signed-off-by: Thomas Citharel --- .gitignore | 2 ++ .gitlab-ci.yml | 38 +++++++++++++++++--------------------- js/jest.config.js | 1 + js/package.json | 1 + js/yarn.lock | 17 ++++++++++++++++- 5 files changed, 37 insertions(+), 22 deletions(-) diff --git a/.gitignore b/.gitignore index 8791c51f5..e8659535c 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,5 @@ release/ *.po~ .weblate docker/production/.env +test-junit-report.xml +js/junit.xml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c976eaa3f..4ef995531 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -28,7 +28,6 @@ variables: PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}" ARCH: "amd64" - cache: key: "${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}" paths: @@ -45,9 +44,9 @@ cache: install: stage: install script: - - yarn --cwd "js" install --frozen-lockfile - - mix deps.get - - mix compile + - yarn --cwd "js" install --frozen-lockfile + - mix deps.get + - mix compile lint-elixir: stage: check @@ -70,16 +69,16 @@ lint-front: build-frontend: stage: build before_script: - - apt update - - apt install -y --no-install-recommends python build-essential webp imagemagick gifsicle jpegoptim optipng pngquant + - apt update + - apt install -y --no-install-recommends python build-essential webp imagemagick gifsicle jpegoptim optipng pngquant script: - - yarn --cwd "js" run build + - yarn --cwd "js" run build artifacts: expire_in: 5 days paths: - - priv/static + - priv/static needs: - - lint-front + - lint-front deps: stage: check @@ -109,8 +108,6 @@ jest: stage: test needs: - lint-front - before_script: - - yarn add --dev jest-junit script: - yarn --cwd "js" run test:unit --no-color --ci --reporters=default --reporters=jest-junit artifacts: @@ -119,7 +116,7 @@ jest: - js/coverage reports: junit: - - js/junit.xml + - js/junit.xml expire_in: 30 days # cypress: @@ -193,20 +190,20 @@ build-docker-tag: package-app: stage: package before_script: - - apt update - - apt install -y --no-install-recommends build-essential git cmake + - apt update + - apt install -y --no-install-recommends build-essential git cmake variables: MIX_ENV: "prod" script: - - mix local.hex --force - - mix local.rebar --force - - cp docker/production/releases.exs ./config/ - - mix phx.digest - - mix release + - mix local.hex --force + - mix local.rebar --force + - cp docker/production/releases.exs ./config/ + - mix phx.digest + - mix release artifacts: expire_in: 2 days paths: - - _build/prod/rel + - _build/prod/rel release-upload: stage: upload @@ -242,4 +239,3 @@ release-create: release-cli create --name "$CI_PROJECT_TITLE v$CI_COMMIT_TAG" \ --tag-name "$CI_COMMIT_TAG" \ --assets-link "{\"name\":\"${APP_ASSET}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${APP_VERSION}/${APP_ASSET}\"}" - diff --git a/js/jest.config.js b/js/jest.config.js index b10500065..a87688fe7 100644 --- a/js/jest.config.js +++ b/js/jest.config.js @@ -7,6 +7,7 @@ module.exports = { "!get_union_json.ts", ], coverageReporters: ["html", "text", "text-summary"], + reporters: ["default", "jest-junit"], // The following should fix the issue with svgs and ?inline loader (see Logo.vue), but doesn't work // // transform: { diff --git a/js/package.json b/js/package.json index 4b9a6510f..047c40726 100644 --- a/js/package.json +++ b/js/package.json @@ -82,6 +82,7 @@ "eslint-config-prettier": "^7.0.0", "eslint-plugin-prettier": "^3.1.3", "eslint-plugin-vue": "^7.0.0", + "jest-junit": "^12.0.0", "mock-apollo-client": "^0.4", "prettier": "2.2.1", "prettier-eslint": "^12.0.0", diff --git a/js/yarn.lock b/js/yarn.lock index c831fde31..9de09df89 100644 --- a/js/yarn.lock +++ b/js/yarn.lock @@ -7172,6 +7172,16 @@ jest-jasmine2@^24.9.0: pretty-format "^24.9.0" throat "^4.0.0" +jest-junit@^12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-12.0.0.tgz#3ebd4a6a84b50c4ab18323a8f7d9cceb9d845df6" + integrity sha512-+8K35LlboWiPuCnXSyiid7rFdxNlpCWWM20WEYe6IZH6psfUWKZmSpSRQ5tk0C0cBeDsvsnIzcef5mYhyJsbug== + dependencies: + mkdirp "^1.0.4" + strip-ansi "^5.2.0" + uuid "^3.3.3" + xml "^1.0.1" + jest-leak-detector@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" @@ -12115,7 +12125,7 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.3.2, uuid@^3.4.0: +uuid@^3.3.2, uuid@^3.3.3, uuid@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -12859,6 +12869,11 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xml@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" + integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= + xmlchars@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" From 79e00a65b8a39bb3269a198dc16fa40e5ea2af7e Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 12 Jan 2021 20:09:44 +0100 Subject: [PATCH 037/114] Add junit to exunit Signed-off-by: Thomas Citharel --- .gitlab-ci.yml | 6 ++++++ config/test.exs | 2 ++ mix.exs | 3 ++- mix.lock | 1 + test/test_helper.exs | 2 +- 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4ef995531..01e949201 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -103,6 +103,12 @@ exunit: - mix ecto.migrate script: - mix coveralls + artifacts: + when: always + reports: + junit: + - test-junit-report.xml + expire_in: 30 days jest: stage: test diff --git a/config/test.exs b/config/test.exs index 8c4ac30d3..38f132bd4 100644 --- a/config/test.exs +++ b/config/test.exs @@ -59,6 +59,8 @@ config :mobilizon, Mobilizon.Web.Auth.Guardian, secret_key: "some secret" config :mobilizon, :activitypub, sign_object_fetches: false +config :junit_formatter, report_dir: "." + if System.get_env("DOCKER", "false") == "false" && File.exists?("./config/test.secret.exs") do import_config "test.secret.exs" end diff --git a/mix.exs b/mix.exs index fba4764e3..2df43044c 100644 --- a/mix.exs +++ b/mix.exs @@ -146,7 +146,8 @@ defmodule Mobilizon.Mixfile do {:credo, "~> 1.5", only: [:dev, :test], runtime: false}, {:mock, "~> 0.3.4", only: :test}, {:elixir_feed_parser, "~> 2.1.0", only: :test}, - {:mox, "~> 1.0", only: :test} + {:mox, "~> 1.0", only: :test}, + {:junit_formatter, "~> 3.1", only: [:test]} ] ++ oauth_deps() end diff --git a/mix.lock b/mix.lock index f32177363..ffb98bd5f 100644 --- a/mix.lock +++ b/mix.lock @@ -85,6 +85,7 @@ "jose": {:hex, :jose, "1.11.1", "59da64010c69aad6cde2f5b9248b896b84472e99bd18f246085b7b9fe435dcdb", [:mix, :rebar3], [], "hexpm", "078f6c9fb3cd2f4cfafc972c814261a7d1e8d2b3685c0a76eb87e158efff1ac5"}, "jsx": {:hex, :jsx, "2.8.3", "a05252d381885240744d955fbe3cf810504eb2567164824e19303ea59eef62cf", [:mix, :rebar3], [], "hexpm", "fc3499fed7a726995aa659143a248534adc754ebd16ccd437cd93b649a95091f"}, "jumper": {:hex, :jumper, "1.0.1", "3c00542ef1a83532b72269fab9f0f0c82bf23a35e27d278bfd9ed0865cecabff", [:mix], [], "hexpm", "318c59078ac220e966d27af3646026db9b5a5e6703cb2aa3e26bcfaba65b7433"}, + "junit_formatter": {:hex, :junit_formatter, "3.1.0", "3f69c61c5413750f9c45e367d77aabbeac9b395acf478d8e70b4ee9d1989c709", [:mix], [], "hexpm", "da52401a93f711fc4f77ffabdda68f9a16fcad5d96f5fce4ae606ab1d73b72f4"}, "linkify": {:hex, :linkify, "0.4.1", "f881eb3429ae88010cf736e6fb3eed406c187bcdd544902ec937496636b7c7b3", [:mix], [], "hexpm", "ce98693f54ae9ace59f2f7a8aed3de2ef311381a8ce7794804bd75484c371dda"}, "makeup": {:hex, :makeup, "1.0.5", "d5a830bc42c9800ce07dd97fa94669dfb93d3bf5fcf6ea7a0c67b2e0e4a7f26c", [:mix], [{:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cfa158c02d3f5c0c665d0af11512fed3fba0144cf1aadee0f2ce17747fba2ca9"}, "makeup_elixir": {:hex, :makeup_elixir, "0.15.0", "98312c9f0d3730fde4049985a1105da5155bfe5c11e47bdc7406d88e01e4219b", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.1", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "75ffa34ab1056b7e24844c90bfc62aaf6f3a37a15faa76b07bc5eba27e4a8b4a"}, diff --git a/test/test_helper.exs b/test/test_helper.exs index ee5409205..e0baa23b9 100644 --- a/test/test_helper.exs +++ b/test/test_helper.exs @@ -1,5 +1,5 @@ {:ok, _} = Application.ensure_all_started(:ex_machina) -ExUnit.configure(formatters: [ExUnit.CLIFormatter, ExUnitNotifier]) +ExUnit.configure(formatters: [JUnitFormatter, ExUnit.CLIFormatter, ExUnitNotifier]) ExUnit.start() From eb72248e16b03ce3a87876e1b7b0d96965d648c6 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 14 Jan 2021 11:39:01 +0100 Subject: [PATCH 038/114] Revert "fix search results sorted by id instead of by begins_on" This reverts commit a133612d9fa3dc6026fbcd07f9f452352f36ae0b. --- lib/mobilizon/events/events.ex | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/mobilizon/events/events.ex b/lib/mobilizon/events/events.ex index 916efc708..9d6792940 100644 --- a/lib/mobilizon/events/events.ex +++ b/lib/mobilizon/events/events.ex @@ -520,8 +520,7 @@ defmodule Mobilizon.Events do |> events_for_tags(args) |> events_for_location(args) |> filter_local_or_from_followed_instances_events() - |> filter_public_visibility() - |> event_order_begins_on_asc() + |> order_by([q], asc: q.id) |> Page.build_page(page, limit) end @@ -1342,6 +1341,8 @@ defmodule Mobilizon.Events do @spec events_for_search_query(String.t()) :: Ecto.Query.t() defp events_for_search_query(search_string) do Event + |> where([e], e.visibility == ^:public) + |> distinct([e], e.id) |> do_event_for_search_query(search_string) end From 7f7bf025e7bd86ec5f91afe57759c760baa1aaaf Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 14 Jan 2021 11:52:37 +0100 Subject: [PATCH 039/114] Fix leftovers Signed-off-by: Thomas Citharel --- lib/mobilizon/events/events.ex | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/lib/mobilizon/events/events.ex b/lib/mobilizon/events/events.ex index 9d6792940..d601fb8ff 100644 --- a/lib/mobilizon/events/events.ex +++ b/lib/mobilizon/events/events.ex @@ -520,7 +520,8 @@ defmodule Mobilizon.Events do |> events_for_tags(args) |> events_for_location(args) |> filter_local_or_from_followed_instances_events() - |> order_by([q], asc: q.id) + |> filter_public_visibility() + |> event_order_begins_on_asc() |> Page.build_page(page, limit) end @@ -1339,21 +1340,12 @@ defmodule Mobilizon.Events do end @spec events_for_search_query(String.t()) :: Ecto.Query.t() + defp events_for_search_query(""), do: Event + defp events_for_search_query(search_string) do - Event - |> where([e], e.visibility == ^:public) - |> distinct([e], e.id) - |> do_event_for_search_query(search_string) - end - - @spec do_event_for_search_query(Ecto.Query.t(), String.t()) :: Ecto.Query.t() - defp do_event_for_search_query(query, ""), do: query - - defp do_event_for_search_query(query, search_string) do - from(event in query, + from(event in Event, join: id_and_rank in matching_event_ids_and_ranks(search_string), - on: id_and_rank.id == event.id, - order_by: [desc: id_and_rank.rank] + on: id_and_rank.id == event.id ) end From 386578e8b4dacc74808a2ab337e9b3d5805a7243 Mon Sep 17 00:00:00 2001 From: Berto Te Date: Wed, 13 Jan 2021 12:40:14 +0000 Subject: [PATCH 040/114] Translated using Weblate (Spanish) Currently translated at 100.0% (826 of 826 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/es/ --- js/src/i18n/es.json | 1 + 1 file changed, 1 insertion(+) diff --git a/js/src/i18n/es.json b/js/src/i18n/es.json index 8d45c743f..e0b7a8e5e 100644 --- a/js/src/i18n/es.json +++ b/js/src/i18n/es.json @@ -724,6 +724,7 @@ "The event will show as attributed to this group.": "El evento se mostrará como atribuido a este grupo.", "The event will show as attributed to your personal profile.": "El evento se mostrará como atribuido a su perfil personal.", "The event will show the group as organizer.": "El evento mostrará al grupo como organizador.", + "The events you created are not shown here.": "Los eventos que creó no se muestran aquí.", "The group will be publicly listed in search results and may be suggested in the explore section. Only public informations will be shown on it's page.": "El grupo se incluirá públicamente en los resultados de búsqueda y se puede sugerir en la sección de exploración. En su página solo se mostrará información pública.", "The instance administrator is the person or entity that runs this Mobilizon instance.": "El administrador de la instancia es la persona o entidad que ejecuta esta instancia de Mobilizon.", "The member was removed from the group {group}": "El miembro fue eliminado del grupo {grup}", From 60facf409376e1309bf003c771e53398ddb90607 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 14 Jan 2021 15:06:26 +0100 Subject: [PATCH 041/114] Fix Homepage no promoted events warning Signed-off-by: Thomas Citharel --- js/src/views/Home.vue | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/js/src/views/Home.vue b/js/src/views/Home.vue index 482172935..1a8a27520 100644 --- a/js/src/views/Home.vue +++ b/js/src/views/Home.vue @@ -261,10 +261,12 @@ {{ $t("No events found") }}
- - {{ - $t("The events you created are not shown here.") - }} +
+ + {{ + $t("The events you created are not shown here.") + }} +
From a5416aae5cdc26e5a8f61328ec7b2ee7e80bc9e4 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 14 Jan 2021 15:06:48 +0100 Subject: [PATCH 042/114] Fix federation notification text email template Signed-off-by: Thomas Citharel --- lib/web/templates/email/instance_follow.text.eex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/web/templates/email/instance_follow.text.eex b/lib/web/templates/email/instance_follow.text.eex index 22c26f5d9..3e2809774 100644 --- a/lib/web/templates/email/instance_follow.text.eex +++ b/lib/web/templates/email/instance_follow.text.eex @@ -2,6 +2,6 @@ == <%= gettext "%{name} (%{domain}) just requested to follow your instance.", name: @follower.name, domain: @follower.domain %> <%= gettext "If you accept, this instance will receive all of your public events." %> -<%= 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 %> <%= gettext "To accept this invitation, head over to the instance's admin settings." %> <%= "#{Mobilizon.Web.Endpoint.url()}/settings/admin/relays/followers" %> From eef4ea178d967d088701d5b30030576c3d6cde9e Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 14 Jan 2021 15:07:59 +0100 Subject: [PATCH 043/114] [CI] Add back install into before_script: parts Because cache is really unreliable Signed-off-by: Thomas Citharel --- .gitlab-ci.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 01e949201..b587aff39 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -50,6 +50,8 @@ install: lint-elixir: stage: check + before_script: + - mix deps.get script: - export EXITVALUE=0 - mix credo --strict -a || export EXITVALUE=1 @@ -57,9 +59,11 @@ lint-elixir: - exit $EXITVALUE lint-front: + image: node:14 stage: check before_script: - export EXITVALUE=0 + - yarn --cwd "js" install --frozen-lockfile - cd js script: - yarn run lint || export EXITVALUE=1 @@ -68,10 +72,12 @@ lint-front: build-frontend: stage: build + image: node:14 before_script: - apt update - apt install -y --no-install-recommends python build-essential webp imagemagick gifsicle jpegoptim optipng pngquant script: + - yarn --cwd "js" install --frozen-lockfile - yarn --cwd "js" run build artifacts: expire_in: 5 days @@ -82,6 +88,8 @@ build-frontend: deps: stage: check + before_script: + - mix deps.get script: - export EXITVALUE=0 - mix hex.outdated || export EXITVALUE=1 @@ -99,6 +107,7 @@ exunit: variables: MIX_ENV: test before_script: + - mix deps.get - mix ecto.create - mix ecto.migrate script: @@ -114,6 +123,8 @@ jest: stage: test needs: - lint-front + before_script: + - yarn --cwd "js" install --frozen-lockfile script: - yarn --cwd "js" run test:unit --no-color --ci --reporters=default --reporters=jest-junit artifacts: From 9f27a941a2fa1bb65484c0618427c59e6f61e72a Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 14 Jan 2021 15:45:10 +0100 Subject: [PATCH 044/114] [CI] Remove cd js and use --cwd instead Signed-off-by: Thomas Citharel --- .gitlab-ci.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b587aff39..6af6d0ef7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -64,10 +64,9 @@ lint-front: before_script: - export EXITVALUE=0 - yarn --cwd "js" install --frozen-lockfile - - cd js script: - - yarn run lint || export EXITVALUE=1 - - yarn run prettier -c . || export EXITVALUE=1 + - yarn --cwd "js" run lint || export EXITVALUE=1 + - yarn --cwd "js" run prettier -c . || export EXITVALUE=1 - exit $EXITVALUE build-frontend: From 3c441306eb7d423b061e41d8e6b29429f26d9ae9 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 14 Jan 2021 15:47:12 +0100 Subject: [PATCH 045/114] Renable Mix docs job Signed-off-by: Thomas Citharel --- .gitlab-ci.yml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6af6d0ef7..31bc2dbb1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -156,14 +156,12 @@ jest: # - js/tests/e2e/screenshots/**/*.png # - js/tests/e2e/videos/**/*.mp4 -# pages: -# stage: deploy -# script: -# # - mkdir public -# # Mobilizon documentation is now on https://framagit.org/framasoft/joinmobilizon/documentation -# # Mix docs disabled because of https://github.com/elixir-lang/ex_doc/issues/1172 -# # - mix docs -# # - mv doc public/backend +pages: + stage: deploy + script: + - mkdir public + - mix docs + - mv doc public/backend # #- yarn run --cwd "js" styleguide:build # #- mv js/styleguide public/frontend # rules: From 2734cae4b79e0d118705c72a8fd1d7c8aa516ed9 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 14 Jan 2021 15:47:35 +0100 Subject: [PATCH 046/114] Rename stages Signed-off-by: Thomas Citharel --- .gitlab-ci.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 31bc2dbb1..a66d55db4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,8 +3,9 @@ image: tcitworld/mobilizon-ci stages: - install - check - - build + - build-js - test + - docker - package - upload - deploy @@ -70,7 +71,7 @@ lint-front: - exit $EXITVALUE build-frontend: - stage: build + stage: build-js image: node:14 before_script: - apt update @@ -172,7 +173,7 @@ pages: # - public .docker: &docker - stage: build + stage: docker cache: {} image: name: gcr.io/kaniko-project/executor:debug From 7b051346a4d58105dc947d691e622a34fc922f23 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 14 Jan 2021 17:01:44 +0100 Subject: [PATCH 047/114] [CI] Fix Gitlab pages Signed-off-by: Thomas Citharel --- .gitlab-ci.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a66d55db4..1cbf2120c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -163,14 +163,14 @@ pages: - mkdir public - mix docs - mv doc public/backend -# #- yarn run --cwd "js" styleguide:build -# #- mv js/styleguide public/frontend -# rules: -# - if: '$CI_COMMIT_BRANCH == "master"' -# artifacts: -# expire_in: 1 hour -# paths: -# - public + # #- yarn run --cwd "js" styleguide:build + # #- mv js/styleguide public/frontend + rules: + - if: '$CI_COMMIT_BRANCH == "master"' + artifacts: + expire_in: 1 hour + paths: + - public .docker: &docker stage: docker From 4100fd870514275a8e317402182007c0f5527247 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 14 Jan 2021 19:17:12 +0100 Subject: [PATCH 048/114] Fix discussion list page showing empty content when not a member Introduce the EmptyContent component to display an empty content message Signed-off-by: Thomas Citharel --- js/src/components/Utils/EmptyContent.vue | 37 ++++++++++ js/src/views/Discussions/DiscussionsList.vue | 77 +++++++++++++++++++- js/src/views/Group/GroupMembers.vue | 12 +-- 3 files changed, 117 insertions(+), 9 deletions(-) create mode 100644 js/src/components/Utils/EmptyContent.vue diff --git a/js/src/components/Utils/EmptyContent.vue b/js/src/components/Utils/EmptyContent.vue new file mode 100644 index 000000000..0b5af97b6 --- /dev/null +++ b/js/src/components/Utils/EmptyContent.vue @@ -0,0 +1,37 @@ + + + + diff --git a/js/src/views/Discussions/DiscussionsList.vue b/js/src/views/Discussions/DiscussionsList.vue index 3829399e7..e548fe230 100644 --- a/js/src/views/Discussions/DiscussionsList.vue +++ b/js/src/views/Discussions/DiscussionsList.vue @@ -27,7 +27,7 @@ -
+

{{ $t( @@ -39,7 +39,7 @@ tag="router-link" :to="{ name: RouteName.CREATE_DISCUSSION, - params: { preferredUsername: this.preferredUsername }, + params: { preferredUsername }, }" >{{ $t("New discussion") }} @@ -50,18 +50,38 @@ :key="discussion.id" /> + + {{ $t("There's no discussions yet") }} + +

+
+ + {{ $t("Only group members can access discussions") }} + +
diff --git a/lib/mobilizon/posts/posts.ex b/lib/mobilizon/posts/posts.ex index 909364c04..ac292806b 100644 --- a/lib/mobilizon/posts/posts.ex +++ b/lib/mobilizon/posts/posts.ex @@ -145,6 +145,6 @@ defmodule Mobilizon.Posts do Post |> where(attributed_to_id: ^group_id) |> order_by(desc: :inserted_at) - |> preload([p], [:author, :attributed_to, :picture, :media]) + |> preload([p], [:author, :attributed_to, :picture, :media, :tags]) end end diff --git a/lib/service/export/feed.ex b/lib/service/export/feed.ex index b1886ff92..de5f23987 100644 --- a/lib/service/export/feed.ex +++ b/lib/service/export/feed.ex @@ -7,9 +7,10 @@ defmodule Mobilizon.Service.Export.Feed do alias Atomex.{Entry, Feed} - alias Mobilizon.{Actors, Events, Users} + alias Mobilizon.{Actors, Config, Events, Posts, Users} alias Mobilizon.Actors.Actor alias Mobilizon.Events.{Event, FeedToken} + alias Mobilizon.Posts.Post alias Mobilizon.Storage.Page alias Mobilizon.Users.User @@ -18,8 +19,7 @@ defmodule Mobilizon.Service.Export.Feed do require Logger - @version Mix.Project.config()[:version] - def version, do: @version + def version, do: Config.instance_version() @spec create_cache(String.t()) :: {:commit, String.t()} | {:ignore, any()} def create_cache("actor_" <> name) do @@ -47,17 +47,18 @@ defmodule Mobilizon.Service.Export.Feed do defp fetch_actor_event_feed(name) do with %Actor{} = actor <- Actors.get_local_actor_by_name(name), {:visibility, true} <- {:visibility, Actor.is_public_visibility?(actor)}, - %Page{elements: events} <- Events.list_public_events_for_actor(actor) do - {:ok, build_actor_feed(actor, events)} + %Page{elements: events} <- Events.list_public_events_for_actor(actor), + %Page{elements: posts} <- Posts.get_public_posts_for_group(actor) do + {:ok, build_actor_feed(actor, events, posts)} else err -> {:error, err} end end - # Build an atom feed from actor and its public events - @spec build_actor_feed(Actor.t(), list(), boolean()) :: String.t() - defp build_actor_feed(%Actor{} = actor, events, public \\ true) do + # Build an atom feed from actor and its public events and posts + @spec build_actor_feed(Actor.t(), list(), list(), boolean()) :: String.t() + defp build_actor_feed(%Actor{} = actor, events, posts, public \\ true) do display_name = Actor.display_name(actor) self_url = @@ -67,21 +68,29 @@ defmodule Mobilizon.Service.Export.Feed do title = if public, - do: "%{actor}'s public events feed on Mobilizon", - else: "%{actor}'s private events feed on Mobilizon" + do: + gettext("%{actor}'s public events feed on %{instance}", + actor: display_name, + instance: Config.instance_name() + ), + else: + gettext("%{actor}'s private events feed on %{instance}", + actor: display_name, + instance: Config.instance_name() + ) # Title uses default instance language feed = self_url |> Feed.new( DateTime.utc_now(), - Gettext.gettext(Mobilizon.Web.Gettext, title, actor: display_name) + title ) |> Feed.author(display_name, uri: actor.url) |> Feed.link(self_url, rel: "self") |> Feed.link(actor.url, rel: "alternate") - |> Feed.generator("Mobilizon", uri: "https://joinmobilizon.org", version: version()) - |> Feed.entries(Enum.map(events, &get_entry/1)) + |> Feed.generator(Config.instance_name(), uri: Endpoint.url(), version: version()) + |> Feed.entries(Enum.map(events ++ posts, &get_entry/1)) feed = if actor.avatar do @@ -123,6 +132,28 @@ defmodule Mobilizon.Service.Export.Feed do Entry.build(entry) end + @spec get_entry(Post.t()) :: any() + defp get_entry(%Post{} = post) do + body = post.body || "" + + entry = + post.url + |> Entry.new(post.publish_at || post.inserted_at, post.title) + |> Entry.link(post.url, rel: "alternate", type: "text/html") + |> Entry.content({:cdata, body}, type: "html") + |> Entry.published(post.publish_at || post.inserted_at) + |> Entry.author(post.author.name || post.author.preferred_username) + + # Add tags + entry = + post.tags + |> Enum.uniq() + |> Enum.reduce(entry, fn tag, acc -> Entry.category(acc, tag.slug, label: tag.title) end) + + Entry.build(entry) + end + + # Only events, not posts @spec fetch_events_from_token(String.t()) :: String.t() defp fetch_events_from_token(token) do with {:ok, _uuid} <- Ecto.UUID.cast(token), @@ -130,7 +161,7 @@ defmodule Mobilizon.Service.Export.Feed do case actor do %Actor{} = actor -> events = actor |> fetch_identity_participations() |> participations_to_events() - {:ok, build_actor_feed(actor, events, false)} + {:ok, build_actor_feed(actor, events, [], false)} nil -> with actors <- Users.get_actors_for_user(user), @@ -167,9 +198,15 @@ defmodule Mobilizon.Service.Export.Feed do # Title uses default instance language self_url - |> Feed.new(DateTime.utc_now(), gettext("Feed for %{email} on Mobilizon", email: email)) + |> Feed.new( + DateTime.utc_now(), + gettext("Feed for %{email} on %{instance}", + email: email, + instance: Config.instance_name() + ) + ) |> Feed.link(self_url, rel: "self") - |> Feed.generator("Mobilizon", uri: "https://joinmobilizon.org", version: version()) + |> Feed.generator(Config.instance_name(), uri: Endpoint.url(), version: version()) |> Feed.entries(Enum.map(events, &get_entry/1)) |> Feed.build() |> Atomex.generate_document() diff --git a/lib/service/metadata/actor.ex b/lib/service/metadata/actor.ex index c4395aa88..0e1622515 100644 --- a/lib/service/metadata/actor.ex +++ b/lib/service/metadata/actor.ex @@ -2,8 +2,11 @@ defimpl Mobilizon.Service.Metadata, for: Mobilizon.Actors.Actor do alias Phoenix.HTML alias Phoenix.HTML.Tag alias Mobilizon.Actors.Actor + alias Mobilizon.Web.Endpoint alias Mobilizon.Web.JsonLD.ObjectView + alias Mobilizon.Web.Router.Helpers, as: Routes import Mobilizon.Service.Metadata.Utils, only: [process_description: 2, default_description: 1] + import Mobilizon.Web.Gettext def build_tags(_actor, _locale \\ "en") @@ -40,7 +43,24 @@ defimpl Mobilizon.Service.Metadata, for: Mobilizon.Actors.Actor do end defp add_group_schema(tags, %Actor{} = group) do - tags ++ [~s{} |> HTML.raw()] + tags ++ + [ + ~s{} |> HTML.raw(), + Tag.tag(:link, + rel: "alternate", + type: "application/atom+xml", + title: + gettext("%{name}'s feed", name: group.name || group.preferred_username) |> HTML.raw(), + href: Routes.feed_url(Endpoint, :actor, group.preferred_username, :atom) + ), + Tag.tag(:link, + rel: "alternate", + type: "text/calendar", + title: + gettext("%{name}'s feed", name: group.name || group.preferred_username) |> HTML.raw(), + href: Routes.feed_url(Endpoint, :actor, group.preferred_username, :ics) + ) + ] end # Insert JSON-LD schema by hand because Tag.content_tag wants to escape it diff --git a/lib/web/controllers/feed_controller.ex b/lib/web/controllers/feed_controller.ex index 56a522da6..6d1141a7c 100644 --- a/lib/web/controllers/feed_controller.ex +++ b/lib/web/controllers/feed_controller.ex @@ -11,6 +11,7 @@ defmodule Mobilizon.Web.FeedController do {status, data} when status in [:commit, :ok] -> conn |> put_resp_content_type("application/atom+xml") + |> put_resp_header("content-disposition", "attachment; filename=\"#{name}.atom\"") |> send_resp(200, data) _ -> @@ -23,6 +24,7 @@ defmodule Mobilizon.Web.FeedController do {status, data} when status in [:commit, :ok] -> conn |> put_resp_content_type("text/calendar") + |> put_resp_header("content-disposition", "attachment; filename=\"#{name}.ics\"") |> send_resp(200, data) _err -> @@ -30,11 +32,16 @@ defmodule Mobilizon.Web.FeedController do end end + def actor(_conn, _) do + {:error, :not_found} + end + def event(conn, %{"uuid" => uuid, "format" => "ics"}) do case Cachex.fetch(:ics, "event_" <> uuid) do {status, data} when status in [:commit, :ok] -> conn |> put_resp_content_type("text/calendar") + |> put_resp_header("content-disposition", "attachment; filename=\"event.ics\"") |> send_resp(200, data) _ -> @@ -42,11 +49,16 @@ defmodule Mobilizon.Web.FeedController do end end + def event(_conn, _) do + {:error, :not_found} + end + def going(conn, %{"token" => token, "format" => "ics"}) do case Cachex.fetch(:ics, "token_" <> token) do {status, data} when status in [:commit, :ok] -> conn |> put_resp_content_type("text/calendar") + |> put_resp_header("content-disposition", "attachment; filename=\"events.ics\"") |> send_resp(200, data) _ -> @@ -59,10 +71,15 @@ defmodule Mobilizon.Web.FeedController do {status, data} when status in [:commit, :ok] -> conn |> put_resp_content_type("application/atom+xml") + |> put_resp_header("content-disposition", "attachment; filename=\"events.atom\"") |> send_resp(200, data) {:ignore, _} -> {:error, :not_found} end end + + def going(_conn, _) do + {:error, :not_found} + end end diff --git a/priv/gettext/ar/LC_MESSAGES/default.po b/priv/gettext/ar/LC_MESSAGES/default.po index 51d061499..198ec7a3c 100644 --- a/priv/gettext/ar/LC_MESSAGES/default.po +++ b/priv/gettext/ar/LC_MESSAGES/default.po @@ -20,11 +20,6 @@ msgstr "" msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" -#, elixir-format -#: lib/service/export/feed.ex:170 -msgid "Feed for %{email} on Mobilizon" -msgstr "" - #, elixir-format #: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" @@ -145,7 +140,7 @@ msgid "Warning" msgstr "تنبيه" #, elixir-format -#: lib/web/email/participation.ex:134 +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "" @@ -328,7 +323,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:46 +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -389,12 +384,12 @@ msgid "View the event on: %{link}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:32 +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:70 +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" @@ -405,7 +400,7 @@ msgstr[4] "" msgstr[5] "" #, elixir-format -#: lib/web/email/notification.ex:92 +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -1081,7 +1076,7 @@ msgid "So long, and thanks for the fish!" msgstr "" #, elixir-format -#: lib/web/email/group.ex:62 +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "" @@ -1137,12 +1132,12 @@ msgid "Your instance's moderation team has decided to suspend %{group_name} (%{g msgstr "" #, elixir-format -#: lib/web/email/group.ex:135 +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:96 +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1302,12 +1297,12 @@ msgid "You have now confirmed your participation. Update your calendar, because msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:91 +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:90 +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "" @@ -1399,3 +1394,23 @@ msgstr "" #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "" + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/ar/LC_MESSAGES/errors.po b/priv/gettext/ar/LC_MESSAGES/errors.po index 2a6470df3..7b861f485 100644 --- a/priv/gettext/ar/LC_MESSAGES/errors.po +++ b/priv/gettext/ar/LC_MESSAGES/errors.po @@ -124,12 +124,12 @@ msgid "Cannot refresh the token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:198 +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:202 +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "" @@ -139,13 +139,13 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:66 +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "" @@ -155,7 +155,7 @@ msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:258 +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "" @@ -171,16 +171,15 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "" @@ -246,22 +245,22 @@ msgid "User requested is not logged-in" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:232 +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:265 +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:229 +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:94 +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "" @@ -276,7 +275,7 @@ msgid "You need to be logged-in to change your password" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:207 +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "" @@ -286,25 +285,20 @@ msgid "You need to be logged-in to delete your account" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:237 +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:270 +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:172 +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/user.ex:58 -msgid "You need to have admin access to list users" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/user.ex:108 msgid "You need to have an existing token to get a refresh token" @@ -356,22 +350,22 @@ msgid "Profile already suspended" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:93 +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:87 +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:184 +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:181 +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "" @@ -381,7 +375,7 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:61 +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "" @@ -396,29 +390,29 @@ msgid "Error while updating report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:100 +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:193 +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "" @@ -433,14 +427,14 @@ msgid "No such feed token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:238 +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "" @@ -450,22 +444,17 @@ msgid "Person with ID %{id} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:50 +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:41 -msgid "Picture with ID %{id} was not found" -msgstr "" - -#, elixir-format -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "" @@ -480,8 +469,8 @@ msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 @@ -489,12 +478,12 @@ msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "" @@ -509,12 +498,12 @@ msgid "Resource doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:121 +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:261 +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "" @@ -540,22 +529,22 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:232 +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:131 +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:197 +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "" @@ -595,8 +584,8 @@ msgid "You are not allowed to update a comment if not connected" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" @@ -611,7 +600,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:275 +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "" @@ -661,7 +650,7 @@ msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:75 +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "" @@ -671,12 +660,12 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:210 +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:139 +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "" @@ -691,12 +680,12 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "" @@ -706,22 +695,22 @@ msgid "You need to be logged-in to delete resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:105 +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:204 +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:249 +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:176 +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "" @@ -735,11 +724,6 @@ msgstr "" msgid "You need to be logged-in to view a resource preview" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/picture.ex:79 -msgid "You need to login to upload a picture" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/resource.ex:121 msgid "Parent resource doesn't belong to this group" @@ -816,22 +800,22 @@ msgid "You can't reject this invitation with this profile." msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:71 +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:167 +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:238 +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:241 +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "" @@ -851,21 +835,27 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:344 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:72 +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:199 +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:90 +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/be/LC_MESSAGES/default.po b/priv/gettext/be/LC_MESSAGES/default.po index 033d3ceeb..1355eafdd 100644 --- a/priv/gettext/be/LC_MESSAGES/default.po +++ b/priv/gettext/be/LC_MESSAGES/default.po @@ -17,11 +17,6 @@ msgstr "" msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" -#, elixir-format -#: lib/service/export/feed.ex:170 -msgid "Feed for %{email} on Mobilizon" -msgstr "" - #, elixir-format #: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" @@ -142,7 +137,7 @@ msgid "Warning" msgstr "" #, elixir-format -#: lib/web/email/participation.ex:134 +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "" @@ -325,7 +320,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:46 +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -380,12 +375,12 @@ msgid "View the event on: %{link}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:32 +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:70 +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" @@ -393,7 +388,7 @@ msgstr[1] "" msgstr[2] "" #, elixir-format -#: lib/web/email/notification.ex:92 +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -1057,7 +1052,7 @@ msgid "So long, and thanks for the fish!" msgstr "" #, elixir-format -#: lib/web/email/group.ex:62 +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "" @@ -1113,12 +1108,12 @@ msgid "Your instance's moderation team has decided to suspend %{group_name} (%{g msgstr "" #, elixir-format -#: lib/web/email/group.ex:135 +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:96 +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1278,12 +1273,12 @@ msgid "You have now confirmed your participation. Update your calendar, because msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:91 +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:90 +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "" @@ -1375,3 +1370,23 @@ msgstr "" #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "" + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/be/LC_MESSAGES/errors.po b/priv/gettext/be/LC_MESSAGES/errors.po index ec1d64b78..26d001b77 100644 --- a/priv/gettext/be/LC_MESSAGES/errors.po +++ b/priv/gettext/be/LC_MESSAGES/errors.po @@ -98,12 +98,12 @@ msgid "Cannot refresh the token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:198 +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:202 +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "" @@ -113,13 +113,13 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:66 +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "" @@ -129,7 +129,7 @@ msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:258 +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "" @@ -145,16 +145,15 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "" @@ -220,22 +219,22 @@ msgid "User requested is not logged-in" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:232 +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:265 +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:229 +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:94 +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "" @@ -250,7 +249,7 @@ msgid "You need to be logged-in to change your password" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:207 +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "" @@ -260,25 +259,20 @@ msgid "You need to be logged-in to delete your account" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:237 +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:270 +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:172 +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/user.ex:58 -msgid "You need to have admin access to list users" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/user.ex:108 msgid "You need to have an existing token to get a refresh token" @@ -330,22 +324,22 @@ msgid "Profile already suspended" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:93 +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:87 +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:184 +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:181 +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "" @@ -355,7 +349,7 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:61 +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "" @@ -370,29 +364,29 @@ msgid "Error while updating report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:100 +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:193 +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "" @@ -407,14 +401,14 @@ msgid "No such feed token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:238 +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "" @@ -424,22 +418,17 @@ msgid "Person with ID %{id} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:50 +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:41 -msgid "Picture with ID %{id} was not found" -msgstr "" - -#, elixir-format -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "" @@ -454,8 +443,8 @@ msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 @@ -463,12 +452,12 @@ msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "" @@ -483,12 +472,12 @@ msgid "Resource doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:121 +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:261 +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "" @@ -514,22 +503,22 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:232 +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:131 +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:197 +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "" @@ -569,8 +558,8 @@ msgid "You are not allowed to update a comment if not connected" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" @@ -585,7 +574,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:275 +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "" @@ -635,7 +624,7 @@ msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:75 +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "" @@ -645,12 +634,12 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:210 +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:139 +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "" @@ -665,12 +654,12 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "" @@ -680,22 +669,22 @@ msgid "You need to be logged-in to delete resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:105 +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:204 +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:249 +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:176 +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "" @@ -709,11 +698,6 @@ msgstr "" msgid "You need to be logged-in to view a resource preview" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/picture.ex:79 -msgid "You need to login to upload a picture" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/resource.ex:121 msgid "Parent resource doesn't belong to this group" @@ -790,22 +774,22 @@ msgid "You can't reject this invitation with this profile." msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:71 +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:167 +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:238 +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:241 +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "" @@ -825,21 +809,27 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:344 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:72 +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:199 +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:90 +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/ca/LC_MESSAGES/default.po b/priv/gettext/ca/LC_MESSAGES/default.po index c625d9d17..a8e7d02f6 100644 --- a/priv/gettext/ca/LC_MESSAGES/default.po +++ b/priv/gettext/ca/LC_MESSAGES/default.po @@ -14,270 +14,265 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.4\n" -#: lib/web/templates/email/password_reset.html.eex:48 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:48 msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" "Si no ho has demanat tu, ignora aquest email. La teva contrasenya només " "canviarà si cliques l'enllaç de sota i n'escrius una altra." -#: lib/service/export/feed.ex:170 #, elixir-format -msgid "Feed for %{email} on Mobilizon" -msgstr "Flux per %{email} a Mobilizon" - #: lib/web/templates/email/report.html.eex:74 -#, elixir-format msgid "%{title} by %{creator}" msgstr "%{title} de %{creator}" -#: lib/web/templates/email/registration_confirmation.html.eex:58 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:58 msgid "Activate my account" msgstr "Activa el meu compte" +#, elixir-format #: lib/web/templates/email/email.html.eex:117 #: lib/web/templates/email/email.text.eex:9 -#, elixir-format msgid "Ask the community on Framacolibri" msgstr "Pregunta a la comunitat a Framacolibri" -#: lib/web/templates/email/report.text.eex:15 #, elixir-format +#: lib/web/templates/email/report.text.eex:15 msgid "Comments" msgstr "Comentaris" +#, elixir-format #: lib/web/templates/email/report.html.eex:72 #: lib/web/templates/email/report.text.eex:11 -#, elixir-format msgid "Event" msgstr "Activitat" -#: lib/web/email/user.ex:48 #, elixir-format +#: lib/web/email/user.ex:48 msgid "Instructions to reset your password on %{instance}" msgstr "Instruccions per canviar la contrasenya a %{instance}" -#: lib/web/templates/email/report.text.eex:21 #, elixir-format +#: lib/web/templates/email/report.text.eex:21 msgid "Reason" msgstr "Raó" -#: lib/web/templates/email/password_reset.html.eex:61 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:61 msgid "Reset Password" msgstr "Canvia la contrasenya" -#: lib/web/templates/email/password_reset.html.eex:41 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:41 msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." msgstr "" "Restablir la teva contrasenya és fàcil. Prem el botó de sota i segueix les " "instruccions. Acabarem de seguida." -#: lib/web/email/user.ex:28 #, elixir-format +#: lib/web/email/user.ex:28 msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Instruccions per confirmar el teu compte de Mobilizon a %{instance}" -#: lib/web/email/admin.ex:24 #, elixir-format +#: lib/web/email/admin.ex:24 msgid "New report on Mobilizon instance %{instance}" msgstr "S'ha denunciat una activitat al servidor de Mobilizon %{instance}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 -#, elixir-format msgid "Go to event page" msgstr "Ves a la pàgina de l'activitat" -#: lib/web/templates/email/report.text.eex:1 #, elixir-format +#: lib/web/templates/email/report.text.eex:1 msgid "New report from %{reporter} on %{instance}" msgstr "S'ha denunciat una activitat a %{instance}" -#: lib/web/templates/email/event_participation_approved.text.eex:1 #, elixir-format +#: lib/web/templates/email/event_participation_approved.text.eex:1 msgid "Participation approved" msgstr "S'ha aprovat la participació" +#, elixir-format #: lib/web/templates/email/password_reset.html.eex:13 #: lib/web/templates/email/password_reset.text.eex:1 -#, elixir-format msgid "Password reset" msgstr "Reinicia la contrasenya" -#: lib/web/templates/email/password_reset.text.eex:7 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:7 msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." msgstr "" "Restablir la contrasenya és fàcil. Segueix l'enllaç de sota i segueix les " "instruccions. Serà un no-res." -#: lib/web/templates/email/registration_confirmation.text.eex:5 #, elixir-format +#: lib/web/templates/email/registration_confirmation.text.eex:5 msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." msgstr "" "Has creat un compte a %{host} amb aquesta adreça de mail. Estàs a un clic d" "'activar-lo. Si no l'has creat tu, ignora aquest mail." -#: lib/web/email/participation.ex:112 #, elixir-format +#: lib/web/email/participation.ex:112 msgid "Your participation to event %{title} has been approved" msgstr "T'han aprovat la participació a %{title}" -#: lib/web/email/participation.ex:70 #, elixir-format +#: lib/web/email/participation.ex:70 msgid "Your participation to event %{title} has been rejected" msgstr "T'han denegat la participació a %{title}" -#: lib/web/email/event.ex:37 #, elixir-format +#: lib/web/email/event.ex:37 msgid "Event %{title} has been updated" msgstr "S'ha actualitzat {%title}" -#: lib/web/templates/email/event_updated.text.eex:15 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:15 msgid "New title: %{title}" msgstr "Nou títol: %{title}" -#: lib/web/templates/email/password_reset.text.eex:5 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:5 msgid "You requested a new password for your account on %{instance}." msgstr "Algú ha soŀlicitat a %{instance} una contrasenya nova." -#: lib/web/templates/email/email.html.eex:85 #, elixir-format +#: lib/web/templates/email/email.html.eex:85 msgid "Warning" msgstr "Alerta" -#: lib/web/email/participation.ex:134 #, elixir-format +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Confirma que participaràs a l'activitat %{title}" -#: lib/web/templates/api/privacy.html.eex:75 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:75 msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "Un identificador intern per la teva identitat actual" -#: lib/web/templates/api/privacy.html.eex:74 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:74 msgctxt "terms" msgid "An internal user ID" msgstr "Un identificador intern" -#: lib/web/templates/api/privacy.html.eex:37 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:37 msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "" "Qualsevol informació que recollim de tu la podrem fer servir d'aquestes " "maneres:" -#: lib/web/templates/api/privacy.html.eex:9 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:9 msgctxt "terms" msgid "Basic account information" msgstr "Informació bàsica del compte" -#: lib/web/templates/api/privacy.html.eex:25 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:25 msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "No comparteixis informació perillosa a través de Mobilizon." -#: lib/web/templates/api/privacy.html.eex:90 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:90 msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "Revelem algun tipus d'informació a altri?" -#: lib/web/templates/api/privacy.html.eex:68 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:68 msgctxt "terms" msgid "Do we use cookies?" msgstr "Fem servir cookies?" -#: lib/web/templates/api/privacy.html.eex:51 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:51 msgctxt "terms" msgid "How do we protect your information?" msgstr "Com protegim la teva informació?" -#: lib/web/templates/api/privacy.html.eex:29 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:29 msgctxt "terms" msgid "IPs and other metadata" msgstr "Adreces IP i altres metadades" -#: lib/web/templates/api/privacy.html.eex:17 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:17 msgctxt "terms" msgid "Published events and comments" msgstr "Activitats i comentaris publicats" -#: lib/web/templates/api/privacy.html.eex:64 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:64 msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "" "Mantingues les adreces IP associades a usuàries registrades no més de 12 " "mesos." -#: lib/web/templates/api/privacy.html.eex:76 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:76 msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Claus per autenticar-te" -#: lib/web/templates/api/privacy.html.eex:31 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:31 msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "" "També podem guardar registres del funcionament del servidor, que poden " "incloure l'adreça IP de cada petició que rep." -#: lib/web/templates/api/privacy.html.eex:70 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:70 msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "Desem aquesta informació al teu dispositiu quan et connectes:" -#: lib/web/templates/api/privacy.html.eex:58 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:58 msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Ens esforçarem de bona fe per a:" -#: lib/web/templates/api/privacy.html.eex:35 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:35 msgctxt "terms" msgid "What do we use your information for?" msgstr "Per a què fem servir la teva informació?" -#: lib/web/templates/api/privacy.html.eex:57 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:57 msgctxt "terms" msgid "What is our data retention policy?" msgstr "Quina és la nostra política de retenció de dades?" -#: lib/web/templates/api/privacy.html.eex:67 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:67 msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Pots esborrar el teu compte irreversiblement en qualsevol moment." -#: lib/web/templates/api/privacy.html.eex:115 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:115 msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Canvis a la nostra política de privacitat" -#: lib/web/templates/api/privacy.html.eex:106 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:106 msgctxt "terms" msgid "If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site." msgstr "" @@ -288,8 +283,8 @@ msgstr "" "wikipedia.org/wiki/Reglament_General_de_Protecci%C3%B3_de_Dades\">Reglament " "General de Protecció de Dades), si us plau, no facis servir aquest lloc." -#: lib/web/templates/api/privacy.html.eex:109 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:109 msgctxt "terms" msgid "If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site." msgstr "" @@ -300,30 +295,30 @@ msgstr "" "la privacitat online dels infants), si us plau, no facis servir aquest " "lloc." -#: lib/web/templates/api/privacy.html.eex:117 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:117 msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "" "Si decidim canviar la nostra política de privacitat publicarem els canvis en " "aquesta pàgina." -#: lib/web/templates/api/privacy.html.eex:112 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:112 msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "" "Els requisits legals poden diferir si aquest servidor cau dins d'una altra " "jurisdicció." -#: lib/web/templates/api/privacy.html.eex:103 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:103 msgctxt "terms" msgid "Site usage by children" msgstr "Ús del lloc per part d'infants" -#: lib/web/templates/api/privacy.html.eex:47 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:47 msgctxt "terms" msgid "The email address you provide may be used to send you information, updates and notifications about other people\n interacting with your content or sending you messages and to respond to inquiries, and/or other requests or\n questions." msgstr "" @@ -333,8 +328,8 @@ msgstr "" "contingut, i per respondre a consultes o\n" " soŀlicituds o preguntes." -#: lib/web/templates/api/privacy.html.eex:45 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:45 msgctxt "terms" msgid "To aid moderation of the community, for example comparing your IP address with other known ones to determine ban\n evasion or other violations." msgstr "" @@ -342,8 +337,8 @@ msgstr "" "amb d'altres conegudes per determinar\n" " evasió d'un bloqueig o altres violacions de les condicions." -#: lib/web/templates/api/privacy.html.eex:43 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:43 msgctxt "terms" msgid "To provide the core functionality of Mobilizon. Depending on this instance's policy you may only be able to\n interact with other people's content and post your own content if you are logged in." msgstr "" @@ -352,89 +347,89 @@ msgstr "" " poguessis interaccionar amb continguts i publicacions teus i d'altres, " "amb una sessió iniciada." -#: lib/web/templates/api/privacy.html.eex:6 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:6 msgctxt "terms" msgid "What information do we collect?" msgstr "Quina informació recollim?" -#: lib/web/email/user.ex:176 #, elixir-format +#: lib/web/email/user.ex:176 msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon a %{instance}: confirma la teva adreça de correu" -#: lib/web/email/user.ex:152 #, elixir-format +#: lib/web/email/user.ex:152 msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon a %{instance}: s'ha canviat l'adreça de correu" -#: lib/web/email/notification.ex:46 #, elixir-format +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Una activitat planificada per avui" msgstr[1] "%{nb_events} activitats planificades avui" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:38 #: lib/web/templates/email/on_day_notification.text.eex:4 -#, elixir-format msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Tens una activitat avui:" msgstr[1] "Tens %{total} activitats avui:" -#: lib/web/templates/email/group_invite.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_invite.text.eex:3 msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} t'acaba de convidar al seu grup %{group}" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:13 #: lib/web/templates/email/group_invite.text.eex:1 -#, elixir-format msgid "Come along!" msgstr "Vine!" -#: lib/web/email/notification.ex:24 #, elixir-format +#: lib/web/email/notification.ex:24 msgid "Don't forget to go to %{title}" msgstr "No t'oblidis d'anar a %{title}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 -#, elixir-format msgid "Get ready for %{title}" msgstr "Prepara't per %{title}" -#: lib/web/templates/email/group_invite.html.eex:59 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:59 msgid "See my groups" msgstr "Mostra els meus grups" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:45 #: lib/web/templates/email/group_invite.text.eex:5 -#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Per acceptar la invitació, ves als teus grups." -#: lib/web/templates/email/before_event_notification.text.eex:5 #, elixir-format +#: lib/web/templates/email/before_event_notification.text.eex:5 msgid "View the event on: %{link}" msgstr "Vés a l'activitat actualitzada a %{link}" -#: lib/web/email/group.ex:32 #, elixir-format +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} t'ha convidat al grup %{group}" -#: lib/web/email/notification.ex:70 #, elixir-format +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Una activitat planificada per aquesta setmana" msgstr[1] "%{nb_events} planificades per aquesta setmana" -#: lib/web/email/notification.ex:92 #, elixir-format +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Hi ha una soŀlicitud de participar a %{title} pendent de resoldre" @@ -442,21 +437,21 @@ msgstr[1] "" "Hi ha %{number_participation_requests} soŀlicituds de participar a %{title} " "pendents de resoldre" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Tens una activitat aquesta setmana:" msgstr[1] "Tens %{total} activitats aquesta setmana:" -#: lib/service/metadata/utils.ex:52 #, elixir-format +#: lib/service/metadata/utils.ex:52 msgid "The event organizer didn't add any description." msgstr "L'organitzadora no hi ha posat cap descripció." -#: lib/web/templates/api/privacy.html.eex:54 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:54 msgctxt "terms" msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." msgstr "" @@ -466,8 +461,8 @@ msgstr "" "aplicacions client i l'API del servidor, i desem les contrasenyes " "transformades amb una funció de hash forta, unidireccional." -#: lib/web/templates/api/privacy.html.eex:94 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:94 msgctxt "terms" msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." msgstr "" @@ -479,20 +474,20 @@ msgstr "" "fer-ho per complir amb la llei, per fer complir la política del lloc, per " "protegir el nostres drets o d'altres, la propietat, o la seguretat." -#: lib/web/templates/api/terms.html.eex:23 #, elixir-format +#: lib/web/templates/api/terms.html.eex:23 msgctxt "terms" msgid "Accepting these Terms" msgstr "Acceptar aquestes condicions" -#: lib/web/templates/api/terms.html.eex:27 #, elixir-format +#: lib/web/templates/api/terms.html.eex:27 msgctxt "terms" msgid "Changes to these Terms" msgstr "Canvis an aquestes condicions" -#: lib/web/templates/api/terms.html.eex:85 #, elixir-format +#: lib/web/templates/api/terms.html.eex:85 msgctxt "terms" msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." msgstr "" @@ -503,16 +498,16 @@ msgstr "" "Assumeixes el risc i responsabilitat derivats de l'ús o confiança en " "qualsevol contingut." -#: lib/web/templates/api/terms.html.eex:60 #, elixir-format +#: lib/web/templates/api/terms.html.eex:60 msgctxt "terms" msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" msgstr "" "També et compromets a no fer res del següent en relació amb el Servei o " "altres usuari/es:" -#: lib/web/templates/api/terms.html.eex:65 #, elixir-format +#: lib/web/templates/api/terms.html.eex:65 msgctxt "terms" msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." msgstr "" @@ -520,22 +515,22 @@ msgstr "" "freqüència d'ús, o altres funcions dissenyades per protegir el Servei, " "usuàries del Servei, o d'altri." -#: lib/web/templates/api/terms.html.eex:64 #, elixir-format +#: lib/web/templates/api/terms.html.eex:64 msgctxt "terms" msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" msgstr "" "Recopilar informació personal d'altres usuàries, intimidar, amenaçar, espiar " "o assetjar altres usuàries del Servei;" -#: lib/web/templates/api/terms.html.eex:55 #, elixir-format +#: lib/web/templates/api/terms.html.eex:55 msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "Continguts iŀlegals, que poguessin comportar responsabilitats;" -#: lib/web/templates/api/terms.html.eex:56 #, elixir-format +#: lib/web/templates/api/terms.html.eex:56 msgctxt "terms" msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" msgstr "" @@ -543,48 +538,48 @@ msgstr "" "secret comercial, drets d'autoria, dret a la privacitat, dret de publicitat " "o qualsevol altres drets inteŀlectuals o drets de qualsevol part;" -#: lib/web/templates/api/terms.html.eex:42 #, elixir-format +#: lib/web/templates/api/terms.html.eex:42 msgctxt "terms" msgid "Creating Accounts" msgstr "Creació dels comptes" -#: lib/web/templates/api/terms.html.eex:89 #, elixir-format +#: lib/web/templates/api/terms.html.eex:89 msgctxt "terms" msgid "Entire Agreement" msgstr "Acord complet" -#: lib/web/templates/api/terms.html.eex:92 #, elixir-format +#: lib/web/templates/api/terms.html.eex:92 msgctxt "terms" msgid "Feedback" msgstr "Valoracions" -#: lib/web/templates/api/terms.html.eex:83 #, elixir-format +#: lib/web/templates/api/terms.html.eex:83 msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Enllaços i continguts de tercers" -#: lib/web/templates/api/terms.html.eex:88 #, elixir-format +#: lib/web/templates/api/terms.html.eex:88 msgctxt "terms" msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." msgstr "" "Si incompleixes qualsevol d'aquestes condicions, ens reservem el dret de " "suspendre o desactivar el teu accés al Servei." -#: lib/web/templates/api/terms.html.eex:63 #, elixir-format +#: lib/web/templates/api/terms.html.eex:63 msgctxt "terms" msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" msgstr "" "Suplantar la identitat o publicar en nom d'una persona o entitat, o " "tergiversar la teva afiliació amb una persona o entitat;" -#: lib/web/templates/api/terms.html.eex:48 #, elixir-format +#: lib/web/templates/api/terms.html.eex:48 msgctxt "terms" msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." msgstr "" @@ -592,26 +587,26 @@ msgstr "" "continguts a disposició del públic. Ets responsable del contingut que " "publiques al Servei, incloent-ne la legalitat, fiabilitat i adequació." -#: lib/web/templates/api/terms.html.eex:39 #, elixir-format +#: lib/web/templates/api/terms.html.eex:39 msgctxt "terms" msgid "Privacy Policy" msgstr "Política de privacitat" -#: lib/web/templates/api/terms.html.eex:95 #, elixir-format +#: lib/web/templates/api/terms.html.eex:95 msgctxt "terms" msgid "Questions & Contact Information" msgstr "Preguntes i informació de contacte" -#: lib/web/templates/api/terms.html.eex:87 #, elixir-format +#: lib/web/templates/api/terms.html.eex:87 msgctxt "terms" msgid "Termination" msgstr "Finalització" -#: lib/web/templates/api/terms.html.eex:62 #, elixir-format +#: lib/web/templates/api/terms.html.eex:62 msgctxt "terms" msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" msgstr "" @@ -620,14 +615,14 @@ msgstr "" "plenament del Servei, que pugui malmetre, deshabilitar, sobrecarregar o " "perjudicar el funcionament del Servei;" -#: lib/web/templates/api/terms.html.eex:47 #, elixir-format +#: lib/web/templates/api/terms.html.eex:47 msgctxt "terms" msgid "Your Content & Conduct" msgstr "El teu contingut i conducta" -#: lib/web/templates/api/terms.html.eex:84 #, elixir-format +#: lib/web/templates/api/terms.html.eex:84 msgctxt "terms" msgid "%{instance_name} makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "" @@ -638,8 +633,8 @@ msgstr "" "externs no implica el suport per part de %{instance_name} per al lloc " "destí. L'ús de tals enllaços són responsabilitat de cada persona usuària." -#: lib/web/templates/api/terms.html.eex:68 #, elixir-format +#: lib/web/templates/api/terms.html.eex:68 msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "" @@ -648,16 +643,16 @@ msgstr "" "conducta i normes de moderació. Trencar aquestes normes pot implicar la " "suspensió o retirada del vostre compte." -#: lib/web/templates/api/terms.html.eex:81 #, elixir-format +#: lib/web/templates/api/terms.html.eex:81 msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "" "Vegeu detalls complets sobre el " "software Mobilizon." -#: lib/web/templates/api/terms.html.eex:18 #, elixir-format +#: lib/web/templates/api/terms.html.eex:18 msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "" @@ -667,8 +662,8 @@ msgstr "" "condicions del servei, (\"Condicions del Servei\" o \"Condicions\"). Llegiu-" "les amb atenció." -#: lib/web/templates/api/terms.html.eex:33 #, elixir-format +#: lib/web/templates/api/terms.html.eex:33 msgctxt "terms" msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." msgstr "" @@ -677,8 +672,8 @@ msgstr "" "pàgina. És la vostra responsabilitat comprovar el web regularment per " "assabentar-vos dels canvis de les Condicions." -#: lib/web/templates/api/terms.html.eex:53 #, elixir-format +#: lib/web/templates/api/terms.html.eex:53 msgctxt "terms" msgid "In order to make %{instance_name} a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" msgstr "" @@ -686,16 +681,16 @@ msgstr "" "absteniu-vos de publicar, enllaçar, o fer disponible de qualsevol altra " "manera al Servei o a través d'ell:" -#: lib/web/templates/api/terms.html.eex:57 #, elixir-format +#: lib/web/templates/api/terms.html.eex:57 msgctxt "terms" msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" msgstr "" "Informació privada d'altri (ex.: adreces postals o de correu, números de " "telèfon, números d'identitat o de targetes bancàries, etc.); ni" -#: lib/web/templates/api/terms.html.eex:52 #, elixir-format +#: lib/web/templates/api/terms.html.eex:52 msgctxt "terms" msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." msgstr "" @@ -706,8 +701,8 @@ msgstr "" "qualsevol motiu alguna instància no respecta aquesta petició, no ens en " "podem fer responsables." -#: lib/web/templates/api/terms.html.eex:90 #, elixir-format +#: lib/web/templates/api/terms.html.eex:90 msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "" @@ -715,8 +710,8 @@ msgstr "" "entre entre vós i %{instance_name}, i substitueix qualsevol altre " "acord previ." -#: lib/web/templates/api/terms.html.eex:80 #, elixir-format +#: lib/web/templates/api/terms.html.eex:80 msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "" @@ -726,16 +721,16 @@ msgstr "" "teniu dret i se us anima a usar, consultar, modificar i distribuir-ne el " "codi font." -#: lib/web/templates/api/terms.html.eex:58 #, elixir-format +#: lib/web/templates/api/terms.html.eex:58 msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "" "Virus, dades corrompudes o qualsevol altre tipus de malware o arxius " "destructius o nocius." -#: lib/web/templates/api/terms.html.eex:51 #, elixir-format +#: lib/web/templates/api/terms.html.eex:51 msgctxt "terms" msgid "You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time. Web server access logs might also be stored for some time in the system." msgstr "" @@ -745,30 +740,30 @@ msgstr "" "de correu també son subjectes de ser conservats dins el sistema durant un " "temps." -#: lib/web/templates/api/terms.html.eex:96 #, elixir-format +#: lib/web/templates/api/terms.html.eex:96 msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "" "Podeu dirigir-vos a %{contact} per qualsevol pregunta o comentari sobre el " "Servei" -#: lib/web/templates/api/terms.html.eex:79 #, elixir-format +#: lib/web/templates/api/terms.html.eex:79 msgctxt "terms" msgid "Source code" msgstr "Codi font" -#: lib/web/templates/api/terms.html.eex:93 #, elixir-format +#: lib/web/templates/api/terms.html.eex:93 msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "" "Ens encanten les valoracions i els comentaris. Feu-nos saber què en penseu " "del Servei, aquestes Condicions, i, en general, de %{instance_name}." -#: lib/web/templates/api/terms.html.eex:74 #, elixir-format +#: lib/web/templates/api/terms.html.eex:74 msgctxt "terms" msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." msgstr "" @@ -782,14 +777,14 @@ msgstr "" "condicions, com també altres comportaments no descrits però que siguin " "considerats inapropiats, amenaçadors, ofensius o nocius." -#: lib/web/templates/api/terms.html.eex:6 #, elixir-format +#: lib/web/templates/api/terms.html.eex:6 msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "%{instance_name} no fa profit de les vostres dades personals" -#: lib/web/templates/api/terms.html.eex:44 #, elixir-format +#: lib/web/templates/api/terms.html.eex:44 msgctxt "terms" msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact its contributors directly." msgstr "" @@ -798,16 +793,16 @@ msgstr "" "i no de la instància, contacteu-ne la comunitat de contribuïdores directament." -#: lib/web/templates/api/terms.html.eex:77 #, elixir-format +#: lib/web/templates/api/terms.html.eex:77 msgctxt "terms" msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." msgstr "" "Les persones administradores de la instància han d'assegurar-se que les " "comunitats allotjades són moderades segons les normes definides." -#: lib/web/templates/api/terms.html.eex:98 #, elixir-format +#: lib/web/templates/api/terms.html.eex:98 msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "" @@ -816,8 +811,8 @@ msgstr "" "appdotnet/terms-of-service\">les de App.net llicenciades també amb CC BY-SA." -#: lib/web/templates/api/privacy.html.eex:119 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:119 msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "" @@ -826,22 +821,22 @@ msgstr "" "discourse/discourse\">les de Discourse, llicenciades també amb CC BY-SA." -#: lib/web/templates/api/terms.html.eex:3 #, elixir-format +#: lib/web/templates/api/terms.html.eex:3 msgctxt "terms" msgid "Short version" msgstr "Versió curta" -#: lib/web/templates/api/terms.html.eex:9 #, elixir-format +#: lib/web/templates/api/terms.html.eex:9 msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "" "El servei s'ofereix sense garanties i les condicions poden canviar en el " "futur" -#: lib/web/templates/api/privacy.html.eex:118 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:118 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "" @@ -849,8 +844,8 @@ msgstr "" "licenses/by-sa/4.0/\">CC BY-SA. Va ser actualitzat per darrer cop del 18 " "de juny de 2020." -#: lib/web/templates/api/terms.html.eex:97 #, elixir-format +#: lib/web/templates/api/terms.html.eex:97 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "" @@ -858,82 +853,82 @@ msgstr "" "licenses/by-sa/4.0/\">CC BY-SA. Va ser actualitzat per darrer cop del 22 " "de juny de 2020." -#: lib/web/templates/api/terms.html.eex:8 #, elixir-format +#: lib/web/templates/api/terms.html.eex:8 msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "" "Quan useu el servei heu de respectar les altres persones i les normes de " "%{instance_name}" -#: lib/web/templates/api/terms.html.eex:7 #, elixir-format +#: lib/web/templates/api/terms.html.eex:7 msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "Quan feu servir %{instance_name} heu de respectar la llei" -#: lib/web/templates/api/terms.html.eex:5 #, elixir-format +#: lib/web/templates/api/terms.html.eex:5 msgctxt "terms" msgid "Your content is yours" msgstr "El teu contingut et pertany" -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 msgid "Confirm my e-mail address" msgstr "Confirma la meva adreça de correu" +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 -#, elixir-format msgid "Confirm your e-mail" msgstr "Confirma l'adreça de correu" -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "Hola! Acabes d'apuntar-te a aquesta activitat: « %{title} ». Si us plau, " "confirma l'adreça de correu que has introduït:" +#, elixir-format #: lib/web/templates/email/email.html.eex:114 #: lib/web/templates/email/email.text.eex:8 -#, elixir-format msgid "Need help? Is something not working as expected?" msgstr "Necessites ajuda? Alguna cosa no funciona?" -#: lib/web/templates/email/registration_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:38 msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "" "Has creat un compte a %{host} amb aquest mail. Estàs a un clic d'activar-lo." -#: lib/web/templates/email/report.html.eex:13 #, elixir-format +#: lib/web/templates/email/report.html.eex:13 msgid "New report on %{instance}" msgstr "Nova denúncia a %{instance}" -#: lib/web/templates/email/email_changed_old.html.eex:38 #, elixir-format +#: lib/web/templates/email/email_changed_old.html.eex:38 msgid "The email address for your account on %{host} is being changed to:" msgstr "L'adreça de correu pel teu compte a %{host} s'està canviant a:" -#: lib/web/templates/email/password_reset.html.eex:38 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:38 msgid "You requested a new password for your account on %{instance}." msgstr "Algú ha soŀlicitat a %{instance} una contrasenya nova." -#: lib/web/templates/email/email.text.eex:5 #, elixir-format +#: lib/web/templates/email/email.text.eex:5 msgid "Please do not use it for real purposes." msgstr "No ho facis servir més que proves, sisplau" +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 #: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 -#, elixir-format msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -943,9 +938,9 @@ msgstr[1] "" "Si has de canceŀlar la teva participació, accedeix a l'activitat per " "l'enllaç de dalt i clica al botó de participació." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:38 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "Tens una soŀlicitud de participació pendent de resoldre:" @@ -953,67 +948,67 @@ msgstr[1] "" "Tens %{number_participation_requests} soŀlicituds de participació pendents " "de resoldre:" -#: lib/web/templates/email/email.text.eex:11 #, elixir-format +#: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} és un servidor de Mobilizon." -#: lib/web/templates/email/email.html.eex:142 #, elixir-format +#: lib/web/templates/email/email.html.eex:142 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} és un servidor de Mobilizon." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 -#, elixir-format msgid "A request is pending!" msgstr "Una soŀlicitud pendent!" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 -#, elixir-format msgid "An event is upcoming!" msgstr "S'apropa una activitat!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 -#, elixir-format msgid "Confirm new email" msgstr "Confirma la nova adreça" -#: lib/web/templates/email/event_updated.html.eex:84 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:84 msgid "End" msgstr "Final" -#: lib/web/templates/email/event_updated.text.eex:21 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:21 msgid "End %{ends_on}" msgstr "Final %{ends_on}" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:13 #: lib/web/templates/email/event_updated.text.eex:1 -#, elixir-format msgid "Event update!" msgstr "S'ha actualitzat l'activitat!" -#: lib/web/templates/email/report.html.eex:88 #, elixir-format +#: lib/web/templates/email/report.html.eex:88 msgid "Flagged comments" msgstr "Comentaris denunciats" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 -#, elixir-format msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "" "Bones notícies: alguna de les organitzadores de l'activitat t'ha aprovat la " "soŀlicitud de participar-hi. Ja t'ho pots apuntar a l'agenda, estàs a la " "llista d'assistents!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:38 #: lib/web/templates/email/email_changed_new.text.eex:3 -#, elixir-format msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "Ei hola! Sembla que vols canviar l'adreça de correu vinculada al teu compte " @@ -1021,16 +1016,16 @@ msgstr "" "el canvi. Un cop fet, podràs iniciar sessió a %{instance} amb aquesta nova " "adreça." -#: lib/web/templates/email/email_changed_old.text.eex:3 #, elixir-format +#: lib/web/templates/email/email_changed_old.text.eex:3 msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" msgstr "" "Ep! Només confirmar que ha canviat el correu vinculat al teu compte a %{host}" ". Ara és:" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:41 #: lib/web/templates/email/email_changed_old.html.eex:65 lib/web/templates/email/email_changed_old.text.eex:5 -#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "" "Si no has fet aquest canvi tu mateix/a, és possible que algú hagi aconseguit " @@ -1038,532 +1033,552 @@ msgstr "" "contrasenya de seguida. Si no pots entrar, contacta amb les admins de " "%{host}." -#: lib/web/templates/email/password_reset.text.eex:12 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:12 msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." msgstr "" "Si no has fet aquest canvi, pots ignorar aquest missatge. La teva " "contrasenya es mantindrà si no cliques l'enllaç de sobre." +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 -#, elixir-format msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Si no has demanat això, sisplau ignora aquest correu." +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 -#, elixir-format msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "" "Si has de canceŀlar la teva participació, accedeix a l'activitat per " "l'enllaç de dalt i clica al botó de participació." +#, elixir-format #: lib/web/templates/email/email.html.eex:143 #: lib/web/templates/email/email.text.eex:11 -#, elixir-format msgid "Learn more about Mobilizon here!" msgstr "Per aprendre més de Mobilizon." -#: lib/web/templates/email/event_updated.html.eex:94 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:94 msgid "Location" msgstr "Ubicació" -#: lib/web/templates/email/event_updated.html.eex:104 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:104 msgid "Location address was removed" msgstr "L'adreça postal ha estat esborrada" +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:51 #: lib/web/templates/email/pending_participation_notification.text.eex:6 -#, elixir-format msgid "Manage pending requests" msgstr "Gestiona les soŀlicituds pendents" +#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 -#, elixir-format msgid "Nearly there!" msgstr "Hi ets a prop!" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 -#, elixir-format msgid "New email confirmation" msgstr "Nova confirmació de correu" -#: lib/web/templates/email/report.html.eex:106 #, elixir-format +#: lib/web/templates/email/report.html.eex:106 msgid "Reasons for report" msgstr "Motius de l'informe" -#: lib/web/templates/email/report.html.eex:39 #, elixir-format +#: lib/web/templates/email/report.html.eex:39 msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "Algú a %{instance} ha denunciat el contingut següent." +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 -#, elixir-format msgid "Sorry! You're not going." msgstr "Ho sentim! No hi podràs anar." -#: lib/web/templates/email/event_updated.html.eex:74 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:74 msgid "Start" msgstr "Inici" -#: lib/web/templates/email/event_updated.text.eex:18 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:18 msgid "Start %{begins_on}" msgstr "Inici %{starts_on}" -#: lib/web/templates/email/event_updated.text.eex:3 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:3 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Hi ha hagut canvis a %{title} i et volíem avisar." +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:55 #: lib/web/templates/email/event_updated.text.eex:11 -#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Les organitzadores d'aquesta activitat l'han canceŀlada. Ho sentim!" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:51 #: lib/web/templates/email/event_updated.text.eex:7 -#, elixir-format msgid "This event has been confirmed" msgstr "S'ha confirmat l'activitat" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:53 #: lib/web/templates/email/event_updated.text.eex:9 -#, elixir-format msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "" "Aquesta activitat encara no està confirmada: l'organització t'ho farà saber " "si la confirmen." +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 -#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "Malauradament, les organitzadores han rebutjat la teva participació." -#: lib/web/templates/email/email_changed_new.html.eex:51 #, elixir-format +#: lib/web/templates/email/email_changed_new.html.eex:51 msgid "Verify your email address" msgstr "Verifica l'adreça de correu" -#: lib/web/templates/email/report.html.eex:126 #, elixir-format +#: lib/web/templates/email/report.html.eex:126 msgid "View report" msgstr "Mostra la denúncia" -#: lib/web/templates/email/report.text.eex:24 #, elixir-format +#: lib/web/templates/email/report.text.eex:24 msgid "View report:" msgstr "Mostra la denúncia" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:58 #: lib/web/templates/email/event_participation_confirmed.html.eex:58 -#, elixir-format msgid "Visit event page" msgstr "Vés a la pàgina d'activitat" -#: lib/web/templates/email/event_updated.html.eex:121 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:121 msgid "Visit the updated event page" msgstr "Vés a la pàgina d'activitat actualitzada" -#: lib/web/templates/email/event_updated.text.eex:23 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:23 msgid "Visit the updated event page: %{link}" msgstr "Vés a l'activitat actualitzada a %{link}" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 -#, elixir-format msgid "What's up this week?" msgstr "Què hi ha aquesta setmana?" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 -#, elixir-format msgid "What's up today?" msgstr "Què fan avui?" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 -#, elixir-format msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" "Si desitges actualitzar o canceŀlar la teva assistència , entra a la pàgina " "de l'activitat amb l'enllaç d'amunt i clica al botó de participació." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:64 #: lib/web/templates/email/pending_participation_notification.text.eex:8 -#, elixir-format msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" -#: lib/web/templates/email/event_participation_rejected.text.eex:5 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.text.eex:5 msgid "You issued a request to attend %{title}." msgstr "" +#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Has soŀlicitat participar a l'activitat %{title}." +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:13 #: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 -#, elixir-format msgid "You're going!" msgstr "T'han acceptat!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 -#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "" -#: lib/web/templates/email/email.html.eex:89 #, elixir-format +#: lib/web/templates/email/email.html.eex:89 msgid "Please do not use it for real purposes." msgstr "No ho facis servir més que proves, sisplau" +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 -#, elixir-format msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "" +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 -#, elixir-format msgid "So long, and thanks for the fish!" msgstr "" -#: lib/web/email/group.ex:62 #, elixir-format +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "" -#: lib/web/templates/email/group_member_removal.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_member_removal.text.eex:3 msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." msgstr "" -#: lib/web/templates/email/group_invite.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:38 msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "" -#: lib/web/templates/email/group_member_removal.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_member_removal.html.eex:38 msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:54 #: lib/web/templates/email/group_suspension.text.eex:7 -#, elixir-format msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:46 #: lib/web/templates/email/group_suspension.text.eex:5 -#, elixir-format msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "" +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:38 #: lib/web/templates/email/group_deletion.text.eex:3 -#, elixir-format msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:13 #: lib/web/templates/email/group_suspension.text.eex:1 -#, elixir-format msgid "The group %{group} has been suspended on %{instance}!" msgstr "" +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:13 #: lib/web/templates/email/group_deletion.text.eex:1 -#, elixir-format msgid "The group %{group} was deleted on %{instance}!" msgstr "" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:38 #: lib/web/templates/email/group_suspension.text.eex:3 -#, elixir-format msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:135 #, elixir-format +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "" -#: lib/web/email/group.ex:96 #, elixir-format +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "" -#: lib/web/templates/api/terms.html.eex:24 #, elixir-format +#: lib/web/templates/api/terms.html.eex:24 msgctxt "terms" msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." msgstr "" -#: lib/web/templates/api/terms.html.eex:40 #, elixir-format +#: lib/web/templates/api/terms.html.eex:40 msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "" -#: lib/web/templates/api/terms.html.eex:36 #, elixir-format +#: lib/web/templates/api/terms.html.eex:36 msgctxt "terms" msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." msgstr "" -#: lib/web/templates/api/privacy.html.eex:78 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:78 msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "" -#: lib/web/templates/api/privacy.html.eex:80 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:80 msgctxt "terms" msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." msgstr "" -#: lib/web/templates/api/privacy.html.eex:87 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:87 msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "" -#: lib/web/templates/api/terms.html.eex:71 #, elixir-format +#: lib/web/templates/api/terms.html.eex:71 msgctxt "terms" msgid "Our responsibility" msgstr "" -#: lib/web/templates/api/privacy.html.eex:61 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:61 msgctxt "terms" msgid "Retain server logs containing the IP address of all requests to this server, insofar as such logs are kept, no more than 90 days." msgstr "" +#, elixir-format #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 -#, elixir-format msgctxt "terms" msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary to help you understand them better." msgstr "" -#: lib/web/templates/api/terms.html.eex:45 #, elixir-format +#: lib/web/templates/api/terms.html.eex:45 msgctxt "terms" msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." msgstr "" -#: lib/web/templates/api/terms.html.eex:50 #, elixir-format +#: lib/web/templates/api/terms.html.eex:50 msgctxt "terms" msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." msgstr "" -#: lib/web/templates/api/privacy.html.eex:10 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:10 msgctxt "terms" msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter an email address, a password (hashed) and at least an username. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" -#: lib/web/templates/api/terms.html.eex:30 #, elixir-format +#: lib/web/templates/api/terms.html.eex:30 msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.eex:20 #, elixir-format +#: lib/web/templates/api/terms.html.eex:20 msgctxt "terms" msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by Framasoft, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the \"About this instance\" page." msgstr "" -#: lib/web/templates/api/terms.html.eex:43 #, elixir-format +#: lib/web/templates/api/terms.html.eex:43 msgctxt "terms" msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to %{instance_name}." msgstr "" -#: lib/web/templates/api/terms.html.eex:49 #, elixir-format +#: lib/web/templates/api/terms.html.eex:49 msgctxt "terms" msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." msgstr "" -#: lib/web/templates/api/privacy.html.eex:19 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:19 msgctxt "terms" msgid "Your events and comments are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." msgstr "" -#: lib/web/templates/api/privacy.html.eex:99 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:99 msgctxt "terms" msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." msgstr "" -#: lib/web/templates/email/event_participation_confirmed.text.eex:4 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.text.eex:4 msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:38 #: lib/web/templates/email/event_participation_confirmed.html.eex:38 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Has soŀlicitat participar a l'activitat %{title}." -#: lib/web/email/participation.ex:91 #, elixir-format +#: lib/web/email/participation.ex:91 msgid "Your participation to event %{title} has been confirmed" msgstr "T'han aprovat la participació a %{title}" -#: lib/web/templates/email/report.html.eex:41 #, elixir-format +#: lib/web/templates/email/report.html.eex:41 msgid "%{reporter} reported the following content." msgstr "%{reporter_name} (%{reporter_username}) ha denunciat aquest contingut." -#: lib/web/templates/email/report.text.eex:5 #, elixir-format +#: lib/web/templates/email/report.text.eex:5 msgid "Group %{group} was reported" msgstr "" -#: lib/web/templates/email/report.html.eex:51 #, elixir-format +#: lib/web/templates/email/report.html.eex:51 msgid "Group reported" msgstr "" -#: lib/web/templates/email/report.text.eex:7 #, elixir-format +#: lib/web/templates/email/report.text.eex:7 msgid "Profile %{profile} was reported" msgstr "" -#: lib/web/templates/email/report.html.eex:56 #, elixir-format +#: lib/web/templates/email/report.html.eex:56 msgid "Profile reported" msgstr "" -#: lib/web/templates/email/event_participation_confirmed.html.eex:45 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.html.eex:45 msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" -#: lib/mobilizon/posts/post.ex:91 #, elixir-format +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "" -#: lib/mobilizon/posts/post.ex:90 #, elixir-format +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "" -#: lib/web/templates/email/instance_follow.text.eex:3 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:3 msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "" -#: lib/web/email/follow.ex:54 #, elixir-format +#: lib/web/email/follow.ex:54 msgid "%{name} requests to follow your instance" msgstr "" -#: lib/web/templates/email/instance_follow.html.eex:38 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:38 msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "" -#: lib/web/templates/email/instance_follow.text.eex:4 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:4 msgid "If you accept, this instance will receive all of your public events." msgstr "" -#: lib/web/email/follow.ex:48 #, elixir-format +#: lib/web/email/follow.ex:48 msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "" -#: lib/web/templates/email/instance_follow.html.eex:66 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:66 msgid "See the federation settings" msgstr "" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:52 #: lib/web/templates/email/instance_follow.text.eex:6 -#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:13 #: lib/web/templates/email/instance_follow.text.eex:1 -#, elixir-format msgid "Want to connect?" msgstr "" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:45 #: lib/web/templates/email/instance_follow.text.eex:5 -#, elixir-format msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "" -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" -#: lib/web/templates/email/event_participation_rejected.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.html.eex:38 msgid "You issued a request to attend %{title}." msgstr "" -#: lib/web/templates/email/event_updated.html.eex:64 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:64 msgid "Event title" msgstr "Activitat" -#: lib/web/templates/email/event_updated.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:38 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "" -#: lib/web/templates/error/500_page.html.eex:46 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:46 msgid "The Mobilizon server seems to be temporarily down." msgstr "" -#: lib/web/templates/error/500_page.html.eex:7 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:7 msgid "This page is not correct" msgstr "" -#: lib/web/templates/error/500_page.html.eex:45 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:45 msgid "We're sorry, but something went wrong on our end." msgstr "" +#, elixir-format #: lib/web/templates/email/email.html.eex:88 #: lib/web/templates/email/email.text.eex:4 -#, elixir-format msgid "This is a demonstration site to test Mobilizon." msgstr "Aquesta és una web de proves per provar la beta de Mobilizon." + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/ca/LC_MESSAGES/errors.po b/priv/gettext/ca/LC_MESSAGES/errors.po index 421f3ad9c..effb558b7 100644 --- a/priv/gettext/ca/LC_MESSAGES/errors.po +++ b/priv/gettext/ca/LC_MESSAGES/errors.po @@ -99,12 +99,12 @@ msgid "Cannot refresh the token" msgstr "No s'ha pogut actualitzar el codi d'accés" #, elixir-format -#: lib/graphql/resolvers/group.ex:198 +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "El perfil actual no pertany a aquest grup" #, elixir-format -#: lib/graphql/resolvers/group.ex:202 +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "El perfil actual no administra el grup seleccionat" @@ -114,13 +114,13 @@ msgid "Error while saving user settings" msgstr "No s'han pogut desar les preferències" #, elixir-format -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "No s'ha trobat el grup" #, elixir-format -#: lib/graphql/resolvers/group.ex:66 +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "No s'ha trobat el grup amb identificador %{id}" @@ -130,7 +130,7 @@ msgid "Impossible to authenticate, either your email or password are invalid." msgstr "No t'hem pogut autenticar. El teu correu o contrasenya són incorrectes." #, elixir-format -#: lib/graphql/resolvers/group.ex:258 +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "No s'ha trobat el/la membre" @@ -146,16 +146,15 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "" @@ -221,22 +220,22 @@ msgid "User requested is not logged-in" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:232 +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:265 +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:229 +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:94 +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "" @@ -251,7 +250,7 @@ msgid "You need to be logged-in to change your password" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:207 +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "" @@ -261,25 +260,20 @@ msgid "You need to be logged-in to delete your account" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:237 +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:270 +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:172 +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/user.ex:58 -msgid "You need to have admin access to list users" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/user.ex:108 msgid "You need to have an existing token to get a refresh token" @@ -331,22 +325,22 @@ msgid "Profile already suspended" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:93 +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:87 +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:184 +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:181 +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "" @@ -356,7 +350,7 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:61 +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "" @@ -371,29 +365,29 @@ msgid "Error while updating report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:100 +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:193 +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "" @@ -408,14 +402,14 @@ msgid "No such feed token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:238 +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "" @@ -425,22 +419,17 @@ msgid "Person with ID %{id} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:50 +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:41 -msgid "Picture with ID %{id} was not found" -msgstr "" - -#, elixir-format -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "" @@ -455,8 +444,8 @@ msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 @@ -464,12 +453,12 @@ msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "" @@ -484,12 +473,12 @@ msgid "Resource doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:121 +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:261 +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "" @@ -515,22 +504,22 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:232 +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:131 +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:197 +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "" @@ -570,8 +559,8 @@ msgid "You are not allowed to update a comment if not connected" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" @@ -586,7 +575,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:275 +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "" @@ -636,7 +625,7 @@ msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:75 +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "" @@ -646,12 +635,12 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:210 +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:139 +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "" @@ -666,12 +655,12 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "" @@ -681,22 +670,22 @@ msgid "You need to be logged-in to delete resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:105 +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:204 +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:249 +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:176 +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "" @@ -710,11 +699,6 @@ msgstr "" msgid "You need to be logged-in to view a resource preview" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/picture.ex:79 -msgid "You need to login to upload a picture" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/resource.ex:121 msgid "Parent resource doesn't belong to this group" @@ -791,22 +775,22 @@ msgid "You can't reject this invitation with this profile." msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:71 +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:167 +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:238 +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:241 +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "" @@ -826,21 +810,27 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:344 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:72 +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:199 +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:90 +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/cs/LC_MESSAGES/default.po b/priv/gettext/cs/LC_MESSAGES/default.po index a47a9f2c4..c9047c5a4 100644 --- a/priv/gettext/cs/LC_MESSAGES/default.po +++ b/priv/gettext/cs/LC_MESSAGES/default.po @@ -17,11 +17,6 @@ msgstr "" msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" -#, elixir-format -#: lib/service/export/feed.ex:170 -msgid "Feed for %{email} on Mobilizon" -msgstr "" - #, elixir-format #: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" @@ -142,7 +137,7 @@ msgid "Warning" msgstr "" #, elixir-format -#: lib/web/email/participation.ex:134 +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "" @@ -325,7 +320,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:46 +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -380,12 +375,12 @@ msgid "View the event on: %{link}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:32 +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:70 +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" @@ -393,7 +388,7 @@ msgstr[1] "" msgstr[2] "" #, elixir-format -#: lib/web/email/notification.ex:92 +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -1057,7 +1052,7 @@ msgid "So long, and thanks for the fish!" msgstr "" #, elixir-format -#: lib/web/email/group.ex:62 +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "" @@ -1113,12 +1108,12 @@ msgid "Your instance's moderation team has decided to suspend %{group_name} (%{g msgstr "" #, elixir-format -#: lib/web/email/group.ex:135 +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:96 +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1278,12 +1273,12 @@ msgid "You have now confirmed your participation. Update your calendar, because msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:91 +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:90 +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "" @@ -1375,3 +1370,23 @@ msgstr "" #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "" + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/cs/LC_MESSAGES/errors.po b/priv/gettext/cs/LC_MESSAGES/errors.po index fced63a6a..31ff2f843 100644 --- a/priv/gettext/cs/LC_MESSAGES/errors.po +++ b/priv/gettext/cs/LC_MESSAGES/errors.po @@ -98,12 +98,12 @@ msgid "Cannot refresh the token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:198 +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:202 +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "" @@ -113,13 +113,13 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:66 +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "" @@ -129,7 +129,7 @@ msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:258 +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "" @@ -145,16 +145,15 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "" @@ -220,22 +219,22 @@ msgid "User requested is not logged-in" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:232 +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:265 +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:229 +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:94 +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "" @@ -250,7 +249,7 @@ msgid "You need to be logged-in to change your password" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:207 +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "" @@ -260,25 +259,20 @@ msgid "You need to be logged-in to delete your account" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:237 +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:270 +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:172 +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/user.ex:58 -msgid "You need to have admin access to list users" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/user.ex:108 msgid "You need to have an existing token to get a refresh token" @@ -330,22 +324,22 @@ msgid "Profile already suspended" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:93 +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:87 +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:184 +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:181 +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "" @@ -355,7 +349,7 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:61 +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "" @@ -370,29 +364,29 @@ msgid "Error while updating report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:100 +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:193 +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "" @@ -407,14 +401,14 @@ msgid "No such feed token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:238 +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "" @@ -424,22 +418,17 @@ msgid "Person with ID %{id} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:50 +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:41 -msgid "Picture with ID %{id} was not found" -msgstr "" - -#, elixir-format -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "" @@ -454,8 +443,8 @@ msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 @@ -463,12 +452,12 @@ msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "" @@ -483,12 +472,12 @@ msgid "Resource doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:121 +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:261 +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "" @@ -514,22 +503,22 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:232 +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:131 +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:197 +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "" @@ -569,8 +558,8 @@ msgid "You are not allowed to update a comment if not connected" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" @@ -585,7 +574,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:275 +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "" @@ -635,7 +624,7 @@ msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:75 +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "" @@ -645,12 +634,12 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:210 +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:139 +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "" @@ -665,12 +654,12 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "" @@ -680,22 +669,22 @@ msgid "You need to be logged-in to delete resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:105 +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:204 +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:249 +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:176 +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "" @@ -709,11 +698,6 @@ msgstr "" msgid "You need to be logged-in to view a resource preview" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/picture.ex:79 -msgid "You need to login to upload a picture" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/resource.ex:121 msgid "Parent resource doesn't belong to this group" @@ -790,22 +774,22 @@ msgid "You can't reject this invitation with this profile." msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:71 +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:167 +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:238 +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:241 +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "" @@ -825,21 +809,27 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:344 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:72 +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:199 +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:90 +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po index d884ef020..e61f7a06d 100644 --- a/priv/gettext/de/LC_MESSAGES/default.po +++ b/priv/gettext/de/LC_MESSAGES/default.po @@ -14,275 +14,270 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.1\n" -#: lib/web/templates/email/password_reset.html.eex:48 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:48 msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" "Wenn Du diese E-Mail nicht angefordert hast, ignoriere sie bitte. Dein " "Passwort wird sich nicht ändern, solange Du den Link unten nicht besuchst " "und ein neues erstellst." -#: lib/service/export/feed.ex:170 #, elixir-format -msgid "Feed for %{email} on Mobilizon" -msgstr "Feed für %{email} auf Mobilizon" - #: lib/web/templates/email/report.html.eex:74 -#, elixir-format msgid "%{title} by %{creator}" msgstr "%{title} von %{creator}" -#: lib/web/templates/email/registration_confirmation.html.eex:58 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:58 msgid "Activate my account" msgstr "Mein Konto aktivieren" +#, elixir-format #: lib/web/templates/email/email.html.eex:117 #: lib/web/templates/email/email.text.eex:9 -#, elixir-format msgid "Ask the community on Framacolibri" msgstr "Frag die Gemeinschaft auf Framacolibri" -#: lib/web/templates/email/report.text.eex:15 #, elixir-format +#: lib/web/templates/email/report.text.eex:15 msgid "Comments" msgstr "Kommentare" +#, elixir-format #: lib/web/templates/email/report.html.eex:72 #: lib/web/templates/email/report.text.eex:11 -#, elixir-format msgid "Event" msgstr "Veranstaltung" -#: lib/web/email/user.ex:48 #, elixir-format +#: lib/web/email/user.ex:48 msgid "Instructions to reset your password on %{instance}" msgstr "Anweisungen um dein Passwort auf %{instance} zurückzusetzen" -#: lib/web/templates/email/report.text.eex:21 #, elixir-format +#: lib/web/templates/email/report.text.eex:21 msgid "Reason" msgstr "Begründung" -#: lib/web/templates/email/password_reset.html.eex:61 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:61 msgid "Reset Password" msgstr "Passwort zurücksetzen" -#: lib/web/templates/email/password_reset.html.eex:41 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:41 msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." msgstr "" "Dein Passwort zurückzusetzen ist einfach. Klicke einfach auf den Button " "unten und folge den Anweisungen. Wir kümmern uns um den Rest." -#: lib/web/email/user.ex:28 #, elixir-format +#: lib/web/email/user.ex:28 msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Anweisungen um deinen Mobilizon-Account auf %{instance} zu bestätigen" -#: lib/web/email/admin.ex:24 #, elixir-format +#: lib/web/email/admin.ex:24 msgid "New report on Mobilizon instance %{instance}" msgstr "Neue Meldung auf der Mobilizon-Instanz %{instance}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 -#, elixir-format msgid "Go to event page" msgstr "Gehe zur Veranstaltungs-Seite" -#: lib/web/templates/email/report.text.eex:1 #, elixir-format +#: lib/web/templates/email/report.text.eex:1 msgid "New report from %{reporter} on %{instance}" msgstr "Neue Meldung von %{reporter} auf %{instance}" -#: lib/web/templates/email/event_participation_approved.text.eex:1 #, elixir-format +#: lib/web/templates/email/event_participation_approved.text.eex:1 msgid "Participation approved" msgstr "Teilnahme bestätigt" +#, elixir-format #: lib/web/templates/email/password_reset.html.eex:13 #: lib/web/templates/email/password_reset.text.eex:1 -#, elixir-format msgid "Password reset" msgstr "Passwort zurückgesetzt" -#: lib/web/templates/email/password_reset.text.eex:7 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:7 msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." msgstr "" "Dein Passwort zurückzusetzen ist einfach. Klicke einfach auf den Button " "unten und folge den Anweisungen. Wir kümmern uns um den Rest." -#: lib/web/templates/email/registration_confirmation.text.eex:5 #, elixir-format +#: lib/web/templates/email/registration_confirmation.text.eex:5 msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." msgstr "" "Du hast einen Account auf %{host} mit dieser E-Mail-Adresse. Du bist nur ein " "Klick von der Aktivierung entfernt. Wenn Du das nicht warst, ignoriere diese " "E-Mail bitte." -#: lib/web/email/participation.ex:112 #, elixir-format +#: lib/web/email/participation.ex:112 msgid "Your participation to event %{title} has been approved" msgstr "Deine Teilnahme an der Veranstaltung %{title}wurde akzeptiert" -#: lib/web/email/participation.ex:70 #, elixir-format +#: lib/web/email/participation.ex:70 msgid "Your participation to event %{title} has been rejected" msgstr "Deine Teilnahme an der Veranstaltung %{title}wurde abgelehnt" -#: lib/web/email/event.ex:37 #, elixir-format +#: lib/web/email/event.ex:37 msgid "Event %{title} has been updated" msgstr "Veranstaltung %{title} wurde aktualisiert" -#: lib/web/templates/email/event_updated.text.eex:15 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:15 msgid "New title: %{title}" msgstr "Neuer Titel: %{title}" -#: lib/web/templates/email/password_reset.text.eex:5 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:5 msgid "You requested a new password for your account on %{instance}." msgstr "" "Du hast ein neues Passwort für deinen Account auf %{instance} angefragt." -#: lib/web/templates/email/email.html.eex:85 #, elixir-format +#: lib/web/templates/email/email.html.eex:85 msgid "Warning" msgstr "Warnung" -#: lib/web/email/participation.ex:134 #, elixir-format +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Meine Teilnahme an der Veranstaltung %{title} zusagen" -#: lib/web/templates/api/privacy.html.eex:75 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:75 msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "Eine interne ID für deine derzeitig ausgewählte Identität." -#: lib/web/templates/api/privacy.html.eex:74 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:74 msgctxt "terms" msgid "An internal user ID" msgstr "Ein interne Benutzer ID" -#: lib/web/templates/api/privacy.html.eex:37 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:37 msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "" "Alle Informationen, die wir über Sie sammeln, können wie folgt verwendet " "werden:" -#: lib/web/templates/api/privacy.html.eex:9 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:9 msgctxt "terms" msgid "Basic account information" msgstr "Grundlegende Kontoinformationen" -#: lib/web/templates/api/privacy.html.eex:25 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:25 msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "Teile keine gefährlichen Informationen über Mobilizon." -#: lib/web/templates/api/privacy.html.eex:90 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:90 msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "Geben wir Informationen an Dritte weiter?" -#: lib/web/templates/api/privacy.html.eex:68 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:68 msgctxt "terms" msgid "Do we use cookies?" msgstr "Benutzen wir Cookies?" -#: lib/web/templates/api/privacy.html.eex:51 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:51 msgctxt "terms" msgid "How do we protect your information?" msgstr "Wie schützen wir deinen Informationen?" -#: lib/web/templates/api/privacy.html.eex:29 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:29 msgctxt "terms" msgid "IPs and other metadata" msgstr "IPs und anderen Metadaten" -#: lib/web/templates/api/privacy.html.eex:17 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:17 msgctxt "terms" msgid "Published events and comments" msgstr "Veröffentlichte Veranstaltungen und Kommentare" -#: lib/web/templates/api/privacy.html.eex:64 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:64 msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "" "Bewahren Sie die IP-Adressen, die mit registrierten Benutzern verbunden " "sind, nicht länger als 12 Monate auf." -#: lib/web/templates/api/privacy.html.eex:76 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:76 msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Tokens, um dich zu authentifizieren" -#: lib/web/templates/api/privacy.html.eex:31 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:31 msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "" "Wir können auch Serverprotokolle aufbewahren, die die IP-Adresse jeder " "Anfrage an unseren Server enthalten." -#: lib/web/templates/api/privacy.html.eex:70 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:70 msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "" "Wir speichern auf deines Gerät die folgenden Informationen wann Du einloggst " ":" -#: lib/web/templates/api/privacy.html.eex:58 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:58 msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Wir werden uns nach besten Wissen und Gewissen dazu bemühen:" -#: lib/web/templates/api/privacy.html.eex:35 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:35 msgctxt "terms" msgid "What do we use your information for?" msgstr "Für was nutzen wir deine Informationen?" -#: lib/web/templates/api/privacy.html.eex:57 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:57 msgctxt "terms" msgid "What is our data retention policy?" msgstr "Was ist unsere Richtlinie zur Datenspeicherung?" -#: lib/web/templates/api/privacy.html.eex:67 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:67 msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Du kannst jederzeit dein Konto löschen." -#: lib/web/templates/api/privacy.html.eex:115 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:115 msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Änderungen unserer Datenschutzerklärung" -#: lib/web/templates/api/privacy.html.eex:106 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:106 msgctxt "terms" msgid "If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site." msgstr "" @@ -293,8 +288,8 @@ msgstr "" "General_Data_Protection_Regulation\">General Data Protection Regulation) " "diese Website nicht nutzen." -#: lib/web/templates/api/privacy.html.eex:109 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:109 msgctxt "terms" msgid "If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site." msgstr "" @@ -305,30 +300,30 @@ msgstr "" "27s_Online_Privacy_Protection_Act\">Children's Online Privacy Protection " "Act) nicht nutzen." -#: lib/web/templates/api/privacy.html.eex:117 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:117 msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "" "Wenn wir beschließen unsere Datenschutzerklärung zu ändern, werden wir diese " "Änderungen auf dieser Seite veröffentlichen." -#: lib/web/templates/api/privacy.html.eex:112 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:112 msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "" "Die gesetzlichen Anforderungen können unterschiedlich sein, wenn sich dieser " "Server in einer anderen Gerichtsbarkeit befindet." -#: lib/web/templates/api/privacy.html.eex:103 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:103 msgctxt "terms" msgid "Site usage by children" msgstr "Nutzung der Website durch Kinder" -#: lib/web/templates/api/privacy.html.eex:47 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:47 msgctxt "terms" msgid "The email address you provide may be used to send you information, updates and notifications about other people\n interacting with your content or sending you messages and to respond to inquiries, and/or other requests or\n questions." msgstr "" @@ -337,8 +332,8 @@ msgstr "" "die mit Ihren Inhalten interagieren oder Ihnen Nachrichten senden, sowie zur " "Beantwortung von Anfragen, und/oder anderen Bitten oder Fragen." -#: lib/web/templates/api/privacy.html.eex:45 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:45 msgctxt "terms" msgid "To aid moderation of the community, for example comparing your IP address with other known ones to determine ban\n evasion or other violations." msgstr "" @@ -346,8 +341,8 @@ msgstr "" "Ihrer IP-Adresse mit anderen bekannten IP-Adressen, um eine Ban\n" " Umgehung oder andere Verstöße zu ermitteln." -#: lib/web/templates/api/privacy.html.eex:43 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:43 msgctxt "terms" msgid "To provide the core functionality of Mobilizon. Depending on this instance's policy you may only be able to\n interact with other people's content and post your own content if you are logged in." msgstr "" @@ -356,89 +351,89 @@ msgstr "" " mit den Inhalten anderer Personen interagieren und eigene Inhalte " "veröffentlichen, wenn Sie eingeloggt sind." -#: lib/web/templates/api/privacy.html.eex:6 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:6 msgctxt "terms" msgid "What information do we collect?" msgstr "Welche Informationen sammeln wir ?" -#: lib/web/email/user.ex:176 #, elixir-format +#: lib/web/email/user.ex:176 msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon auf %{instance}: Bestätige deine E-Mail Adresse" -#: lib/web/email/user.ex:152 #, elixir-format +#: lib/web/email/user.ex:152 msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon auf %{instance}: E-Mail geändert" -#: lib/web/email/notification.ex:46 #, elixir-format +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Ein Event wurde heute geplannt" msgstr[1] "%{nb_events} wurden heute geplannt" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:38 #: lib/web/templates/email/on_day_notification.text.eex:4 -#, elixir-format msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Du hast heute ein Event:" msgstr[1] "Du hast heute %{total} Events:" -#: lib/web/templates/email/group_invite.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_invite.text.eex:3 msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} hat dich gerade in die Gruppe %{group} eingeladen" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:13 #: lib/web/templates/email/group_invite.text.eex:1 -#, elixir-format msgid "Come along!" msgstr "Komm rein!" -#: lib/web/email/notification.ex:24 #, elixir-format +#: lib/web/email/notification.ex:24 msgid "Don't forget to go to %{title}" msgstr "Vergesse nicht zu %{title} gehen" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 -#, elixir-format msgid "Get ready for %{title}" msgstr "Mach dich bereit für %{title}" -#: lib/web/templates/email/group_invite.html.eex:59 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:59 msgid "See my groups" msgstr "Zeige meine Gruppen" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:45 #: lib/web/templates/email/group_invite.text.eex:5 -#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Um diese Einladung anzunehmen, gehen Sie zu Ihren Gruppen." -#: lib/web/templates/email/before_event_notification.text.eex:5 #, elixir-format +#: lib/web/templates/email/before_event_notification.text.eex:5 msgid "View the event on: %{link}" msgstr "Zeige die aktualisierte Veranstaltung unter: %{link}" -#: lib/web/email/group.ex:32 #, elixir-format +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "Du wurdest von %{inviter} eingeladen, der Gruppe %{group} beizutreten" -#: lib/web/email/notification.ex:70 #, elixir-format +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Ein Event ist für diese Woche geplant" msgstr[1] "%{nb_events} Events sind für diese Woche geplant" -#: lib/web/email/notification.ex:92 #, elixir-format +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Eine Teilnahmeanfrage für die Veranstaltung %{title} zu bearbeiten" @@ -446,21 +441,21 @@ msgstr[1] "" "%{number_participation_requests} Teilnahmeanfragen für Veranstaltung %{title}" " zu bearbeiten" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Du hast diese Woche eine Veranstaltung:" msgstr[1] "Du hast diese Woche %{total} Veranstaltungen:" -#: lib/service/metadata/utils.ex:52 #, elixir-format +#: lib/service/metadata/utils.ex:52 msgid "The event organizer didn't add any description." msgstr "Der Eventorganisator hat keine Beschreibung hinzugefügt." -#: lib/web/templates/api/privacy.html.eex:54 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:54 msgctxt "terms" msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." msgstr "" @@ -471,8 +466,8 @@ msgstr "" "gesichert, und Ihr Passwort wird mit einem starken Einweg-Algorithmus " "gehasht." -#: lib/web/templates/api/privacy.html.eex:94 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:94 msgctxt "terms" msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." msgstr "" @@ -486,20 +481,20 @@ msgstr "" "einzuhalten, unsere Website-Richtlinien durchzusetzen oder unsere oder die " "Rechte, das Eigentum oder die Sicherheit anderer zu schützen." -#: lib/web/templates/api/terms.html.eex:23 #, elixir-format +#: lib/web/templates/api/terms.html.eex:23 msgctxt "terms" msgid "Accepting these Terms" msgstr "Akzeptiere die AGB/Bedigungen" -#: lib/web/templates/api/terms.html.eex:27 #, elixir-format +#: lib/web/templates/api/terms.html.eex:27 msgctxt "terms" msgid "Changes to these Terms" msgstr "Änderung dieser Bedingungen" -#: lib/web/templates/api/terms.html.eex:85 #, elixir-format +#: lib/web/templates/api/terms.html.eex:85 msgctxt "terms" msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." msgstr "" @@ -512,8 +507,8 @@ msgstr "" "gesamte Risiko an, das sich aus Ihrer Nutzung von oder Ihrem Vertrauen auf " "Inhalte ergibt." -#: lib/web/templates/api/terms.html.eex:60 #, elixir-format +#: lib/web/templates/api/terms.html.eex:60 msgctxt "terms" msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" msgstr "" @@ -521,8 +516,8 @@ msgstr "" "Handlungen in Verbindung mit dem Dienst oder anderen Benutzern vornehmen " "werden:" -#: lib/web/templates/api/terms.html.eex:65 #, elixir-format +#: lib/web/templates/api/terms.html.eex:65 msgctxt "terms" msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." msgstr "" @@ -530,8 +525,8 @@ msgstr "" "Ratenbegrenzungen oder anderen Funktionen, die zum Schutz des Dienstes, der " "Benutzer des Dienstes oder Dritter vorgesehen sind." -#: lib/web/templates/api/terms.html.eex:64 #, elixir-format +#: lib/web/templates/api/terms.html.eex:64 msgctxt "terms" msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" msgstr "" @@ -539,16 +534,16 @@ msgstr "" "Benutzer des Dienstes einzuschüchtern, zu bedrohen, zu belästigen oder " "anderweitig zu schikanieren;" -#: lib/web/templates/api/terms.html.eex:55 #, elixir-format +#: lib/web/templates/api/terms.html.eex:55 msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "" "Inhalte, die illegal oder ungesetzlich sind, die sonst eine Haftung " "begründen würden;" -#: lib/web/templates/api/terms.html.eex:56 #, elixir-format +#: lib/web/templates/api/terms.html.eex:56 msgctxt "terms" msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" msgstr "" @@ -557,40 +552,40 @@ msgstr "" "ein sonstiges geistiges oder sonstiges Recht einer Partei verletzen oder " "beeinträchtigen können;" -#: lib/web/templates/api/terms.html.eex:42 #, elixir-format +#: lib/web/templates/api/terms.html.eex:42 msgctxt "terms" msgid "Creating Accounts" msgstr "Account erstellen" -#: lib/web/templates/api/terms.html.eex:89 #, elixir-format +#: lib/web/templates/api/terms.html.eex:89 msgctxt "terms" msgid "Entire Agreement" msgstr "Gesamte Vereinbarung" -#: lib/web/templates/api/terms.html.eex:92 #, elixir-format +#: lib/web/templates/api/terms.html.eex:92 msgctxt "terms" msgid "Feedback" msgstr "Feedback" -#: lib/web/templates/api/terms.html.eex:83 #, elixir-format +#: lib/web/templates/api/terms.html.eex:83 msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Hyperlinks und Inhalte von Drittanbietern" -#: lib/web/templates/api/terms.html.eex:88 #, elixir-format +#: lib/web/templates/api/terms.html.eex:88 msgctxt "terms" msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." msgstr "" "Wenn Sie gegen eine dieser Bedingungen verstoßen, haben wir das Recht, Ihren " "Zugang zu oder Ihre Nutzung des Dienstes auszusetzen oder zu sperren." -#: lib/web/templates/api/terms.html.eex:63 #, elixir-format +#: lib/web/templates/api/terms.html.eex:63 msgctxt "terms" msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" msgstr "" @@ -598,8 +593,8 @@ msgstr "" "einer solchen zu posten oder anderweitig Ihre Zugehörigkeit zu einer " "natürlichen oder juristischen Person falsch darzustellen;" -#: lib/web/templates/api/terms.html.eex:48 #, elixir-format +#: lib/web/templates/api/terms.html.eex:48 msgctxt "terms" msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." msgstr "" @@ -608,26 +603,26 @@ msgstr "" "Inhalte verantwortlich, die Sie dem Dienst zur Verfügung stellen, " "einschließlich ihrer Rechtmäßigkeit, Zuverlässigkeit und Angemessenheit." -#: lib/web/templates/api/terms.html.eex:39 #, elixir-format +#: lib/web/templates/api/terms.html.eex:39 msgctxt "terms" msgid "Privacy Policy" msgstr "Datenschutzerklärung" -#: lib/web/templates/api/terms.html.eex:95 #, elixir-format +#: lib/web/templates/api/terms.html.eex:95 msgctxt "terms" msgid "Questions & Contact Information" msgstr "Fragen & Kontaktinformationen" -#: lib/web/templates/api/terms.html.eex:87 #, elixir-format +#: lib/web/templates/api/terms.html.eex:87 msgctxt "terms" msgid "Termination" msgstr "Dauer" -#: lib/web/templates/api/terms.html.eex:62 #, elixir-format +#: lib/web/templates/api/terms.html.eex:62 msgctxt "terms" msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" msgstr "" @@ -636,14 +631,14 @@ msgstr "" "zu genießen, oder die die Funktion des Dienstes beschädigen, deaktivieren, " "überlasten oder beeinträchtigen könnte;" -#: lib/web/templates/api/terms.html.eex:47 #, elixir-format +#: lib/web/templates/api/terms.html.eex:47 msgctxt "terms" msgid "Your Content & Conduct" msgstr "Ihr Inhalt & Verhalten" -#: lib/web/templates/api/terms.html.eex:84 #, elixir-format +#: lib/web/templates/api/terms.html.eex:84 msgctxt "terms" msgid "%{instance_name} makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "" @@ -656,8 +651,8 @@ msgstr "" "Die Nutzung einer solchen verlinkten Website erfolgt auf eigenes Risiko des " "Nutzers." -#: lib/web/templates/api/terms.html.eex:68 #, elixir-format +#: lib/web/templates/api/terms.html.eex:68 msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "" @@ -666,16 +661,16 @@ msgstr "" "und der Moderationsregeln. Ein Verstoß gegen diese Regeln kann auch dazu " "führen, dass Ihr Konto deaktiviert oder gesperrt wird." -#: lib/web/templates/api/terms.html.eex:81 #, elixir-format +#: lib/web/templates/api/terms.html.eex:81 msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "" "Für vollständige Informationen zur Mobilizion Software hier klicken." -#: lib/web/templates/api/terms.html.eex:18 #, elixir-format +#: lib/web/templates/api/terms.html.eex:18 msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "" @@ -685,8 +680,8 @@ msgstr "" "wissen müssen. Dies sind unsere Servicebedingungen (\"Bedingungen\"). Bitte " "lesen Sie sie sorgfältig durch." -#: lib/web/templates/api/terms.html.eex:33 #, elixir-format +#: lib/web/templates/api/terms.html.eex:33 msgctxt "terms" msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." msgstr "" @@ -696,8 +691,8 @@ msgstr "" "in Ihrer Verantwortung, die Website regelmäßig auf Änderungen an diesen " "Bedingungen zu überprüfen." -#: lib/web/templates/api/terms.html.eex:53 #, elixir-format +#: lib/web/templates/api/terms.html.eex:53 msgctxt "terms" msgid "In order to make %{instance_name} a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" msgstr "" @@ -705,16 +700,16 @@ msgstr "" "bitten wir Sie, Folgendes nicht zu posten, zu verlinken oder anderweitig auf " "oder durch den Dienst verfügbar zu machen:" -#: lib/web/templates/api/terms.html.eex:57 #, elixir-format +#: lib/web/templates/api/terms.html.eex:57 msgctxt "terms" msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" msgstr "" "Private Informationen von Dritten (z. B. Adressen, Telefonnummern, E-Mail-" "Adressen, Sozialversicherungsnummern und Kreditkartennummern); und" -#: lib/web/templates/api/terms.html.eex:52 #, elixir-format +#: lib/web/templates/api/terms.html.eex:52 msgctxt "terms" msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." msgstr "" @@ -727,8 +722,8 @@ msgstr "" "Instanz den Inhalt nicht löscht, können wir nicht verantwortlich gemacht " "werden." -#: lib/web/templates/api/terms.html.eex:90 #, elixir-format +#: lib/web/templates/api/terms.html.eex:90 msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "" @@ -737,8 +732,8 @@ msgstr "" "alle früheren Vereinbarungen zwischen Ihnen und %{instance_name} in " "Bezug auf Ihre Nutzung des Dienstes." -#: lib/web/templates/api/terms.html.eex:80 #, elixir-format +#: lib/web/templates/api/terms.html.eex:80 msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "" @@ -748,16 +743,16 @@ msgstr "" "den Quellcode übernehmen, verändern und verwenden dürfen und sogar dazu " "aufgefordert werden." -#: lib/web/templates/api/terms.html.eex:58 #, elixir-format +#: lib/web/templates/api/terms.html.eex:58 msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "" "Viren, korrumpierte Daten oder andere schädliche, störende oder " "zerstörerische Dateien oder Codes." -#: lib/web/templates/api/terms.html.eex:51 #, elixir-format +#: lib/web/templates/api/terms.html.eex:51 msgctxt "terms" msgid "You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time. Web server access logs might also be stored for some time in the system." msgstr "" @@ -767,30 +762,30 @@ msgstr "" "oder in Backups verbleiben. Webserver-Zugriffsprotokolle können ebenfalls " "für einige Zeit im System gespeichert werden." -#: lib/web/templates/api/terms.html.eex:96 #, elixir-format +#: lib/web/templates/api/terms.html.eex:96 msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "" "Fragen oder Kommentare zum Dienst können an uns gerichtet werden unter " "%{contact}" -#: lib/web/templates/api/terms.html.eex:79 #, elixir-format +#: lib/web/templates/api/terms.html.eex:79 msgctxt "terms" msgid "Source code" msgstr "Quellcode" -#: lib/web/templates/api/terms.html.eex:93 #, elixir-format +#: lib/web/templates/api/terms.html.eex:93 msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "" "Wir lieben Feedback. Bitte lass uns wissen, was du von unserem Dienst und " "den Bedigungen hälst %{instance_name}." -#: lib/web/templates/api/terms.html.eex:74 #, elixir-format +#: lib/web/templates/api/terms.html.eex:74 msgctxt "terms" msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." msgstr "" @@ -804,16 +799,16 @@ msgstr "" "verstoßen oder ein anderes Verhalten zeigen, das sie für unangemessen, " "bedrohlich, beleidigend oder schädlich halten." -#: lib/web/templates/api/terms.html.eex:6 #, elixir-format +#: lib/web/templates/api/terms.html.eex:6 msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "" "%{instance_name} wird Ihre persönlichen Daten weder nutzen noch " "weitergeben oder weiterverkaufen" -#: lib/web/templates/api/terms.html.eex:44 #, elixir-format +#: lib/web/templates/api/terms.html.eex:44 msgctxt "terms" msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact its contributors directly." msgstr "" @@ -822,8 +817,8 @@ msgstr "" "Software selbst, wenden Sie sich bitte direkt an die Mitwirkenden." -#: lib/web/templates/api/terms.html.eex:77 #, elixir-format +#: lib/web/templates/api/terms.html.eex:77 msgctxt "terms" msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." msgstr "" @@ -831,8 +826,8 @@ msgstr "" "der Instanz gehostet wird, ordnungsgemäß nach den definierten Regeln " "moderiert wird." -#: lib/web/templates/api/terms.html.eex:98 #, elixir-format +#: lib/web/templates/api/terms.html.eex:98 msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "" @@ -841,8 +836,8 @@ msgstr "" ">App.net Datenschutzrichtlinien, ebenfalls lizenziert unter CC BY-SA." -#: lib/web/templates/api/privacy.html.eex:119 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:119 msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "" @@ -851,22 +846,22 @@ msgstr "" ">Discourse Datenschutzrichtlinien, ebenfalls lizenziert unter CC BY-SA." -#: lib/web/templates/api/terms.html.eex:3 #, elixir-format +#: lib/web/templates/api/terms.html.eex:3 msgctxt "terms" msgid "Short version" msgstr "Kurzfassung" -#: lib/web/templates/api/terms.html.eex:9 #, elixir-format +#: lib/web/templates/api/terms.html.eex:9 msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "" "Der Dienst wird ohne Garantien bereitgestellt und diese Bedingungen können " "sich in Zukunft ändern" -#: lib/web/templates/api/privacy.html.eex:118 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:118 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "" @@ -874,8 +869,8 @@ msgstr "" "licenses/by-sa/4.0/\">CC BY-SA. Es wurde zuletzt am 18. Juni 2020 " "aktualisiert." -#: lib/web/templates/api/terms.html.eex:97 #, elixir-format +#: lib/web/templates/api/terms.html.eex:97 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "" @@ -883,87 +878,87 @@ msgstr "" "licenses/by-sa/4.0/\">CC BY-SA. Es wurde zuletzt am 22. Juni 2020 " "aktualisiert." -#: lib/web/templates/api/terms.html.eex:8 #, elixir-format +#: lib/web/templates/api/terms.html.eex:8 msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "" "Sie müssen andere Personen und die Regeln von %{instance_name} " "respektieren, wenn Sie den Dienst nutzen" -#: lib/web/templates/api/terms.html.eex:7 #, elixir-format +#: lib/web/templates/api/terms.html.eex:7 msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "" "Sie müssen das Gesetz respektieren, wenn Sie %{instance_name} " "verwenden" -#: lib/web/templates/api/terms.html.eex:5 #, elixir-format +#: lib/web/templates/api/terms.html.eex:5 msgctxt "terms" msgid "Your content is yours" msgstr "Ihr Inhalt gehört Ihnen" -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 msgid "Confirm my e-mail address" msgstr "Bestätigen Sie meine E-Mail Adresse" +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 -#, elixir-format msgid "Confirm your e-mail" msgstr "Bestätigen Sie Ihre E-Mail Adresse" -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "Hallo zusammen! Sie haben sich soeben für die Teilnahme an dieser " "Veranstaltung registriert: \" %{title} ». Bitte bestätigen Sie die von Ihnen " "angegebene E-Mail Adresse:" +#, elixir-format #: lib/web/templates/email/email.html.eex:114 #: lib/web/templates/email/email.text.eex:8 -#, elixir-format msgid "Need help? Is something not working as expected?" msgstr "Brauchst Du Hilfe? Funktioniert etwas nicht richtig?" -#: lib/web/templates/email/registration_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:38 msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "" "Du hast einen Account auf %{host} mit dieser E-Mail-Adresse. Du bist nur ein " "Klick von der Aktivierung entfernt." -#: lib/web/templates/email/report.html.eex:13 #, elixir-format +#: lib/web/templates/email/report.html.eex:13 msgid "New report on %{instance}" msgstr "Neue Meldung auf %{instance}" -#: lib/web/templates/email/email_changed_old.html.eex:38 #, elixir-format +#: lib/web/templates/email/email_changed_old.html.eex:38 msgid "The email address for your account on %{host} is being changed to:" msgstr "Die E-Mail-Adresse für Ihr Konto auf %{host} wird geändert in:" -#: lib/web/templates/email/password_reset.html.eex:38 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:38 msgid "You requested a new password for your account on %{instance}." msgstr "" "Du hast ein neues Passwort für deinen Account auf %{instance} angefragt." -#: lib/web/templates/email/email.text.eex:5 #, elixir-format +#: lib/web/templates/email/email.text.eex:5 msgid "Please do not use it for real purposes." msgstr "Bitte verwenden Sie es nicht für reale Zwecke." +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 #: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 -#, elixir-format msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -973,74 +968,74 @@ msgstr[1] "" "Wenn Du deine Teilnahme absagen musst, gehe einfach über obenstehenden Link " "auf die Veranstaltungs-Seite und klicke auf den Teilnahme-Button." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:38 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "Sie haben eine ausstehende Anwesenheitsanforderung zu bearbeiten:" msgstr[1] "Sie haben %{Anzahl_Teilnahmeanträge} Teilnahmeanträge zu bearbeiten:" -#: lib/web/templates/email/email.text.eex:11 #, elixir-format +#: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} ist ein Mobilizon-Server." -#: lib/web/templates/email/email.html.eex:142 #, elixir-format +#: lib/web/templates/email/email.html.eex:142 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} ist ein Mobilizon-Server." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 -#, elixir-format msgid "A request is pending!" msgstr "Es liegt eine Anfrage vor!" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 -#, elixir-format msgid "An event is upcoming!" msgstr "Eine Veranstaltung steht an!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 -#, elixir-format msgid "Confirm new email" msgstr "Neue E-Mail bestätigen" -#: lib/web/templates/email/event_updated.html.eex:84 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:84 msgid "End" msgstr "Ende" -#: lib/web/templates/email/event_updated.text.eex:21 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:21 msgid "End %{ends_on}" msgstr "Ende %{ends_on}" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:13 #: lib/web/templates/email/event_updated.text.eex:1 -#, elixir-format msgid "Event update!" msgstr "Veranstaltung aktualisiert!" -#: lib/web/templates/email/report.html.eex:88 #, elixir-format +#: lib/web/templates/email/report.html.eex:88 msgid "Flagged comments" msgstr "Markierte Kommentare" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 -#, elixir-format msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "" "Gute Nachrichten: Einer der Organisatoren hat gerade Ihre Anfrage genehmigt. " "Aktualisieren Sie Ihren Kalender, denn Sie stehen jetzt auf der Gästeliste!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:38 #: lib/web/templates/email/email_changed_new.text.eex:3 -#, elixir-format msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "Hallo zusammen! Es scheint, dass Sie die mit Ihrem Konto verknüpfte E-Mail-" @@ -1049,16 +1044,16 @@ msgstr "" "bestätigen. Sie können sich dann mit dieser neuen E-Mail-Adresse bei " "%{instance} anmelden." -#: lib/web/templates/email/email_changed_old.text.eex:3 #, elixir-format +#: lib/web/templates/email/email_changed_old.text.eex:3 msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" msgstr "" "Hallo zusammen! Nur eine kurze Notiz, um zu bestätigen, dass die mit Ihrem " "Konto auf %{host} verknüpfte E-Mail-Adresse von dieser zu geändert wurde:" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:41 #: lib/web/templates/email/email_changed_old.html.eex:65 lib/web/templates/email/email_changed_old.text.eex:5 -#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "" "Wenn Sie diese Änderung nicht selbst ausgelöst haben, ist es wahrscheinlich, " @@ -1066,180 +1061,180 @@ msgstr "" "Sie sich an und ändern Sie Ihr Passwort sofort. Wenn Sie sich nicht anmelden " "können, wenden Sie sich an den Admin auf %{host}." -#: lib/web/templates/email/password_reset.text.eex:12 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:12 msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." msgstr "" "Wenn Sie die Änderung nicht selbst ausgelöst haben, ignorieren Sie bitte " "diese Meldung. Ihr Passwort wird erst dann geändert, wenn Sie auf den obigen " "Link klicken." +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 -#, elixir-format msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Wenn Du dies nicht angefragt hast, ignoriere diese E-Mail." +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 -#, elixir-format msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "" "Wenn Du deine Teilnahme absagen musst, gehe einfach über obenstehenden Link " "auf die Veranstaltungs-Seite und klicke auf den Teilnahme-Button." +#, elixir-format #: lib/web/templates/email/email.html.eex:143 #: lib/web/templates/email/email.text.eex:11 -#, elixir-format msgid "Learn more about Mobilizon here!" msgstr "Lerne mehr über Mobilizon." -#: lib/web/templates/email/event_updated.html.eex:94 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:94 msgid "Location" msgstr "Ort" -#: lib/web/templates/email/event_updated.html.eex:104 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:104 msgid "Location address was removed" msgstr "Adresse wurde entfernt" +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:51 #: lib/web/templates/email/pending_participation_notification.text.eex:6 -#, elixir-format msgid "Manage pending requests" msgstr "Ausstehende Anfragen verwalten" +#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 -#, elixir-format msgid "Nearly there!" msgstr "Fast hier!" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 -#, elixir-format msgid "New email confirmation" msgstr "Neue E-Mail Bestätigung" -#: lib/web/templates/email/report.html.eex:106 #, elixir-format +#: lib/web/templates/email/report.html.eex:106 msgid "Reasons for report" msgstr "Gründe für Benachrichtigung" -#: lib/web/templates/email/report.html.eex:39 #, elixir-format +#: lib/web/templates/email/report.html.eex:39 msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "" "Jemand auf %{instance} hat den folgenden Inhalt gemeldet, den Sie " "analysieren können:" +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 -#, elixir-format msgid "Sorry! You're not going." msgstr "Entschuldigen Sie! Sie sind nicht dabei." -#: lib/web/templates/email/event_updated.html.eex:74 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:74 msgid "Start" msgstr "Start" -#: lib/web/templates/email/event_updated.text.eex:18 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:18 msgid "Start %{begins_on}" msgstr "Start %{begins_on}" -#: lib/web/templates/email/event_updated.text.eex:3 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:3 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "" "Es haben sich Änderungen für %{title} daher dachten wir, wir lassen es Sie " "wissen." +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:55 #: lib/web/templates/email/event_updated.text.eex:11 -#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "" "Diese Veranstaltung wurde von den Veranstaltern abgesagt. Entschuldigung!" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:51 #: lib/web/templates/email/event_updated.text.eex:7 -#, elixir-format msgid "This event has been confirmed" msgstr "Veranstaltung wurde bestätigt" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:53 #: lib/web/templates/email/event_updated.text.eex:9 -#, elixir-format msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "" "Diese Veranstaltung muss noch bestätigt werden: Die Organisatoren werden Sie " "informieren, wenn sie sie bestätigen." +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 -#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "Leider hat der Organisator deine Teilnahme abgelehnt." -#: lib/web/templates/email/email_changed_new.html.eex:51 #, elixir-format +#: lib/web/templates/email/email_changed_new.html.eex:51 msgid "Verify your email address" msgstr "Bestätig E-Mail Adresse" -#: lib/web/templates/email/report.html.eex:126 #, elixir-format +#: lib/web/templates/email/report.html.eex:126 msgid "View report" msgstr "Meldung ansehen" -#: lib/web/templates/email/report.text.eex:24 #, elixir-format +#: lib/web/templates/email/report.text.eex:24 msgid "View report:" msgstr "Meldung ansehen" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:58 #: lib/web/templates/email/event_participation_confirmed.html.eex:58 -#, elixir-format msgid "Visit event page" msgstr "Besuche die Event Seite" -#: lib/web/templates/email/event_updated.html.eex:121 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:121 msgid "Visit the updated event page" msgstr "Besuchen Sie die aktualisierte Veranstaltungsseite" -#: lib/web/templates/email/event_updated.text.eex:23 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:23 msgid "Visit the updated event page: %{link}" msgstr "Zeige die aktualisierte Veranstaltung unter: %{link}" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 -#, elixir-format msgid "What's up this week?" msgstr "Was gibt's diese Woche?" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 -#, elixir-format msgid "What's up today?" msgstr "Was gibt's heute?" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 -#, elixir-format msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" "Möchten Sie Ihre Teilnahme aktualisieren oder stornieren, rufen Sie einfach " "die Veranstaltungsseite über den obigen Link auf und klicken Sie auf die " "Schaltfläche \"Teilnehmen\"." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:64 #: lib/web/templates/email/pending_participation_notification.text.eex:8 -#, elixir-format msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" "Sie erhalten diese E-Mail, weil Sie sich dafür entschieden haben, " @@ -1248,133 +1243,133 @@ msgstr "" "in den Einstellungen Ihres Benutzerkontos unter \" Benachrichtigungen \" " "deaktivieren oder ändern." -#: lib/web/templates/email/event_participation_rejected.text.eex:5 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.text.eex:5 msgid "You issued a request to attend %{title}." msgstr "Sie haben eine Anfrage zur Teilnahme an %{title} gestellt." +#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Du hast angefragt, an der Veranstaltung %{title} teilzunehmen." +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:13 #: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 -#, elixir-format msgid "You're going!" msgstr "Sie sind dabei!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 -#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "" "Wenn Sie die Änderung nicht selbst ausgelöst haben, ignorieren Sie bitte " "diese Meldung." -#: lib/web/templates/email/email.html.eex:89 #, elixir-format +#: lib/web/templates/email/email.html.eex:89 msgid "Please do not use it for real purposes." msgstr "Bitte verwenden Sie es nicht für reale Zwecke." +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 -#, elixir-format msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "" "Wenn Sie der Meinung sind, dass dies ein Fehler ist, können Sie sich an die " "Administratoren der Gruppe wenden, damit diese Sie wieder hinzufügen können." +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 -#, elixir-format msgid "So long, and thanks for the fish!" msgstr "Macht's gut und danke für den Fisch!" -#: lib/web/email/group.ex:62 #, elixir-format +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "Sie wurden aus der Gruppe %{group} entfernt" -#: lib/web/templates/email/group_member_removal.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_member_removal.text.eex:3 msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." msgstr "" "Du wurdest aus der Gruppe %{group} entfernt. Sie werden nicht mehr auf den " "privaten Inhalt dieser Gruppe zugreifen können." -#: lib/web/templates/email/group_invite.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:38 msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "" "%{inviter} hat Sie gerade eingeladen, seiner Gruppe beizutreten " "%{link_start}%{group}%{link_end}" -#: lib/web/templates/email/group_member_removal.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_member_removal.html.eex:38 msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "" "Sie wurden aus der Gruppe %{link_start}%{group}%{link_end} entfernt. " "Sie werden nicht mehr auf den privaten Inhalt dieser Gruppe zugreifen können." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:54 #: lib/web/templates/email/group_suspension.text.eex:7 -#, elixir-format msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "" "Da sich diese Gruppe auf einer anderen Instanz befand, funktioniert sie auch " "weiterhin für andere Instanzen als diese." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:46 #: lib/web/templates/email/group_suspension.text.eex:5 -#, elixir-format msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "" "Da sich diese Gruppe auf dieser Instanz befand, wurden alle ihre Daten " "unwiederbringlich gelöscht." +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:38 #: lib/web/templates/email/group_deletion.text.eex:3 -#, elixir-format msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "" "Der Administrator %{author} hat die Gruppe %{group} gelöscht. Alle " "Ereignisse, Diskussionen, Beiträge und ToDos der Gruppe wurden gelöscht." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:13 #: lib/web/templates/email/group_suspension.text.eex:1 -#, elixir-format msgid "The group %{group} has been suspended on %{instance}!" msgstr "Die Gruppe %{group} wurde auf %{instance} suspendiert!" +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:13 #: lib/web/templates/email/group_deletion.text.eex:1 -#, elixir-format msgid "The group %{group} was deleted on %{instance}!" msgstr "Die Gruppe %{group} wurde auf %{instance} gelöscht!" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:38 #: lib/web/templates/email/group_suspension.text.eex:3 -#, elixir-format msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" "Das Moderationsteam Ihrer Instanz hat beschlossen, %{group_name} " "(%{group_address}) zu suspendieren. Sie sind nicht länger ein Mitglied " "dieser Gruppe." -#: lib/web/email/group.ex:135 #, elixir-format +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "Die Gruppe %{group} wurde auf %{instance} gelöscht" -#: lib/web/email/group.ex:96 #, elixir-format +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "Die Gruppe %{group} wurde auf %{instance} ausgesetzt" -#: lib/web/templates/api/terms.html.eex:24 #, elixir-format +#: lib/web/templates/api/terms.html.eex:24 msgctxt "terms" msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." msgstr "" @@ -1383,8 +1378,8 @@ msgstr "" "diese Bedingungen in irgendeiner Weise unklar sein, teilen Sie uns dies " "bitte mit, indem Sie sich an %{contact} wenden." -#: lib/web/templates/api/terms.html.eex:40 #, elixir-format +#: lib/web/templates/api/terms.html.eex:40 msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "" @@ -1392,22 +1387,22 @@ msgstr "" "sammeln und verwenden, finden Sie in unserer Datenschutzrichtlinie." -#: lib/web/templates/api/terms.html.eex:36 #, elixir-format +#: lib/web/templates/api/terms.html.eex:36 msgctxt "terms" msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." msgstr "" "Wenn Sie den Dienst nach Inkrafttreten der überarbeiteten Bedingungen " "weiterhin nutzen, akzeptieren Sie die überarbeiteten Bedingungen." -#: lib/web/templates/api/privacy.html.eex:78 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:78 msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "Wenn Sie diese Informationen löschen, müssen Sie sich erneut anmelden." -#: lib/web/templates/api/privacy.html.eex:80 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:80 msgctxt "terms" msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." msgstr "" @@ -1418,22 +1413,22 @@ msgstr "" "Teilnahmestatus anzeigen können. Wenn Sie diese Informationen löschen, wird " "lediglich die Anzeige des Teilnahmestatus in Ihrem Browser beendet." -#: lib/web/templates/api/privacy.html.eex:87 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:87 msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "" "Hinweis: Diese Informationen werden in Ihrem lokalem Speicher und nicht in " "Ihren Cookies gespeichert." -#: lib/web/templates/api/terms.html.eex:71 #, elixir-format +#: lib/web/templates/api/terms.html.eex:71 msgctxt "terms" msgid "Our responsibility" msgstr "Unsere Verantwortung" -#: lib/web/templates/api/privacy.html.eex:61 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:61 msgctxt "terms" msgid "Retain server logs containing the IP address of all requests to this server, insofar as such logs are kept, no more than 90 days." msgstr "" @@ -1441,9 +1436,9 @@ msgstr "" "Server enthalten, sofern solche Protokolle geführt werden, nicht länger als " "90 Tage auf." +#, elixir-format #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 -#, elixir-format msgctxt "terms" msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary to help you understand them better." msgstr "" @@ -1452,16 +1447,16 @@ msgstr "" "\"/glossary\">Glossar bereitgestellt, um Ihnen das Verständnis zu " "erleichtern." -#: lib/web/templates/api/terms.html.eex:45 #, elixir-format +#: lib/web/templates/api/terms.html.eex:45 msgctxt "terms" msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." msgstr "" "Wir haften nicht für Verluste, die Ihnen dadurch entstehen, dass jemand " "anderes Ihre E-Mail oder Ihr Passwort mit oder ohne Ihr Wissen verwendet." -#: lib/web/templates/api/terms.html.eex:50 #, elixir-format +#: lib/web/templates/api/terms.html.eex:50 msgctxt "terms" msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." msgstr "" @@ -1471,8 +1466,8 @@ msgstr "" "Ihren Inhalten behalten Sie alle Rechte an den Inhalten, die Sie im oder " "über den Dienst veröffentlichen, verlinken oder anderweitig verfügbar machen." -#: lib/web/templates/api/privacy.html.eex:10 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:10 msgctxt "terms" msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter an email address, a password (hashed) and at least an username. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" @@ -1490,8 +1485,8 @@ msgstr "" "Headerbild werden immer öffentlich aufgelistet. Sie können diese " "Instanz jedoch auch ohne Registrierung besuchen." -#: lib/web/templates/api/terms.html.eex:30 #, elixir-format +#: lib/web/templates/api/terms.html.eex:30 msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" @@ -1499,8 +1494,8 @@ msgstr "" "Beispiel kann es sein, dass wir diese Bedingungen ändern müssen, wenn wir " "eine neue Funktion einführen." -#: lib/web/templates/api/terms.html.eex:20 #, elixir-format +#: lib/web/templates/api/terms.html.eex:20 msgctxt "terms" msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by Framasoft, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the \"About this instance\" page." msgstr "" @@ -1514,8 +1509,8 @@ msgstr "" "Weitere Informationen über diese Instanz finden Sie auf der Seite \"Über diese Instanz\"." -#: lib/web/templates/api/terms.html.eex:43 #, elixir-format +#: lib/web/templates/api/terms.html.eex:43 msgctxt "terms" msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to %{instance_name}." msgstr "" @@ -1525,8 +1520,8 @@ msgstr "" "alle anderen Informationen, die Sie %{instance_name} zur Verfügung " "stellen." -#: lib/web/templates/api/terms.html.eex:49 #, elixir-format +#: lib/web/templates/api/terms.html.eex:49 msgctxt "terms" msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." msgstr "" @@ -1540,8 +1535,8 @@ msgstr "" "werden die Sichtbarkeit der Inhalte, die Sie eingestellt haben, nicht " "verändern." -#: lib/web/templates/api/privacy.html.eex:19 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:19 msgctxt "terms" msgid "Your events and comments are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." msgstr "" @@ -1556,8 +1551,8 @@ msgstr "" "solche Nachrichten und Informationen sehen können und dass die Empfänger " "Screenshots machen, sie kopieren oder anderweitig weitergeben können." -#: lib/web/templates/api/privacy.html.eex:99 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:99 msgctxt "terms" msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." msgstr "" @@ -1568,166 +1563,186 @@ msgstr "" "weitergeleitet, sofern sich diese Mitglieder auf einer anderen Instanz als " "dieser befinden." -#: lib/web/templates/email/event_participation_confirmed.text.eex:4 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.text.eex:4 msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Sie haben Ihre Teilnahme bestätigt. Aktualisieren Sie Ihren Kalender, denn " "Sie stehen jetzt auf der Gästeliste!" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:38 #: lib/web/templates/email/event_participation_confirmed.html.eex:38 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Du hast angefragt, an der Veranstaltung %{title} teilzunehmen." -#: lib/web/email/participation.ex:91 #, elixir-format +#: lib/web/email/participation.ex:91 msgid "Your participation to event %{title} has been confirmed" msgstr "Deine Teilnahme an der Veranstaltung %{title}wurde akzeptiert" -#: lib/web/templates/email/report.html.eex:41 #, elixir-format +#: lib/web/templates/email/report.html.eex:41 msgid "%{reporter} reported the following content." msgstr "" "%{reporter_name} (%{reporter_username}) hat den folgenden Inhalt gemeldet." -#: lib/web/templates/email/report.text.eex:5 #, elixir-format +#: lib/web/templates/email/report.text.eex:5 msgid "Group %{group} was reported" msgstr "Gruppe %{group} wurde gemeldet" -#: lib/web/templates/email/report.html.eex:51 #, elixir-format +#: lib/web/templates/email/report.html.eex:51 msgid "Group reported" msgstr "Gruppe wurde gemeldet" -#: lib/web/templates/email/report.text.eex:7 #, elixir-format +#: lib/web/templates/email/report.text.eex:7 msgid "Profile %{profile} was reported" msgstr "Profil %{profile} wurde gemeldet" -#: lib/web/templates/email/report.html.eex:56 #, elixir-format +#: lib/web/templates/email/report.html.eex:56 msgid "Profile reported" msgstr "Profil gemeldet" -#: lib/web/templates/email/event_participation_confirmed.html.eex:45 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.html.eex:45 msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Sie haben nun Ihre Teilnahme bestätigt. Aktualisieren Sie Ihren Kalender, " "denn Sie stehen jetzt auf der Gästeliste!" -#: lib/mobilizon/posts/post.ex:91 #, elixir-format +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "Für die Stelle wird ein Text benötigt" -#: lib/mobilizon/posts/post.ex:90 #, elixir-format +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "Für die Stelle wird ein Titel benötigt" -#: lib/web/templates/email/instance_follow.text.eex:3 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:3 msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "%{name} (%{domain}) hat soeben angefordert, Ihrer Instanz zu folgen." -#: lib/web/email/follow.ex:54 #, elixir-format +#: lib/web/email/follow.ex:54 msgid "%{name} requests to follow your instance" msgstr "%{name} bittet darum, Ihrer Instanz zu folgen" -#: lib/web/templates/email/instance_follow.html.eex:38 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:38 msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "" "%{name} (%{domain}) hat gerade angefordert, Ihrer Instanz zu folgen. " "Wenn Sie akzeptieren, erhält diese Instanz alle öffentlichen Ereignisse " "Ihrer Instanz." -#: lib/web/templates/email/instance_follow.text.eex:4 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:4 msgid "If you accept, this instance will receive all of your public events." msgstr "" "Wenn Sie akzeptieren, erhält diese Instanz alle Ihre öffentlichen Ereignisse." -#: lib/web/email/follow.ex:48 #, elixir-format +#: lib/web/email/follow.ex:48 msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "Instanz %{name} (%{domain}) bittet darum, Ihrer Instanz zu folgen" -#: lib/web/templates/email/instance_follow.html.eex:66 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:66 msgid "See the federation settings" msgstr "Siehe in den Einstellungen für die Föderation" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:52 #: lib/web/templates/email/instance_follow.text.eex:6 -#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "" "Um diese Einladung anzunehmen, gehen Sie zu den Admin-Einstellungen der " "Instanz." +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:13 #: lib/web/templates/email/instance_follow.text.eex:1 -#, elixir-format msgid "Want to connect?" msgstr "Sie wollen sich verbinden?" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:45 #: lib/web/templates/email/instance_follow.text.eex:5 -#, elixir-format msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "" "Hinweis: Wenn %{name} (%{domain}) Ihnen folgt, bedeutet das nicht unbedingt, " "dass Sie dieser Instanz folgen, aber Sie können darum bitten, ihnen " "ebenfalls zu folgen." -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "Hallo zusammen! Sie haben sich soeben für die Teilnahme an dieser " "Veranstaltung registriert: \" %{title} \". Bitte bestätigen Sie die " "von Ihnen angegebene E-Mail Adresse:" -#: lib/web/templates/email/event_participation_rejected.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.html.eex:38 msgid "You issued a request to attend %{title}." msgstr "Sie haben eine Anfrage zur Teilnahme an %{title} gestellt." -#: lib/web/templates/email/event_updated.html.eex:64 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:64 msgid "Event title" msgstr "Veranstaltung" -#: lib/web/templates/email/event_updated.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:38 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "" "Es gibt Änderungen für %{title}, also dachten wir, wir lassen Sie das " "wissen." -#: lib/web/templates/error/500_page.html.eex:46 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:46 msgid "The Mobilizon server seems to be temporarily down." msgstr "Der Mobilizon-Server scheint vorübergehend nicht erreichbar zu sein." -#: lib/web/templates/error/500_page.html.eex:7 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:7 msgid "This page is not correct" msgstr "Diese Seite ist nicht korrekt" -#: lib/web/templates/error/500_page.html.eex:45 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:45 msgid "We're sorry, but something went wrong on our end." msgstr "Es tut uns leid, aber auf unserer Seite ist etwas schief gelaufen." +#, elixir-format #: lib/web/templates/email/email.html.eex:88 #: lib/web/templates/email/email.text.eex:4 -#, elixir-format msgid "This is a demonstration site to test Mobilizon." msgstr "Dies ist eine Demo-Seite, um die Beta-Version von Mobilizon zu testen." + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/de/LC_MESSAGES/errors.po b/priv/gettext/de/LC_MESSAGES/errors.po index bef0c8d01..15697e536 100644 --- a/priv/gettext/de/LC_MESSAGES/errors.po +++ b/priv/gettext/de/LC_MESSAGES/errors.po @@ -93,783 +93,773 @@ msgstr "muss größer oder gleich %{number} sein" msgid "must be equal to %{number}" msgstr "muss gleich %{number} sein" -#: lib/graphql/resolvers/user.ex:103 #, elixir-format +#: lib/graphql/resolvers/user.ex:103 msgid "Cannot refresh the token" msgstr "Der Token konnte nicht aktualisiert werden" -#: lib/graphql/resolvers/group.ex:198 #, elixir-format +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "Aktuelles Profil ist nicht Mitglied dieser Gruppe" -#: lib/graphql/resolvers/group.ex:202 #, elixir-format +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "Aktuelles Profil ist kein Administrator der ausgewählten Gruppe" -#: lib/graphql/resolvers/user.ex:512 #, elixir-format +#: lib/graphql/resolvers/user.ex:512 msgid "Error while saving user settings" msgstr "Fehler beim Speichern von Benutzereinstellungen" -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 #, elixir-format +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "Gruppe nicht gefunden" -#: lib/graphql/resolvers/group.ex:66 #, elixir-format +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "Gruppe mit der ID %{id} nicht gefunden" -#: lib/graphql/resolvers/user.ex:83 #, elixir-format +#: lib/graphql/resolvers/user.ex:83 msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" "Die Authentifizierung ist nicht möglich, entweder Ihre E-Mail oder Ihr " "Passwort sind ungültig." -#: lib/graphql/resolvers/group.ex:258 #, elixir-format +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "Mitglied wurde nicht gefunden" +#, elixir-format #: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 #: lib/graphql/resolvers/user.ex:417 -#, elixir-format msgid "No profile found for the moderator user" msgstr "Kein Profil für den Moderator-Benutzer gefunden" -#: lib/graphql/resolvers/user.ex:195 #, elixir-format +#: lib/graphql/resolvers/user.ex:195 msgid "No user to validate with this email was found" msgstr "" "Es wurde kein Benutzer gefunden, der mit dieser E-Mail validiert werden kann" -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 #, elixir-format +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "Es wurde kein Benutzer mit dieser E-Mail gefunden" -#: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:28 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "Profil ist nicht im Besitz des authentifizierten Benutzers" -#: lib/graphql/resolvers/user.ex:125 #, elixir-format +#: lib/graphql/resolvers/user.ex:125 msgid "Registrations are not open" msgstr "Registrierungen sind nicht geöffnet" -#: lib/graphql/resolvers/user.ex:330 #, elixir-format +#: lib/graphql/resolvers/user.ex:330 msgid "The current password is invalid" msgstr "Das aktuelle Passwort ist ungültig" -#: lib/graphql/resolvers/user.ex:382 #, elixir-format +#: lib/graphql/resolvers/user.ex:382 msgid "The new email doesn't seem to be valid" msgstr "Die neue E-Mail scheint nicht gültig zu sein" -#: lib/graphql/resolvers/user.ex:379 #, elixir-format +#: lib/graphql/resolvers/user.ex:379 msgid "The new email must be different" msgstr "Die neue E-Mail muss anders lauten" -#: lib/graphql/resolvers/user.ex:333 #, elixir-format +#: lib/graphql/resolvers/user.ex:333 msgid "The new password must be different" msgstr "Das neue Passwort muss anders lauten" +#, elixir-format #: lib/graphql/resolvers/user.ex:376 lib/graphql/resolvers/user.ex:439 #: lib/graphql/resolvers/user.ex:442 -#, elixir-format msgid "The password provided is invalid" msgstr "Das angegebene Passwort ist ungültig" -#: lib/graphql/resolvers/user.ex:337 #, 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." msgstr "" "Das von Ihnen gewählte Passwort ist zu kurz. Bitte stellen Sie sicher, dass " "Ihr Passwort mindestens 6 Zeichen enthält." -#: lib/graphql/resolvers/user.ex:215 #, elixir-format +#: lib/graphql/resolvers/user.ex:215 msgid "This user can't reset their password" msgstr "Dieser Benutzer kann sein Passwort nicht zurücksetzen" -#: lib/graphql/resolvers/user.ex:79 #, elixir-format +#: lib/graphql/resolvers/user.ex:79 msgid "This user has been disabled" msgstr "Dieser Benutzer wurde deaktiviert" -#: lib/graphql/resolvers/user.ex:179 #, elixir-format +#: lib/graphql/resolvers/user.ex:179 msgid "Unable to validate user" msgstr "Benutzer kann nicht validiert werden" -#: lib/graphql/resolvers/user.ex:420 #, elixir-format +#: lib/graphql/resolvers/user.ex:420 msgid "User already disabled" msgstr "Benutzer bereits deaktiviert" -#: lib/graphql/resolvers/user.ex:487 #, elixir-format +#: lib/graphql/resolvers/user.ex:487 msgid "User requested is not logged-in" msgstr "Angeforderter Benutzer ist nicht eingeloggt" -#: lib/graphql/resolvers/group.ex:232 #, elixir-format +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "Sie sind bereits Mitglied in dieser Gruppe" -#: lib/graphql/resolvers/group.ex:265 #, elixir-format +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "" "Sie können diese Gruppe nicht verlassen, da Sie der einzige Administrator " "sind" -#: lib/graphql/resolvers/group.ex:229 #, elixir-format +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "Sie können dieser Gruppe nicht beitreten" -#: lib/graphql/resolvers/group.ex:94 #, elixir-format +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "Sie dürfen keine Gruppen auflisten, es sei denn, Sie sind Moderator." -#: lib/graphql/resolvers/user.ex:387 #, elixir-format +#: lib/graphql/resolvers/user.ex:387 msgid "You need to be logged-in to change your email" msgstr "Sie müssen eingeloggt sein, um Ihre E-Mail zu ändern" -#: lib/graphql/resolvers/user.ex:345 #, elixir-format +#: lib/graphql/resolvers/user.ex:345 msgid "You need to be logged-in to change your password" msgstr "Sie müssen eingeloggt sein, um Ihr Passwort zu ändern" -#: lib/graphql/resolvers/group.ex:207 #, elixir-format +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "Sie müssen eingeloggt sein, um eine Gruppe zu löschen" -#: lib/graphql/resolvers/user.ex:447 #, elixir-format +#: lib/graphql/resolvers/user.ex:447 msgid "You need to be logged-in to delete your account" msgstr "Sie müssen eingeloggt sein, um Ihr Konto zu löschen" -#: lib/graphql/resolvers/group.ex:237 #, elixir-format +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "Sie müssen eingeloggt sein, um einer Gruppe beizutreten" -#: lib/graphql/resolvers/group.ex:270 #, elixir-format +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "Sie müssen eingeloggt sein, um eine Gruppe zu verlassen" -#: lib/graphql/resolvers/group.ex:172 #, elixir-format +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "Sie müssen eingeloggt sein, um eine Gruppe zu aktualisieren" -#: lib/graphql/resolvers/user.ex:58 #, elixir-format -msgid "You need to have admin access to list users" -msgstr "Sie müssen über Administratorrechte verfügen, um Benutzer aufzulisten" - #: lib/graphql/resolvers/user.ex:108 -#, elixir-format msgid "You need to have an existing token to get a refresh token" msgstr "" "Sie müssen ein bestehendes Token haben, um ein Refresh-Token zu erhalten" -#: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 #, elixir-format +#: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 msgid "You requested again a confirmation email too soon" msgstr "Sie haben erneut eine Bestätigungs-E-Mail zu früh angefordert" -#: lib/graphql/resolvers/user.ex:128 #, elixir-format +#: lib/graphql/resolvers/user.ex:128 msgid "Your email is not on the allowlist" msgstr "Ihre E-Mail ist nicht in der Zulassungsliste enthalten" -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 #, elixir-format +#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 msgid "Error while performing background task" msgstr "Fehler beim Ausführen einer Hintergrundaufgabe" -#: lib/graphql/resolvers/actor.ex:27 #, elixir-format +#: lib/graphql/resolvers/actor.ex:27 msgid "No profile found with this ID" msgstr "Kein Profil mit dieser ID gefunden" -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 #, elixir-format +#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 msgid "No remote profile found with this ID" msgstr "Kein entferntes Profil mit dieser ID gefunden" -#: lib/graphql/resolvers/actor.ex:69 #, elixir-format +#: lib/graphql/resolvers/actor.ex:69 msgid "Only moderators and administrators can suspend a profile" msgstr "Nur Moderatoren und Administratoren können ein Profil sperren" -#: lib/graphql/resolvers/actor.ex:99 #, elixir-format +#: lib/graphql/resolvers/actor.ex:99 msgid "Only moderators and administrators can unsuspend a profile" msgstr "Nur Moderatoren und Administratoren können ein Profil unsuspendieren" -#: lib/graphql/resolvers/actor.ex:24 #, elixir-format +#: lib/graphql/resolvers/actor.ex:24 msgid "Only remote profiles may be refreshed" msgstr "Nur entfernte Profile können aufgefrischt werden" -#: lib/graphql/resolvers/actor.ex:61 #, elixir-format +#: lib/graphql/resolvers/actor.ex:61 msgid "Profile already suspended" msgstr "Profil bereits gesperrt" -#: lib/graphql/resolvers/participant.ex:93 #, elixir-format +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "Eine gültige E-Mail wird von Ihrer Instanz benötigt" -#: lib/graphql/resolvers/participant.ex:87 #, elixir-format +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "Anonyme Teilnahme ist nicht möglich" -#: lib/graphql/resolvers/person.ex:184 #, elixir-format +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "Der letzte Administrator einer Gruppe kann nicht entfernt werden" -#: lib/graphql/resolvers/person.ex:181 #, elixir-format +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "Kann die letzte Identität eines Benutzers nicht entfernen" -#: lib/graphql/resolvers/comment.ex:105 #, elixir-format +#: lib/graphql/resolvers/comment.ex:105 msgid "Comment is already deleted" msgstr "Kommentar ist bereits gelöscht" -#: lib/graphql/resolvers/discussion.ex:61 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "Diskussion nicht gefunden" -#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 #, elixir-format +#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 msgid "Error while saving report" msgstr "Fehler beim Speichern des Reports" -#: lib/graphql/resolvers/report.ex:96 #, elixir-format +#: lib/graphql/resolvers/report.ex:96 msgid "Error while updating report" msgstr "Fehler beim Aktualisieren des Reports" -#: lib/graphql/resolvers/participant.ex:128 #, elixir-format +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "Veranstaltungs-ID nicht gefunden" -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 #, elixir-format +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "Veranstaltung nicht gefunden" -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 #, elixir-format +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "Veranstaltung mit dieser ID %{id} existiert nicht" -#: lib/graphql/resolvers/participant.ex:100 #, elixir-format +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "Interner Fehler" -#: lib/graphql/resolvers/discussion.ex:193 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "Keine Diskussion mit ID %{id}" -#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 #, elixir-format +#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 msgid "No profile found for user" msgstr "Kein Profil für Benutzer gefunden" -#: lib/graphql/resolvers/feed_token.ex:63 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:63 msgid "No such feed token" msgstr "Kein solches Feed-Token" -#: lib/graphql/resolvers/participant.ex:238 #, elixir-format +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "Teilnehmer hat bereits Rolle %{role}" -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 #, elixir-format +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "Teilnehmer nicht gefunden" -#: lib/graphql/resolvers/person.ex:29 #, elixir-format +#: lib/graphql/resolvers/person.ex:29 msgid "Person with ID %{id} not found" msgstr "Person mit ID %{id} nicht gefunden" -#: lib/graphql/resolvers/person.ex:50 #, elixir-format +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "Person mit Benutzernamen %{username} nicht gefunden" -#: lib/graphql/resolvers/picture.ex:41 -#, elixir-format -msgid "Picture with ID %{id} was not found" -msgstr "Bild mit ID %{id} wurde nicht gefunden" - -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 #, elixir-format +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "Post-ID ist keine gültige ID" -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 #, elixir-format +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "Beitrag existiert nicht" -#: lib/graphql/resolvers/member.ex:83 #, elixir-format +#: lib/graphql/resolvers/member.ex:83 msgid "Profile invited doesn't exist" msgstr "Eingeladenes Profil existiert nicht Eingeladenes Profil existiert nicht" -#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 #, elixir-format +#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 msgid "Profile is already a member of this group" msgstr "" "Profil ist bereits Mitglied in dieser Gruppe Profil ist bereits Mitglied in " "dieser Gruppe" -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#, elixir-format +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 -#, elixir-format msgid "Profile is not member of group" msgstr "Profil ist nicht Mitglied der Gruppe" -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 #, elixir-format +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "Profil nicht gefunden" -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 #, elixir-format +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "Dieses Moderatorenprofil hat keine Berechtigung für diese Veranstaltung" -#: lib/graphql/resolvers/report.ex:36 #, elixir-format +#: lib/graphql/resolvers/report.ex:36 msgid "Report not found" msgstr "Meldung nicht gefunden" -#: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 #, elixir-format +#: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 msgid "Resource doesn't exist" msgstr "Ressource ist nicht vorhanden" -#: lib/graphql/resolvers/participant.ex:121 #, elixir-format +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "Die Veranstaltung hat bereits ihre maximale Kapazität erreicht" -#: lib/graphql/resolvers/participant.ex:261 #, elixir-format +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "Dieses Token ist ungültig" -#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 #, elixir-format +#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 msgid "Todo doesn't exist" msgstr "Todo existiert nicht" +#, elixir-format #: lib/graphql/resolvers/todos.ex:75 lib/graphql/resolvers/todos.ex:191 #: lib/graphql/resolvers/todos.ex:216 -#, elixir-format msgid "Todo list doesn't exist" msgstr "ToDo-Liste existiert nicht" -#: lib/graphql/resolvers/feed_token.ex:69 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:69 msgid "Token does not exist" msgstr "Token existiert nicht" -#: lib/graphql/resolvers/feed_token.ex:66 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:66 msgid "Token is not a valid UUID" msgstr "Token ist keine gültige UUID" -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 #, elixir-format +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "User nicht gefunden" -#: lib/graphql/resolvers/person.ex:232 #, elixir-format +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "Sie haben bereits ein Profil für diesen Benutzer" -#: lib/graphql/resolvers/participant.ex:131 #, elixir-format +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "Sie sind bereits ein Teilnehmer dieser Veranstaltung" -#: lib/graphql/resolvers/discussion.ex:197 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "Sie sind kein Mitglied der Gruppe, zu der die Diskussion gehört" -#: lib/graphql/resolvers/member.ex:86 #, elixir-format +#: lib/graphql/resolvers/member.ex:86 msgid "You are not a member of this group" msgstr "Sie sind nicht Mitglied in dieser Gruppe" -#: lib/graphql/resolvers/member.ex:151 #, elixir-format +#: lib/graphql/resolvers/member.ex:151 msgid "You are not a moderator or admin for this group" msgstr "Sie sind kein Moderator oder Admin für diese Gruppe" -#: lib/graphql/resolvers/comment.ex:51 #, elixir-format +#: lib/graphql/resolvers/comment.ex:51 msgid "You are not allowed to create a comment if not connected" msgstr "Wenn Sie nicht verbunden sind, dürfen Sie keinen Kommentar erstellen" -#: lib/graphql/resolvers/feed_token.ex:41 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:41 msgid "You are not allowed to create a feed token if not connected" msgstr "Sie dürfen kein Feed-Token erstellen, wenn Sie nicht verbunden sind" -#: lib/graphql/resolvers/comment.ex:110 #, elixir-format +#: lib/graphql/resolvers/comment.ex:110 msgid "You are not allowed to delete a comment if not connected" msgstr "Sie dürfen einen Kommentar nicht löschen, wenn Sie nicht verbunden sind" -#: lib/graphql/resolvers/feed_token.ex:78 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:78 msgid "You are not allowed to delete a feed token if not connected" msgstr "Sie dürfen ein Feed-Token nicht löschen, wenn keine Verbindung besteht" -#: lib/graphql/resolvers/comment.ex:73 #, elixir-format +#: lib/graphql/resolvers/comment.ex:73 msgid "You are not allowed to update a comment if not connected" msgstr "" "Sie dürfen einen Kommentar nicht aktualisieren, wenn Sie nicht verbunden sind" -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 #, elixir-format +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" "Sie können die Veranstaltung nicht verlassen, weil Sie der einzige " "Teilnehmer sind, der die Veranstaltung erstellt" -#: lib/graphql/resolvers/member.ex:155 #, elixir-format +#: lib/graphql/resolvers/member.ex:155 msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgstr "" "Sie können sich nicht auf eine niedrigere Mitgliedsrolle für diese Gruppe " "einstellen, da Sie der einzige Administrator sind" -#: lib/graphql/resolvers/comment.ex:101 #, elixir-format +#: lib/graphql/resolvers/comment.ex:101 msgid "You cannot delete this comment" msgstr "Sie können diesen Kommentar nicht löschen" -#: lib/graphql/resolvers/event.ex:275 #, elixir-format +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "Sie können diese Veranstaltung nicht löschen" -#: lib/graphql/resolvers/member.ex:89 #, elixir-format +#: lib/graphql/resolvers/member.ex:89 msgid "You cannot invite to this group" msgstr "Sie können nicht in diese Gruppe einladen" -#: lib/graphql/resolvers/feed_token.ex:72 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:72 msgid "You don't have permission to delete this token" msgstr "Sie haben nicht die Berechtigung diesen Token zu löschen" -#: lib/graphql/resolvers/admin.ex:52 #, elixir-format +#: lib/graphql/resolvers/admin.ex:52 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" "Sie müssen eingeloggt und ein Moderator sein, um Aktionsprotokolle " "aufzulisten" -#: lib/graphql/resolvers/report.ex:26 #, elixir-format +#: lib/graphql/resolvers/report.ex:26 msgid "You need to be logged-in and a moderator to list reports" msgstr "Sie müssen eingeloggt und ein Moderator sein, um Berichte aufzulisten" -#: lib/graphql/resolvers/report.ex:101 #, elixir-format +#: lib/graphql/resolvers/report.ex:101 msgid "You need to be logged-in and a moderator to update a report" msgstr "" "Sie müssen eingeloggt und ein Moderator sein, um einen Bericht zu " "aktualisieren" -#: lib/graphql/resolvers/report.ex:41 #, elixir-format +#: lib/graphql/resolvers/report.ex:41 msgid "You need to be logged-in and a moderator to view a report" msgstr "Sie müssen eingeloggt und ein Moderator sein, um einen Bericht zu sehen" -#: lib/graphql/resolvers/admin.ex:236 #, elixir-format +#: lib/graphql/resolvers/admin.ex:236 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Sie müssen angemeldet und ein Administrator sein, um auf die Admin-" "Einstellungen zugreifen zu können" -#: lib/graphql/resolvers/admin.ex:221 #, elixir-format +#: lib/graphql/resolvers/admin.ex:221 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Sie müssen angemeldet und ein Administrator sein, um auf die Dashboard-" "Statistiken zugreifen zu können" -#: lib/graphql/resolvers/admin.ex:260 #, elixir-format +#: lib/graphql/resolvers/admin.ex:260 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Sie müssen eingeloggt und ein Administrator sein, um Admin-Einstellungen zu " "speichern" -#: lib/graphql/resolvers/discussion.ex:75 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "Sie müssen eingeloggt sein, um auf Diskussionen zugreifen zu können" -#: lib/graphql/resolvers/resource.ex:93 #, elixir-format +#: lib/graphql/resolvers/resource.ex:93 msgid "You need to be logged-in to access resources" msgstr "Sie müssen eingeloggt sein, um auf Ressourcen zugreifen zu können" -#: lib/graphql/resolvers/event.ex:210 #, elixir-format +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "Sie müssen eingeloggt sein, um Ereignisse zu erstellen" -#: lib/graphql/resolvers/post.ex:139 #, elixir-format +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "Sie müssen eingeloggt sein, um Beiträge zu erstellen" -#: lib/graphql/resolvers/report.ex:74 #, elixir-format +#: lib/graphql/resolvers/report.ex:74 msgid "You need to be logged-in to create reports" msgstr "Sie müssen eingeloggt sein, um Berichte zu erstellen" -#: lib/graphql/resolvers/resource.ex:129 #, elixir-format +#: lib/graphql/resolvers/resource.ex:129 msgid "You need to be logged-in to create resources" msgstr "Sie müssen eingeloggt sein, um Ressourcen zu erstellen" -#: lib/graphql/resolvers/event.ex:284 #, elixir-format +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "Sie müssen eingeloggt sein, um ein Ereignis zu löschen" -#: lib/graphql/resolvers/post.ex:209 #, elixir-format +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "Sie müssen eingeloggt sein, um Beiträge zu löschen" -#: lib/graphql/resolvers/resource.ex:187 #, elixir-format +#: lib/graphql/resolvers/resource.ex:187 msgid "You need to be logged-in to delete resources" msgstr "Sie müssen eingeloggt sein, um Ressourcen zu löschen" -#: lib/graphql/resolvers/participant.ex:105 #, elixir-format +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "Sie müssen eingeloggt sein, um einer Veranstaltung beizutreten" -#: lib/graphql/resolvers/participant.ex:204 #, elixir-format +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "Sie müssen eingeloggt sein, um eine Veranstaltung zu verlassen" -#: lib/graphql/resolvers/event.ex:249 #, elixir-format +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "Sie müssen eingeloggt sein, um ein Ereignis zu aktualisieren" -#: lib/graphql/resolvers/post.ex:176 #, elixir-format +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "Sie müssen eingeloggt sein, um Beiträge zu aktualisieren" -#: lib/graphql/resolvers/resource.ex:158 #, elixir-format +#: lib/graphql/resolvers/resource.ex:158 msgid "You need to be logged-in to update resources" msgstr "Sie müssen eingeloggt sein, um Ressourcen zu aktualisieren" -#: lib/graphql/resolvers/resource.ex:210 #, elixir-format +#: lib/graphql/resolvers/resource.ex:210 msgid "You need to be logged-in to view a resource preview" msgstr "Sie müssen eingeloggt sein, um eine Ressourcenvorschau zu sehen" -#: lib/graphql/resolvers/picture.ex:79 #, elixir-format -msgid "You need to login to upload a picture" -msgstr "Sie müssen sich anmelden, um ein Bild hochzuladen" - #: lib/graphql/resolvers/resource.ex:121 -#, elixir-format msgid "Parent resource doesn't belong to this group" msgstr "Die übergeordnete Ressource gehört nicht zu dieser Gruppe" -#: lib/mobilizon/users/user.ex:109 #, elixir-format +#: lib/mobilizon/users/user.ex:109 msgid "The chosen password is too short." msgstr "Das gewählte Passwort ist zu kurz." -#: lib/mobilizon/users/user.ex:138 #, elixir-format +#: lib/mobilizon/users/user.ex:138 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" "Das Registrierungs-Token ist bereits in Gebrauch, dies sieht nach einem " "Problem auf unserer Seite aus." -#: lib/mobilizon/users/user.ex:104 #, elixir-format +#: lib/mobilizon/users/user.ex:104 msgid "This email is already used." msgstr "Diese E-Mail wird bereits verwendet." -#: lib/graphql/error.ex:88 #, elixir-format +#: lib/graphql/error.ex:88 msgid "Post not found" msgstr "Beitrag nicht gefunden" -#: lib/graphql/error.ex:75 #, elixir-format +#: lib/graphql/error.ex:75 msgid "Invalid arguments passed" msgstr "Ungültige Argumente übergeben" -#: lib/graphql/error.ex:81 #, elixir-format +#: lib/graphql/error.ex:81 msgid "Invalid credentials" msgstr "Ungültige Anmeldeinformationen" -#: lib/graphql/error.ex:79 #, elixir-format +#: lib/graphql/error.ex:79 msgid "Reset your password to login" msgstr "Passwort zurücksetzen" -#: lib/graphql/error.ex:86 lib/graphql/error.ex:91 #, elixir-format +#: lib/graphql/error.ex:86 lib/graphql/error.ex:91 msgid "Resource not found" msgstr "Ressource nicht gefunden" -#: lib/graphql/error.ex:92 #, elixir-format +#: lib/graphql/error.ex:92 msgid "Something went wrong" msgstr "Etwas lief falsch" -#: lib/graphql/error.ex:74 #, elixir-format +#: lib/graphql/error.ex:74 msgid "Unknown Resource" msgstr "Unbekannte Ressource" -#: lib/graphql/error.ex:84 #, elixir-format +#: lib/graphql/error.ex:84 msgid "You don't have permission to do this" msgstr "Sie haben nicht die Berechtigung dies zu tun" -#: lib/graphql/error.ex:76 #, elixir-format +#: lib/graphql/error.ex:76 msgid "You need to be logged in" msgstr "Sie müssen eingeloggt sein" -#: lib/graphql/resolvers/member.ex:116 #, elixir-format +#: lib/graphql/resolvers/member.ex:116 msgid "You can't accept this invitation with this profile." msgstr "Sie können diese Einladung mit diesem Profil nicht annehmen." -#: lib/graphql/resolvers/member.ex:134 #, elixir-format +#: lib/graphql/resolvers/member.ex:134 msgid "You can't reject this invitation with this profile." msgstr "Sie können diese Einladung mit diesem Profil nicht ablehnen." -#: lib/graphql/resolvers/picture.ex:71 #, elixir-format +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "Die Datei hat keinen zulässigen MIME-Typ." -#: lib/graphql/resolvers/group.ex:167 #, elixir-format +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "Profil ist nicht Administrator für die Gruppe" -#: lib/graphql/resolvers/event.ex:238 #, elixir-format +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "Sie können dieses Ereignis nicht bearbeiten." -#: lib/graphql/resolvers/event.ex:241 #, elixir-format +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "Sie können dieses Ereignis nicht diesem Profil zuordnen." -#: lib/graphql/resolvers/member.ex:137 #, elixir-format +#: lib/graphql/resolvers/member.ex:137 msgid "This invitation doesn't exist." msgstr "Diese Einladung gibt es nicht." -#: lib/graphql/resolvers/member.ex:179 #, elixir-format +#: lib/graphql/resolvers/member.ex:179 msgid "This member already has been rejected." msgstr "Dieses Mitglied ist bereits abgelehnt worden." -#: lib/graphql/resolvers/member.ex:186 #, elixir-format +#: lib/graphql/resolvers/member.ex:186 msgid "You don't have the right to remove this member." msgstr "Sie haben nicht das Recht, dieses Mitglied zu entfernen." -#: lib/mobilizon/actors/actor.ex:344 #, elixir-format +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "Dieser Benutzername ist bereits vergeben." -#: lib/graphql/resolvers/discussion.ex:72 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" "Sie müssen entweder eine ID oder einen Slug angeben, um auf eine Diskussion " "zuzugreifen" -#: lib/graphql/resolvers/event.ex:199 #, elixir-format +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "Organizer-Profil ist nicht im Besitz des Benutzers" -#: lib/graphql/resolvers/participant.ex:90 #, elixir-format +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "Die angegebene Profil-ID ist nicht die des anonymen Profils" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index 35c972d53..125de0f9a 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -3,11 +3,6 @@ msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" -#, elixir-format -#: lib/service/export/feed.ex:170 -msgid "Feed for %{email} on Mobilizon" -msgstr "" - #, elixir-format #: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" @@ -128,7 +123,7 @@ msgid "Warning" msgstr "" #, elixir-format -#: lib/web/email/participation.ex:134 +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "" @@ -311,7 +306,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:46 +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -364,19 +359,19 @@ msgid "View the event on: %{link}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:32 +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:70 +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" msgstr[1] "" #, elixir-format -#: lib/web/email/notification.ex:92 +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -1036,7 +1031,7 @@ msgid "So long, and thanks for the fish!" msgstr "" #, elixir-format -#: lib/web/email/group.ex:62 +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "" @@ -1092,12 +1087,12 @@ msgid "Your instance's moderation team has decided to suspend %{group_name} (%{g msgstr "" #, elixir-format -#: lib/web/email/group.ex:135 +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:96 +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1257,12 +1252,12 @@ msgid "You have now confirmed your participation. Update your calendar, because msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:91 +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:90 +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "" @@ -1354,3 +1349,23 @@ msgstr "" #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "" + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index dfe9e5b80..dfd9b553b 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -26,11 +26,6 @@ msgstr "" msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." -#, elixir-format -#: lib/service/export/feed.ex:170 -msgid "Feed for %{email} on Mobilizon" -msgstr "Feed for %{email} on Mobilizon" - #, elixir-format #: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" @@ -151,7 +146,7 @@ msgid "Warning" msgstr "Warning" #, elixir-format -#: lib/web/email/participation.ex:134 +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Confirm your participation to event %{title}" @@ -364,7 +359,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:46 +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -417,19 +412,19 @@ msgid "View the event on: %{link}" msgstr "View the updated event on: %{link}" #, elixir-format -#: lib/web/email/group.ex:32 +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:70 +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" msgstr[1] "" #, elixir-format -#: lib/web/email/notification.ex:92 +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -1089,7 +1084,7 @@ msgid "So long, and thanks for the fish!" msgstr "" #, elixir-format -#: lib/web/email/group.ex:62 +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "" @@ -1145,12 +1140,12 @@ msgid "Your instance's moderation team has decided to suspend %{group_name} (%{g msgstr "" #, elixir-format -#: lib/web/email/group.ex:135 +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:96 +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1310,12 +1305,12 @@ msgid "You have now confirmed your participation. Update your calendar, because msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:91 +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:90 +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "" @@ -1407,3 +1402,23 @@ msgstr "" #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "This is a demonstration site to test the beta version of Mobilizon." + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/errors.po b/priv/gettext/en/LC_MESSAGES/errors.po index 891144ecd..8b86938e3 100644 --- a/priv/gettext/en/LC_MESSAGES/errors.po +++ b/priv/gettext/en/LC_MESSAGES/errors.po @@ -102,12 +102,12 @@ msgid "Cannot refresh the token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:198 +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:202 +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "" @@ -117,13 +117,13 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:66 +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "" @@ -133,7 +133,7 @@ msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:258 +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "" @@ -149,16 +149,15 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "" @@ -224,22 +223,22 @@ msgid "User requested is not logged-in" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:232 +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:265 +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:229 +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:94 +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "" @@ -254,7 +253,7 @@ msgid "You need to be logged-in to change your password" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:207 +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "" @@ -264,25 +263,20 @@ msgid "You need to be logged-in to delete your account" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:237 +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:270 +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:172 +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/user.ex:58 -msgid "You need to have admin access to list users" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/user.ex:108 msgid "You need to have an existing token to get a refresh token" @@ -334,22 +328,22 @@ msgid "Profile already suspended" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:93 +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:87 +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:184 +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:181 +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "" @@ -359,7 +353,7 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:61 +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "" @@ -374,29 +368,29 @@ msgid "Error while updating report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:100 +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:193 +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "" @@ -411,14 +405,14 @@ msgid "No such feed token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:238 +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "" @@ -428,22 +422,17 @@ msgid "Person with ID %{id} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:50 +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:41 -msgid "Picture with ID %{id} was not found" -msgstr "" - -#, elixir-format -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "" @@ -458,8 +447,8 @@ msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 @@ -467,12 +456,12 @@ msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "" @@ -487,12 +476,12 @@ msgid "Resource doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:121 +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:261 +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "" @@ -518,22 +507,22 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:232 +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:131 +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:197 +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "" @@ -573,8 +562,8 @@ msgid "You are not allowed to update a comment if not connected" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" @@ -589,7 +578,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:275 +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "" @@ -639,7 +628,7 @@ msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:75 +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "" @@ -649,12 +638,12 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:210 +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:139 +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "" @@ -669,12 +658,12 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "" @@ -684,22 +673,22 @@ msgid "You need to be logged-in to delete resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:105 +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:204 +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:249 +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:176 +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "" @@ -713,11 +702,6 @@ msgstr "" msgid "You need to be logged-in to view a resource preview" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/picture.ex:79 -msgid "You need to login to upload a picture" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/resource.ex:121 msgid "Parent resource doesn't belong to this group" @@ -794,22 +778,22 @@ msgid "You can't reject this invitation with this profile." msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:71 +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:167 +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:238 +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:241 +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "" @@ -829,21 +813,27 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:344 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:72 +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:199 +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:90 +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/errors.pot b/priv/gettext/errors.pot index c82c80b7b..1943ac3e6 100644 --- a/priv/gettext/errors.pot +++ b/priv/gettext/errors.pot @@ -99,12 +99,12 @@ msgid "Cannot refresh the token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:198 +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:202 +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "" @@ -114,13 +114,13 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:66 +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "" @@ -130,7 +130,7 @@ msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:258 +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "" @@ -146,16 +146,15 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "" @@ -221,22 +220,22 @@ msgid "User requested is not logged-in" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:232 +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:265 +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:229 +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:94 +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "" @@ -251,7 +250,7 @@ msgid "You need to be logged-in to change your password" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:207 +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "" @@ -261,25 +260,20 @@ msgid "You need to be logged-in to delete your account" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:237 +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:270 +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:172 +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/user.ex:58 -msgid "You need to have admin access to list users" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/user.ex:108 msgid "You need to have an existing token to get a refresh token" @@ -331,22 +325,22 @@ msgid "Profile already suspended" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:93 +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:87 +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:184 +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:181 +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "" @@ -356,7 +350,7 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:61 +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "" @@ -371,29 +365,29 @@ msgid "Error while updating report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:100 +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:193 +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "" @@ -408,14 +402,14 @@ msgid "No such feed token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:238 +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "" @@ -425,22 +419,17 @@ msgid "Person with ID %{id} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:50 +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:41 -msgid "Picture with ID %{id} was not found" -msgstr "" - -#, elixir-format -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "" @@ -455,8 +444,8 @@ msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 @@ -464,12 +453,12 @@ msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "" @@ -484,12 +473,12 @@ msgid "Resource doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:121 +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:261 +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "" @@ -515,22 +504,22 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:232 +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:131 +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:197 +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "" @@ -570,8 +559,8 @@ msgid "You are not allowed to update a comment if not connected" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" @@ -586,7 +575,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:275 +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "" @@ -636,7 +625,7 @@ msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:75 +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "" @@ -646,12 +635,12 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:210 +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:139 +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "" @@ -666,12 +655,12 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "" @@ -681,22 +670,22 @@ msgid "You need to be logged-in to delete resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:105 +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:204 +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:249 +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:176 +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "" @@ -710,11 +699,6 @@ msgstr "" msgid "You need to be logged-in to view a resource preview" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/picture.ex:79 -msgid "You need to login to upload a picture" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/resource.ex:121 msgid "Parent resource doesn't belong to this group" @@ -791,22 +775,22 @@ msgid "You can't reject this invitation with this profile." msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:71 +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:167 +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:238 +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:241 +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "" @@ -826,21 +810,27 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:344 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:72 +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:199 +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:90 +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/es/LC_MESSAGES/default.po b/priv/gettext/es/LC_MESSAGES/default.po index 57f758dd6..4e86e49cc 100644 --- a/priv/gettext/es/LC_MESSAGES/default.po +++ b/priv/gettext/es/LC_MESSAGES/default.po @@ -21,11 +21,6 @@ msgstr "" "Si no solicitaste este correo, simplemente ignóralo. Su contraseña no " "cambiará al menos que use el siguiente enlace para crear una nueva." -#, elixir-format -#: lib/service/export/feed.ex:170 -msgid "Feed for %{email} on Mobilizon" -msgstr "Feed para% {email} en Mobilizon" - #, elixir-format #: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" @@ -153,7 +148,7 @@ msgid "Warning" msgstr "Advertencia" #, elixir-format -#: lib/web/email/participation.ex:134 +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Confirme su participación en el evento %{title}" @@ -371,7 +366,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon en %{instance}: correo electrónico modificado" #, elixir-format -#: lib/web/email/notification.ex:46 +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un evento programado para hoy" @@ -424,19 +419,19 @@ msgid "View the event on: %{link}" msgstr "Ver el evento actualizado en: %{link}" #, elixir-format -#: lib/web/email/group.ex:32 +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{Inviter} te ha invitado a unirte al grupo %{group}" #, elixir-format -#: lib/web/email/notification.ex:70 +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un evento programado para hoy" msgstr[1] "%{nb_events} eventos planeados hoy" #, elixir-format -#: lib/web/email/notification.ex:92 +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Una solicitud para participar en el evento %{title} a procesar" @@ -1268,7 +1263,7 @@ msgid "So long, and thanks for the fish!" msgstr "¡Hasta luego y gracias por el pescado!" #, elixir-format -#: lib/web/email/group.ex:62 +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "Ha sido eliminado del grupo %{group}" @@ -1338,12 +1333,12 @@ msgstr "" " (%{group_address}). Ya no eres miembro de este grupo." #, elixir-format -#: lib/web/email/group.ex:135 +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "El grupo %{group} se eliminó en %{instance}" #, elixir-format -#: lib/web/email/group.ex:96 +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "El grupo %{group} ha sido suspendido en %{instance}" @@ -1589,12 +1584,12 @@ msgstr "" "está en la lista de invitados!" #, elixir-format -#: lib/mobilizon/posts/post.ex:91 +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "Se requiere un texto para la publicación" #, elixir-format -#: lib/mobilizon/posts/post.ex:90 +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "Se requiere un título para la publicación" @@ -1692,3 +1687,23 @@ msgstr "Lo sentimos, pero algo salió mal por nuestra parte." #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Este es un sitio de demostración para probar Mobilizon." + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/es/LC_MESSAGES/errors.po b/priv/gettext/es/LC_MESSAGES/errors.po index 5d99f0e2a..9f87cefe3 100644 --- a/priv/gettext/es/LC_MESSAGES/errors.po +++ b/priv/gettext/es/LC_MESSAGES/errors.po @@ -93,774 +93,764 @@ msgstr "debe ser mayor o igual que% {number}" msgid "must be equal to %{number}" msgstr "debe ser igual a% {number}" -#: lib/graphql/resolvers/user.ex:103 #, elixir-format +#: lib/graphql/resolvers/user.ex:103 msgid "Cannot refresh the token" msgstr "No se puede actualizar el token" -#: lib/graphql/resolvers/group.ex:198 #, elixir-format +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "El perfil actual no es miembro de este grupo" -#: lib/graphql/resolvers/group.ex:202 #, elixir-format +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "El perfil actual no es un administrador del grupo seleccionado" -#: lib/graphql/resolvers/user.ex:512 #, elixir-format +#: lib/graphql/resolvers/user.ex:512 msgid "Error while saving user settings" msgstr "Error al guardar los parámetros del usuario" -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 #, elixir-format +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "Grupo no encontrado" -#: lib/graphql/resolvers/group.ex:66 #, elixir-format +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "No se encontró el grupo con ID% {id}" -#: lib/graphql/resolvers/user.ex:83 #, elixir-format +#: lib/graphql/resolvers/user.ex:83 msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" "Imposible autenticarse, su correo electrónico o contraseña no son válidos." -#: lib/graphql/resolvers/group.ex:258 #, elixir-format +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "Miembro no encontrado" +#, elixir-format #: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 #: lib/graphql/resolvers/user.ex:417 -#, elixir-format msgid "No profile found for the moderator user" msgstr "No se encontró el perfil del usuario moderador" -#: lib/graphql/resolvers/user.ex:195 #, elixir-format +#: lib/graphql/resolvers/user.ex:195 msgid "No user to validate with this email was found" msgstr "No se encontró ningún usuario para validar con este correo electrónico" -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 #, elixir-format +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "No se encontró ningún usuario con este correo electrónico" -#: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:28 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "El perfil no es propiedad del usuario autenticado" -#: lib/graphql/resolvers/user.ex:125 #, elixir-format +#: lib/graphql/resolvers/user.ex:125 msgid "Registrations are not open" msgstr "Las inscripciones no están abiertas" -#: lib/graphql/resolvers/user.ex:330 #, elixir-format +#: lib/graphql/resolvers/user.ex:330 msgid "The current password is invalid" msgstr "La contraseña actual no es válida" -#: lib/graphql/resolvers/user.ex:382 #, elixir-format +#: lib/graphql/resolvers/user.ex:382 msgid "The new email doesn't seem to be valid" msgstr "El nuevo correo electrónico no parece ser válido" -#: lib/graphql/resolvers/user.ex:379 #, elixir-format +#: lib/graphql/resolvers/user.ex:379 msgid "The new email must be different" msgstr "El nuevo correo electrónico debe ser diferente" -#: lib/graphql/resolvers/user.ex:333 #, elixir-format +#: lib/graphql/resolvers/user.ex:333 msgid "The new password must be different" 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:442 -#, elixir-format msgid "The password provided is invalid" msgstr "La contraseña proporcionada no es válida" -#: lib/graphql/resolvers/user.ex:337 #, 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." msgstr "" "La contraseña que ha elegido es demasiado corta. Asegúrese de que su " "contraseña contenga al menos 6 caracteres." -#: lib/graphql/resolvers/user.ex:215 #, elixir-format +#: lib/graphql/resolvers/user.ex:215 msgid "This user can't reset their password" msgstr "Este usuario no puede restablecer su contraseña" -#: lib/graphql/resolvers/user.ex:79 #, elixir-format +#: lib/graphql/resolvers/user.ex:79 msgid "This user has been disabled" msgstr "Este usuario ha sido inhabilitado" -#: lib/graphql/resolvers/user.ex:179 #, elixir-format +#: lib/graphql/resolvers/user.ex:179 msgid "Unable to validate user" msgstr "No se puede validar al usuario" -#: lib/graphql/resolvers/user.ex:420 #, elixir-format +#: lib/graphql/resolvers/user.ex:420 msgid "User already disabled" msgstr "El usuario ya está inhabilitado" -#: lib/graphql/resolvers/user.ex:487 #, elixir-format +#: lib/graphql/resolvers/user.ex:487 msgid "User requested is not logged-in" msgstr "El usuario solicitado no ha iniciado sesión" -#: lib/graphql/resolvers/group.ex:232 #, elixir-format +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "Ya eres miembro de este grupo" -#: lib/graphql/resolvers/group.ex:265 #, elixir-format +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "No puedes dejar este grupo porque eres el único administrador" -#: lib/graphql/resolvers/group.ex:229 #, elixir-format +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "No puedes unirte a este grupo" -#: lib/graphql/resolvers/group.ex:94 #, elixir-format +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "No puedes enumerar grupos a menos que seas moderador." -#: lib/graphql/resolvers/user.ex:387 #, elixir-format +#: lib/graphql/resolvers/user.ex:387 msgid "You need to be logged-in to change your email" msgstr "Debes iniciar sesión para cambiar tu correo electrónico" -#: lib/graphql/resolvers/user.ex:345 #, elixir-format +#: lib/graphql/resolvers/user.ex:345 msgid "You need to be logged-in to change your password" msgstr "Debes iniciar sesión para cambiar tu contraseña" -#: lib/graphql/resolvers/group.ex:207 #, elixir-format +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "Debes iniciar sesión para eliminar un grupo" -#: lib/graphql/resolvers/user.ex:447 #, elixir-format +#: lib/graphql/resolvers/user.ex:447 msgid "You need to be logged-in to delete your account" msgstr "Debes iniciar sesión para eliminar su cuenta" -#: lib/graphql/resolvers/group.ex:237 #, elixir-format +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "Debes iniciar sesión para eliminar su cuenta" -#: lib/graphql/resolvers/group.ex:270 #, elixir-format +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "Debes iniciar sesión para dejar un grupo" -#: lib/graphql/resolvers/group.ex:172 #, elixir-format +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "Debes iniciar sesión para actualizar un grupo" -#: lib/graphql/resolvers/user.ex:58 #, elixir-format -msgid "You need to have admin access to list users" -msgstr "Necesitas tener acceso de administrador para listar usuarios" - #: lib/graphql/resolvers/user.ex:108 -#, elixir-format 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" -#: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 #, elixir-format +#: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 msgid "You requested again a confirmation email too soon" msgstr "" "Solicitó de nuevo un correo electrónico de confirmación demasiado pronto" -#: lib/graphql/resolvers/user.ex:128 #, elixir-format +#: lib/graphql/resolvers/user.ex:128 msgid "Your email is not on the allowlist" 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 +#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 msgid "Error while performing background task" msgstr "Error al realizar la tarea en segundo plano" -#: lib/graphql/resolvers/actor.ex:27 #, elixir-format +#: lib/graphql/resolvers/actor.ex:27 msgid "No profile found with this 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 +#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 msgid "No remote profile found with this ID" msgstr "No se encontró ningún perfil remoto con este ID" -#: lib/graphql/resolvers/actor.ex:69 #, elixir-format +#: lib/graphql/resolvers/actor.ex:69 msgid "Only moderators and administrators can suspend a profile" msgstr "Solo los moderadores y administradores pueden suspender un perfil" -#: lib/graphql/resolvers/actor.ex:99 #, elixir-format +#: lib/graphql/resolvers/actor.ex:99 msgid "Only moderators and administrators can unsuspend a profile" msgstr "" "Solo los moderadores y administradores pueden anular la suspensión de un " "perfil" -#: lib/graphql/resolvers/actor.ex:24 #, elixir-format +#: lib/graphql/resolvers/actor.ex:24 msgid "Only remote profiles may be refreshed" msgstr "Solo se pueden actualizar los perfiles remotos" -#: lib/graphql/resolvers/actor.ex:61 #, elixir-format +#: lib/graphql/resolvers/actor.ex:61 msgid "Profile already suspended" msgstr "Perfil ya suspendido" -#: lib/graphql/resolvers/participant.ex:93 #, elixir-format +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "Su instancia requiere un correo electrónico válido" -#: lib/graphql/resolvers/participant.ex:87 #, elixir-format +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "La participación anónima no está habilitada" -#: lib/graphql/resolvers/person.ex:184 #, elixir-format +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "No se puede eliminar al último administrador de un grupo" -#: lib/graphql/resolvers/person.ex:181 #, elixir-format +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "No se puede eliminar la última identidad de un usuario" -#: lib/graphql/resolvers/comment.ex:105 #, elixir-format +#: lib/graphql/resolvers/comment.ex:105 msgid "Comment is already deleted" msgstr "El comentario ya está eliminado" -#: lib/graphql/resolvers/discussion.ex:61 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "Discusión no encontrada" -#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 #, elixir-format +#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 msgid "Error while saving report" msgstr "Error al guardar el informe" -#: lib/graphql/resolvers/report.ex:96 #, elixir-format +#: lib/graphql/resolvers/report.ex:96 msgid "Error while updating report" msgstr "Error al actualizar el informe" -#: lib/graphql/resolvers/participant.ex:128 #, elixir-format +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "ID de evento no encontrado" -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 #, elixir-format +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "Evento no encontrado" -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 #, elixir-format +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "El evento con este ID%{id} no existe" -#: lib/graphql/resolvers/participant.ex:100 #, elixir-format +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "Error interno" -#: lib/graphql/resolvers/discussion.ex:193 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "Sin discusión con ID%{id}" -#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 #, elixir-format +#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 msgid "No profile found for user" msgstr "No se encontró perfil para el usuario" -#: lib/graphql/resolvers/feed_token.ex:63 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:63 msgid "No such feed token" msgstr "No existe tal token de alimentación" -#: lib/graphql/resolvers/participant.ex:238 #, elixir-format +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "El participante ya tiene el rol%{role}" -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 #, elixir-format +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "Participante no encontrado" -#: lib/graphql/resolvers/person.ex:29 #, elixir-format +#: lib/graphql/resolvers/person.ex:29 msgid "Person with ID %{id} not found" msgstr "Persona con ID%{id} no encontrada" -#: lib/graphql/resolvers/person.ex:50 #, elixir-format +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "Persona con nombre de usuario %{username} no encontrada" -#: lib/graphql/resolvers/picture.ex:41 -#, elixir-format -msgid "Picture with ID %{id} was not found" -msgstr "No se encontró la foto con ID %{id}" - -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 #, elixir-format +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "La ID de publicación no es válida" -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 #, elixir-format +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "La publicación no existe" -#: lib/graphql/resolvers/member.ex:83 #, elixir-format +#: lib/graphql/resolvers/member.ex:83 msgid "Profile invited doesn't exist" msgstr "El perfil invitado no existe" -#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 #, elixir-format +#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 msgid "Profile is already a member of this group" msgstr "Perfil ya es miembro de este grupo" -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#, elixir-format +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 -#, elixir-format msgid "Profile is not member of group" msgstr "El perfil no es miembro del grupo" -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 #, elixir-format +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "Perfil no encontrado" -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 #, elixir-format +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "El perfil de moderador proporcionado no tiene permiso para este evento" -#: lib/graphql/resolvers/report.ex:36 #, elixir-format +#: lib/graphql/resolvers/report.ex:36 msgid "Report not found" msgstr "Informe no encontrado" -#: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 #, elixir-format +#: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 msgid "Resource doesn't exist" msgstr "El recurso no existe" -#: lib/graphql/resolvers/participant.ex:121 #, elixir-format +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "El evento ya alcanzó su capacidad máxima" -#: lib/graphql/resolvers/participant.ex:261 #, elixir-format +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "Este token no es válido" -#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 #, elixir-format +#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 msgid "Todo doesn't exist" msgstr "Todo no existe" +#, elixir-format #: lib/graphql/resolvers/todos.ex:75 lib/graphql/resolvers/todos.ex:191 #: lib/graphql/resolvers/todos.ex:216 -#, elixir-format msgid "Todo list doesn't exist" msgstr "La lista de tareas pendientes no existe" -#: lib/graphql/resolvers/feed_token.ex:69 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:69 msgid "Token does not exist" msgstr "El token no existe" -#: lib/graphql/resolvers/feed_token.ex:66 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:66 msgid "Token is not a valid UUID" msgstr "El token no es un UUID válido" -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 #, elixir-format +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "Usuario no encontrado" -#: lib/graphql/resolvers/person.ex:232 #, elixir-format +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "Ya tienes un perfil para este usuario" -#: lib/graphql/resolvers/participant.ex:131 #, elixir-format +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "Ya eres participante de este evento" -#: lib/graphql/resolvers/discussion.ex:197 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:190 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" -#: lib/graphql/resolvers/member.ex:86 #, elixir-format +#: lib/graphql/resolvers/member.ex:86 msgid "You are not a member of this group" msgstr "no eres un miembro de este grupo" -#: lib/graphql/resolvers/member.ex:151 #, elixir-format +#: lib/graphql/resolvers/member.ex:151 msgid "You are not a moderator or admin for this group" msgstr "No eres moderador ni administrador de este grupo" -#: lib/graphql/resolvers/comment.ex:51 #, elixir-format +#: lib/graphql/resolvers/comment.ex:51 msgid "You are not allowed to create a comment if not connected" msgstr "No está permitido crear un comentario si no está conectado" -#: lib/graphql/resolvers/feed_token.ex:41 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:41 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" -#: lib/graphql/resolvers/comment.ex:110 #, elixir-format +#: lib/graphql/resolvers/comment.ex:110 msgid "You are not allowed to delete a comment if not connected" msgstr "No puede eliminar un comentario si no está conectado" -#: lib/graphql/resolvers/feed_token.ex:78 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:78 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" -#: lib/graphql/resolvers/comment.ex:73 #, elixir-format +#: lib/graphql/resolvers/comment.ex:73 msgid "You are not allowed to update a comment if not connected" msgstr "No se le permite actualizar un comentario si no está conectado" -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 #, elixir-format +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" "No puedes abandonar el evento porque eres el único participante creador del " "evento" -#: lib/graphql/resolvers/member.ex:155 #, elixir-format +#: lib/graphql/resolvers/member.ex:155 msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgstr "" "No puede establecerse en un rol de miembro inferior para este grupo porque " "es el único administrador" -#: lib/graphql/resolvers/comment.ex:101 #, elixir-format +#: lib/graphql/resolvers/comment.ex:101 msgid "You cannot delete this comment" msgstr "No puedes borrar este comentario" -#: lib/graphql/resolvers/event.ex:275 #, elixir-format +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "No puedes borrar este evento" -#: lib/graphql/resolvers/member.ex:89 #, elixir-format +#: lib/graphql/resolvers/member.ex:89 msgid "You cannot invite to this group" msgstr "No puedes invitar a este grupo" -#: lib/graphql/resolvers/feed_token.ex:72 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:72 msgid "You don't have permission to delete this token" msgstr "No tienes permiso para eliminar este token" -#: lib/graphql/resolvers/admin.ex:52 #, elixir-format +#: lib/graphql/resolvers/admin.ex:52 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" "Debe iniciar sesión y un moderador para enumerar los registros de acción" -#: lib/graphql/resolvers/report.ex:26 #, elixir-format +#: lib/graphql/resolvers/report.ex:26 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" -#: lib/graphql/resolvers/report.ex:101 #, elixir-format +#: lib/graphql/resolvers/report.ex:101 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" -#: lib/graphql/resolvers/report.ex:41 #, elixir-format +#: lib/graphql/resolvers/report.ex:41 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" -#: lib/graphql/resolvers/admin.ex:236 #, elixir-format +#: lib/graphql/resolvers/admin.ex:236 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Debe iniciar sesión y ser administrador para acceder a la configuración de " "administrador" -#: lib/graphql/resolvers/admin.ex:221 #, elixir-format +#: lib/graphql/resolvers/admin.ex:221 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Debe iniciar sesión y ser administrador para acceder a las estadísticas del " "panel" -#: lib/graphql/resolvers/admin.ex:260 #, elixir-format +#: lib/graphql/resolvers/admin.ex:260 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Debe iniciar sesión y ser administrador para acceder a las estadísticas del " "panel" -#: lib/graphql/resolvers/discussion.ex:75 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "Debe iniciar sesión para acceder a las discusiones" -#: lib/graphql/resolvers/resource.ex:93 #, elixir-format +#: lib/graphql/resolvers/resource.ex:93 msgid "You need to be logged-in to access resources" msgstr "Debes iniciar sesión para acceder a los recursos" -#: lib/graphql/resolvers/event.ex:210 #, elixir-format +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "Debes iniciar sesión para crear eventos" -#: lib/graphql/resolvers/post.ex:139 #, elixir-format +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "Debes iniciar sesión para crear publicaciones" -#: lib/graphql/resolvers/report.ex:74 #, elixir-format +#: lib/graphql/resolvers/report.ex:74 msgid "You need to be logged-in to create reports" msgstr "Debe iniciar sesión para crear informes" -#: lib/graphql/resolvers/resource.ex:129 #, elixir-format +#: lib/graphql/resolvers/resource.ex:129 msgid "You need to be logged-in to create resources" msgstr "Debe iniciar sesión para crear recursos" -#: lib/graphql/resolvers/event.ex:284 #, elixir-format +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "Debe iniciar sesión para eliminar un evento" -#: lib/graphql/resolvers/post.ex:209 #, elixir-format +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "Debes iniciar sesión para eliminar publicaciones" -#: lib/graphql/resolvers/resource.ex:187 #, elixir-format +#: lib/graphql/resolvers/resource.ex:187 msgid "You need to be logged-in to delete resources" msgstr "Debes iniciar sesión para eliminar recursos" -#: lib/graphql/resolvers/participant.ex:105 #, elixir-format +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "Debes iniciar sesión para eliminar recursos" -#: lib/graphql/resolvers/participant.ex:204 #, elixir-format +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "Debes iniciar sesión para salir de un evento" -#: lib/graphql/resolvers/event.ex:249 #, elixir-format +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "Debe iniciar sesión para actualizar un evento" -#: lib/graphql/resolvers/post.ex:176 #, elixir-format +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "Debes iniciar sesión para actualizar las publicaciones" -#: lib/graphql/resolvers/resource.ex:158 #, elixir-format +#: lib/graphql/resolvers/resource.ex:158 msgid "You need to be logged-in to update resources" msgstr "Debes iniciar sesión para actualizar los recursos" -#: lib/graphql/resolvers/resource.ex:210 #, elixir-format +#: lib/graphql/resolvers/resource.ex:210 msgid "You need to be logged-in to view a resource preview" msgstr "Debe iniciar sesión para ver una vista previa del recurso" -#: lib/graphql/resolvers/picture.ex:79 #, elixir-format -msgid "You need to login to upload a picture" -msgstr "Debes iniciar sesión para subir una imagen" - #: lib/graphql/resolvers/resource.ex:121 -#, elixir-format msgid "Parent resource doesn't belong to this group" msgstr "El recurso principal no pertenece a este grupo" -#: lib/mobilizon/users/user.ex:109 #, elixir-format +#: lib/mobilizon/users/user.ex:109 msgid "The chosen password is too short." msgstr "La contraseña elegida es demasiado corta." -#: lib/mobilizon/users/user.ex:138 #, elixir-format +#: lib/mobilizon/users/user.ex:138 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" "El token de registro ya está en uso, esto parece un problema de nuestra " "parte." -#: lib/mobilizon/users/user.ex:104 #, elixir-format +#: lib/mobilizon/users/user.ex:104 msgid "This email is already used." msgstr "Este correo electrónico ya está en uso." -#: lib/graphql/error.ex:88 #, elixir-format +#: lib/graphql/error.ex:88 msgid "Post not found" msgstr "Informe no encontrado" -#: lib/graphql/error.ex:75 #, elixir-format +#: lib/graphql/error.ex:75 msgid "Invalid arguments passed" msgstr "Se pasaron argumentos no válidos" -#: lib/graphql/error.ex:81 #, elixir-format +#: lib/graphql/error.ex:81 msgid "Invalid credentials" msgstr "Credenciales no válidas" -#: lib/graphql/error.ex:79 #, elixir-format +#: lib/graphql/error.ex:79 msgid "Reset your password to login" msgstr "Restablezca su contraseña para iniciar sesión" -#: lib/graphql/error.ex:86 lib/graphql/error.ex:91 #, elixir-format +#: lib/graphql/error.ex:86 lib/graphql/error.ex:91 msgid "Resource not found" msgstr "Recurso no encontrado" -#: lib/graphql/error.ex:92 #, elixir-format +#: lib/graphql/error.ex:92 msgid "Something went wrong" msgstr "Algo salió mal" -#: lib/graphql/error.ex:74 #, elixir-format +#: lib/graphql/error.ex:74 msgid "Unknown Resource" msgstr "Recurso desconocido" -#: lib/graphql/error.ex:84 #, elixir-format +#: lib/graphql/error.ex:84 msgid "You don't have permission to do this" msgstr "No tienes permiso para hacer esto" -#: lib/graphql/error.ex:76 #, elixir-format +#: lib/graphql/error.ex:76 msgid "You need to be logged in" msgstr "Debes iniciar sesión" -#: lib/graphql/resolvers/member.ex:116 #, elixir-format +#: lib/graphql/resolvers/member.ex:116 msgid "You can't accept this invitation with this profile." msgstr "No puedes aceptar esta invitación con este perfil." -#: lib/graphql/resolvers/member.ex:134 #, elixir-format +#: lib/graphql/resolvers/member.ex:134 msgid "You can't reject this invitation with this profile." msgstr "No puedes rechazar esta invitación con este perfil." -#: lib/graphql/resolvers/picture.ex:71 #, elixir-format +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "El archivo no tiene un tipo MIME permitido." -#: lib/graphql/resolvers/group.ex:167 #, elixir-format +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "El perfil no es miembro del grupo" -#: lib/graphql/resolvers/event.ex:238 #, elixir-format +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "No puedes borrar este evento." -#: lib/graphql/resolvers/event.ex:241 #, elixir-format +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "No puedes rechazar esta invitación con este perfil." -#: lib/graphql/resolvers/member.ex:137 #, elixir-format +#: lib/graphql/resolvers/member.ex:137 msgid "This invitation doesn't exist." msgstr "Esta invitación no existe." -#: lib/graphql/resolvers/member.ex:179 #, elixir-format +#: lib/graphql/resolvers/member.ex:179 msgid "This member already has been rejected." msgstr "Este miembro ya ha sido rechazado." -#: lib/graphql/resolvers/member.ex:186 #, elixir-format +#: lib/graphql/resolvers/member.ex:186 msgid "You don't have the right to remove this member." msgstr "No tiene derecho a eliminar este miembro." -#: lib/mobilizon/actors/actor.ex:344 #, elixir-format +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "Este nombre de usuario ya está en uso." -#: lib/graphql/resolvers/discussion.ex:72 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" "Debe proporcionar una identificación o un slug para acceder a una discusión" -#: lib/graphql/resolvers/event.ex:199 #, elixir-format +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "El perfil del organizador no es propiedad del usuario" -#: lib/graphql/resolvers/participant.ex:90 #, elixir-format +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "El ID de perfil proporcionado no es el del perfil anónimo" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/fi/LC_MESSAGES/default.po b/priv/gettext/fi/LC_MESSAGES/default.po index c48d59aa6..34540ce97 100644 --- a/priv/gettext/fi/LC_MESSAGES/default.po +++ b/priv/gettext/fi/LC_MESSAGES/default.po @@ -21,11 +21,6 @@ msgstr "" "Jos et lähettänyt pyyntöä, voit jättää tämän viestin huomiotta. Salasanasi " "ei vaihdu, ennen kuin käytät alla olevaa linkkiä ja luot uuden salasanan." -#, elixir-format -#: lib/service/export/feed.ex:170 -msgid "Feed for %{email} on Mobilizon" -msgstr "Mobilizon-syöte osoitteeseen %{email}" - #, elixir-format #: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" @@ -153,7 +148,7 @@ msgid "Warning" msgstr "Varoitus" #, elixir-format -#: lib/web/email/participation.ex:134 +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Vahvista osallistumisesi tapahtumaan %{title}" @@ -365,7 +360,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon palvelimella %{instance}: sähköpostiosoite vaihdettu" #, elixir-format -#: lib/web/email/notification.ex:46 +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Yksi suunniteltu tapahtuma tänään" @@ -418,19 +413,19 @@ msgid "View the event on: %{link}" msgstr "Katso päivitetty tapahtuma: %{linkki}" #, elixir-format -#: lib/web/email/group.ex:32 +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} kutsui sinut ryhmään %{group}" #, elixir-format -#: lib/web/email/notification.ex:70 +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Yksi suunniteltu tapahtuma tällä viikolla" msgstr[1] "%{nb_events} suunniteltua tapahtumaa tällä viikolla" #, elixir-format -#: lib/web/email/notification.ex:92 +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Yksi osallistujapyyntö tapahtumaan %{title} odottaa käsittelyä" @@ -1248,7 +1243,7 @@ msgid "So long, and thanks for the fish!" msgstr "Näkemiin ja kiitos kaloista!" #, elixir-format -#: lib/web/email/group.ex:62 +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "Sinut on poistettu ryhmästä %{group}" @@ -1318,12 +1313,12 @@ msgstr "" "(%{group_address}). Et ole enää tämän ryhmän jäsen." #, elixir-format -#: lib/web/email/group.ex:135 +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "Ryhmä %{group} on poistettu palvelimelta %{instance}" #, elixir-format -#: lib/web/email/group.ex:96 +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "Ryhmä %{group} on estetty palvelimella %{instance}" @@ -1558,12 +1553,12 @@ msgstr "" "osallistujaluettelossa!" #, elixir-format -#: lib/mobilizon/posts/post.ex:91 +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "Julkaisuun vaaditaan tekstiä" #, elixir-format -#: lib/mobilizon/posts/post.ex:90 +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "Julkaisulle vaaditaan otsikko" @@ -1665,3 +1660,23 @@ msgstr "Pahoittelemme, tapahtui virhe palvelimen päässä." #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Tällä kokeilusivustolla voit koekäyttää Mobilizonia." + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/fi/LC_MESSAGES/errors.po b/priv/gettext/fi/LC_MESSAGES/errors.po index 56981a356..c259b0e83 100644 --- a/priv/gettext/fi/LC_MESSAGES/errors.po +++ b/priv/gettext/fi/LC_MESSAGES/errors.po @@ -93,760 +93,750 @@ msgstr "tulee olla vähintään %{number}" msgid "must be equal to %{number}" msgstr "tulee olla tasas %{number}" -#: lib/graphql/resolvers/user.ex:103 #, elixir-format +#: lib/graphql/resolvers/user.ex:103 msgid "Cannot refresh the token" msgstr "Merkkiä ei voi päivittää" -#: lib/graphql/resolvers/group.ex:198 #, elixir-format +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "Nykyinen profiili ei kuulu tähän ryhmään" -#: lib/graphql/resolvers/group.ex:202 #, elixir-format +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "Nykyinen profiili ei ole valitun ryhmän ylläpitäjä" -#: lib/graphql/resolvers/user.ex:512 #, elixir-format +#: lib/graphql/resolvers/user.ex:512 msgid "Error while saving user settings" msgstr "Käyttäjän asetusten tallennuksessa tapahtui virhe" -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 #, elixir-format +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "Ryhmää ei löydy" -#: lib/graphql/resolvers/group.ex:66 #, elixir-format +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "Tunnuksella %{id} ei löydy ryhmää" -#: lib/graphql/resolvers/user.ex:83 #, elixir-format +#: lib/graphql/resolvers/user.ex:83 msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" "Kirjautuminen epäonnistui - joko sähköpostiosoitteesi tai salasana on väärin." -#: lib/graphql/resolvers/group.ex:258 #, elixir-format +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "Jäsentä ei löydy" +#, elixir-format #: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 #: lib/graphql/resolvers/user.ex:417 -#, elixir-format msgid "No profile found for the moderator user" msgstr "Moderaattorikäyttäjän profiilia ei löydy" -#: lib/graphql/resolvers/user.ex:195 #, elixir-format +#: lib/graphql/resolvers/user.ex:195 msgid "No user to validate with this email was found" msgstr "Käyttäjää tämän sähköpostin vahvistamiseksi ei löydy" -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 #, elixir-format +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "Käyttäjää, jolla on tämä sähköpostiosoite ei löydy" -#: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:28 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "Profiili ei ole tunnistautuneen käyttäjän omistuksessa" -#: lib/graphql/resolvers/user.ex:125 #, elixir-format +#: lib/graphql/resolvers/user.ex:125 msgid "Registrations are not open" msgstr "Ei voi rekisteröityä" -#: lib/graphql/resolvers/user.ex:330 #, elixir-format +#: lib/graphql/resolvers/user.ex:330 msgid "The current password is invalid" msgstr "Nykyinen salasana ei kelpaa" -#: lib/graphql/resolvers/user.ex:382 #, elixir-format +#: lib/graphql/resolvers/user.ex:382 msgid "The new email doesn't seem to be valid" msgstr "Uusi sähköpostiosoite ei vaikuta kelvolliselta" -#: lib/graphql/resolvers/user.ex:379 #, elixir-format +#: lib/graphql/resolvers/user.ex:379 msgid "The new email must be different" msgstr "Uuden sähköpostiosoitteen on poikettava vanhasta" -#: lib/graphql/resolvers/user.ex:333 #, elixir-format +#: lib/graphql/resolvers/user.ex:333 msgid "The new password must be different" msgstr "Uuden salasanan on poikettava vanhasta" +#, elixir-format #: lib/graphql/resolvers/user.ex:376 lib/graphql/resolvers/user.ex:439 #: lib/graphql/resolvers/user.ex:442 -#, elixir-format msgid "The password provided is invalid" msgstr "Annettu salasana on epäkelpo" -#: lib/graphql/resolvers/user.ex:337 #, 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." msgstr "" "Valitsemasi salasana on liian lyhyt. Käytä vähintään kuuden merkin mittaista " "salasanaa." -#: lib/graphql/resolvers/user.ex:215 #, elixir-format +#: lib/graphql/resolvers/user.ex:215 msgid "This user can't reset their password" msgstr "Käyttäjä ei voi palauttaa salasanaansa" -#: lib/graphql/resolvers/user.ex:79 #, elixir-format +#: lib/graphql/resolvers/user.ex:79 msgid "This user has been disabled" msgstr "Käyttäjä on poistettu käytöstä" -#: lib/graphql/resolvers/user.ex:179 #, elixir-format +#: lib/graphql/resolvers/user.ex:179 msgid "Unable to validate user" msgstr "Käyttäjää ei voi vahvistaa" -#: lib/graphql/resolvers/user.ex:420 #, elixir-format +#: lib/graphql/resolvers/user.ex:420 msgid "User already disabled" msgstr "Käyttäjä on jo poistettu käytöstä" -#: lib/graphql/resolvers/user.ex:487 #, elixir-format +#: lib/graphql/resolvers/user.ex:487 msgid "User requested is not logged-in" msgstr "Pyydetty käyttäjä ei ole kirjautuneena sisään" -#: lib/graphql/resolvers/group.ex:232 #, elixir-format +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "Olet jo tämän ryhmän jäsen" -#: lib/graphql/resolvers/group.ex:265 #, elixir-format +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "Et voi poistua ryhmästä, koska olet sen ainoa ylläpitäjä" -#: lib/graphql/resolvers/group.ex:229 #, elixir-format +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "Et voi liittyä tähän ryhmään" -#: lib/graphql/resolvers/group.ex:94 #, elixir-format +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "Voit nähdä ryhmäluettelon vain, jos olet moderaattori." -#: lib/graphql/resolvers/user.ex:387 #, elixir-format +#: lib/graphql/resolvers/user.ex:387 msgid "You need to be logged-in to change your email" msgstr "Sähköpostiosoitteen voi vaihtaa vain sisäänkirjautuneena" -#: lib/graphql/resolvers/user.ex:345 #, elixir-format +#: lib/graphql/resolvers/user.ex:345 msgid "You need to be logged-in to change your password" msgstr "Salasanan voi vaihtaa vain sisäänkirjautuneena" -#: lib/graphql/resolvers/group.ex:207 #, elixir-format +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "Ryhmän voi poistaa vain sisäänkirjautuneena" -#: lib/graphql/resolvers/user.ex:447 #, elixir-format +#: lib/graphql/resolvers/user.ex:447 msgid "You need to be logged-in to delete your account" msgstr "Voit poistaa tilisi vain sisäänkirjautuneena" -#: lib/graphql/resolvers/group.ex:237 #, elixir-format +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "Voit liittyä ryhmään vain sisäänkirjautuneena" -#: lib/graphql/resolvers/group.ex:270 #, elixir-format +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "Voit poistua ryhmästä vain sisäänkirjautuneena" -#: lib/graphql/resolvers/group.ex:172 #, elixir-format +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "Voit päivittää ryhmää vain sisäänkirjautuneena" -#: lib/graphql/resolvers/user.ex:58 #, elixir-format -msgid "You need to have admin access to list users" -msgstr "Voit nähdä käyttäjäluettelon vain ylläpitäjänä" - #: lib/graphql/resolvers/user.ex:108 -#, elixir-format msgid "You need to have an existing token to get a refresh token" msgstr "Voit saada uuden merkin vain, jos sinulla on jo merkki" -#: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 #, elixir-format +#: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 msgid "You requested again a confirmation email too soon" msgstr "Pyysit uutta vahvistussähköpostia liian aikaisin" -#: lib/graphql/resolvers/user.ex:128 #, elixir-format +#: lib/graphql/resolvers/user.ex:128 msgid "Your email is not on the allowlist" msgstr "Sähköpostiosoitteesi ei ole sallittujen luettelossa" -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 #, elixir-format +#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 msgid "Error while performing background task" msgstr "Virhe taustatehtävää suoritettaessa" -#: lib/graphql/resolvers/actor.ex:27 #, elixir-format +#: lib/graphql/resolvers/actor.ex:27 msgid "No profile found with this ID" msgstr "Tällä tunnisteella ei löytynyt profiilia" -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 #, elixir-format +#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 msgid "No remote profile found with this ID" msgstr "Tällä tunnisteella ei löytynyt etäprofiilia" -#: lib/graphql/resolvers/actor.ex:69 #, elixir-format +#: lib/graphql/resolvers/actor.ex:69 msgid "Only moderators and administrators can suspend a profile" msgstr "Vain moderaattorit ja ylläpitäjät voivat hyllyttää profiilin" -#: lib/graphql/resolvers/actor.ex:99 #, elixir-format +#: lib/graphql/resolvers/actor.ex:99 msgid "Only moderators and administrators can unsuspend a profile" msgstr "Vain moderaattorit ja ylläpitäjät voivat palauttaa hyllytetyn profiilin" -#: lib/graphql/resolvers/actor.ex:24 #, elixir-format +#: lib/graphql/resolvers/actor.ex:24 msgid "Only remote profiles may be refreshed" msgstr "Vain etäprofiilit voi ladata uudelleen" -#: lib/graphql/resolvers/actor.ex:61 #, elixir-format +#: lib/graphql/resolvers/actor.ex:61 msgid "Profile already suspended" msgstr "Profiili on jo hyllytetty" -#: lib/graphql/resolvers/participant.ex:93 #, elixir-format +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "Palvelin vaatii kelvollisen sähköpostiosoitteen" -#: lib/graphql/resolvers/participant.ex:87 #, elixir-format +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "Anonyymi osallistuminen ei ole käytössä" -#: lib/graphql/resolvers/person.ex:184 #, elixir-format +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "Ryhmän viimeistä ylläpitäjää ei voi poistaa" -#: lib/graphql/resolvers/person.ex:181 #, elixir-format +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "Käyttäjän viimeistä identiteettiä ei voi poistaa" -#: lib/graphql/resolvers/comment.ex:105 #, elixir-format +#: lib/graphql/resolvers/comment.ex:105 msgid "Comment is already deleted" msgstr "Kommentti on jo poistettu" -#: lib/graphql/resolvers/discussion.ex:61 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "Keskustelua ei löydy" -#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 #, elixir-format +#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 msgid "Error while saving report" msgstr "Virhe raporttia tallennettaessa" -#: lib/graphql/resolvers/report.ex:96 #, elixir-format +#: lib/graphql/resolvers/report.ex:96 msgid "Error while updating report" msgstr "Virhe raporttia päivitettäessä" -#: lib/graphql/resolvers/participant.ex:128 #, elixir-format +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "Tapahtumatunnistetta ei löydy" -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 #, elixir-format +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "Tapahtumaa ei löydy" -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 #, elixir-format +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "Tunnisteella %{id} ei ole tapahtumaa" -#: lib/graphql/resolvers/participant.ex:100 #, elixir-format +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "Sisäinen virhe" -#: lib/graphql/resolvers/discussion.ex:193 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "Tunnisteella %{id} ei ole keskustelua" -#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 #, elixir-format +#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 msgid "No profile found for user" msgstr "Käyttäjälle ei löydy profiilia" -#: lib/graphql/resolvers/feed_token.ex:63 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:63 msgid "No such feed token" msgstr "Kyseistä syötemerkkiä ei ole" -#: lib/graphql/resolvers/participant.ex:238 #, elixir-format +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "Osallistujalla on jo rooli %{role}" -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 #, elixir-format +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "Osallistujaa ei löydy" -#: lib/graphql/resolvers/person.ex:29 #, elixir-format +#: lib/graphql/resolvers/person.ex:29 msgid "Person with ID %{id} not found" msgstr "Tunnuksella %{id} ei löydy henkilöä" -#: lib/graphql/resolvers/person.ex:50 #, elixir-format +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "Käyttäjänimellä %{username} ei löydy henkilöä" -#: lib/graphql/resolvers/picture.ex:41 -#, elixir-format -msgid "Picture with ID %{id} was not found" -msgstr "Tunnuksella %{id} ei löydy kuvaa" - -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 #, elixir-format +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "Julkaisun tunnus ei ole kelvollinen" -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 #, elixir-format +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "Julkaisua ei ole" -#: lib/graphql/resolvers/member.ex:83 #, elixir-format +#: lib/graphql/resolvers/member.ex:83 msgid "Profile invited doesn't exist" msgstr "Kutsuttua profiilia ei ole" -#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 #, elixir-format +#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 msgid "Profile is already a member of this group" msgstr "Profiili on jo ryhmän jäsen" -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#, elixir-format +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 -#, elixir-format msgid "Profile is not member of group" msgstr "Profiili ei ole ryhmän jäsen" -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 #, elixir-format +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "Profiilia ei löydy" -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 #, elixir-format +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "Annetulla moderaattoriprofiililla ei ole oikeuksia tähän tapahtumaan" -#: lib/graphql/resolvers/report.ex:36 #, elixir-format +#: lib/graphql/resolvers/report.ex:36 msgid "Report not found" msgstr "Raporttia ei löydy" -#: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 #, elixir-format +#: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 msgid "Resource doesn't exist" msgstr "Resurssia ei ole" -#: lib/graphql/resolvers/participant.ex:121 #, elixir-format +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "Tapahtuma on jo täynnä" -#: lib/graphql/resolvers/participant.ex:261 #, elixir-format +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "Epäkelpo merkki" -#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 #, elixir-format +#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 msgid "Todo doesn't exist" msgstr "Työkalua ei ole" +#, elixir-format #: lib/graphql/resolvers/todos.ex:75 lib/graphql/resolvers/todos.ex:191 #: lib/graphql/resolvers/todos.ex:216 -#, elixir-format msgid "Todo list doesn't exist" msgstr "Tehtäväluetteloa ei ole" -#: lib/graphql/resolvers/feed_token.ex:69 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:69 msgid "Token does not exist" msgstr "Merkkiä ei ole" -#: lib/graphql/resolvers/feed_token.ex:66 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:66 msgid "Token is not a valid UUID" msgstr "Merkki ei ole kelvollinen UUID" -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 #, elixir-format +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "Käyttäjää ei löydy" -#: lib/graphql/resolvers/person.ex:232 #, elixir-format +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "Sinulla on jo profiili tälle käyttäjälle" -#: lib/graphql/resolvers/participant.ex:131 #, elixir-format +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "Olet jo tapahtuman osallistuja" -#: lib/graphql/resolvers/discussion.ex:197 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "Et ole jäsenenä ryhmässä, johon keskustelu liittyy" -#: lib/graphql/resolvers/member.ex:86 #, elixir-format +#: lib/graphql/resolvers/member.ex:86 msgid "You are not a member of this group" msgstr "Et ole ryhmän jäsen" -#: lib/graphql/resolvers/member.ex:151 #, elixir-format +#: lib/graphql/resolvers/member.ex:151 msgid "You are not a moderator or admin for this group" msgstr "Et ole ryhmän moderaattori tai ylläpitäjä" -#: lib/graphql/resolvers/comment.ex:51 #, elixir-format +#: lib/graphql/resolvers/comment.ex:51 msgid "You are not allowed to create a comment if not connected" msgstr "Ilman yhteyttä ei voi kommentoida" -#: lib/graphql/resolvers/feed_token.ex:41 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:41 msgid "You are not allowed to create a feed token if not connected" msgstr "Ilman yhteyttä ei voi luoda syötemerkkiä" -#: lib/graphql/resolvers/comment.ex:110 #, elixir-format +#: lib/graphql/resolvers/comment.ex:110 msgid "You are not allowed to delete a comment if not connected" msgstr "Ilman yhteyttä ei voi poistaa kommenttia" -#: lib/graphql/resolvers/feed_token.ex:78 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:78 msgid "You are not allowed to delete a feed token if not connected" msgstr "Ilman yhteyttä ei voi poistaa syötemerkkiä" -#: lib/graphql/resolvers/comment.ex:73 #, elixir-format +#: lib/graphql/resolvers/comment.ex:73 msgid "You are not allowed to update a comment if not connected" msgstr "Ilman yhteyttä ei voi päivittää kommenttia" -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 #, elixir-format +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" "Et voi poistua tapahtumasta, koska olet ainoa tapahtuman luonut osallistuja" -#: lib/graphql/resolvers/member.ex:155 #, elixir-format +#: lib/graphql/resolvers/member.ex:155 msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgstr "" "Et voi vaihtaa jäsenrooliasi ryhmässä nykyistä alemmaksi, koska olet ainoa " "ylläpitäjä" -#: lib/graphql/resolvers/comment.ex:101 #, elixir-format +#: lib/graphql/resolvers/comment.ex:101 msgid "You cannot delete this comment" msgstr "Et voi poistaa kommenttia" -#: lib/graphql/resolvers/event.ex:275 #, elixir-format +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "Et voi poistaa tapahtumaa" -#: lib/graphql/resolvers/member.ex:89 #, elixir-format +#: lib/graphql/resolvers/member.ex:89 msgid "You cannot invite to this group" msgstr "Et voi kutsua tähän ryhmään" -#: lib/graphql/resolvers/feed_token.ex:72 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:72 msgid "You don't have permission to delete this token" msgstr "Sinulla ei ole oikeutta poistaa tätä merkkiä" -#: lib/graphql/resolvers/admin.ex:52 #, elixir-format +#: lib/graphql/resolvers/admin.ex:52 msgid "You need to be logged-in and a moderator to list action logs" msgstr "Toimintalokien katselu vain moderaattorille sisäänkirjautuneena" -#: lib/graphql/resolvers/report.ex:26 #, elixir-format +#: lib/graphql/resolvers/report.ex:26 msgid "You need to be logged-in and a moderator to list reports" msgstr "Raporttien katselu vain moderaattorille sisäänkirjautuneena" -#: lib/graphql/resolvers/report.ex:101 #, elixir-format +#: lib/graphql/resolvers/report.ex:101 msgid "You need to be logged-in and a moderator to update a report" msgstr "Raportin päivittäminen vain moderaattorille sisäänkirjautuneena" -#: lib/graphql/resolvers/report.ex:41 #, elixir-format +#: lib/graphql/resolvers/report.ex:41 msgid "You need to be logged-in and a moderator to view a report" msgstr "Raportin katselu vain moderaattorille sisäänkirjautuneena" -#: lib/graphql/resolvers/admin.ex:236 #, elixir-format +#: lib/graphql/resolvers/admin.ex:236 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "Pääsy ylläpitoasetuksiin vain ylläpitäjälle sisäänkirjautuneena" -#: lib/graphql/resolvers/admin.ex:221 #, elixir-format +#: lib/graphql/resolvers/admin.ex:221 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "Pääsy koontinäytön tilastoihin vain ylläpitäjälle sisäänkirjautuneena" -#: lib/graphql/resolvers/admin.ex:260 #, elixir-format +#: lib/graphql/resolvers/admin.ex:260 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "Ylläpitoasetusten tallennus vain ylläpitäjälle sisäänkirjautuneena" -#: lib/graphql/resolvers/discussion.ex:75 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "Pääsy keskusteluihin vain sisäänkirjautuneena" -#: lib/graphql/resolvers/resource.ex:93 #, elixir-format +#: lib/graphql/resolvers/resource.ex:93 msgid "You need to be logged-in to access resources" msgstr "Pääsy resursseihin vain sisäänkirjautuneena" -#: lib/graphql/resolvers/event.ex:210 #, elixir-format +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "Tapahtumien luonti vain sisäänkirjautuneena" -#: lib/graphql/resolvers/post.ex:139 #, elixir-format +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "Julkaisujen luonti vain sisäänkirjautuneena" -#: lib/graphql/resolvers/report.ex:74 #, elixir-format +#: lib/graphql/resolvers/report.ex:74 msgid "You need to be logged-in to create reports" msgstr "Raporttien luonti vain sisäänkirjautuneena" -#: lib/graphql/resolvers/resource.ex:129 #, elixir-format +#: lib/graphql/resolvers/resource.ex:129 msgid "You need to be logged-in to create resources" msgstr "Resurssien luonti vain sisäänkirjautuneena" -#: lib/graphql/resolvers/event.ex:284 #, elixir-format +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "Tapahtuman poisto vain sisäänkirjautuneena" -#: lib/graphql/resolvers/post.ex:209 #, elixir-format +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "Julkaisujen poisto vain sisäänkirjautuneena" -#: lib/graphql/resolvers/resource.ex:187 #, elixir-format +#: lib/graphql/resolvers/resource.ex:187 msgid "You need to be logged-in to delete resources" msgstr "Resurssien poisto vain sisäänkirjautuneena" -#: lib/graphql/resolvers/participant.ex:105 #, elixir-format +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "Tapahtumaan liittyminen vain sisäänkirjautuneena" -#: lib/graphql/resolvers/participant.ex:204 #, elixir-format +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "Tapahtumasta poistuminen vain sisäänkirjautuneena" -#: lib/graphql/resolvers/event.ex:249 #, elixir-format +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "Tapahtuman päivittäminen vain sisäänkirjautuneena" -#: lib/graphql/resolvers/post.ex:176 #, elixir-format +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "Julkaisujen päivittäminen vain sisäänkirjautuneena" -#: lib/graphql/resolvers/resource.ex:158 #, elixir-format +#: lib/graphql/resolvers/resource.ex:158 msgid "You need to be logged-in to update resources" msgstr "Resurssien päivittäminen vain sisäänkirjautuneena" -#: lib/graphql/resolvers/resource.ex:210 #, elixir-format +#: lib/graphql/resolvers/resource.ex:210 msgid "You need to be logged-in to view a resource preview" msgstr "Resurssin esikatselu vain sisäänkirjautuneena" -#: lib/graphql/resolvers/picture.ex:79 #, elixir-format -msgid "You need to login to upload a picture" -msgstr "Kuvan lähettäminen vain sisäänkirjautuneena" - #: lib/graphql/resolvers/resource.ex:121 -#, elixir-format msgid "Parent resource doesn't belong to this group" msgstr "Ylätason resurssi ei kuulu tähän ryhmään" -#: lib/mobilizon/users/user.ex:109 #, elixir-format +#: lib/mobilizon/users/user.ex:109 msgid "The chosen password is too short." msgstr "Valittu salasana on liian lyhyt." -#: lib/mobilizon/users/user.ex:138 #, elixir-format +#: lib/mobilizon/users/user.ex:138 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "Rekisteröintimerkki on jo käytössä. Vaikuttaa palvelinpään virheeltä." -#: lib/mobilizon/users/user.ex:104 #, elixir-format +#: lib/mobilizon/users/user.ex:104 msgid "This email is already used." msgstr "Sähköpostiosoite on jo käytössä." -#: lib/graphql/error.ex:88 #, elixir-format +#: lib/graphql/error.ex:88 msgid "Post not found" msgstr "Julkaisua ei löydy" -#: lib/graphql/error.ex:75 #, elixir-format +#: lib/graphql/error.ex:75 msgid "Invalid arguments passed" msgstr "Virheelliset argumentit välitetty" -#: lib/graphql/error.ex:81 #, elixir-format +#: lib/graphql/error.ex:81 msgid "Invalid credentials" msgstr "Virheelliset kirjautumistiedot" -#: lib/graphql/error.ex:79 #, elixir-format +#: lib/graphql/error.ex:79 msgid "Reset your password to login" msgstr "Palauta salasana, jotta voit kirjautua sisään" -#: lib/graphql/error.ex:86 lib/graphql/error.ex:91 #, elixir-format +#: lib/graphql/error.ex:86 lib/graphql/error.ex:91 msgid "Resource not found" msgstr "Resurssia ei löydy" -#: lib/graphql/error.ex:92 #, elixir-format +#: lib/graphql/error.ex:92 msgid "Something went wrong" msgstr "Jokin meni vikaan" -#: lib/graphql/error.ex:74 #, elixir-format +#: lib/graphql/error.ex:74 msgid "Unknown Resource" msgstr "Tuntematon resurssi" -#: lib/graphql/error.ex:84 #, elixir-format +#: lib/graphql/error.ex:84 msgid "You don't have permission to do this" msgstr "Sinulla ei ole oikeutta tähän" -#: lib/graphql/error.ex:76 #, elixir-format +#: lib/graphql/error.ex:76 msgid "You need to be logged in" msgstr "Kirjaudu ensin sisään" -#: lib/graphql/resolvers/member.ex:116 #, elixir-format +#: lib/graphql/resolvers/member.ex:116 msgid "You can't accept this invitation with this profile." msgstr "Et voi hyväksyä kutsua tällä profiililla." -#: lib/graphql/resolvers/member.ex:134 #, elixir-format +#: lib/graphql/resolvers/member.ex:134 msgid "You can't reject this invitation with this profile." msgstr "Et voi hylätä kutsua tällä profiililla." -#: lib/graphql/resolvers/picture.ex:71 #, elixir-format +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "Tiedostolla ei ole sallittua MIME-tyyppiä." -#: lib/graphql/resolvers/group.ex:167 #, elixir-format +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "Profiili ei ole ryhmän ylläpitäjä" -#: lib/graphql/resolvers/event.ex:238 #, elixir-format +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "Et voi muokata tapahtumaa." -#: lib/graphql/resolvers/event.ex:241 #, elixir-format +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "Et voi yhdistää tapahtumaa tähän profiiliin." -#: lib/graphql/resolvers/member.ex:137 #, elixir-format +#: lib/graphql/resolvers/member.ex:137 msgid "This invitation doesn't exist." msgstr "Kutsua ei ole." -#: lib/graphql/resolvers/member.ex:179 #, elixir-format +#: lib/graphql/resolvers/member.ex:179 msgid "This member already has been rejected." msgstr "Jäsen on jo hylätty." -#: lib/graphql/resolvers/member.ex:186 #, elixir-format +#: lib/graphql/resolvers/member.ex:186 msgid "You don't have the right to remove this member." msgstr "Sinulla ei ole oikeutta poistaa jäsentä." -#: lib/mobilizon/actors/actor.ex:344 #, elixir-format +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "Käyttäjänimi on jo käytössä." -#: lib/graphql/resolvers/discussion.ex:72 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "Keskusteluun pääsemiseen vaaditaan tunniste tai polkutunnus" -#: lib/graphql/resolvers/event.ex:199 #, elixir-format +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "Järjestäjän profiili ei ole käyttäjän hallussa" -#: lib/graphql/resolvers/participant.ex:90 #, elixir-format +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "Annettu profiilitunniste ei kuulu anonyymille profiilille" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/fr/LC_MESSAGES/default.po b/priv/gettext/fr/LC_MESSAGES/default.po index b93006bb4..aab8d99b7 100644 --- a/priv/gettext/fr/LC_MESSAGES/default.po +++ b/priv/gettext/fr/LC_MESSAGES/default.po @@ -10,1195 +10,935 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-01-15 16:52+0000\n" +"PO-Revision-Date: 2021-01-19 15:28+0100\n" "Last-Translator: Alexandra \n" -"Language-Team: French \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.4\n" +"X-Generator: Poedit 2.3\n" #: lib/web/templates/email/password_reset.html.eex:48 -#, elixir-format msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "Si vous n'avez pas demandé ceci, vous pouvez ignorer cet email. Votre mot de passe ne changera pas tant que vous n'en créerez pas un nouveau en cliquant sur le lien ci-dessous." -#: lib/service/export/feed.ex:170 -#, elixir-format -msgid "Feed for %{email} on Mobilizon" -msgstr "Flux pour %{email} sur Mobilizon" - #: lib/web/templates/email/report.html.eex:74 -#, elixir-format msgid "%{title} by %{creator}" msgstr "%{title} par %{creator}" #: lib/web/templates/email/registration_confirmation.html.eex:58 -#, elixir-format msgid "Activate my account" msgstr "Activer mon compte" -#: lib/web/templates/email/email.html.eex:117 -#: lib/web/templates/email/email.text.eex:9 -#, elixir-format +#: lib/web/templates/email/email.html.eex:117 lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Demander à la communauté sur Framacolibri" #: lib/web/templates/email/report.text.eex:15 -#, elixir-format msgid "Comments" msgstr "Commentaires" -#: lib/web/templates/email/report.html.eex:72 -#: lib/web/templates/email/report.text.eex:11 -#, elixir-format +#: lib/web/templates/email/report.html.eex:72 lib/web/templates/email/report.text.eex:11 msgid "Event" msgstr "Événement" #: lib/web/email/user.ex:48 -#, elixir-format msgid "Instructions to reset your password on %{instance}" msgstr "Instructions pour réinitialiser votre mot de passe sur %{instance}" #: lib/web/templates/email/report.text.eex:21 -#, elixir-format msgid "Reason" msgstr "Raison" #: lib/web/templates/email/password_reset.html.eex:61 -#, elixir-format msgid "Reset Password" msgstr "Réinitialiser mon mot de passe" #: lib/web/templates/email/password_reset.html.eex:41 -#, elixir-format msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." msgstr "Réinitialiser votre mot de passe est facile. Cliquez simplement sur le bouton et suivez les inscriptions. Vous serez opérationnel en un rien de temps." #: lib/web/email/user.ex:28 -#, elixir-format msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Instructions pour confirmer votre compte Mobilizon sur %{instance}" #: lib/web/email/admin.ex:24 -#, elixir-format msgid "New report on Mobilizon instance %{instance}" msgstr "Nouveau signalement sur l'instance Mobilizon %{instance}" -#: lib/web/templates/email/before_event_notification.html.eex:51 -#: lib/web/templates/email/before_event_notification.text.eex:4 -#, elixir-format +#: lib/web/templates/email/before_event_notification.html.eex:51 lib/web/templates/email/before_event_notification.text.eex:4 msgid "Go to event page" msgstr "Aller à la page de l'événement" #: lib/web/templates/email/report.text.eex:1 -#, elixir-format msgid "New report from %{reporter} on %{instance}" msgstr "Nouveau signalement sur %{instance}" #: lib/web/templates/email/event_participation_approved.text.eex:1 -#, elixir-format msgid "Participation approved" msgstr "Participation approuvée" -#: lib/web/templates/email/password_reset.html.eex:13 -#: lib/web/templates/email/password_reset.text.eex:1 -#, elixir-format +#: lib/web/templates/email/password_reset.html.eex:13 lib/web/templates/email/password_reset.text.eex:1 msgid "Password reset" msgstr "Réinitialisation du mot de passe" #: lib/web/templates/email/password_reset.text.eex:7 -#, elixir-format msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." msgstr "Réinitialiser votre mot de passe est facile. Cliquez simplement sur le bouton et suivez les instructions. Vous serez opérationnel en un rien de temps." #: lib/web/templates/email/registration_confirmation.text.eex:5 -#, elixir-format msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." msgstr "Vous avez créé un compte sur %{host} avec cette adresse email. Vous êtes à un clic de l'activer." #: lib/web/email/participation.ex:112 -#, elixir-format msgid "Your participation to event %{title} has been approved" msgstr "Votre participation à l'événement %{title} a été approuvée" #: lib/web/email/participation.ex:70 -#, elixir-format msgid "Your participation to event %{title} has been rejected" msgstr "Votre participation à l'événement %{title} a été rejetée" #: lib/web/email/event.ex:37 -#, elixir-format msgid "Event %{title} has been updated" msgstr "L'événement %{title} a été mis à jour" #: lib/web/templates/email/event_updated.text.eex:15 -#, elixir-format msgid "New title: %{title}" msgstr "Nouveau titre : %{title}" #: lib/web/templates/email/password_reset.text.eex:5 -#, elixir-format msgid "You requested a new password for your account on %{instance}." msgstr "Vous avez demandé un nouveau mot de passe pour votre compte sur %{instance}." #: lib/web/templates/email/email.html.eex:85 -#, elixir-format msgid "Warning" msgstr "Attention" -#: lib/web/email/participation.ex:134 -#, elixir-format +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Confirmer ma participation à l'événement %{title}" #: lib/web/templates/api/privacy.html.eex:75 -#, elixir-format msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "Une identité interne pour l'identité sélectionnée actuellement" #: lib/web/templates/api/privacy.html.eex:74 -#, elixir-format msgctxt "terms" msgid "An internal user ID" msgstr "Une identité utilisateur·ice interne" #: lib/web/templates/api/privacy.html.eex:37 -#, elixir-format msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "Les informations que nous vous nous fournissez pourront être utilisées ainsi :" #: lib/web/templates/api/privacy.html.eex:9 -#, elixir-format msgctxt "terms" msgid "Basic account information" msgstr "Informations basiques du compte" #: lib/web/templates/api/privacy.html.eex:25 -#, elixir-format msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "Ne partagez aucune information sensible à l'aide de Mobilizon." #: lib/web/templates/api/privacy.html.eex:90 -#, elixir-format msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "Partageons-nous des informations à des tiers ?" #: lib/web/templates/api/privacy.html.eex:68 -#, elixir-format msgctxt "terms" msgid "Do we use cookies?" msgstr "Utilisons-nous des cookies ?" #: lib/web/templates/api/privacy.html.eex:51 -#, elixir-format msgctxt "terms" msgid "How do we protect your information?" msgstr "Comment protégeons-nous vos informations ?" #: lib/web/templates/api/privacy.html.eex:29 -#, elixir-format msgctxt "terms" msgid "IPs and other metadata" msgstr "Adresses IP et autres métadonnées" #: lib/web/templates/api/privacy.html.eex:17 -#, elixir-format msgctxt "terms" msgid "Published events and comments" msgstr "Événements publiés et commentaires" #: lib/web/templates/api/privacy.html.eex:64 -#, elixir-format msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "Ne pas conserver les adresses IP associées aux utilisateur·ices enregistrés pas plus de 12 mois." #: lib/web/templates/api/privacy.html.eex:76 -#, elixir-format msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Jetons pour vous identifier" #: lib/web/templates/api/privacy.html.eex:31 -#, elixir-format msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "Nous pouvons également conserver les données d'authentification y compris les adresses IP de toutes les requêtes de notre serveur." #: lib/web/templates/api/privacy.html.eex:70 -#, elixir-format msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "Nous conservons les informations suivantes sur votre appareil lorsque vous vous connectez :" #: lib/web/templates/api/privacy.html.eex:58 -#, elixir-format msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Nous mettrons tout en possible pour :" #: lib/web/templates/api/privacy.html.eex:35 -#, elixir-format msgctxt "terms" msgid "What do we use your information for?" msgstr "Comment utilisons-nous vos informations ?" #: lib/web/templates/api/privacy.html.eex:57 -#, elixir-format msgctxt "terms" msgid "What is our data retention policy?" msgstr "Quelle est notre politique de conservation des données ?" #: lib/web/templates/api/privacy.html.eex:67 -#, elixir-format msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Vous pouvez supprimer votre compte à tout moment de façon irréversible." #: lib/web/templates/api/privacy.html.eex:115 -#, elixir-format msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Modifications de notre politique de confidentialité" #: lib/web/templates/api/privacy.html.eex:106 -#, elixir-format msgctxt "terms" msgid "If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site." msgstr "Si ce serveur est dans l'Union Européenne ou dans l'Espace Economique Européen : nos sites, produits et services sont tous destinés aux personnes âgées de plus de 16 ans. Si vous avez moins de 16 ans, suivant le RGPD (Règlement général sur la protection des données), n'utilisez pas ce site." #: lib/web/templates/api/privacy.html.eex:109 -#, elixir-format msgctxt "terms" msgid "If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site." msgstr "Si le serveur est situé aux Etats-Unis : Notre site, nos produits et services sont tous à destination de personnes agées d'au moins 13 ans. Si vous avez moins de 13 ans, d'après les recommandations de COOPA (Children's Online Privacy Protection Act) n'utilisez pas ce site." #: lib/web/templates/api/privacy.html.eex:117 -#, elixir-format msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "Si nous décidons de changer notre politique de confidentialité, nous présenterons ces changements sur cette page." #: lib/web/templates/api/privacy.html.eex:112 -#, elixir-format msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "Les conditions juridiques peuvent différer si le serveur est sous une autre juridiction." #: lib/web/templates/api/privacy.html.eex:103 -#, elixir-format msgctxt "terms" msgid "Site usage by children" msgstr "Utilisation du site par les enfants" #: lib/web/templates/api/privacy.html.eex:47 -#, elixir-format msgctxt "terms" -msgid "The email address you provide may be used to send you information, updates and notifications about other people\n interacting with your content or sending you messages and to respond to inquiries, and/or other requests or\n questions." +msgid "" +"The email address you provide may be used to send you information, updates and notifications about other people\n" +" interacting with your content or sending you messages and to respond to inquiries, and/or other requests or\n" +" questions." msgstr "L'adresse électronique que vous fournissez peut être utilisée pour vous envoyer des informations, des mises à jour et des notifications concernant d'autres personnes qui interagissent avec votre contenu ou vous envoient des messages et pour répondre à des demandes, et/ou à d'autres requêtes ou questions." #: lib/web/templates/api/privacy.html.eex:45 -#, elixir-format msgctxt "terms" -msgid "To aid moderation of the community, for example comparing your IP address with other known ones to determine ban\n evasion or other violations." +msgid "" +"To aid moderation of the community, for example comparing your IP address with other known ones to determine ban\n" +" evasion or other violations." msgstr "Pour aider à la modération de la communauté, par exemple en comparant votre adresse IP avec d'autres adresses connues afin de déterminer s'il y a contournement d'un bannissement ou d'autres violations." #: lib/web/templates/api/privacy.html.eex:43 -#, elixir-format msgctxt "terms" -msgid "To provide the core functionality of Mobilizon. Depending on this instance's policy you may only be able to\n interact with other people's content and post your own content if you are logged in." +msgid "" +"To provide the core functionality of Mobilizon. Depending on this instance's policy you may only be able to\n" +" interact with other people's content and post your own content if you are logged in." msgstr "Fournir la fonctionnalité de base de Mobilizon. Selon la politique de cette instance, vous ne pourrez interagir avec le contenu d'autres personnes et publier votre propre contenu que si vous êtes connecté." #: lib/web/templates/api/privacy.html.eex:6 -#, elixir-format msgctxt "terms" msgid "What information do we collect?" msgstr "Quelles informations collectons-nous ?" #: lib/web/email/user.ex:176 -#, elixir-format msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon sur %{instance} : confirmez votre adresse email" #: lib/web/email/user.ex:152 -#, elixir-format msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon sur %{instance} : adresse email modifiée" -#: lib/web/email/notification.ex:46 -#, elixir-format +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un événement prévu aujourd'hui" msgstr[1] "%{nb_events} événements prévus aujourd'hui" -#: lib/web/templates/email/on_day_notification.html.eex:38 -#: lib/web/templates/email/on_day_notification.text.eex:4 -#, elixir-format +#: lib/web/templates/email/on_day_notification.html.eex:38 lib/web/templates/email/on_day_notification.text.eex:4 msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Vous avez un événement aujourd'hui :" msgstr[1] "Vous avez %{total} événements aujourd'hui :" #: lib/web/templates/email/group_invite.text.eex:3 -#, elixir-format msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} vient de vous inviter à rejoindre son groupe %{group}" -#: lib/web/templates/email/group_invite.html.eex:13 -#: lib/web/templates/email/group_invite.text.eex:1 -#, elixir-format +#: lib/web/templates/email/group_invite.html.eex:13 lib/web/templates/email/group_invite.text.eex:1 msgid "Come along!" msgstr "Rejoignez-nous !" #: lib/web/email/notification.ex:24 -#, elixir-format msgid "Don't forget to go to %{title}" msgstr "N'oubliez pas de vous rendre à %{title}" -#: lib/web/templates/email/before_event_notification.html.eex:38 -#: lib/web/templates/email/before_event_notification.text.eex:3 -#, elixir-format +#: lib/web/templates/email/before_event_notification.html.eex:38 lib/web/templates/email/before_event_notification.text.eex:3 msgid "Get ready for %{title}" msgstr "Préparez vous pour %{title}" #: lib/web/templates/email/group_invite.html.eex:59 -#, elixir-format msgid "See my groups" msgstr "Voir mes groupes" -#: lib/web/templates/email/group_invite.html.eex:45 -#: lib/web/templates/email/group_invite.text.eex:5 -#, elixir-format +#: lib/web/templates/email/group_invite.html.eex:45 lib/web/templates/email/group_invite.text.eex:5 msgid "To accept this invitation, head over to your groups." msgstr "Pour accepter cette invitation, rendez-vous dans vos groupes." #: lib/web/templates/email/before_event_notification.text.eex:5 -#, elixir-format msgid "View the event on: %{link}" msgstr "Voir l'événement mis à jour sur : %{link}" -#: lib/web/email/group.ex:32 -#, elixir-format +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "Vous avez été invité par %{inviter} à rejoindre le groupe %{group}" -#: lib/web/email/notification.ex:70 -#, elixir-format +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un événement prévu cette semaine" msgstr[1] "%{nb_events} événements prévus cette semaine" -#: lib/web/email/notification.ex:92 -#, elixir-format +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Une demande de participation à l'événement %{title} à traiter" msgstr[1] "%{number_participation_requests} demandes de participation à l'événement %{title} à traiter" -#: lib/web/templates/email/notification_each_week.html.eex:38 -#: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#: lib/web/templates/email/notification_each_week.html.eex:38 lib/web/templates/email/notification_each_week.text.eex:3 msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Vous avez un événement aujourd'hui :" msgstr[1] "Vous avez %{total} événements aujourd'hui :" #: lib/service/metadata/utils.ex:52 -#, elixir-format msgid "The event organizer didn't add any description." msgstr "L'organisateur·ice de l'événement n'a pas ajouté de description." #: lib/web/templates/api/privacy.html.eex:54 -#, elixir-format msgctxt "terms" msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." msgstr "Nous utilisons plusieurs mesures de sécurité pour assurer la confidentialité de vos informations personnelles lorsque vous soumettez ou accédez à vos informations. Entre autres, votre session de navigateur et la connexion entre vos applications et l'API sont sécurisés par SSL/TLS, et votre mot de passe est haché avec un algorithme fort à sens unique." #: lib/web/templates/api/privacy.html.eex:94 -#, elixir-format msgctxt "terms" msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." msgstr "Non. Nous ne vendons, n’échangeons ou ne transférons d’une quelque manière que soit des informations permettant de vous identifier personnellement. Cela n’inclut pas les tierces parties de confiance qui nous aident à opérer ce site, à conduire nos activités commerciales ou à vous servir, tant qu’elles acceptent de garder ces informations confidentielles. Nous sommes également susceptibles de partager vos informations quand nous pensons que c’est nécessaire pour nous conformer à la loi, pour appliquer les politiques de notre site ainsi que pour défendre nos droits, notre propriété, notre sécurité et celles et ceux d’autres personnes." #: lib/web/templates/api/terms.html.eex:23 -#, elixir-format msgctxt "terms" msgid "Accepting these Terms" msgstr "Acceptation de ces Conditions" #: lib/web/templates/api/terms.html.eex:27 -#, elixir-format msgctxt "terms" msgid "Changes to these Terms" msgstr "Modifications de ces Conditions d'Utilisation" #: lib/web/templates/api/terms.html.eex:85 -#, elixir-format msgctxt "terms" msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." msgstr "Une grande partie du contenu du Service provient de vous et d'autres personnes, et nous ne l'examinons, ne le vérifions ni ne l'authentifions, et il peut contenir des inexactitudes ou de fausses informations. Nous ne faisons aucune déclaration, garantie ou assurance concernant la qualité, la pertinence, la véracité, l'exactitude ou l'exhaustivité de tout contenu du Service. Vous reconnaissez être seul responsable et assumez tous les risques découlant de votre utilisation ou de votre confiance dans tout contenu." #: lib/web/templates/api/terms.html.eex:60 -#, elixir-format msgctxt "terms" msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" msgstr "De plus, vous acceptez de ne pas faire ce qui suit en relation avec le Service ou les autres utilisateur·ices :" #: lib/web/templates/api/terms.html.eex:65 -#, elixir-format msgctxt "terms" msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." msgstr "Contourner ou tenter de contourner tout filtrage, mesures de sécurité, limites d'accès ou autres caractéristiques destinées à protéger le Service, les utilisateur·ices du Service ou des tiers." #: lib/web/templates/api/terms.html.eex:64 -#, elixir-format msgctxt "terms" msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" msgstr "Recueillir des informations personnelles sur les autres utilisateur·ices, ou intimider, menacer, traquer ou harceler de toute autre manière les autres utilisateurs du Service ;" #: lib/web/templates/api/terms.html.eex:55 -#, elixir-format msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "Du contenu qui est illégal ou illicite, qui autrement entraînerait une responsabilité ;" #: lib/web/templates/api/terms.html.eex:56 -#, elixir-format msgctxt "terms" msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" msgstr "Du contenu susceptible d'enfreindre ou de violer un brevet, une marque de commerce, un secret commercial, un droit d'auteur, un droit à la vie privée, un droit de publicité ou tout autre droit intellectuel ou autre de toute partie ;" #: lib/web/templates/api/terms.html.eex:42 -#, elixir-format msgctxt "terms" msgid "Creating Accounts" msgstr "Création de compte" #: lib/web/templates/api/terms.html.eex:89 -#, elixir-format msgctxt "terms" msgid "Entire Agreement" msgstr "Accord complet" #: lib/web/templates/api/terms.html.eex:92 -#, elixir-format msgctxt "terms" msgid "Feedback" msgstr "Commentaires" #: lib/web/templates/api/terms.html.eex:83 -#, elixir-format msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Liens hypertexte et contenu tiers" #: lib/web/templates/api/terms.html.eex:88 -#, elixir-format msgctxt "terms" msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." msgstr "Si vous enfreignez l'une de ces Conditions, nous avons le droit de suspendre ou de désactiver votre accès ou votre utilisation du Service." #: lib/web/templates/api/terms.html.eex:63 -#, elixir-format msgctxt "terms" msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" msgstr "Usurper l'identité d'une personne ou d'une entité ou afficher au nom d'une personne ou d'une entité, ou encore présenter de manière inexacte votre affiliation à une personne ou une entité ;" #: lib/web/templates/api/terms.html.eex:48 -#, elixir-format msgctxt "terms" msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." msgstr "Notre Service vous permet, ainsi qu'à d'autres utilisateur·ices, de publier, d'établir des liens et de mettre à disposition du contenu. Vous êtes responsable du contenu que vous mettez à la disposition du service, y compris de sa légalité, de sa fiabilité et de sa pertinence." #: lib/web/templates/api/terms.html.eex:39 -#, elixir-format msgctxt "terms" msgid "Privacy Policy" msgstr "Politique de confidentialité" #: lib/web/templates/api/terms.html.eex:95 -#, elixir-format msgctxt "terms" msgid "Questions & Contact Information" msgstr "Questions et coordonnées" #: lib/web/templates/api/terms.html.eex:87 -#, elixir-format msgctxt "terms" msgid "Termination" msgstr "Résiliation" #: lib/web/templates/api/terms.html.eex:62 -#, elixir-format msgctxt "terms" msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" msgstr "Utiliser le Service de toute manière qui pourrait interférer, perturber, affecter négativement ou empêcher d'autres utilisateur·ices de profiter pleinement du Service ou qui pourrait endommager, désactiver, surcharger ou altérer le fonctionnement du Service ;" #: lib/web/templates/api/terms.html.eex:47 -#, elixir-format msgctxt "terms" msgid "Your Content & Conduct" msgstr "Votre contenu et votre conduite" #: lib/web/templates/api/terms.html.eex:84 -#, elixir-format msgctxt "terms" msgid "%{instance_name} makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "%{instance_name} ne fait aucune revendication et n'accepte aucune responsabilité concernant les sites web de tiers accessibles par lien hypertexte depuis le Service ou les sites web liés au Service. Lorsque vous quittez le Service, vous devez savoir que les présentes Conditions et nos politiques de confidentialité ne sont plus applicables. L'inclusion d'un lien n'implique pas l'approbation par %{instance_name} du site. L'utilisation de tout site web lié est aux risques et périls de l'utilisateur·ice." #: lib/web/templates/api/terms.html.eex:68 -#, elixir-format msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "Enfin, votre utilisation du Service est également soumise à l'acceptation des règles spécifiques de l'instance concernant le code de conduite et les règles de modération. Le non-respect de ces règles peut également entraîner la désactivation ou la suspension de votre compte." #: lib/web/templates/api/terms.html.eex:81 -#, elixir-format msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "Pour plus de détails sur le logiciel Mobilizon voir ici." #: lib/web/templates/api/terms.html.eex:18 -#, elixir-format msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "Voici les points importants que vous devez savoir sur l'accès et l'utilisation du site web et du Service %{instance_name} (%{instance_url}) (conjointement, \"Service\"). Ce sont nos conditions de service (\"Conditions\"). Veuillez les lire attentivement." #: lib/web/templates/api/terms.html.eex:33 -#, elixir-format msgctxt "terms" msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." msgstr "Si nous apportons des changements majeurs, nous en informerons nos utilisateur·ices de manière claire et visible. Il est possible que les changements mineurs ne soient mis en évidence que dans le pied de page de cette page. Il est de votre responsabilité de vérifier régulièrement sur le site web si des modifications ont été apportées aux présentes Conditions." #: lib/web/templates/api/terms.html.eex:53 -#, elixir-format msgctxt "terms" msgid "In order to make %{instance_name} a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" msgstr "Afin de faire de %{instance_name} un endroit idéal pour nous toutes et tous, nous vous prions de ne pas publier, relier ou rendre disponible sur ou par le biais du Service l'un des éléments suivants :" #: lib/web/templates/api/terms.html.eex:57 -#, elixir-format msgctxt "terms" msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" msgstr "Les informations privées de toute personne tierce (par exemple, les adresses, les numéros de téléphone, les adresses électroniques, les numéros de sécurité sociale et les numéros de carte de crédit) ; et" #: lib/web/templates/api/terms.html.eex:52 -#, elixir-format msgctxt "terms" msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." msgstr "Mobilizon étant un réseau distribué, il est possible, en fonction des règles de visibilité définies pour votre contenu, que celui-ci ait été distribué à d'autres instances de Mobilizon. Lorsque vous supprimez votre contenu, nous demandons à ces autres instances de supprimer également le contenu. Notre responsabilité quant au contenu supprimé de ces autres instances s'arrête ici. Si, pour une raison quelconque, une autre instance ne supprime pas le contenu, nous ne pouvons être tenus responsables." #: lib/web/templates/api/terms.html.eex:90 -#, elixir-format msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "Les présentes Conditions constituent l'intégralité de l'accord entre vous et %{instance_name} concernant l'utilisation du Service, remplaçant tout accord préalable entre vous et %{instance_name} relatif à votre utilisation du Service." #: lib/web/templates/api/terms.html.eex:80 -#, elixir-format msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "Ce Service fonctionne sur une instance de Mobilizon. Ce code source est sous licence AGPLv3 ce qui signifie que vous êtes autorisé et même encouragé à prendre le code source, le modifier et l'utiliser." #: lib/web/templates/api/terms.html.eex:58 -#, elixir-format msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "Virus, données corrompues ou autres fichiers ou codes nuisibles, perturbateurs ou destructeurs." #: lib/web/templates/api/terms.html.eex:51 -#, elixir-format msgctxt "terms" msgid "You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time. Web server access logs might also be stored for some time in the system." msgstr "Vous pouvez supprimer le contenu que vous avez publié en le supprimant. Une fois que vous avez supprimé votre contenu, il n'apparaîtra plus sur le Service, mais des copies de votre contenu supprimé peuvent rester dans notre système ou des sauvegardes pendant un certain temps. Les journaux d'accès au serveur web peuvent également être stockés pendant un certain temps dans le système." #: lib/web/templates/api/terms.html.eex:96 -#, elixir-format msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "Les questions ou commentaires concernant le Service peuvent nous être adressés à %{contact}" #: lib/web/templates/api/terms.html.eex:79 -#, elixir-format msgctxt "terms" msgid "Source code" msgstr "Code source" #: lib/web/templates/api/terms.html.eex:93 -#, elixir-format msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "Nous aimons les retours d'information. N'hésitez pas à nous faire savoir ce que vous pensez du Service, des présentes Conditions et, en général, de %{instance_name}." #: lib/web/templates/api/terms.html.eex:74 -#, elixir-format msgctxt "terms" msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." msgstr "Les administrateurs d'instance (et les modérateurs de la communauté, sous réserve d'un accès approprié) sont chargés de surveiller et d'agir sur les contenus signalés et autres rapports d'utilisateur·ices, et ont le droit et la responsabilité de supprimer ou de modifier les contenus qui ne sont pas conformes aux règles de cette d'instance, ou de suspendre, bloquer ou interdire (temporairement ou définitivement) tout compte, communauté ou instance pour violation de ces conditions, ou pour d'autres comportements qu'ils jugent inappropriés, menaçants, offensants ou nuisibles." #: lib/web/templates/api/terms.html.eex:6 -#, elixir-format msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "%{instance_name} n'utilisera pas ni ne transmettra ou revendra vos données" #: lib/web/templates/api/terms.html.eex:44 -#, elixir-format msgctxt "terms" msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact its contributors directly." msgstr "Si vous découvrez ou soupçonnez des failles de sécurité du Service, veuillez nous en informer dès que possible. Pour les failles de sécurité dans le logiciel Mobilizon lui-même, veuillez contacter directement ses contributeur·ices." #: lib/web/templates/api/terms.html.eex:77 -#, elixir-format msgctxt "terms" msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." msgstr "Les administrateur·ices d'instance doivent s'assurer que chaque communauté hébergée sur l'instance est correctement modérée conformément aux règles définies." #: lib/web/templates/api/terms.html.eex:98 -#, elixir-format msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "Adaptée à l'origine des politiques de confidentialité de Diaspora* et App.net, aussi sous licence CC BY-SA." #: lib/web/templates/api/privacy.html.eex:119 -#, elixir-format msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "Adaptée à l'origine des politiques de confidentialité de Mastodon et Discourse, aussi sous licence CC BY-SA." #: lib/web/templates/api/terms.html.eex:3 -#, elixir-format msgctxt "terms" msgid "Short version" msgstr "Version courte" #: lib/web/templates/api/terms.html.eex:9 -#, elixir-format msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "Le service est fourni sans garanties et ces conditions peuvent changer dans le futur" #: lib/web/templates/api/privacy.html.eex:118 -#, elixir-format msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "Ce document est sous licence CC BY-SA. La dernière mise à jour date du 18 juin 2020." #: lib/web/templates/api/terms.html.eex:97 -#, elixir-format msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "Ce document est sous licence CC BY-SA. La dernière mise à jour date du 22 juin 2020." #: lib/web/templates/api/terms.html.eex:8 -#, elixir-format msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "Vous devez respecter les autres et les règles de %{instance_name} lorsque vous utilisez le service" #: lib/web/templates/api/terms.html.eex:7 -#, elixir-format msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "Vous devez respecter la loi lorsque vous utilisez %{instance_name}" #: lib/web/templates/api/terms.html.eex:5 -#, elixir-format msgctxt "terms" msgid "Your content is yours" msgstr "Votre contenu vous appartient" #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 -#, elixir-format msgid "Confirm my e-mail address" msgstr "Confirmer mon adresse email" -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 -#, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 msgid "Confirm your e-mail" msgstr "Confirmez votre adresse email" #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 -#, elixir-format msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "Salut ! Vous venez de vous enregistrer pour rejoindre cet événement : « %{title} ». Merci de confirmer l'adresse email que vous avez fournie :" -#: lib/web/templates/email/email.html.eex:114 -#: lib/web/templates/email/email.text.eex:8 -#, elixir-format +#: lib/web/templates/email/email.html.eex:114 lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "Besoin d'aide ? Quelque chose ne fonctionne pas correctement ?" #: lib/web/templates/email/registration_confirmation.html.eex:38 -#, elixir-format msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "Vous avez créé un compte sur %{host} avec cette adresse email. Vous êtes à un clic de l'activer." #: lib/web/templates/email/report.html.eex:13 -#, elixir-format msgid "New report on %{instance}" msgstr "Nouveau signalement sur %{instance}" #: lib/web/templates/email/email_changed_old.html.eex:38 -#, elixir-format msgid "The email address for your account on %{host} is being changed to:" msgstr "L'adresse email pour votre compte sur %{host} est en train d'être changée pour :" #: lib/web/templates/email/password_reset.html.eex:38 -#, elixir-format msgid "You requested a new password for your account on %{instance}." msgstr "Vous avez demandé un nouveau mot de passe pour votre compte sur %{instance}." #: lib/web/templates/email/email.text.eex:5 -#, elixir-format msgid "Please do not use it for real purposes." msgstr "Veuillez ne pas l'utiliser pour un cas réel." -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 -#: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 -#: lib/web/templates/email/on_day_notification.text.eex:14 -#, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 lib/web/templates/email/on_day_notification.text.eex:14 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "Si vous avez besoin d'annuler votre participation, il suffit d'accéder à la page de l'événement à partir du lien ci-dessus et de cliquer sur le bouton « Je participe »." msgstr[1] "Si vous avez besoin d'annuler votre participation à un ou plusieurs événements, il suffit d'accéder aux pages des événement grâce aux liens ci-dessus et de cliquer sur le bouton « Je participe »." -#: lib/web/templates/email/pending_participation_notification.html.eex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#: lib/web/templates/email/pending_participation_notification.html.eex:38 lib/web/templates/email/pending_participation_notification.text.eex:4 msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "Vous avez une demande de participation en attente à traiter :" msgstr[1] "Vous avez %{number_participation_requests} demandes de participation en attente à traiter :" #: lib/web/templates/email/email.text.eex:11 -#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} est une instance Mobilizon." #: lib/web/templates/email/email.html.eex:142 -#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} est une instance Mobilizon." -#: lib/web/templates/email/pending_participation_notification.html.eex:13 -#: lib/web/templates/email/pending_participation_notification.text.eex:1 -#, elixir-format +#: lib/web/templates/email/pending_participation_notification.html.eex:13 lib/web/templates/email/pending_participation_notification.text.eex:1 msgid "A request is pending!" msgstr "Une requête est en attente !" -#: lib/web/templates/email/before_event_notification.html.eex:13 -#: lib/web/templates/email/before_event_notification.text.eex:1 -#, elixir-format +#: lib/web/templates/email/before_event_notification.html.eex:13 lib/web/templates/email/before_event_notification.text.eex:1 msgid "An event is upcoming!" msgstr "Un événement est à venir !" -#: lib/web/templates/email/email_changed_new.html.eex:13 -#: lib/web/templates/email/email_changed_new.text.eex:1 -#, elixir-format +#: lib/web/templates/email/email_changed_new.html.eex:13 lib/web/templates/email/email_changed_new.text.eex:1 msgid "Confirm new email" msgstr "Confirmez votre adresse email" #: lib/web/templates/email/event_updated.html.eex:84 -#, elixir-format msgid "End" msgstr "Fin" #: lib/web/templates/email/event_updated.text.eex:21 -#, elixir-format msgid "End %{ends_on}" msgstr "Fin %{ends_on}" -#: lib/web/templates/email/event_updated.html.eex:13 -#: lib/web/templates/email/event_updated.text.eex:1 -#, elixir-format +#: lib/web/templates/email/event_updated.html.eex:13 lib/web/templates/email/event_updated.text.eex:1 msgid "Event update!" msgstr "Événement mis à jour !" #: lib/web/templates/email/report.html.eex:88 -#, elixir-format msgid "Flagged comments" msgstr "Commentaires signalés" -#: lib/web/templates/email/event_participation_approved.html.eex:45 -#: lib/web/templates/email/event_participation_approved.text.eex:7 -#, elixir-format +#: lib/web/templates/email/event_participation_approved.html.eex:45 lib/web/templates/email/event_participation_approved.text.eex:7 msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "Bonne nouvelle : un·e des organisateur·ices de l'événement vient d'approuver votre demande. Mettez à jour votre agenda, car vous êtes maintenant un·e participant·e !" -#: lib/web/templates/email/email_changed_new.html.eex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 -#, elixir-format +#: lib/web/templates/email/email_changed_new.html.eex:38 lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "Salut ! Il semblerait que vous avez demandé la modification de l'adresse e-mail liée à votre compte sur %{instance}. Si vous voulez toujours effectuer ce changement, merci de cliquer sur le bouton ci-dessous pour confirmer la modification. Vous pourrez alors vous connecter à %{instance} avec cette nouvelle adresse." #: lib/web/templates/email/email_changed_old.text.eex:3 -#, elixir-format msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" msgstr "Salut ! Juste un petite note pour confirmer que l'adresse e-mail liée à votre compte sur %{host} a été changée depuis celle-ci à :" -#: lib/web/templates/email/email_changed_old.html.eex:41 -#: lib/web/templates/email/email_changed_old.html.eex:65 lib/web/templates/email/email_changed_old.text.eex:5 -#, elixir-format +#: lib/web/templates/email/email_changed_old.html.eex:41 lib/web/templates/email/email_changed_old.html.eex:65 lib/web/templates/email/email_changed_old.text.eex:5 msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "Si vous n'avez pas effectué cette modification vous-même, il est probable que quelqu'un ait eu accès à votre compte %{host}. Veuillez vous connecter et changer immédiatement votre mot de passe. Si vous ne pouvez pas vous connecter, contactez l'administrateur·ice sur %{host}." #: lib/web/templates/email/password_reset.text.eex:12 -#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." msgstr "Si vous n'êtes pas à l'origine de cette modification, merci d'ignorer ce message. Votre mot de passe ne sera pas modifié tant que vous ne cliquerez pas le lien ci-dessus." -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 -#, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Si vous n'avez pas déclenché cette alerte, vous pouvez ignorer cet e-mail sans souci." -#: lib/web/templates/email/before_event_notification.html.eex:63 -#: lib/web/templates/email/before_event_notification.text.eex:6 -#, elixir-format +#: lib/web/templates/email/before_event_notification.html.eex:63 lib/web/templates/email/before_event_notification.text.eex:6 msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "Si vous avez besoin d'annuler votre participation, il suffit d'accéder à la page de l'événement à partir du lien ci-dessus et de cliquer sur le bouton « Je participe »." -#: lib/web/templates/email/email.html.eex:143 -#: lib/web/templates/email/email.text.eex:11 -#, elixir-format +#: lib/web/templates/email/email.html.eex:143 lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "En apprendre plus à propos de Mobilizon ici !" #: lib/web/templates/email/event_updated.html.eex:94 -#, elixir-format msgid "Location" msgstr "Localisation" #: lib/web/templates/email/event_updated.html.eex:104 -#, elixir-format msgid "Location address was removed" msgstr "L'adresse physique a été enlevée" -#: lib/web/templates/email/pending_participation_notification.html.eex:51 -#: lib/web/templates/email/pending_participation_notification.text.eex:6 -#, elixir-format +#: lib/web/templates/email/pending_participation_notification.html.eex:51 lib/web/templates/email/pending_participation_notification.text.eex:6 msgid "Manage pending requests" msgstr "Gérer les demandes de participation en attente" -#: lib/web/templates/email/registration_confirmation.html.eex:13 -#: lib/web/templates/email/registration_confirmation.text.eex:1 -#, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:13 lib/web/templates/email/registration_confirmation.text.eex:1 msgid "Nearly there!" msgstr "Vous y êtes presque !" -#: lib/web/templates/email/email_changed_old.html.eex:13 -#: lib/web/templates/email/email_changed_old.text.eex:1 -#, elixir-format +#: lib/web/templates/email/email_changed_old.html.eex:13 lib/web/templates/email/email_changed_old.text.eex:1 msgid "New email confirmation" msgstr "Confirmation de nouvel e-mail" #: lib/web/templates/email/report.html.eex:106 -#, elixir-format msgid "Reasons for report" msgstr "Raisons du signalement" #: lib/web/templates/email/report.html.eex:39 -#, elixir-format msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "Une personne de %{instance} a signalé le contenu suivant :" -#: lib/web/templates/email/event_participation_rejected.html.eex:13 -#: lib/web/templates/email/event_participation_rejected.text.eex:1 -#, elixir-format +#: lib/web/templates/email/event_participation_rejected.html.eex:13 lib/web/templates/email/event_participation_rejected.text.eex:1 msgid "Sorry! You're not going." msgstr "Désolé ! Vous n'y allez pas." #: lib/web/templates/email/event_updated.html.eex:74 -#, elixir-format msgid "Start" msgstr "Début" #: lib/web/templates/email/event_updated.text.eex:18 -#, elixir-format msgid "Start %{begins_on}" msgstr "Début %{begins_on}" #: lib/web/templates/email/event_updated.text.eex:3 -#, elixir-format msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Il y a eu des changements pour %{title} donc nous avons pensé que nous vous le ferions savoir." -#: lib/web/templates/email/event_updated.html.eex:55 -#: lib/web/templates/email/event_updated.text.eex:11 -#, elixir-format +#: lib/web/templates/email/event_updated.html.eex:55 lib/web/templates/email/event_updated.text.eex:11 msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Cet événement a été annulé par ses organisateur·ices. Désolé !" -#: lib/web/templates/email/event_updated.html.eex:51 -#: lib/web/templates/email/event_updated.text.eex:7 -#, elixir-format +#: lib/web/templates/email/event_updated.html.eex:51 lib/web/templates/email/event_updated.text.eex:7 msgid "This event has been confirmed" msgstr "L'événement a été confirmé" -#: lib/web/templates/email/event_updated.html.eex:53 -#: lib/web/templates/email/event_updated.text.eex:9 -#, elixir-format +#: lib/web/templates/email/event_updated.html.eex:53 lib/web/templates/email/event_updated.text.eex:9 msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "Cet événement doit encore être confirmé : les organisateur·ices vous feront savoir si l'événement est confirmé." -#: lib/web/templates/email/event_participation_rejected.html.eex:45 -#: lib/web/templates/email/event_participation_rejected.text.eex:7 -#, elixir-format +#: lib/web/templates/email/event_participation_rejected.html.eex:45 lib/web/templates/email/event_participation_rejected.text.eex:7 msgid "Unfortunately, the organizers rejected your request." msgstr "Malheureusement, les organisateur⋅ices ont rejeté votre demande de participation." #: lib/web/templates/email/email_changed_new.html.eex:51 -#, elixir-format msgid "Verify your email address" msgstr "Vérifier l'adresse email" #: lib/web/templates/email/report.html.eex:126 -#, elixir-format msgid "View report" msgstr "Voir le signalement" #: lib/web/templates/email/report.text.eex:24 -#, elixir-format msgid "View report:" msgstr "Voir le signalement :" -#: lib/web/templates/email/event_participation_approved.html.eex:58 -#: lib/web/templates/email/event_participation_confirmed.html.eex:58 -#, elixir-format +#: lib/web/templates/email/event_participation_approved.html.eex:58 lib/web/templates/email/event_participation_confirmed.html.eex:58 msgid "Visit event page" msgstr "Voir la page de l'événement" #: lib/web/templates/email/event_updated.html.eex:121 -#, elixir-format msgid "Visit the updated event page" msgstr "Voir la page de l'événement mis à jour" #: lib/web/templates/email/event_updated.text.eex:23 -#, elixir-format msgid "Visit the updated event page: %{link}" msgstr "Voir l'événement mis à jour sur : %{link}" -#: lib/web/templates/email/notification_each_week.html.eex:13 -#: lib/web/templates/email/notification_each_week.text.eex:1 -#, elixir-format +#: lib/web/templates/email/notification_each_week.html.eex:13 lib/web/templates/email/notification_each_week.text.eex:1 msgid "What's up this week?" msgstr "Quoi de neuf cette semaine ?" -#: lib/web/templates/email/on_day_notification.html.eex:13 -#: lib/web/templates/email/on_day_notification.text.eex:1 -#, elixir-format +#: lib/web/templates/email/on_day_notification.html.eex:13 lib/web/templates/email/on_day_notification.text.eex:1 msgid "What's up today?" msgstr "Quoi de neuf aujourd'hui ?" -#: lib/web/templates/email/event_participation_approved.html.eex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex:70 -#: lib/web/templates/email/event_participation_confirmed.text.eex:6 -#, elixir-format +#: lib/web/templates/email/event_participation_approved.html.eex:70 lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex:70 lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "Si vous souhaitez mettre à jour ou annuler votre participation, il vous suffit d'accéder à la page de l'événement par le lien ci-dessus et de cliquer sur le bouton Participer." -#: lib/web/templates/email/pending_participation_notification.html.eex:64 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 -#, elixir-format +#: lib/web/templates/email/pending_participation_notification.html.eex:64 lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "Vous recevez ce courriel parce que vous avez choisi de recevoir des notifications pour les demandes de participation en attente à vos événements. Vous pouvez désactiver ou modifier vos paramètres de notification dans les paramètres de votre compte utilisateur dans « Notifications »." #: lib/web/templates/email/event_participation_rejected.text.eex:5 -#, elixir-format msgid "You issued a request to attend %{title}." msgstr "Vous avez effectué une demande de participation à %{title}." -#: lib/web/templates/email/event_participation_approved.text.eex:5 -#: lib/web/templates/email/event_participation_confirmed.text.eex:3 -#, elixir-format +#: lib/web/templates/email/event_participation_approved.text.eex:5 lib/web/templates/email/event_participation_confirmed.text.eex:3 msgid "You recently requested to attend %{title}." msgstr "Vous avez demandé à participer à l'événement %{title}." -#: lib/web/templates/email/event_participation_approved.html.eex:13 -#: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 -#, elixir-format +#: lib/web/templates/email/event_participation_approved.html.eex:13 lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "Vous y allez !" -#: lib/web/templates/email/email_changed_new.html.eex:64 -#: lib/web/templates/email/email_changed_new.text.eex:5 -#, elixir-format +#: lib/web/templates/email/email_changed_new.html.eex:64 lib/web/templates/email/email_changed_new.text.eex:5 msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "Si vous n'êtes pas à l'origine de cette modification, merci d'ignorer ce message." #: lib/web/templates/email/email.html.eex:89 -#, elixir-format msgid "Please do not use it for real purposes." msgstr "Veuillez ne pas l'utiliser pour un cas réel." -#: lib/web/templates/email/group_member_removal.html.eex:45 -#: lib/web/templates/email/group_member_removal.text.eex:5 -#, elixir-format +#: lib/web/templates/email/group_member_removal.html.eex:45 lib/web/templates/email/group_member_removal.text.eex:5 msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "Si vous pensez qu'il s'agit d'une erreur, vous pouvez contacter les administrateurs du groupe afin qu'ils vous réintègrent." -#: lib/web/templates/email/group_member_removal.html.eex:13 -#: lib/web/templates/email/group_member_removal.text.eex:1 -#, elixir-format +#: lib/web/templates/email/group_member_removal.html.eex:13 lib/web/templates/email/group_member_removal.text.eex:1 msgid "So long, and thanks for the fish!" msgstr "Salut, et encore merci pour le poisson !" -#: lib/web/email/group.ex:62 -#, elixir-format +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "Vous avez été enlevé du groupe %{group}" #: lib/web/templates/email/group_member_removal.text.eex:3 -#, elixir-format msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." msgstr "Vous avez été enlevé du groupe %{group}. Vous ne serez plus en mesure d'accéder au contenu privé du groupe." #: lib/web/templates/email/group_invite.html.eex:38 -#, elixir-format msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "%{inviter} vient de vous inviter à rejoindre son groupe %{link_start}%{group}%{link_end}" #: lib/web/templates/email/group_member_removal.html.eex:38 -#, elixir-format msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "Vous avez été enlevé du groupe %{link_start}%{group}%{link_end}. Vous ne serez plus en mesure d'accéder au contenu privé du groupe." -#: lib/web/templates/email/group_suspension.html.eex:54 -#: lib/web/templates/email/group_suspension.text.eex:7 -#, elixir-format +#: lib/web/templates/email/group_suspension.html.eex:54 lib/web/templates/email/group_suspension.text.eex:7 msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "Comme ce groupe était originaire d'une autre instance, il continuera à fonctionner pour d'autres instances que celle-ci." -#: lib/web/templates/email/group_suspension.html.eex:46 -#: lib/web/templates/email/group_suspension.text.eex:5 -#, elixir-format +#: lib/web/templates/email/group_suspension.html.eex:46 lib/web/templates/email/group_suspension.text.eex:5 msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "Comme ce groupe était originaire de cette instance, toutes ses données ont été irrémédiablement détruites." -#: lib/web/templates/email/group_deletion.html.eex:38 -#: lib/web/templates/email/group_deletion.text.eex:3 -#, elixir-format +#: lib/web/templates/email/group_deletion.html.eex:38 lib/web/templates/email/group_deletion.text.eex:3 msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "L'administrateur·ice %{author} a supprimé le groupe %{group}. Tous les événements, discussions, billets et todos du groupe ont été supprimés." -#: lib/web/templates/email/group_suspension.html.eex:13 -#: lib/web/templates/email/group_suspension.text.eex:1 -#, elixir-format +#: lib/web/templates/email/group_suspension.html.eex:13 lib/web/templates/email/group_suspension.text.eex:1 msgid "The group %{group} has been suspended on %{instance}!" msgstr "Le groupe %{group} a été suspendu sur %{instance} !" -#: lib/web/templates/email/group_deletion.html.eex:13 -#: lib/web/templates/email/group_deletion.text.eex:1 -#, elixir-format +#: lib/web/templates/email/group_deletion.html.eex:13 lib/web/templates/email/group_deletion.text.eex:1 msgid "The group %{group} was deleted on %{instance}!" msgstr "Le groupe %{group} a été supprimé sur %{instance} !" -#: lib/web/templates/email/group_suspension.html.eex:38 -#: lib/web/templates/email/group_suspension.text.eex:3 -#, elixir-format +#: lib/web/templates/email/group_suspension.html.eex:38 lib/web/templates/email/group_suspension.text.eex:3 msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "L'équipe de modération de votre instance a décidé de suspendre %{group_name} (%{group_address}). Vous n'êtes désormais plus membre de ce groupe." -#: lib/web/email/group.ex:135 -#, elixir-format +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "Le groupe %{group} a été supprimé sur %{instance}" -#: lib/web/email/group.ex:96 -#, elixir-format +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "Le groupe %{group} a été suspendu sur %{instance}" #: lib/web/templates/api/terms.html.eex:24 -#, elixir-format msgctxt "terms" msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." msgstr "Si vous accédez au Service ou utilisez le Service, cela signifie que vous acceptez d'être lié·e par toutes les Conditions ci-dessous. Si une condition n'a pas de sens pour vous, veuillez nous le faire savoir en contactant %{contact}." #: lib/web/templates/api/terms.html.eex:40 -#, elixir-format msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "Pour savoir comment nous recueillons et utilisons les informations sur les utilisateur·ice·s du Service, veuillez consulter notre politique de confidentialité." #: lib/web/templates/api/terms.html.eex:36 -#, elixir-format msgctxt "terms" msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." msgstr "Si vous continuez à utiliser le Service après l'entrée en vigueur des Conditions révisées, vous acceptez les conditions révisées." #: lib/web/templates/api/privacy.html.eex:78 -#, elixir-format msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "Si vous supprimez ces informations, vous devrez vous connecter de nouveau." #: lib/web/templates/api/privacy.html.eex:80 -#, elixir-format msgctxt "terms" msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." -msgstr "" -"Si vous n'êtes pas connecté·e, nous ne conserverons aucune information sur " -"votre appareil, sauf si vous participez anonymement à un événement. Dans ce " -"cas spécifique nous conservons le hash d'un identifiant unique pour " -"l'événement et les statuts de participation dans votre navigateur pour " -"pouvoir les afficher. Supprimer ces informations aura pour seule conséquence " -"que votre participation ne sera plus affichée dans votre navigateur." +msgstr "Si vous n'êtes pas connecté·e, nous ne conserverons aucune information sur votre appareil, sauf si vous participez anonymement à un événement. Dans ce cas spécifique nous conservons le hash d'un identifiant unique pour l'événement et les statuts de participation dans votre navigateur pour pouvoir les afficher. Supprimer ces informations aura pour seule conséquence que votre participation ne sera plus affichée dans votre navigateur." #: lib/web/templates/api/privacy.html.eex:87 -#, elixir-format msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "Attention : Ces informations sont conservées dans votre stockage local et non vos cookies." #: lib/web/templates/api/terms.html.eex:71 -#, elixir-format msgctxt "terms" msgid "Our responsibility" msgstr "Notre responsabilité" #: lib/web/templates/api/privacy.html.eex:61 -#, elixir-format msgctxt "terms" msgid "Retain server logs containing the IP address of all requests to this server, insofar as such logs are kept, no more than 90 days." msgstr "Conserver les journaux du serveur contenant l'adresse IP de toutes les demandes adressées à ce serveur, dans la mesure où ces journaux sont conservés, pas plus de 90 jours." -#: lib/web/templates/api/privacy.html.eex:3 -#: lib/web/templates/api/terms.html.eex:15 -#, elixir-format +#: lib/web/templates/api/privacy.html.eex:3 lib/web/templates/api/terms.html.eex:15 msgctxt "terms" msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary to help you understand them better." msgstr "Certains termes, techniques ou non, utilisés dans le texte ci-dessous peuvent recouvrir des concepts difficiles à appréhender. Nous vous proposons un glossaire qui pourra vous aider à mieux les comprendre." #: lib/web/templates/api/terms.html.eex:45 -#, elixir-format msgctxt "terms" msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." msgstr "Nous ne sommes pas responsables des pertes que vous pourriez subir si quelqu'un d'autre utilise votre adresse électronique ou votre mot de passe, à votre insu ou non." #: lib/web/templates/api/terms.html.eex:50 -#, elixir-format msgctxt "terms" msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." msgstr "Nous ne pouvons être tenus responsables si une erreur de programmation ou d'administration rend votre contenu visible à un public plus large que celui que vous aviez prévu. Outre notre droit limité sur votre contenu, vous conservez tous vos droits sur le contenu que vous publiez, mettez en lien et rendez disponible sur ou via le Service." #: lib/web/templates/api/privacy.html.eex:10 -#, elixir-format msgctxt "terms" msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter an email address, a password (hashed) and at least an username. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" @@ -1206,192 +946,159 @@ msgstr "" "biographie, les images de profil et d'en-tête sont toujours publiques. Vous pouvez toutefois utiliser ce serveur sans vous inscrire." #: lib/web/templates/api/terms.html.eex:30 -#, elixir-format msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "Nous nous réservons le droit de modifier ces Conditions à tout moment. Par exemple, nous pouvons être amenés à modifier ces Conditions si nous proposons une nouvelle fonctionnalité." #: lib/web/templates/api/terms.html.eex:20 -#, elixir-format msgctxt "terms" msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by Framasoft, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the \"About this instance\" page." msgstr "Lorsque nous disons « nous », « notre » ou « nos » dans ce document, nous faisons référence aux propriétaires, opérateur·ices et administrateur·ices de cette instance de Mobilizon. Le logiciel Mobilizon est fourni par l'équipe des contributeur·ices de Mobilizon, soutenue par Framasoft, une organisation française d'éducation populaire à but non lucratif qui défend les logiciels libres. Sauf mention explicite, cette instance de Mobilizon est un service indépendant utilisant le code source de Mobilizon. Vous pouvez trouver plus d'informations sur cette instance sur la page « A propos de cette instance »." #: lib/web/templates/api/terms.html.eex:43 -#, elixir-format msgctxt "terms" msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to %{instance_name}." msgstr "Lorsque vous créez un compte, vous acceptez également de maintenir la sécurité et la confidentialité de votre mot de passe et vous acceptez tous les risques d'accès non autorisé aux données de votre compte et à toute autre information que vous fournissez à %{instance_name}." #: lib/web/templates/api/terms.html.eex:49 -#, elixir-format msgctxt "terms" msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." msgstr "Lorsque vous publiez, liez ou mettez à disposition un contenu sur le Service, vous nous accordez le droit et la licence d'afficher et de distribuer votre contenu sur ou via le Service (y compris via des applications). Nous pouvons formater votre contenu pour l'afficher dans le Service, mais nous ne modifierons pas ou ne réviserons pas la substance de votre contenu lui-même. L'affichage et la distribution de votre contenu se fait strictement selon les règles de visibilité que vous avez définies pour le contenu. Nous ne modifierons pas la visibilité du contenu que vous avez défini." #: lib/web/templates/api/privacy.html.eex:19 -#, elixir-format msgctxt "terms" msgid "Your events and comments are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." -msgstr "" -"Vos événements et commentaires sont transmis aux instances qui " -"suivent la vôtre, ce qui signifie que d'autres instances posséderont des " -"copies de ces contenus. Lorsque vous supprimez un événement ou un " -"commentaire, ceci est transmis de la même façon aux autres instances. Toutes " -"les interactions liées aux fonctionnalités des événements - comme rejoindre " -"un événement - ou bien aux fonctionnalités de groupes - comme gérer ses " -"ressources - sont également fédérées. Veuillez noter que les administrateur·" -"ices de cette instance et de toutes les instances fédérées peuvent voir ces " -"messages, et que les destinataires peuvent les copier, en faire des captures " -"d'écran et les repartager de différentes façons." +msgstr "Vos événements et commentaires sont transmis aux instances qui suivent la vôtre, ce qui signifie que d'autres instances posséderont des copies de ces contenus. Lorsque vous supprimez un événement ou un commentaire, ceci est transmis de la même façon aux autres instances. Toutes les interactions liées aux fonctionnalités des événements - comme rejoindre un événement - ou bien aux fonctionnalités de groupes - comme gérer ses ressources - sont également fédérées. Veuillez noter que les administrateur·ices de cette instance et de toutes les instances fédérées peuvent voir ces messages, et que les destinataires peuvent les copier, en faire des captures d'écran et les repartager de différentes façons." #: lib/web/templates/api/privacy.html.eex:99 -#, elixir-format msgctxt "terms" msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." msgstr "Votre contenu peut être téléchargé par d'autres instances du réseau. Vos événements publics et commentaires sont transmis aux instances abonnées à votre instance. Le contenu créé à travers un groupe est transmis à toutes les instances de tous les membres du groupe, si celleux-ci sont inscrit·e·s sur une autre instance que la vôtre." #: lib/web/templates/email/event_participation_confirmed.text.eex:4 -#, elixir-format msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "Vous avez confirmé votre participation. Mettez à jour votre agenda, car vous êtes maintenant sur la liste des invités !" -#: lib/web/templates/email/event_participation_approved.html.eex:38 -#: lib/web/templates/email/event_participation_confirmed.html.eex:38 -#, elixir-format +#: lib/web/templates/email/event_participation_approved.html.eex:38 lib/web/templates/email/event_participation_confirmed.html.eex:38 msgid "You recently requested to attend %{title}." msgstr "Vous avez demandé à participer à l'événement %{title}." #: lib/web/email/participation.ex:91 -#, elixir-format msgid "Your participation to event %{title} has been confirmed" msgstr "Votre participation à l'événement %{title} a été approuvée" #: lib/web/templates/email/report.html.eex:41 -#, elixir-format msgid "%{reporter} reported the following content." msgstr "%{reporter} a signalé le contenu suivant." #: lib/web/templates/email/report.text.eex:5 -#, elixir-format msgid "Group %{group} was reported" msgstr "Le groupe %{group} a été signalé" #: lib/web/templates/email/report.html.eex:51 -#, elixir-format msgid "Group reported" msgstr "Groupe signalé" #: lib/web/templates/email/report.text.eex:7 -#, elixir-format msgid "Profile %{profile} was reported" msgstr "Le profil %{profile} a été signalé" #: lib/web/templates/email/report.html.eex:56 -#, elixir-format msgid "Profile reported" msgstr "Profil signalé" #: lib/web/templates/email/event_participation_confirmed.html.eex:45 -#, elixir-format msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "Vous avez maintenant confirmé votre participation. Mettez à jour votre agenda, car vous êtes maintenant sur la liste des invités !" -#: lib/mobilizon/posts/post.ex:91 -#, elixir-format +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "Un texte est requis pour le billet" -#: lib/mobilizon/posts/post.ex:90 -#, elixir-format +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "Un titre est requis pour le billet" #: lib/web/templates/email/instance_follow.text.eex:3 -#, elixir-format msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "%{name} (%{domain}) vient de demander à suivre votre instance." #: lib/web/email/follow.ex:54 -#, elixir-format msgid "%{name} requests to follow your instance" msgstr "%{name} demande à suivre votre instance" #: lib/web/templates/email/instance_follow.html.eex:38 -#, elixir-format msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "%{name} (%{domain}) vient de demander à suivre votre instance. Si vous acceptez, leur instance recevra tous les événements publics de votre instance." #: lib/web/templates/email/instance_follow.text.eex:4 -#, elixir-format msgid "If you accept, this instance will receive all of your public events." msgstr "Si vous acceptez, leur instance recevra tous les événements publics de votre instance." #: lib/web/email/follow.ex:48 -#, elixir-format msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "L'instance %{name} (%{domain}) demande à suivre votre instance" #: lib/web/templates/email/instance_follow.html.eex:66 -#, elixir-format msgid "See the federation settings" msgstr "Voir les paramètres de fédération" -#: lib/web/templates/email/instance_follow.html.eex:52 -#: lib/web/templates/email/instance_follow.text.eex:6 -#, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:52 lib/web/templates/email/instance_follow.text.eex:6 msgid "To accept this invitation, head over to the instance's admin settings." msgstr "Pour accepter cette invitation, rendez-vous dans vos groupes." -#: lib/web/templates/email/instance_follow.html.eex:13 -#: lib/web/templates/email/instance_follow.text.eex:1 -#, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:13 lib/web/templates/email/instance_follow.text.eex:1 msgid "Want to connect?" msgstr "Voulez-vous vous connecter ?" -#: lib/web/templates/email/instance_follow.html.eex:45 -#: lib/web/templates/email/instance_follow.text.eex:5 -#, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:45 lib/web/templates/email/instance_follow.text.eex:5 msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "Note : le fait que %{name} (%{domain}) vous suive n'implique pas nécessairement que vous suivez cette instance, mais vous pouvez demander à les suivre également." #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 -#, elixir-format msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "Salut ! Vous venez de vous enregistrer pour rejoindre cet événement : « %{title} ». Merci de confirmer l'adresse email que vous avez fournie :" #: lib/web/templates/email/event_participation_rejected.html.eex:38 -#, elixir-format msgid "You issued a request to attend %{title}." msgstr "Vous avez effectué une demande de participation à %{title}." #: lib/web/templates/email/event_updated.html.eex:64 -#, elixir-format msgid "Event title" msgstr "Titre de l'événement" #: lib/web/templates/email/event_updated.html.eex:38 -#, elixir-format msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Il y a eu des changements pour %{title} donc nous avons pensé que nous vous le ferions savoir." #: lib/web/templates/error/500_page.html.eex:46 -#, elixir-format msgid "The Mobilizon server seems to be temporarily down." msgstr "Le serveur Mobilizon semble être temporairement hors-service." #: lib/web/templates/error/500_page.html.eex:7 -#, elixir-format msgid "This page is not correct" msgstr "Cette page n’est pas correcte" #: lib/web/templates/error/500_page.html.eex:45 -#, elixir-format msgid "We're sorry, but something went wrong on our end." msgstr "Nous sommes désolé·e·s, mais quelque chose s’est mal passé de notre côté." -#: lib/web/templates/email/email.html.eex:88 -#: lib/web/templates/email/email.text.eex:4 -#, elixir-format +#: lib/web/templates/email/email.html.eex:88 lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Ceci est un site de démonstration permettant de tester Mobilizon." + +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "Flux de %{name}" + +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "Flux privé des événements de %{actor} sur %{instance}" + +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "Flux public des événements de %{actor} sur %{instance}" + +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "Flux pour %{email} sur %{instance}" diff --git a/priv/gettext/fr/LC_MESSAGES/errors.po b/priv/gettext/fr/LC_MESSAGES/errors.po index 2fef5b409..5ed0d8478 100644 --- a/priv/gettext/fr/LC_MESSAGES/errors.po +++ b/priv/gettext/fr/LC_MESSAGES/errors.po @@ -101,12 +101,12 @@ msgid "Cannot refresh the token" msgstr "Impossible de rafraîchir le jeton" #, elixir-format -#: lib/graphql/resolvers/group.ex:198 +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "Le profil actuel n'est pas un membre de ce groupe" #, elixir-format -#: lib/graphql/resolvers/group.ex:202 +#: lib/graphql/resolvers/group.ex:199 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é" @@ -116,13 +116,13 @@ msgid "Error while saving user settings" msgstr "Erreur lors de la sauvegarde des paramètres utilisateur" #, elixir-format -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "Groupe non trouvé" #, elixir-format -#: lib/graphql/resolvers/group.ex:66 +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "Groupe avec l'ID %{id} non trouvé" @@ -132,7 +132,7 @@ msgid "Impossible to authenticate, either your email or password are invalid." msgstr "Impossible de s'authentifier, votre adresse e-mail ou bien votre mot de passe sont invalides." #, elixir-format -#: lib/graphql/resolvers/group.ex:258 +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "Membre non trouvé" @@ -148,16 +148,15 @@ msgid "No user to validate with this email was found" msgstr "Aucun·e utilisateur·ice à valider avec cet email n'a été trouvé·e" #, elixir-format -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "Aucun·e utilisateur·ice avec cette adresse e-mail n'a été trouvé·e" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "Le profil n'est pas possédé par l'utilisateur connecté" @@ -225,22 +224,22 @@ msgid "User requested is not logged-in" msgstr "L'utilisateur·ice demandé·e n'est pas connecté·e" #, elixir-format -#: lib/graphql/resolvers/group.ex:232 +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "Vous êtes déjà membre de ce groupe" #, elixir-format -#: lib/graphql/resolvers/group.ex:265 +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "Vous ne pouvez pas quitter ce groupe car vous en êtes le ou la seul·e administrateur·ice" #, elixir-format -#: lib/graphql/resolvers/group.ex:229 +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "Vous ne pouvez pas rejoindre ce groupe" #, elixir-format -#: lib/graphql/resolvers/group.ex:94 +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "Vous ne pouvez pas lister les groupes sauf à être modérateur·ice." @@ -255,7 +254,7 @@ msgid "You need to be logged-in to change your password" msgstr "Vous devez être connecté·e pour changer votre mot de passe" #, elixir-format -#: lib/graphql/resolvers/group.ex:207 +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "Vous devez être connecté·e pour supprimer un groupe" @@ -265,25 +264,20 @@ msgid "You need to be logged-in to delete your account" msgstr "Vous devez être connecté·e pour supprimer votre compte" #, elixir-format -#: lib/graphql/resolvers/group.ex:237 +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "Vous devez être connecté·e pour rejoindre un groupe" #, elixir-format -#: lib/graphql/resolvers/group.ex:270 +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "Vous devez être connecté·e pour quitter un groupe" #, elixir-format -#: lib/graphql/resolvers/group.ex:172 +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "Vous devez être connecté·e pour mettre à jour un groupe" -#, elixir-format -#: lib/graphql/resolvers/user.ex:58 -msgid "You need to have admin access to list users" -msgstr "Vous devez avoir un accès administrateur pour lister les utilisateur·ices" - #, elixir-format #: lib/graphql/resolvers/user.ex:108 msgid "You need to have an existing token to get a refresh token" @@ -335,22 +329,22 @@ msgid "Profile already suspended" msgstr "Le profil est déjà suspendu" #, elixir-format -#: lib/graphql/resolvers/participant.ex:93 +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "Une adresse e-mail valide est requise par votre instance" #, elixir-format -#: lib/graphql/resolvers/participant.ex:87 +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "La participation anonyme n'est pas activée" #, elixir-format -#: lib/graphql/resolvers/person.ex:184 +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "Impossible de supprimer le ou la dernier·ère administrateur·ice d'un groupe" #, elixir-format -#: lib/graphql/resolvers/person.ex:181 +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "Impossible de supprimer le dernier profil d'un·e utilisateur·ice" @@ -360,7 +354,7 @@ msgid "Comment is already deleted" msgstr "Le commentaire est déjà supprimé" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:61 +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "Discussion non trouvée" @@ -375,29 +369,29 @@ msgid "Error while updating report" msgstr "Erreur lors de la mise à jour du signalement" #, elixir-format -#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "ID de l'événement non trouvé" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "Événement non trouvé" #, elixir-format -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "L'événement avec cet ID %{id} n'existe pas" #, elixir-format -#: lib/graphql/resolvers/participant.ex:100 +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "Erreur interne" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:193 +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "Aucune discussion avec l'ID %{id}" @@ -412,14 +406,14 @@ msgid "No such feed token" msgstr "Aucun jeton de flux correspondant" #, elixir-format -#: lib/graphql/resolvers/participant.ex:238 +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "Le ou la participant·e a déjà le rôle %{role}" #, elixir-format -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "Participant·e non trouvé·e" @@ -429,22 +423,17 @@ msgid "Person with ID %{id} not found" msgstr "Personne avec l'ID %{id} non trouvé" #, elixir-format -#: lib/graphql/resolvers/person.ex:50 +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "Personne avec le nom %{name} non trouvé" #, elixir-format -#: lib/graphql/resolvers/picture.ex:41 -msgid "Picture with ID %{id} was not found" -msgstr "Groupe avec l'ID %{id} non trouvé" - -#, elixir-format -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "L'ID du billet n'est pas un ID valide" #, elixir-format -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "Le billet n'existe pas" @@ -459,8 +448,8 @@ msgid "Profile is already a member of this group" msgstr "Ce profil est déjà membre de ce groupe" #, elixir-format -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 @@ -468,12 +457,12 @@ msgid "Profile is not member of group" msgstr "Le profil n'est pas un·e membre du groupe" #, elixir-format -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "Profile non trouvé" #, elixir-format -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "Le profil modérateur fourni n'a pas de permissions sur cet événement" @@ -488,12 +477,12 @@ msgid "Resource doesn't exist" msgstr "La ressource n'existe pas" #, elixir-format -#: lib/graphql/resolvers/participant.ex:121 +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "L'événement a déjà atteint sa capacité maximale" #, elixir-format -#: lib/graphql/resolvers/participant.ex:261 +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "Ce jeton est invalide" @@ -519,22 +508,22 @@ msgid "Token is not a valid UUID" msgstr "Ce jeton n'est pas un UUID valide" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "Utilisateur·ice non trouvé·e" #, elixir-format -#: lib/graphql/resolvers/person.ex:232 +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "Vous avez déjà un profil pour cet utilisateur" #, elixir-format -#: lib/graphql/resolvers/participant.ex:131 +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "Vous êtes déjà un·e participant·e à cet événement" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:197 +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "Vous n'êtes pas un membre du groupe dans lequel se fait la discussion" @@ -574,8 +563,8 @@ msgid "You are not allowed to update a comment if not connected" msgstr "Vous n'êtes pas autorisé·e à mettre à jour un commentaire si non connecté·e" #, elixir-format -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "Vous ne pouvez pas quitter cet événement car vous en êtes le ou la seule créateur·ice participant" @@ -592,7 +581,7 @@ msgid "You cannot delete this comment" msgstr "Vous ne pouvez pas supprimer ce commentaire" #, elixir-format -#: lib/graphql/resolvers/event.ex:275 +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "Vous ne pouvez pas supprimer cet événement" @@ -642,7 +631,7 @@ msgid "You need to be logged-in and an administrator to save admin settings" msgstr "Vous devez être connecté·e et un·e administrateur·ice pour sauvegarder les paramètres administrateur" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:75 +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "Vous devez être connecté·e pour accéder aux discussions" @@ -652,12 +641,12 @@ msgid "You need to be logged-in to access resources" msgstr "Vous devez être connecté·e pour supprimer un groupe" #, elixir-format -#: lib/graphql/resolvers/event.ex:210 +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "Vous devez être connecté·e pour créer des événements" #, elixir-format -#: lib/graphql/resolvers/post.ex:139 +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "Vous devez être connecté·e pour quitter un groupe" @@ -672,12 +661,12 @@ msgid "You need to be logged-in to create resources" msgstr "Vous devez être connecté·e pour quitter un groupe" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "Vous devez être connecté·e pour supprimer un groupe" #, elixir-format -#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "Vous devez être connecté·e pour supprimer un groupe" @@ -687,22 +676,22 @@ msgid "You need to be logged-in to delete resources" msgstr "Vous devez être connecté·e pour supprimer un groupe" #, elixir-format -#: lib/graphql/resolvers/participant.ex:105 +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "Vous devez être connecté·e pour rejoindre un événement" #, elixir-format -#: lib/graphql/resolvers/participant.ex:204 +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "Vous devez être connecté·e pour quitter un groupe" #, elixir-format -#: lib/graphql/resolvers/event.ex:249 +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "Vous devez être connecté·e pour mettre à jour un groupe" #, elixir-format -#: lib/graphql/resolvers/post.ex:176 +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "Vous devez être connecté·e pour mettre à jour un groupe" @@ -716,11 +705,6 @@ msgstr "Vous devez être connecté·e pour mettre à jour un groupe" msgid "You need to be logged-in to view a resource preview" msgstr "Vous devez être connecté·e pour supprimer un groupe" -#, elixir-format -#: lib/graphql/resolvers/picture.ex:79 -msgid "You need to login to upload a picture" -msgstr "Vous devez être connecté·e pour mettre à jour un groupe" - #, elixir-format #: lib/graphql/resolvers/resource.ex:121 msgid "Parent resource doesn't belong to this group" @@ -797,22 +781,22 @@ msgid "You can't reject this invitation with this profile." msgstr "Vous ne pouvez pas rejeter cette invitation avec ce profil." #, elixir-format -#: lib/graphql/resolvers/picture.ex:71 +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "Le fichier n'a pas un type MIME autorisé." #, elixir-format -#: lib/graphql/resolvers/group.ex:167 +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "Le profil n'est pas administrateur·ice pour le groupe" #, elixir-format -#: lib/graphql/resolvers/event.ex:238 +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "Vous ne pouvez pas éditer cet événement." #, elixir-format -#: lib/graphql/resolvers/event.ex:241 +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "Vous ne pouvez pas attribuer cet événement à ce profil." @@ -832,21 +816,27 @@ msgid "You don't have the right to remove this member." msgstr "Vous n'avez pas les droits pour supprimer ce·tte membre." #, elixir-format -#: lib/mobilizon/actors/actor.ex:344 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "Cet identifiant est déjà pris." #, elixir-format -#: lib/graphql/resolvers/discussion.ex:72 +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "Vous devez fournir un ID ou bien un slug pour accéder à une discussion" #, elixir-format -#: lib/graphql/resolvers/event.ex:199 +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "Le profil de l'organisateur·ice n'appartient pas à l'utilisateur·ice" #, elixir-format -#: lib/graphql/resolvers/participant.ex:90 +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "L'ID du profil fourni n'est pas celui du profil anonyme" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/gl/LC_MESSAGES/default.po b/priv/gettext/gl/LC_MESSAGES/default.po index 0cb63a8e0..9ee007823 100644 --- a/priv/gettext/gl/LC_MESSAGES/default.po +++ b/priv/gettext/gl/LC_MESSAGES/default.po @@ -14,270 +14,265 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.1\n" -#: lib/web/templates/email/password_reset.html.eex:48 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:48 msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" "Se non solicitaches isto, ignora este email. O teu constrasinal non cambiará " "ata que accedas á ligazón inferior e cres un novo." -#: lib/service/export/feed.ex:170 #, elixir-format -msgid "Feed for %{email} on Mobilizon" -msgstr "Fonte para %{email} en Mobilizon" - #: lib/web/templates/email/report.html.eex:74 -#, elixir-format msgid "%{title} by %{creator}" msgstr "%{title} por %{creator}" -#: lib/web/templates/email/registration_confirmation.html.eex:58 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:58 msgid "Activate my account" msgstr "Activar a miña conta" +#, elixir-format #: lib/web/templates/email/email.html.eex:117 #: lib/web/templates/email/email.text.eex:9 -#, elixir-format msgid "Ask the community on Framacolibri" msgstr "Pregunta á comunidade en Framacolibri" -#: lib/web/templates/email/report.text.eex:15 #, elixir-format +#: lib/web/templates/email/report.text.eex:15 msgid "Comments" msgstr "Comentarios" +#, elixir-format #: lib/web/templates/email/report.html.eex:72 #: lib/web/templates/email/report.text.eex:11 -#, elixir-format msgid "Event" msgstr "Evento" -#: lib/web/email/user.ex:48 #, elixir-format +#: lib/web/email/user.ex:48 msgid "Instructions to reset your password on %{instance}" msgstr "Instruccións para restablecer o contrasinal en %{instance}" -#: lib/web/templates/email/report.text.eex:21 #, elixir-format +#: lib/web/templates/email/report.text.eex:21 msgid "Reason" msgstr "Razón" -#: lib/web/templates/email/password_reset.html.eex:61 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:61 msgid "Reset Password" msgstr "Restablecer Contrasinal" -#: lib/web/templates/email/password_reset.html.eex:41 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:41 msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." msgstr "" "Restablecer o contrasinal é doado. Preme no botón inferior e segue as " "instrucción. Volverás a poder conectarte nuns intres." -#: lib/web/email/user.ex:28 #, elixir-format +#: lib/web/email/user.ex:28 msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Instruccións para confirmar a túa conta Mobilizon en %{instance}" -#: lib/web/email/admin.ex:24 #, elixir-format +#: lib/web/email/admin.ex:24 msgid "New report on Mobilizon instance %{instance}" msgstr "Nova denuncia sobre a instancia Mobilizon %{instance}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 -#, elixir-format msgid "Go to event page" msgstr "Ir á páxina do evento" -#: lib/web/templates/email/report.text.eex:1 #, elixir-format +#: lib/web/templates/email/report.text.eex:1 msgid "New report from %{reporter} on %{instance}" msgstr "Nova denuncia de %{reporter} sobre %{instance}" -#: lib/web/templates/email/event_participation_approved.text.eex:1 #, elixir-format +#: lib/web/templates/email/event_participation_approved.text.eex:1 msgid "Participation approved" msgstr "Participación aprobada" +#, elixir-format #: lib/web/templates/email/password_reset.html.eex:13 #: lib/web/templates/email/password_reset.text.eex:1 -#, elixir-format msgid "Password reset" msgstr "Restablece o contrasinal" -#: lib/web/templates/email/password_reset.text.eex:7 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:7 msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." msgstr "" "Restablecer o contrasinal é doado. Preme na ligazón inferior e segue as " "instruccións. Moi pronto poderás volver e conectarte." -#: lib/web/templates/email/registration_confirmation.text.eex:5 #, elixir-format +#: lib/web/templates/email/registration_confirmation.text.eex:5 msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." msgstr "" "Creaches unha conta en %{host} con este enderezo de email. Só precisas " "activalo. Se non foches ti, por favor ignora este email." -#: lib/web/email/participation.ex:112 #, elixir-format +#: lib/web/email/participation.ex:112 msgid "Your participation to event %{title} has been approved" msgstr "Foi aprobada a túa participación no evento %{title}" -#: lib/web/email/participation.ex:70 #, elixir-format +#: lib/web/email/participation.ex:70 msgid "Your participation to event %{title} has been rejected" msgstr "Foi rexeitada a túa participación no evento %{title}" -#: lib/web/email/event.ex:37 #, elixir-format +#: lib/web/email/event.ex:37 msgid "Event %{title} has been updated" msgstr "Actualizouse o evento %{title}" -#: lib/web/templates/email/event_updated.text.eex:15 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:15 msgid "New title: %{title}" msgstr "Novo título: %{title}" -#: lib/web/templates/email/password_reset.text.eex:5 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:5 msgid "You requested a new password for your account on %{instance}." msgstr "" "Solicitaches un novo contrasinal para a túa conta na instancia %{instance]." -#: lib/web/templates/email/email.html.eex:85 #, elixir-format +#: lib/web/templates/email/email.html.eex:85 msgid "Warning" msgstr "Aviso" -#: lib/web/email/participation.ex:134 #, elixir-format +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Confirma a túa participación no evento %{title}" -#: lib/web/templates/api/privacy.html.eex:75 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:75 msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "ID interno para a túa identidade seleccionada" -#: lib/web/templates/api/privacy.html.eex:74 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:74 msgctxt "terms" msgid "An internal user ID" msgstr "ID de usuaria interno" -#: lib/web/templates/api/privacy.html.eex:37 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:37 msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "" "Calquera información que obtemos de ti podería usarse dos seguintes xeitos:" -#: lib/web/templates/api/privacy.html.eex:9 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:9 msgctxt "terms" msgid "Basic account information" msgstr "Información básica da conta" -#: lib/web/templates/api/privacy.html.eex:25 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:25 msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "Non compartas informacións perigosas en Mobilizon." -#: lib/web/templates/api/privacy.html.eex:90 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:90 msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "Enviamos información a terceiras partes alleas?" -#: lib/web/templates/api/privacy.html.eex:68 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:68 msgctxt "terms" msgid "Do we use cookies?" msgstr "Usamos cookies?" -#: lib/web/templates/api/privacy.html.eex:51 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:51 msgctxt "terms" msgid "How do we protect your information?" msgstr "Como protexemos a túa información?" -#: lib/web/templates/api/privacy.html.eex:29 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:29 msgctxt "terms" msgid "IPs and other metadata" msgstr "IPs e outros metadatos" -#: lib/web/templates/api/privacy.html.eex:17 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:17 msgctxt "terms" msgid "Published events and comments" msgstr "Eventos publicados e comentarios" -#: lib/web/templates/api/privacy.html.eex:64 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:64 msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "" "Retención de enderezos IP asociados con usuarias rexistradas durante non " "máis de 12 meses." -#: lib/web/templates/api/privacy.html.eex:76 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:76 msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Tokens para autenticarte" -#: lib/web/templates/api/privacy.html.eex:31 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:31 msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "" "Tamén retemos rexistros do servidor que inclúen enderezos IP de cada " "solicitude ó noso servidor." -#: lib/web/templates/api/privacy.html.eex:70 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:70 msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "Gardamos información no teu dispositivo cando te conectas:" -#: lib/web/templates/api/privacy.html.eex:58 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:58 msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Esforzarémonos de boa fe para:" -#: lib/web/templates/api/privacy.html.eex:35 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:35 msgctxt "terms" msgid "What do we use your information for?" msgstr "Para que usamos a túa información?" -#: lib/web/templates/api/privacy.html.eex:57 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:57 msgctxt "terms" msgid "What is our data retention policy?" msgstr "Cal é a nosa política de retención de datos?" -#: lib/web/templates/api/privacy.html.eex:67 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:67 msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Podes eliminar de xeito definitivo a túa conta cando queiras." -#: lib/web/templates/api/privacy.html.eex:115 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:115 msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Cambios na nosa Política de Privacidade" -#: lib/web/templates/api/privacy.html.eex:106 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:106 msgctxt "terms" msgid "If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site." msgstr "" @@ -287,8 +282,8 @@ msgstr "" "General_Data_Protection_Regulation\">Regulación Xeral de Protección de " "Datos)) non uses esta web." -#: lib/web/templates/api/privacy.html.eex:109 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:109 msgctxt "terms" msgid "If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site." msgstr "" @@ -298,30 +293,30 @@ msgstr "" "27s_Online_Privacy_Protection_Act\">Children's Online Privacy Protection " "Act) non utilices esta web." -#: lib/web/templates/api/privacy.html.eex:117 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:117 msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "" "Se decidimos cambiar a nosa política de privacidade, publicaremos aquí os " "cambios." -#: lib/web/templates/api/privacy.html.eex:112 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:112 msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "" "Os requerimentos legais poderían ser diferentes se o servidor está noutra " "xurisdición." -#: lib/web/templates/api/privacy.html.eex:103 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:103 msgctxt "terms" msgid "Site usage by children" msgstr "Utilización da web por menores" -#: lib/web/templates/api/privacy.html.eex:47 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:47 msgctxt "terms" msgid "The email address you provide may be used to send you information, updates and notifications about other people\n interacting with your content or sending you messages and to respond to inquiries, and/or other requests or\n questions." msgstr "" @@ -331,8 +326,8 @@ msgstr "" "así como para responder a preguntas, e/ou outras solicitudes\n" "ou cuestións." -#: lib/web/templates/api/privacy.html.eex:45 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:45 msgctxt "terms" msgid "To aid moderation of the community, for example comparing your IP address with other known ones to determine ban\n evasion or other violations." msgstr "" @@ -340,8 +335,8 @@ msgstr "" "con outro coñecidos para evitar o salto\n" "de bloqueos ou outros infrinximentos." -#: lib/web/templates/api/privacy.html.eex:43 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:43 msgctxt "terms" msgid "To provide the core functionality of Mobilizon. Depending on this instance's policy you may only be able to\n interact with other people's content and post your own content if you are logged in." msgstr "" @@ -350,89 +345,89 @@ msgstr "" "estar conectada para así poder interactuar co contido doutras usuarias e " "publicar o teu contido." -#: lib/web/templates/api/privacy.html.eex:6 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:6 msgctxt "terms" msgid "What information do we collect?" msgstr "Que información recollemos?" -#: lib/web/email/user.ex:176 #, elixir-format +#: lib/web/email/user.ex:176 msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon en %{instance}: confirma o enderezo de email" -#: lib/web/email/user.ex:152 #, elixir-format +#: lib/web/email/user.ex:152 msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon en %{instance}: email cambiado" -#: lib/web/email/notification.ex:46 #, elixir-format +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un evento previsto para hoxe" msgstr[1] "%{nb_events} eventos previstos hoxe" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:38 #: lib/web/templates/email/on_day_notification.text.eex:4 -#, elixir-format msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Hoxe tes un evento:" msgstr[1] "Tes %{total} eventos hoxe:" -#: lib/web/templates/email/group_invite.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_invite.text.eex:3 msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} convidoute a unirte ó seu grupo %{group}" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:13 #: lib/web/templates/email/group_invite.text.eex:1 -#, elixir-format msgid "Come along!" msgstr "Imos!" -#: lib/web/email/notification.ex:24 #, elixir-format +#: lib/web/email/notification.ex:24 msgid "Don't forget to go to %{title}" msgstr "Non esquezas ir a %{title}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 -#, elixir-format msgid "Get ready for %{title}" msgstr "Prepárate para %{title}" -#: lib/web/templates/email/group_invite.html.eex:59 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:59 msgid "See my groups" msgstr "Ver os meus grupos" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:45 #: lib/web/templates/email/group_invite.text.eex:5 -#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Para aceptar o convite, vaite ós teus grupos." -#: lib/web/templates/email/before_event_notification.text.eex:5 #, elixir-format +#: lib/web/templates/email/before_event_notification.text.eex:5 msgid "View the event on: %{link}" msgstr "Ver o evento en: %{link}" -#: lib/web/email/group.ex:32 #, elixir-format +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} convidoute a unirte ó grupo %{group}" -#: lib/web/email/notification.ex:70 #, elixir-format +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un evento previsto nesta semana" msgstr[1] "%{nb_events} eventos previstos nesta semana" -#: lib/web/email/notification.ex:92 #, elixir-format +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Hai unha solicitude de participación para o evento %{title} que atender" @@ -440,21 +435,21 @@ msgstr[1] "" "Hai %{number_participation_requests} solicitudes de participación no evento " "%{title} que atender" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Tes un evento esta semana:" msgstr[1] "Tes %{total} eventos esta semana:" -#: lib/service/metadata/utils.ex:52 #, elixir-format +#: lib/service/metadata/utils.ex:52 msgid "The event organizer didn't add any description." msgstr "A organización do evento non proporcionou unha descrición." -#: lib/web/templates/api/privacy.html.eex:54 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:54 msgctxt "terms" msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." msgstr "" @@ -464,8 +459,8 @@ msgstr "" "e a API, están protexidas con SSL/TLS, e o contrasinal protexido cun " "algoritmo forte." -#: lib/web/templates/api/privacy.html.eex:94 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:94 msgctxt "terms" msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." msgstr "" @@ -477,20 +472,20 @@ msgstr "" "facelo é apropiado para cumprir coa lei, facer cumprir as políticas desta " "web, ou protexer os dereitos ou a seguridade doutras persoas ou os nosos." -#: lib/web/templates/api/terms.html.eex:23 #, elixir-format +#: lib/web/templates/api/terms.html.eex:23 msgctxt "terms" msgid "Accepting these Terms" msgstr "Aceptando estos Termos" -#: lib/web/templates/api/terms.html.eex:27 #, elixir-format +#: lib/web/templates/api/terms.html.eex:27 msgctxt "terms" msgid "Changes to these Terms" msgstr "Cambios nos Termos" -#: lib/web/templates/api/terms.html.eex:85 #, elixir-format +#: lib/web/templates/api/terms.html.eex:85 msgctxt "terms" msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." msgstr "" @@ -501,16 +496,16 @@ msgstr "" "presente no Servizo. É responsabilidade túa asumir o risco procedente de " "utilizar ou confiar en calquera contido." -#: lib/web/templates/api/terms.html.eex:60 #, elixir-format +#: lib/web/templates/api/terms.html.eex:60 msgctxt "terms" msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" msgstr "" "Tamén, aceptas que non vas facer nada do seguinte en conexión co Servizo ou " "outras usuarias:" -#: lib/web/templates/api/terms.html.eex:65 #, elixir-format +#: lib/web/templates/api/terms.html.eex:65 msgctxt "terms" msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." msgstr "" @@ -518,22 +513,22 @@ msgstr "" "uso ou outras características deseñadas para protexer o Servizo, usuarias do " "Servizo, ou terceiras partes." -#: lib/web/templates/api/terms.html.eex:64 #, elixir-format +#: lib/web/templates/api/terms.html.eex:64 msgctxt "terms" msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" msgstr "" "Recoller información personal acerca doutras usuarias, ou intimidar, " "ameazar, presionar ou molestar doutros xeitos ás usuarias do Servizo;" -#: lib/web/templates/api/terms.html.eex:55 #, elixir-format +#: lib/web/templates/api/terms.html.eex:55 msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "Contido que é ilegal ou alegal, que podería ser comprometido;" -#: lib/web/templates/api/terms.html.eex:56 #, elixir-format +#: lib/web/templates/api/terms.html.eex:56 msgctxt "terms" msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" msgstr "" @@ -541,48 +536,48 @@ msgstr "" "comerciais, copyright, dereitos de privacidade, dereitos de publicidade ou " "outros dereitos intelectuais de calquera tipo;" -#: lib/web/templates/api/terms.html.eex:42 #, elixir-format +#: lib/web/templates/api/terms.html.eex:42 msgctxt "terms" msgid "Creating Accounts" msgstr "Creando Contas" -#: lib/web/templates/api/terms.html.eex:89 #, elixir-format +#: lib/web/templates/api/terms.html.eex:89 msgctxt "terms" msgid "Entire Agreement" msgstr "Acordo completo" -#: lib/web/templates/api/terms.html.eex:92 #, elixir-format +#: lib/web/templates/api/terms.html.eex:92 msgctxt "terms" msgid "Feedback" msgstr "Opinión" -#: lib/web/templates/api/terms.html.eex:83 #, elixir-format +#: lib/web/templates/api/terms.html.eex:83 msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Ligazóns e Contido de Terceiras Partes" -#: lib/web/templates/api/terms.html.eex:88 #, elixir-format +#: lib/web/templates/api/terms.html.eex:88 msgctxt "terms" msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." msgstr "" "Se vulneras algún destos Termos, temos dereito a suspender ou desactivar o " "acceso á conta ou a usar o Servizo." -#: lib/web/templates/api/terms.html.eex:63 #, elixir-format +#: lib/web/templates/api/terms.html.eex:63 msgctxt "terms" msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" msgstr "" "Suplantar ou publicar en nome doutra persoa ou entidade oy confundir doutro " "xeito sobre a túa relación con esa persoa ou entidade;" -#: lib/web/templates/api/terms.html.eex:48 #, elixir-format +#: lib/web/templates/api/terms.html.eex:48 msgctxt "terms" msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." msgstr "" @@ -590,26 +585,26 @@ msgstr "" "accesible os contidos. Es responsable do contido que publicas no Servizo, " "tanto da súa legalidade, fiabilidade e corrección." -#: lib/web/templates/api/terms.html.eex:39 #, elixir-format +#: lib/web/templates/api/terms.html.eex:39 msgctxt "terms" msgid "Privacy Policy" msgstr "Política de Privacidade" -#: lib/web/templates/api/terms.html.eex:95 #, elixir-format +#: lib/web/templates/api/terms.html.eex:95 msgctxt "terms" msgid "Questions & Contact Information" msgstr "Preguntas e Información de Contacto" -#: lib/web/templates/api/terms.html.eex:87 #, elixir-format +#: lib/web/templates/api/terms.html.eex:87 msgctxt "terms" msgid "Termination" msgstr "Finalización" -#: lib/web/templates/api/terms.html.eex:62 #, elixir-format +#: lib/web/templates/api/terms.html.eex:62 msgctxt "terms" msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" msgstr "" @@ -617,14 +612,14 @@ msgstr "" "negativo ou facer que outras non desfruten do Servizo ou puidese danar, " "desactivar, sobrecargar ou impedir o funcionamento do Servizo;" -#: lib/web/templates/api/terms.html.eex:47 #, elixir-format +#: lib/web/templates/api/terms.html.eex:47 msgctxt "terms" msgid "Your Content & Conduct" msgstr "O teu Contido e Conduta" -#: lib/web/templates/api/terms.html.eex:84 #, elixir-format +#: lib/web/templates/api/terms.html.eex:84 msgctxt "terms" msgid "%{instance_name} makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "" @@ -635,8 +630,8 @@ msgstr "" "implica o apoio de %{instance_name} a esa web. O uso de tales sitios " "web farase baixo responsabilidade propia da usuaria." -#: lib/web/templates/api/terms.html.eex:68 #, elixir-format +#: lib/web/templates/api/terms.html.eex:68 msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "" @@ -645,16 +640,16 @@ msgstr "" "regras de moderación. Romper esas regras podería resultar na cancelación ou " "suspensión da túa conta." -#: lib/web/templates/api/terms.html.eex:81 #, elixir-format +#: lib/web/templates/api/terms.html.eex:81 msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "" "Para coñecer máis sobre o software Mobilizon visita esta web." -#: lib/web/templates/api/terms.html.eex:18 #, elixir-format +#: lib/web/templates/api/terms.html.eex:18 msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "" @@ -663,8 +658,8 @@ msgstr "" ">%{instance_url}) e o servizo (colectivamente, o \"Servizo\"). Estos son " "os nosos termos do servizo (\"Termos\"). Le con atención." -#: lib/web/templates/api/terms.html.eex:33 #, elixir-format +#: lib/web/templates/api/terms.html.eex:33 msgctxt "terms" msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." msgstr "" @@ -672,8 +667,8 @@ msgstr "" "evidente. Os cambios menores poderían aparecer simplemente no pé do sitio " "web. É responsabilidade túa estar atenta a estos cambios nos Termos." -#: lib/web/templates/api/terms.html.eex:53 #, elixir-format +#: lib/web/templates/api/terms.html.eex:53 msgctxt "terms" msgid "In order to make %{instance_name} a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" msgstr "" @@ -681,16 +676,16 @@ msgstr "" "publiques, ligues ou poñas a disposición a través do Servizo calquera do " "seguinte:" -#: lib/web/templates/api/terms.html.eex:57 #, elixir-format +#: lib/web/templates/api/terms.html.eex:57 msgctxt "terms" msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" msgstr "" "Información privada sobre terceiras partes (ex., enderzos, números de " "teléfono, email, número da Seguridade Social, cartón de crédito), e" -#: lib/web/templates/api/terms.html.eex:52 #, elixir-format +#: lib/web/templates/api/terms.html.eex:52 msgctxt "terms" msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." msgstr "" @@ -701,8 +696,8 @@ msgstr "" "do contido nesas outras instancias remata aquí. Se por algunha razón esas " "outras instancias non eliminan o contido non seremos responsables." -#: lib/web/templates/api/terms.html.eex:90 #, elixir-format +#: lib/web/templates/api/terms.html.eex:90 msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "" @@ -710,8 +705,8 @@ msgstr "" "respecto do uso do Servizo, deixando sen efecto calquera acordo anterior " "entre ti e %{instance_name} respecto da utilización do Servizo." -#: lib/web/templates/api/terms.html.eex:80 #, elixir-format +#: lib/web/templates/api/terms.html.eex:80 msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "" @@ -720,14 +715,14 @@ msgstr "" "license-v3-(agpl-3.0)\">AGPLv3 que che permite e anima a coñecer, " "modificar e usar o código." -#: lib/web/templates/api/terms.html.eex:58 #, elixir-format +#: lib/web/templates/api/terms.html.eex:58 msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "Viruses, datos corruptos e ficheiros ou código malicioso ou destrutivo." -#: lib/web/templates/api/terms.html.eex:51 #, elixir-format +#: lib/web/templates/api/terms.html.eex:51 msgctxt "terms" msgid "You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time. Web server access logs might also be stored for some time in the system." msgstr "" @@ -737,30 +732,30 @@ msgstr "" "tempo. Os rexistros de acceso ó servidor tamén poderían permanecer algún " "tempo no sistema." -#: lib/web/templates/api/terms.html.eex:96 #, elixir-format +#: lib/web/templates/api/terms.html.eex:96 msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "" "Preguntas e comentarios sobre o Servizo poderían sernos enviados hacia " "%{contact}" -#: lib/web/templates/api/terms.html.eex:79 #, elixir-format +#: lib/web/templates/api/terms.html.eex:79 msgctxt "terms" msgid "Source code" msgstr "Código fonte" -#: lib/web/templates/api/terms.html.eex:93 #, elixir-format +#: lib/web/templates/api/terms.html.eex:93 msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "" "Apreciamos a túa opinión. Dinos o que pensas sobre o Servizo, estos Termos " "e, en xeral, sobre %{instance_name}." -#: lib/web/templates/api/terms.html.eex:74 #, elixir-format +#: lib/web/templates/api/terms.html.eex:74 msgctxt "terms" msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." msgstr "" @@ -772,16 +767,16 @@ msgstr "" "comunidade, ou instancia por non acatar os termos ou por outros " "comportamentos que estimen inapropiados, ameazantes, ofensivos ou daninos." -#: lib/web/templates/api/terms.html.eex:6 #, elixir-format +#: lib/web/templates/api/terms.html.eex:6 msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "" "%{instance_name} non utilizará, transmitirá ou comerciará cos teus " "datos personais" -#: lib/web/templates/api/terms.html.eex:44 #, elixir-format +#: lib/web/templates/api/terms.html.eex:44 msgctxt "terms" msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact its contributors directly." msgstr "" @@ -790,16 +785,16 @@ msgstr "" "contacta directamente coas súas programadoras." -#: lib/web/templates/api/terms.html.eex:77 #, elixir-format +#: lib/web/templates/api/terms.html.eex:77 msgctxt "terms" msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." msgstr "" "A administración da instancia debe asegurar que toda comunidade hospedada na " "instancia está moderada de xeito correcto acorde coas regras definidas." -#: lib/web/templates/api/terms.html.eex:98 #, elixir-format +#: lib/web/templates/api/terms.html.eex:98 msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "" @@ -808,8 +803,8 @@ msgstr "" "appdotnet/terms-of-service\">App.net, tamén con licenza CC BY-SA." -#: lib/web/templates/api/privacy.html.eex:119 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:119 msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "" @@ -818,113 +813,113 @@ msgstr "" ">Discourse, tamén con licenza CC BY-SA." -#: lib/web/templates/api/terms.html.eex:3 #, elixir-format +#: lib/web/templates/api/terms.html.eex:3 msgctxt "terms" msgid "Short version" msgstr "Versión curta" -#: lib/web/templates/api/terms.html.eex:9 #, elixir-format +#: lib/web/templates/api/terms.html.eex:9 msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "" "O servizo proporciónase sen garantía e estos termos poderían mudar no futuro" -#: lib/web/templates/api/privacy.html.eex:118 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:118 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "" "Este documento publícase baixo licenza CC BY-SA. Actualizado o 18 de Xuño de 2020." -#: lib/web/templates/api/terms.html.eex:97 #, elixir-format +#: lib/web/templates/api/terms.html.eex:97 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "" "Este documento publícase baixo licenza CC BY-SA. Actualizado o 22 de Xuño de 2020." -#: lib/web/templates/api/terms.html.eex:8 #, elixir-format +#: lib/web/templates/api/terms.html.eex:8 msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "" "Debes respectar a outras persoas e ás regras de %{instance_name} ó " "utilizar o servizo" -#: lib/web/templates/api/terms.html.eex:7 #, elixir-format +#: lib/web/templates/api/terms.html.eex:7 msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "Debes respectar a lei ó utilizar %{instance_name}" -#: lib/web/templates/api/terms.html.eex:5 #, elixir-format +#: lib/web/templates/api/terms.html.eex:5 msgctxt "terms" msgid "Your content is yours" msgstr "O teu contido é teu" -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 msgid "Confirm my e-mail address" msgstr "Confirma o enderezo de email" +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 -#, elixir-format msgid "Confirm your e-mail" msgstr "Confirma o teu email" -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "Vaites! Rexistrácheste para participar neste evento: « %{title} ». Por favor " "confirma o email proporcionado:" +#, elixir-format #: lib/web/templates/email/email.html.eex:114 #: lib/web/templates/email/email.text.eex:8 -#, elixir-format msgid "Need help? Is something not working as expected?" msgstr "Precisas axuda? Algo non funciona como agardabas?" -#: lib/web/templates/email/registration_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:38 msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "" "Creaches unha conta en %{host} con este enderezo de email. Estás a un " "click de activalo." -#: lib/web/templates/email/report.html.eex:13 #, elixir-format +#: lib/web/templates/email/report.html.eex:13 msgid "New report on %{instance}" msgstr "Nova denuncia sobre %{instance}" -#: lib/web/templates/email/email_changed_old.html.eex:38 #, elixir-format +#: lib/web/templates/email/email_changed_old.html.eex:38 msgid "The email address for your account on %{host} is being changed to:" msgstr "O enderezo de email da túa conta en %{host} vaise cambiar a:" -#: lib/web/templates/email/password_reset.html.eex:38 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:38 msgid "You requested a new password for your account on %{instance}." msgstr "" "Solicitaches un novo contrasinal para a túa conta en %{instance}." -#: lib/web/templates/email/email.text.eex:5 #, elixir-format +#: lib/web/templates/email/email.text.eex:5 msgid "Please do not use it for real purposes." msgstr "Por favor, non o utilices nun entorno de produción." +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 #: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 -#, elixir-format msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -934,9 +929,9 @@ msgstr[1] "" "Desexas cancelar a túa participación nun ou en varios eventos, visita as " "páxinas a través das ligazóns superiores e preme no botón « Attending »." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:38 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "Tes unha solicitude de participación pendente de atender:" @@ -944,66 +939,66 @@ msgstr[1] "" "Tes %{number_participation_requests} solicitudes de participación pendentes " "de atender:" -#: lib/web/templates/email/email.text.eex:11 #, elixir-format +#: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} funciona grazas a Mobilizon." -#: lib/web/templates/email/email.html.eex:142 #, elixir-format +#: lib/web/templates/email/email.html.eex:142 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} funciona grazas a Mobilizon." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 -#, elixir-format msgid "A request is pending!" msgstr "Hai unha solicitude pendente!" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 -#, elixir-format msgid "An event is upcoming!" msgstr "Un evento está próximo!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 -#, elixir-format msgid "Confirm new email" msgstr "Confirma o novo email" -#: lib/web/templates/email/event_updated.html.eex:84 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:84 msgid "End" msgstr "Fin" -#: lib/web/templates/email/event_updated.text.eex:21 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:21 msgid "End %{ends_on}" msgstr "Remata o %{ends_on}" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:13 #: lib/web/templates/email/event_updated.text.eex:1 -#, elixir-format msgid "Event update!" msgstr "Actualización do evento!" -#: lib/web/templates/email/report.html.eex:88 #, elixir-format +#: lib/web/templates/email/report.html.eex:88 msgid "Flagged comments" msgstr "Comentarios marcados" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 -#, elixir-format msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "" "Boa nova: a organización aprobou a túa solicitude. Actualiza o calendario, " "xa que agora estás na lista de convidadas!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:38 #: lib/web/templates/email/email_changed_new.text.eex:3 -#, elixir-format msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "Ola! Semella que queres cambiar o enderezo de email asociado á túa conta en " @@ -1011,16 +1006,16 @@ msgstr "" "o cambio. Despois poderás conectarte a %{instance} utilizando este novo " "enderezo de email." -#: lib/web/templates/email/email_changed_old.text.eex:3 #, elixir-format +#: lib/web/templates/email/email_changed_old.text.eex:3 msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" msgstr "" "Ola! Aquí un aviso para confirmar que o enderezo de email asociado á túa " "conta en %{host} cambiouse a:" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:41 #: lib/web/templates/email/email_changed_old.html.eex:65 lib/web/templates/email/email_changed_old.text.eex:5 -#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "" "Se non fixeches este cambio ti mesma, é probable que alguén obtivese acceso " @@ -1028,305 +1023,305 @@ msgstr "" "inmediatamente. Se non podes conectar, contacta coa administración de " "%{host}." -#: lib/web/templates/email/password_reset.text.eex:12 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:12 msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." msgstr "" "Se non solicitaches ti mesma o cambio, ignora esta mensaxe. O contrasinal " "non cambiará ata que premas na ligazón superior." +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 -#, elixir-format msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Se non solicitaches este email, podes ignoralo con seguridade." +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 -#, elixir-format msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "" "Se queres cancelar a túa participación, visita a páxina do evento a través " "da ligazón superior e preme no botón « Participar »." +#, elixir-format #: lib/web/templates/email/email.html.eex:143 #: lib/web/templates/email/email.text.eex:11 -#, elixir-format msgid "Learn more about Mobilizon here!" msgstr "Coñece máis acerca de Mobilizon!" -#: lib/web/templates/email/event_updated.html.eex:94 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:94 msgid "Location" msgstr "Localización" -#: lib/web/templates/email/event_updated.html.eex:104 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:104 msgid "Location address was removed" msgstr "Eliminouse o enderezo da localización" +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:51 #: lib/web/templates/email/pending_participation_notification.text.eex:6 -#, elixir-format msgid "Manage pending requests" msgstr "Xestionar solicitudes pendentes" +#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 -#, elixir-format msgid "Nearly there!" msgstr "Case rematamos!" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 -#, elixir-format msgid "New email confirmation" msgstr "Novo email de confirmación" -#: lib/web/templates/email/report.html.eex:106 #, elixir-format +#: lib/web/templates/email/report.html.eex:106 msgid "Reasons for report" msgstr "Razóns para denunciar" -#: lib/web/templates/email/report.html.eex:39 #, elixir-format +#: lib/web/templates/email/report.html.eex:39 msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "" "Alguén na %{instancia} denunciou o seguinte contido para que o " "analices:" +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 -#, elixir-format msgid "Sorry! You're not going." msgstr "Lamentámos que non participes." -#: lib/web/templates/email/event_updated.html.eex:74 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:74 msgid "Start" msgstr "Inicio" -#: lib/web/templates/email/event_updated.text.eex:18 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:18 msgid "Start %{begins_on}" msgstr "Comeza en %{begins_on}" -#: lib/web/templates/email/event_updated.text.eex:3 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:3 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Houbo cambios no título para %{title} e cremos que é do teu interese." +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:55 #: lib/web/templates/email/event_updated.text.eex:11 -#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Evento cancelado pola organización. Lamentámolo!" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:51 #: lib/web/templates/email/event_updated.text.eex:7 -#, elixir-format msgid "This event has been confirmed" msgstr "Este evento foi confirmado" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:53 #: lib/web/templates/email/event_updated.text.eex:9 -#, elixir-format msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "" "Este evento aínda ten que ser confirmado: a organización farache saber se o " "confirman." +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 -#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "É unha mágoa, pero a organización rexeitou a túa solicitude." -#: lib/web/templates/email/email_changed_new.html.eex:51 #, elixir-format +#: lib/web/templates/email/email_changed_new.html.eex:51 msgid "Verify your email address" msgstr "Verifica o teu enderezo de email" -#: lib/web/templates/email/report.html.eex:126 #, elixir-format +#: lib/web/templates/email/report.html.eex:126 msgid "View report" msgstr "Ver denuncia" -#: lib/web/templates/email/report.text.eex:24 #, elixir-format +#: lib/web/templates/email/report.text.eex:24 msgid "View report:" msgstr "Ver denuncia:" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:58 #: lib/web/templates/email/event_participation_confirmed.html.eex:58 -#, elixir-format msgid "Visit event page" msgstr "Visitar páxina do evento" -#: lib/web/templates/email/event_updated.html.eex:121 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:121 msgid "Visit the updated event page" msgstr "Visita a páxina do evento actualizada" -#: lib/web/templates/email/event_updated.text.eex:23 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:23 msgid "Visit the updated event page: %{link}" msgstr "Visita a páxina do evento actualizada: %{link}" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 -#, elixir-format msgid "What's up this week?" msgstr "Que acontece nesta semana?" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 -#, elixir-format msgid "What's up today?" msgstr "Que temos para hoxe?" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 -#, elixir-format msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" "Desexas actualizar ou cancelar a túa participación, simplemente accede á " "páxina do evento na ligazón superior e preme no botón Participar." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:64 #: lib/web/templates/email/pending_participation_notification.text.eex:8 -#, elixir-format msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" "Recibes este email porque escolleches ser notificada sobre as solicitudes " "pendentes nos teus eventos. Podes desactivar ou cambiar os axustes das " "notificación nos axustes da conta baixo « Notificacións »." -#: lib/web/templates/email/event_participation_rejected.text.eex:5 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.text.eex:5 msgid "You issued a request to attend %{title}." msgstr "Solicitaches participar en %{title}." +#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Recentemente solicitaches participar en %{title}." +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:13 #: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 -#, elixir-format msgid "You're going!" msgstr "Vas ir!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 -#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "Se non propiciaches ti o cambio, por favor ignora esta mensaxe." -#: lib/web/templates/email/email.html.eex:89 #, elixir-format +#: lib/web/templates/email/email.html.eex:89 msgid "Please do not use it for real purposes." msgstr "Por favor, non o uses para eventos reais." +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 -#, elixir-format msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "" "Se cres que é un erro, podes contactar co grupo de administradoras para que " "poidan volver a engadirte." +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 -#, elixir-format msgid "So long, and thanks for the fish!" msgstr "Ata aquí, e grazas pola atención!" -#: lib/web/email/group.ex:62 #, elixir-format +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "Foches eliminada do grupo %{group}" -#: lib/web/templates/email/group_member_removal.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_member_removal.text.eex:3 msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." msgstr "" "Foches eliminada do grupo %{group}. Agora non poderás acceder ós contidos " "privados do grupo." -#: lib/web/templates/email/group_invite.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:38 msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "" "%{inviter} convidoute a unirte ó seu grupo " "%{link_start}%{group}%{link_end}" -#: lib/web/templates/email/group_member_removal.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_member_removal.html.eex:38 msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "" "Foches eliminada do grupo %{link_start}%{group}%{link_end}. Agora non " "poderás acceder ós contidos privados deste grupo." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:54 #: lib/web/templates/email/group_suspension.text.eex:7 -#, elixir-format msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "" "Este grupo estaba localizado noutra instancia, seguirá funcionando para " "outras instancias pero non nesta." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:46 #: lib/web/templates/email/group_suspension.text.eex:5 -#, elixir-format msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "" "Como este grupo estaba noutra instancia, todos os seus datos serán " "irreversiblemente eliminados." +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:38 #: lib/web/templates/email/group_deletion.text.eex:3 -#, elixir-format msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "" "A administradora %{author} eliminou o grupo %{group}. Todos os eventos do " "grupo, debates, publicacións e tarefas foron elminados." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:13 #: lib/web/templates/email/group_suspension.text.eex:1 -#, elixir-format msgid "The group %{group} has been suspended on %{instance}!" msgstr "O grupo %{group} foi suspendido en %{instance}!" +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:13 #: lib/web/templates/email/group_deletion.text.eex:1 -#, elixir-format msgid "The group %{group} was deleted on %{instance}!" msgstr "O grupo %{group} foi eliminado de %{instance}!" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:38 #: lib/web/templates/email/group_suspension.text.eex:3 -#, elixir-format msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" "Os moderadores da túa instancia decidiron suspender %{group_name} " "(%{group_address}). Xa non pertences a este grupo." -#: lib/web/email/group.ex:135 #, elixir-format +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "O grupo %{group} foi eliminado de %{instance}" -#: lib/web/email/group.ex:96 #, elixir-format +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "O grupo %{group} foi suspendido en %{instance}" -#: lib/web/templates/api/terms.html.eex:24 #, elixir-format +#: lib/web/templates/api/terms.html.eex:24 msgctxt "terms" msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." msgstr "" @@ -1334,8 +1329,8 @@ msgstr "" "Se estos termos dalgún xeito non están claros, por favor fainolo saber " "contactando con %{contact}." -#: lib/web/templates/api/terms.html.eex:40 #, elixir-format +#: lib/web/templates/api/terms.html.eex:40 msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "" @@ -1343,22 +1338,22 @@ msgstr "" "usuarias do Servizo, mira a nosa política de " "privacidade." -#: lib/web/templates/api/terms.html.eex:36 #, elixir-format +#: lib/web/templates/api/terms.html.eex:36 msgctxt "terms" msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." msgstr "" "Se continúas a usar o Servizo tras estar vixentes os Termos revisados, " "aceptas os Termos revisados." -#: lib/web/templates/api/privacy.html.eex:78 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:78 msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "Se eliminas esta información deberás conectarte de volta." -#: lib/web/templates/api/privacy.html.eex:80 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:80 msgctxt "terms" msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." msgstr "" @@ -1369,29 +1364,29 @@ msgstr "" "Eliminando esta información só fará que deixes de ver o estado da " "participación no teu navegador." -#: lib/web/templates/api/privacy.html.eex:87 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:87 msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "Nota: esta información gárdase no localStorage e non nas cookies." -#: lib/web/templates/api/terms.html.eex:71 #, elixir-format +#: lib/web/templates/api/terms.html.eex:71 msgctxt "terms" msgid "Our responsibility" msgstr "A nosa responsabilidade" -#: lib/web/templates/api/privacy.html.eex:61 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:61 msgctxt "terms" msgid "Retain server logs containing the IP address of all requests to this server, insofar as such logs are kept, no more than 90 days." msgstr "" "Gardar rexistros do servidor que conteñen enderezos IP de todas as peticións " "ó servidor, de tal xeito que non será durante máis de 90 días." +#, elixir-format #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 -#, elixir-format msgctxt "terms" msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary to help you understand them better." msgstr "" @@ -1399,16 +1394,16 @@ msgstr "" "poderían referir conceptos difíciles de comprender. Aquí tes un glosario para axudarche a comprendelos mellor." -#: lib/web/templates/api/terms.html.eex:45 #, elixir-format +#: lib/web/templates/api/terms.html.eex:45 msgctxt "terms" msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." msgstr "" "Non somos responsables de calquera perda que puideses sufrir se alguén " "utiliza o teu email ou contrasinal, con ou sen o teu consentimento." -#: lib/web/templates/api/terms.html.eex:50 #, elixir-format +#: lib/web/templates/api/terms.html.eex:50 msgctxt "terms" msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." msgstr "" @@ -1418,8 +1413,8 @@ msgstr "" "dereitos do contido que publicas, ligas ou doutro xeito pos a disposición a " "través do Servizo." -#: lib/web/templates/api/privacy.html.eex:10 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:10 msgctxt "terms" msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter an email address, a password (hashed) and at least an username. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" @@ -1435,16 +1430,16 @@ msgstr "" "público. Porén, sempre podes visitar a instancia sen precisar " "rexistrarte." -#: lib/web/templates/api/terms.html.eex:30 #, elixir-format +#: lib/web/templates/api/terms.html.eex:30 msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" "Reservamos o dereito a modificar estos Termos en calquera momento. Por " "exemplo, poderiamos cambiar os Termos se introducimos novas funcións." -#: lib/web/templates/api/terms.html.eex:20 #, elixir-format +#: lib/web/templates/api/terms.html.eex:20 msgctxt "terms" msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by Framasoft, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the \"About this instance\" page." msgstr "" @@ -1458,8 +1453,8 @@ msgstr "" "información sobre esta instancia na páxina Acerca desta instancia." -#: lib/web/templates/api/terms.html.eex:43 #, elixir-format +#: lib/web/templates/api/terms.html.eex:43 msgctxt "terms" msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to %{instance_name}." msgstr "" @@ -1467,8 +1462,8 @@ msgstr "" "contrasinal e aceptas os riscos dun acceso non autorizado á túa conta e a " "calquera outra información que proporciones a %{instance_name}." -#: lib/web/templates/api/terms.html.eex:49 #, elixir-format +#: lib/web/templates/api/terms.html.eex:49 msgctxt "terms" msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." msgstr "" @@ -1480,8 +1475,8 @@ msgstr "" "de acordo ás regras de visibilidade que establezas para o contido. Non " "modificaremos a visibilidade que ti estableceches para o contido." -#: lib/web/templates/api/privacy.html.eex:19 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:19 msgctxt "terms" msgid "Your events and comments are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." msgstr "" @@ -1494,8 +1489,8 @@ msgstr "" "ver esas mensaxes e información, e as correspondentes poden facer capturas " "de pantalla, copiar e volver a compartir de múltiples xeitos esa información." -#: lib/web/templates/api/privacy.html.eex:99 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:99 msgctxt "terms" msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." msgstr "" @@ -1505,158 +1500,178 @@ msgstr "" "membros do grupo, sempre que esos membros do grupo residan en diferentes " "instancias desta." -#: lib/web/templates/email/event_participation_confirmed.text.eex:4 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.text.eex:4 msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Confirmaches a participación. Actualiza o calendario, xa que agora estás na " "lista de convidadas!" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:38 #: lib/web/templates/email/event_participation_confirmed.html.eex:38 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Recentemente solicitaches participar en %{title}." -#: lib/web/email/participation.ex:91 #, elixir-format +#: lib/web/email/participation.ex:91 msgid "Your participation to event %{title} has been confirmed" msgstr "Confirmouse a túa participación no evento %{title}" -#: lib/web/templates/email/report.html.eex:41 #, elixir-format +#: lib/web/templates/email/report.html.eex:41 msgid "%{reporter} reported the following content." msgstr "%{reporter} denunciou o seguinte contido." -#: lib/web/templates/email/report.text.eex:5 #, elixir-format +#: lib/web/templates/email/report.text.eex:5 msgid "Group %{group} was reported" msgstr "O grupo %{group} foi denunciado" -#: lib/web/templates/email/report.html.eex:51 #, elixir-format +#: lib/web/templates/email/report.html.eex:51 msgid "Group reported" msgstr "Grupo denunciado" -#: lib/web/templates/email/report.text.eex:7 #, elixir-format +#: lib/web/templates/email/report.text.eex:7 msgid "Profile %{profile} was reported" msgstr "O perfil %{profile} foi denunciado" -#: lib/web/templates/email/report.html.eex:56 #, elixir-format +#: lib/web/templates/email/report.html.eex:56 msgid "Profile reported" msgstr "Perfil denunciado" -#: lib/web/templates/email/event_participation_confirmed.html.eex:45 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.html.eex:45 msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Confirmaches a túa participación. Actualiza o calendario, agora estás na " "lista de convidadas!" -#: lib/mobilizon/posts/post.ex:91 #, elixir-format +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "Requírese un texto para a publicación" -#: lib/mobilizon/posts/post.ex:90 #, elixir-format +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "Requírese un título para a publicación" -#: lib/web/templates/email/instance_follow.text.eex:3 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:3 msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "%{name} (%{domain}) solicitou seguir a túa instancia." -#: lib/web/email/follow.ex:54 #, elixir-format +#: lib/web/email/follow.ex:54 msgid "%{name} requests to follow your instance" msgstr "%{name} solicita seguir a túa instancia" -#: lib/web/templates/email/instance_follow.html.eex:38 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:38 msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "" "%{name} (%{domain}) solicitou pedir a túa instancia. Se aceptas, esta " "instancia recibirá todos os eventos públicos da túa instancia." -#: lib/web/templates/email/instance_follow.text.eex:4 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:4 msgid "If you accept, this instance will receive all of your public events." msgstr "Se aceptas, esta instancia recibirá todos os teus eventos públicos." -#: lib/web/email/follow.ex:48 #, elixir-format +#: lib/web/email/follow.ex:48 msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "A instancia %{name} (%{domain}) solicita seguir a túa instancia" -#: lib/web/templates/email/instance_follow.html.eex:66 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:66 msgid "See the federation settings" msgstr "Ver axustes de federación" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:52 #: lib/web/templates/email/instance_follow.text.eex:6 -#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "" "Para aceptar o convite, vaite ós axustes de administración da instancia." +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:13 #: lib/web/templates/email/instance_follow.text.eex:1 -#, elixir-format msgid "Want to connect?" msgstr "Desexas conectarte?" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:45 #: lib/web/templates/email/instance_follow.text.eex:5 -#, elixir-format msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "" "Nota: que %{name} (%{domain}) te siga non implica que sigas a esta " "instancia, pero podes tamén solicitar seguilos a eles." -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "Ola! Rexistrácheste para unirte a este evento: « %{title} ». Confirma " "o enderezo de email proporcionado:" -#: lib/web/templates/email/event_participation_rejected.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.html.eex:38 msgid "You issued a request to attend %{title}." msgstr "Fixeches unha solicitude para participar en %{title}." -#: lib/web/templates/email/event_updated.html.eex:64 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:64 msgid "Event title" msgstr "Título do evento" -#: lib/web/templates/email/event_updated.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:38 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Houbo cambios en %{title} e cremos que debes sabelo." -#: lib/web/templates/error/500_page.html.eex:46 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:46 msgid "The Mobilizon server seems to be temporarily down." msgstr "O servidor Mobilizon semella estar temporalmente fóra de servizo." -#: lib/web/templates/error/500_page.html.eex:7 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:7 msgid "This page is not correct" msgstr "Esta páxina non é correcta" -#: lib/web/templates/error/500_page.html.eex:45 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:45 msgid "We're sorry, but something went wrong on our end." msgstr "Lamentámolo, pero algo está a fallar pola nosa parte." +#, elixir-format #: lib/web/templates/email/email.html.eex:88 #: lib/web/templates/email/email.text.eex:4 -#, elixir-format msgid "This is a demonstration site to test Mobilizon." msgstr "Este é un sitio web de exemplo para probar Mobilizon." + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/gl/LC_MESSAGES/errors.po b/priv/gettext/gl/LC_MESSAGES/errors.po index 71a6b67d5..9a5a5183b 100644 --- a/priv/gettext/gl/LC_MESSAGES/errors.po +++ b/priv/gettext/gl/LC_MESSAGES/errors.po @@ -93,769 +93,759 @@ msgstr "ten que ser maior ou igual a %{number}" msgid "must be equal to %{number}" msgstr "ten que ser igual a %{number}" -#: lib/graphql/resolvers/user.ex:103 #, elixir-format +#: lib/graphql/resolvers/user.ex:103 msgid "Cannot refresh the token" msgstr "Non puido actualizar o token" -#: lib/graphql/resolvers/group.ex:198 #, elixir-format +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "O perfil actual non é membro deste grupo" -#: lib/graphql/resolvers/group.ex:202 #, elixir-format +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "O perfil actual non é administrador do grupo seleccionado" -#: lib/graphql/resolvers/user.ex:512 #, elixir-format +#: lib/graphql/resolvers/user.ex:512 msgid "Error while saving user settings" msgstr "Erro ó gardar os axustes de usuaria" -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 #, elixir-format +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "Grupo non atopado" -#: lib/graphql/resolvers/group.ex:66 #, elixir-format +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "Grupo con ID %{id} non atopado" -#: lib/graphql/resolvers/user.ex:83 #, elixir-format +#: lib/graphql/resolvers/user.ex:83 msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" "A autenticación non foi posible, o contrasinal ou o email non son correctos." -#: lib/graphql/resolvers/group.ex:258 #, elixir-format +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "Membro non atopado" +#, elixir-format #: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 #: lib/graphql/resolvers/user.ex:417 -#, elixir-format msgid "No profile found for the moderator user" msgstr "Non se atopou o perfil para a usuaria moderadora" -#: lib/graphql/resolvers/user.ex:195 #, elixir-format +#: lib/graphql/resolvers/user.ex:195 msgid "No user to validate with this email was found" msgstr "Non se atopou unha usuaria con este email para validar" -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 #, elixir-format +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "Non se atopa ningunha usuaria con este email" -#: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:28 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "O perfil non pertence a unha usuaria autenticada" -#: lib/graphql/resolvers/user.ex:125 #, elixir-format +#: lib/graphql/resolvers/user.ex:125 msgid "Registrations are not open" msgstr "O rexistro está pechado" -#: lib/graphql/resolvers/user.ex:330 #, elixir-format +#: lib/graphql/resolvers/user.ex:330 msgid "The current password is invalid" msgstr "O contrasinal actual non é válido" -#: lib/graphql/resolvers/user.ex:382 #, elixir-format +#: lib/graphql/resolvers/user.ex:382 msgid "The new email doesn't seem to be valid" msgstr "O novo email non semella ser válido" -#: lib/graphql/resolvers/user.ex:379 #, elixir-format +#: lib/graphql/resolvers/user.ex:379 msgid "The new email must be different" msgstr "O novo email ten que ser diferente" -#: lib/graphql/resolvers/user.ex:333 #, elixir-format +#: lib/graphql/resolvers/user.ex:333 msgid "The new password must be different" msgstr "O novo contrasinal ten que ser diferente" +#, elixir-format #: lib/graphql/resolvers/user.ex:376 lib/graphql/resolvers/user.ex:439 #: lib/graphql/resolvers/user.ex:442 -#, elixir-format msgid "The password provided is invalid" msgstr "O contrasinal escrito non é válido" -#: lib/graphql/resolvers/user.ex:337 #, 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." msgstr "" "O contrasinal escollido é demasiado curto, ten que ter 6 caracteres polo " "menos." -#: lib/graphql/resolvers/user.ex:215 #, elixir-format +#: lib/graphql/resolvers/user.ex:215 msgid "This user can't reset their password" msgstr "Esta usuaria non pode restablecer o seu contrasinal" -#: lib/graphql/resolvers/user.ex:79 #, elixir-format +#: lib/graphql/resolvers/user.ex:79 msgid "This user has been disabled" msgstr "Estab usuaria foi desactivada" -#: lib/graphql/resolvers/user.ex:179 #, elixir-format +#: lib/graphql/resolvers/user.ex:179 msgid "Unable to validate user" msgstr "Non se puido validar a usuaria" -#: lib/graphql/resolvers/user.ex:420 #, elixir-format +#: lib/graphql/resolvers/user.ex:420 msgid "User already disabled" msgstr "A usuaria xa está desactivada" -#: lib/graphql/resolvers/user.ex:487 #, elixir-format +#: lib/graphql/resolvers/user.ex:487 msgid "User requested is not logged-in" msgstr "A usuaria solicitada non está conectada" -#: lib/graphql/resolvers/group.ex:232 #, elixir-format +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "Xa es membro deste grupo" -#: lib/graphql/resolvers/group.ex:265 #, elixir-format +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "Non podes deixar este grupo porque es a única administradora" -#: lib/graphql/resolvers/group.ex:229 #, elixir-format +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "Non podes unirte a este grupo" -#: lib/graphql/resolvers/group.ex:94 #, elixir-format +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "Non podes facer listas de grupos porque non es moderadora." -#: lib/graphql/resolvers/user.ex:387 #, elixir-format +#: lib/graphql/resolvers/user.ex:387 msgid "You need to be logged-in to change your email" msgstr "Tes que estar conectada para poder cambiar o email" -#: lib/graphql/resolvers/user.ex:345 #, elixir-format +#: lib/graphql/resolvers/user.ex:345 msgid "You need to be logged-in to change your password" msgstr "Tes que estar conectada para poder cambiar o contrasinal" -#: lib/graphql/resolvers/group.ex:207 #, elixir-format +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "Tes que estar conectada para poder eleminar un grupo" -#: lib/graphql/resolvers/user.ex:447 #, elixir-format +#: lib/graphql/resolvers/user.ex:447 msgid "You need to be logged-in to delete your account" msgstr "Tes que estar conectada para poder eliminar a conta" -#: lib/graphql/resolvers/group.ex:237 #, elixir-format +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "Tes que estar conectada para poder unirte a un grupo" -#: lib/graphql/resolvers/group.ex:270 #, elixir-format +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "Tes que estar conectada para poder deixar un grupo" -#: lib/graphql/resolvers/group.ex:172 #, elixir-format +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "Tes que estar conectada para poder actualizar un grupo" -#: lib/graphql/resolvers/user.ex:58 #, elixir-format -msgid "You need to have admin access to list users" -msgstr "Tes que ter acceso de administración para ver lista de usuarias" - #: lib/graphql/resolvers/user.ex:108 -#, elixir-format msgid "You need to have an existing token to get a refresh token" msgstr "Tes que ter un token existente para obter un token actualizado" -#: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 #, elixir-format +#: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 msgid "You requested again a confirmation email too soon" msgstr "Solicitaches demasiado pronto un email de confirmación" -#: lib/graphql/resolvers/user.ex:128 #, elixir-format +#: lib/graphql/resolvers/user.ex:128 msgid "Your email is not on the allowlist" msgstr "O teu email non está na lista dos permitidos" -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 #, elixir-format +#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 msgid "Error while performing background task" msgstr "Erro ó executar a tarefa en segundo plano" -#: lib/graphql/resolvers/actor.ex:27 #, elixir-format +#: lib/graphql/resolvers/actor.ex:27 msgid "No profile found with this ID" msgstr "Non se atopa o perfil con este ID" -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 #, elixir-format +#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 msgid "No remote profile found with this ID" msgstr "Non se atopa o perfil remoto con este ID" -#: lib/graphql/resolvers/actor.ex:69 #, elixir-format +#: lib/graphql/resolvers/actor.ex:69 msgid "Only moderators and administrators can suspend a profile" msgstr "Só moderadoras e administradoras poden suspender un perfil" -#: lib/graphql/resolvers/actor.ex:99 #, elixir-format +#: lib/graphql/resolvers/actor.ex:99 msgid "Only moderators and administrators can unsuspend a profile" msgstr "Só moderadoras e administradoras pode restablecer un perfil" -#: lib/graphql/resolvers/actor.ex:24 #, elixir-format +#: lib/graphql/resolvers/actor.ex:24 msgid "Only remote profiles may be refreshed" msgstr "Só os perfís remotos poderían ser actualizdos" -#: lib/graphql/resolvers/actor.ex:61 #, elixir-format +#: lib/graphql/resolvers/actor.ex:61 msgid "Profile already suspended" msgstr "O perfil xa está suspendido" -#: lib/graphql/resolvers/participant.ex:93 #, elixir-format +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "A túa instancia require un email válido" -#: lib/graphql/resolvers/participant.ex:87 #, elixir-format +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "Non está permitida a participación ánonima" -#: lib/graphql/resolvers/person.ex:184 #, elixir-format +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "Non se pode eliminar a última administradora dun grupo" -#: lib/graphql/resolvers/person.ex:181 #, elixir-format +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "Non se pode eliminar a última identidade dunha usuaria" -#: lib/graphql/resolvers/comment.ex:105 #, elixir-format +#: lib/graphql/resolvers/comment.ex:105 msgid "Comment is already deleted" msgstr "O comentario xa foi eliminado" -#: lib/graphql/resolvers/discussion.ex:61 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "Non se atopa a conversa" -#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 #, elixir-format +#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 msgid "Error while saving report" msgstr "Erro ó gardar a denuncia" -#: lib/graphql/resolvers/report.ex:96 #, elixir-format +#: lib/graphql/resolvers/report.ex:96 msgid "Error while updating report" msgstr "Erro ó actualizar a denuncia" -#: lib/graphql/resolvers/participant.ex:128 #, elixir-format +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "Non se atopou o ID do evento" -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 #, elixir-format +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "Evento non atopado" -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 #, elixir-format +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "Non existe un evento co ID %{id}" -#: lib/graphql/resolvers/participant.ex:100 #, elixir-format +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "Erro interno" -#: lib/graphql/resolvers/discussion.ex:193 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "Non hai conversa con ID %{id}" -#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 #, elixir-format +#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 msgid "No profile found for user" msgstr "Non se atopou o perfil da usuaria" -#: lib/graphql/resolvers/feed_token.ex:63 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:63 msgid "No such feed token" msgstr "Non hai tal token da fonte" -#: lib/graphql/resolvers/participant.ex:238 #, elixir-format +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "A participante xa ten o rol %{role}" -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 #, elixir-format +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "Non se atopou a participante" -#: lib/graphql/resolvers/person.ex:29 #, elixir-format +#: lib/graphql/resolvers/person.ex:29 msgid "Person with ID %{id} not found" msgstr "Non se atopou a persoa con ID %{id}" -#: lib/graphql/resolvers/person.ex:50 #, elixir-format +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "Non se atopa a persoa con nome de usuaria %{username}" -#: lib/graphql/resolvers/picture.ex:41 -#, elixir-format -msgid "Picture with ID %{id} was not found" -msgstr "Non se atopa a imaxe con ID %{id}" - -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 #, elixir-format +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "ID da publicación non é un ID válido" -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 #, elixir-format +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "Non existe a publicación" -#: lib/graphql/resolvers/member.ex:83 #, elixir-format +#: lib/graphql/resolvers/member.ex:83 msgid "Profile invited doesn't exist" msgstr "O perfil convidado non existe" -#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 #, elixir-format +#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 msgid "Profile is already a member of this group" msgstr "O perfil xa é membro deste grupo" -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#, elixir-format +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 -#, elixir-format msgid "Profile is not member of group" msgstr "O perfil non é membro do grupo" -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 #, elixir-format +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "Perfil non atopado" -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 #, elixir-format +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "O perfil da moderadora proporcionado non ten permisos neste evento" -#: lib/graphql/resolvers/report.ex:36 #, elixir-format +#: lib/graphql/resolvers/report.ex:36 msgid "Report not found" msgstr "Denuncia non atopada" -#: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 #, elixir-format +#: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 msgid "Resource doesn't exist" msgstr "Non existe o recurso" -#: lib/graphql/resolvers/participant.ex:121 #, elixir-format +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "Este evento xa acadou a súa capacidade máxima" -#: lib/graphql/resolvers/participant.ex:261 #, elixir-format +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "Este token non é válido" -#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 #, elixir-format +#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 msgid "Todo doesn't exist" msgstr "Lista de tarefas non existe" +#, elixir-format #: lib/graphql/resolvers/todos.ex:75 lib/graphql/resolvers/todos.ex:191 #: lib/graphql/resolvers/todos.ex:216 -#, elixir-format msgid "Todo list doesn't exist" msgstr "A lista de tarefas non existe" -#: lib/graphql/resolvers/feed_token.ex:69 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:69 msgid "Token does not exist" msgstr "Non existe o token" -#: lib/graphql/resolvers/feed_token.ex:66 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:66 msgid "Token is not a valid UUID" msgstr "O token non é un UUID válido" -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 #, elixir-format +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "Usuaria non atopada" -#: lib/graphql/resolvers/person.ex:232 #, elixir-format +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "Xa tes un perfil para esta usuaria" -#: lib/graphql/resolvers/participant.ex:131 #, elixir-format +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "Xa es unha participante neste evento" -#: lib/graphql/resolvers/discussion.ex:197 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "Non es membro do grupo ó que pertence a conversa" -#: lib/graphql/resolvers/member.ex:86 #, elixir-format +#: lib/graphql/resolvers/member.ex:86 msgid "You are not a member of this group" msgstr "Non es membro deste grupo" -#: lib/graphql/resolvers/member.ex:151 #, elixir-format +#: lib/graphql/resolvers/member.ex:151 msgid "You are not a moderator or admin for this group" msgstr "Non es moderadora ou administradora deste grupo" -#: lib/graphql/resolvers/comment.ex:51 #, elixir-format +#: lib/graphql/resolvers/comment.ex:51 msgid "You are not allowed to create a comment if not connected" msgstr "Non tes permiso para crear un comentario sen estar conectada" -#: lib/graphql/resolvers/feed_token.ex:41 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:41 msgid "You are not allowed to create a feed token if not connected" msgstr "Non tes permiso para crear un token da fonte se non estás conectada" -#: lib/graphql/resolvers/comment.ex:110 #, elixir-format +#: lib/graphql/resolvers/comment.ex:110 msgid "You are not allowed to delete a comment if not connected" msgstr "Non tes permiso para eliminar un comentario se non estás conectada" -#: lib/graphql/resolvers/feed_token.ex:78 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:78 msgid "You are not allowed to delete a feed token if not connected" msgstr "Non tes permiso para eliminar o token da fonte se non estás conectada" -#: lib/graphql/resolvers/comment.ex:73 #, elixir-format +#: lib/graphql/resolvers/comment.ex:73 msgid "You are not allowed to update a comment if not connected" msgstr "Non tes permiso para actualizar un comentario se non estás conectada" -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 #, elixir-format +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" "Non podes saír do evento porque es a única creadora do evento que participa" -#: lib/graphql/resolvers/member.ex:155 #, elixir-format +#: lib/graphql/resolvers/member.ex:155 msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgstr "" "Non podes adxudicarte un rol menor neste grupo porque es a única " "administradora" -#: lib/graphql/resolvers/comment.ex:101 #, elixir-format +#: lib/graphql/resolvers/comment.ex:101 msgid "You cannot delete this comment" msgstr "Non podes eliminar este comentario" -#: lib/graphql/resolvers/event.ex:275 #, elixir-format +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "Non podes eliminar este evento" -#: lib/graphql/resolvers/member.ex:89 #, elixir-format +#: lib/graphql/resolvers/member.ex:89 msgid "You cannot invite to this group" msgstr "Non podes convidar a este grupo" -#: lib/graphql/resolvers/feed_token.ex:72 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:72 msgid "You don't have permission to delete this token" msgstr "Non tes permiso para eliminar este token" -#: lib/graphql/resolvers/admin.ex:52 #, elixir-format +#: lib/graphql/resolvers/admin.ex:52 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" "Tes que estar conectada e ser moderadora para ver listas de rexistros de " "accións" -#: lib/graphql/resolvers/report.ex:26 #, elixir-format +#: lib/graphql/resolvers/report.ex:26 msgid "You need to be logged-in and a moderator to list reports" msgstr "Tes que estar conectada e ser moderadora para ver listas de denuncias" -#: lib/graphql/resolvers/report.ex:101 #, elixir-format +#: lib/graphql/resolvers/report.ex:101 msgid "You need to be logged-in and a moderator to update a report" msgstr "Tes que estas conectada e ser moderadora para actualizar unha denuncia" -#: lib/graphql/resolvers/report.ex:41 #, elixir-format +#: lib/graphql/resolvers/report.ex:41 msgid "You need to be logged-in and a moderator to view a report" msgstr "Tes que estar conectada e ser moderadora para ver unha denuncia" -#: lib/graphql/resolvers/admin.ex:236 #, elixir-format +#: lib/graphql/resolvers/admin.ex:236 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Tes que estar conectada e ser administradora para acceder ós axustes de " "administración" -#: lib/graphql/resolvers/admin.ex:221 #, elixir-format +#: lib/graphql/resolvers/admin.ex:221 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Tes que estar conectada e ser administradora para acceder ó taboleiro de " "estatísticas" -#: lib/graphql/resolvers/admin.ex:260 #, elixir-format +#: lib/graphql/resolvers/admin.ex:260 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Tes que estar conectada e ser administradora para gardar os axustes de " "administración" -#: lib/graphql/resolvers/discussion.ex:75 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "Tes que estar conectada para acceder ás conversas" -#: lib/graphql/resolvers/resource.ex:93 #, elixir-format +#: lib/graphql/resolvers/resource.ex:93 msgid "You need to be logged-in to access resources" msgstr "Tes que estar conectada para acceder ós recursos" -#: lib/graphql/resolvers/event.ex:210 #, elixir-format +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "Tes que estar conectada para crear eventos" -#: lib/graphql/resolvers/post.ex:139 #, elixir-format +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "Tes que estar conectada para crear publicacións" -#: lib/graphql/resolvers/report.ex:74 #, elixir-format +#: lib/graphql/resolvers/report.ex:74 msgid "You need to be logged-in to create reports" msgstr "Tes que estar conectada para crear denuncias" -#: lib/graphql/resolvers/resource.ex:129 #, elixir-format +#: lib/graphql/resolvers/resource.ex:129 msgid "You need to be logged-in to create resources" msgstr "Tes que estar conectada para crear recursos" -#: lib/graphql/resolvers/event.ex:284 #, elixir-format +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "Tes que estar conectada para eliminar un evento" -#: lib/graphql/resolvers/post.ex:209 #, elixir-format +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "Tes que estar conectada para eliminar publicacións" -#: lib/graphql/resolvers/resource.ex:187 #, elixir-format +#: lib/graphql/resolvers/resource.ex:187 msgid "You need to be logged-in to delete resources" msgstr "Tes que estar conectada para eliminar recursos" -#: lib/graphql/resolvers/participant.ex:105 #, elixir-format +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "Tes que estar conectada para unirte a un evento" -#: lib/graphql/resolvers/participant.ex:204 #, elixir-format +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "Tes que estar conectada para saír dun evento" -#: lib/graphql/resolvers/event.ex:249 #, elixir-format +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "Tes que estar conectada para actualizar un evento" -#: lib/graphql/resolvers/post.ex:176 #, elixir-format +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "Tes que estar conectada para actualizar publicacións" -#: lib/graphql/resolvers/resource.ex:158 #, elixir-format +#: lib/graphql/resolvers/resource.ex:158 msgid "You need to be logged-in to update resources" msgstr "Tes que estar conectada para actualizar recursos" -#: lib/graphql/resolvers/resource.ex:210 #, elixir-format +#: lib/graphql/resolvers/resource.ex:210 msgid "You need to be logged-in to view a resource preview" msgstr "Tes que estar conectada para ver vista previa dun recurso" -#: lib/graphql/resolvers/picture.ex:79 #, elixir-format -msgid "You need to login to upload a picture" -msgstr "Tes que estar conectada para subir unha imaxe" - #: lib/graphql/resolvers/resource.ex:121 -#, elixir-format msgid "Parent resource doesn't belong to this group" msgstr "O recurso relacionado non pertence a este grupo" -#: lib/mobilizon/users/user.ex:109 #, elixir-format +#: lib/mobilizon/users/user.ex:109 msgid "The chosen password is too short." msgstr "O contrasinal elexido é demasiado curto." -#: lib/mobilizon/users/user.ex:138 #, elixir-format +#: lib/mobilizon/users/user.ex:138 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" "O token de rexistro xa está a ser usado, semella un problema pola nosa parte." -#: lib/mobilizon/users/user.ex:104 #, elixir-format +#: lib/mobilizon/users/user.ex:104 msgid "This email is already used." msgstr "Este email xa se está a usar." -#: lib/graphql/error.ex:88 #, elixir-format +#: lib/graphql/error.ex:88 msgid "Post not found" msgstr "Non se atopa a publicación" -#: lib/graphql/error.ex:75 #, elixir-format +#: lib/graphql/error.ex:75 msgid "Invalid arguments passed" msgstr "Argumentos proporcionados non válidos" -#: lib/graphql/error.ex:81 #, elixir-format +#: lib/graphql/error.ex:81 msgid "Invalid credentials" msgstr "Credenciais non válidas" -#: lib/graphql/error.ex:79 #, elixir-format +#: lib/graphql/error.ex:79 msgid "Reset your password to login" msgstr "Restablece o teu contrasinal para conectar" -#: lib/graphql/error.ex:86 lib/graphql/error.ex:91 #, elixir-format +#: lib/graphql/error.ex:86 lib/graphql/error.ex:91 msgid "Resource not found" msgstr "Recurso non atopado" -#: lib/graphql/error.ex:92 #, elixir-format +#: lib/graphql/error.ex:92 msgid "Something went wrong" msgstr "Algo foi mal" -#: lib/graphql/error.ex:74 #, elixir-format +#: lib/graphql/error.ex:74 msgid "Unknown Resource" msgstr "Recurso descoñecido" -#: lib/graphql/error.ex:84 #, elixir-format +#: lib/graphql/error.ex:84 msgid "You don't have permission to do this" msgstr "Non tes permiso para facer isto" -#: lib/graphql/error.ex:76 #, elixir-format +#: lib/graphql/error.ex:76 msgid "You need to be logged in" msgstr "Tes que estar conectada" -#: lib/graphql/resolvers/member.ex:116 #, elixir-format +#: lib/graphql/resolvers/member.ex:116 msgid "You can't accept this invitation with this profile." msgstr "Non podes aceptar este convite con este perfil." -#: lib/graphql/resolvers/member.ex:134 #, elixir-format +#: lib/graphql/resolvers/member.ex:134 msgid "You can't reject this invitation with this profile." msgstr "Non podes rexeitar este convite con este perfil." -#: lib/graphql/resolvers/picture.ex:71 #, elixir-format +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "O ficheiro non ten un tipo MIME permitido." -#: lib/graphql/resolvers/group.ex:167 #, elixir-format +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "O perfil non é administrador do grupo" -#: lib/graphql/resolvers/event.ex:238 #, elixir-format +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "Non podes editar este evento." -#: lib/graphql/resolvers/event.ex:241 #, elixir-format +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "Non podes atribuír este evento a este perfil." -#: lib/graphql/resolvers/member.ex:137 #, elixir-format +#: lib/graphql/resolvers/member.ex:137 msgid "This invitation doesn't exist." msgstr "O convite non existe." -#: lib/graphql/resolvers/member.ex:179 #, elixir-format +#: lib/graphql/resolvers/member.ex:179 msgid "This member already has been rejected." msgstr "Este membro xa foi rexeitado." -#: lib/graphql/resolvers/member.ex:186 #, elixir-format +#: lib/graphql/resolvers/member.ex:186 msgid "You don't have the right to remove this member." msgstr "Non tes permiso para eliminar este membro." -#: lib/mobilizon/actors/actor.ex:344 #, elixir-format +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "Este nome de usuaria xa está pillado." -#: lib/graphql/resolvers/discussion.ex:72 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "Debes proporcionar ou ben un ID ou nome para acceder á conversa" -#: lib/graphql/resolvers/event.ex:199 #, elixir-format +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "O perfil da organización non pertence á usuaria" -#: lib/graphql/resolvers/participant.ex:90 #, elixir-format +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "O ID do perfil proporcionado non é o perfil anónimo" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/hu/LC_MESSAGES/default.po b/priv/gettext/hu/LC_MESSAGES/default.po index 1688f3d71..5fed4fe36 100644 --- a/priv/gettext/hu/LC_MESSAGES/default.po +++ b/priv/gettext/hu/LC_MESSAGES/default.po @@ -16,11 +16,6 @@ msgstr "" msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" -#, elixir-format -#: lib/service/export/feed.ex:170 -msgid "Feed for %{email} on Mobilizon" -msgstr "" - #, elixir-format #: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" @@ -141,7 +136,7 @@ msgid "Warning" msgstr "" #, elixir-format -#: lib/web/email/participation.ex:134 +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "" @@ -324,7 +319,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:46 +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -377,19 +372,19 @@ msgid "View the event on: %{link}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:32 +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:70 +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" msgstr[1] "" #, elixir-format -#: lib/web/email/notification.ex:92 +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -1049,7 +1044,7 @@ msgid "So long, and thanks for the fish!" msgstr "" #, elixir-format -#: lib/web/email/group.ex:62 +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "" @@ -1105,12 +1100,12 @@ msgid "Your instance's moderation team has decided to suspend %{group_name} (%{g msgstr "" #, elixir-format -#: lib/web/email/group.ex:135 +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:96 +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1270,12 +1265,12 @@ msgid "You have now confirmed your participation. Update your calendar, because msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:91 +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:90 +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "" @@ -1367,3 +1362,23 @@ msgstr "" #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "" + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/hu/LC_MESSAGES/errors.po b/priv/gettext/hu/LC_MESSAGES/errors.po index 16af58019..ddd92c9a6 100644 --- a/priv/gettext/hu/LC_MESSAGES/errors.po +++ b/priv/gettext/hu/LC_MESSAGES/errors.po @@ -109,778 +109,768 @@ msgstr "nagyobbnak vagy egyenlőnek kell lennie mint %{number}" msgid "must be equal to %{number}" msgstr "egyenlőnek kell lennie ezzel: %{number}" -#: lib/graphql/resolvers/user.ex:103 #, elixir-format +#: lib/graphql/resolvers/user.ex:103 msgid "Cannot refresh the token" msgstr "Nem lehet frissíteni a tokent" -#: lib/graphql/resolvers/group.ex:198 #, elixir-format +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "A jelenlegi profil nem tagja ennek a csoportnak" -#: lib/graphql/resolvers/group.ex:202 #, elixir-format +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "A jelenlegi profil nem adminisztrátora a kijelölt csoportnak" -#: lib/graphql/resolvers/user.ex:512 #, elixir-format +#: lib/graphql/resolvers/user.ex:512 msgid "Error while saving user settings" msgstr "Hiba a felhasználói beállítások mentésekor" -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 #, elixir-format +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "Nem található a csoport" -#: lib/graphql/resolvers/group.ex:66 #, elixir-format +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "Nem található %{id} azonosítóval rendelkező csoport" -#: lib/graphql/resolvers/user.ex:83 #, elixir-format +#: lib/graphql/resolvers/user.ex:83 msgid "Impossible to authenticate, either your email or password are invalid." msgstr "Lehetetlen hitelesíteni, vagy az e-mail, vagy a jelszó érvénytelen." -#: lib/graphql/resolvers/group.ex:258 #, elixir-format +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "Nem található a tag" +#, elixir-format #: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 #: lib/graphql/resolvers/user.ex:417 -#, elixir-format msgid "No profile found for the moderator user" msgstr "Nem található profil a moderátor felhasználóhoz" -#: lib/graphql/resolvers/user.ex:195 #, elixir-format +#: lib/graphql/resolvers/user.ex:195 msgid "No user to validate with this email was found" msgstr "Nem található ezzel az e-mail-címmel ellenőrzendő felhasználó" -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 #, elixir-format +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "Nem található ezzel az e-mail-címmel rendelkező felhasználó" -#: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:28 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "A profilt nem hitelesített felhasználó birtokolja" -#: lib/graphql/resolvers/user.ex:125 #, elixir-format +#: lib/graphql/resolvers/user.ex:125 msgid "Registrations are not open" msgstr "A regisztrációk nincsenek nyitva" -#: lib/graphql/resolvers/user.ex:330 #, elixir-format +#: lib/graphql/resolvers/user.ex:330 msgid "The current password is invalid" msgstr "A jelenlegi jelszó érvénytelen" -#: lib/graphql/resolvers/user.ex:382 #, elixir-format +#: lib/graphql/resolvers/user.ex:382 msgid "The new email doesn't seem to be valid" msgstr "Az új e-mail-cím nem tűnik érvényesnek" -#: lib/graphql/resolvers/user.ex:379 #, elixir-format +#: lib/graphql/resolvers/user.ex:379 msgid "The new email must be different" msgstr "Az új e-mail-címnek eltérőnek kell lennie" -#: lib/graphql/resolvers/user.ex:333 #, elixir-format +#: lib/graphql/resolvers/user.ex:333 msgid "The new password must be different" msgstr "Az új jelszónak eltérőnek kell lennie" +#, elixir-format #: lib/graphql/resolvers/user.ex:376 lib/graphql/resolvers/user.ex:439 #: lib/graphql/resolvers/user.ex:442 -#, elixir-format msgid "The password provided is invalid" msgstr "A megadott jelszó érvénytelen" -#: lib/graphql/resolvers/user.ex:337 #, 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." msgstr "" "A választott jelszó túl rövid. Győződjön meg arról, hogy a jelszava " "tartalmazzon legalább 6 karaktert." -#: lib/graphql/resolvers/user.ex:215 #, elixir-format +#: lib/graphql/resolvers/user.ex:215 msgid "This user can't reset their password" msgstr "Ez a felhasználó nem tudja visszaállítani a jelszavát" -#: lib/graphql/resolvers/user.ex:79 #, elixir-format +#: lib/graphql/resolvers/user.ex:79 msgid "This user has been disabled" msgstr "Ez a felhasználó le lett tiltva" -#: lib/graphql/resolvers/user.ex:179 #, elixir-format +#: lib/graphql/resolvers/user.ex:179 msgid "Unable to validate user" msgstr "Nem lehet ellenőrizni a felhasználót" -#: lib/graphql/resolvers/user.ex:420 #, elixir-format +#: lib/graphql/resolvers/user.ex:420 msgid "User already disabled" msgstr "A felhasználó már le van tiltva" -#: lib/graphql/resolvers/user.ex:487 #, elixir-format +#: lib/graphql/resolvers/user.ex:487 msgid "User requested is not logged-in" msgstr "A kért felhasználó nincs bejelentkezve" -#: lib/graphql/resolvers/group.ex:232 #, elixir-format +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "Már tagja ennek a csoportnak" -#: lib/graphql/resolvers/group.ex:265 #, elixir-format +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "Nem hagyhatja el ezt a csoportot, mert Ön az egyedüli adminisztrátor" -#: lib/graphql/resolvers/group.ex:229 #, elixir-format +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "Nem csatlakozhat ehhez a csoporthoz" -#: lib/graphql/resolvers/group.ex:94 #, elixir-format +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "Lehet, hogy nem sorolhatja fel a csoportokat, hacsak nem moderátor." -#: lib/graphql/resolvers/user.ex:387 #, elixir-format +#: lib/graphql/resolvers/user.ex:387 msgid "You need to be logged-in to change your email" msgstr "Bejelentkezve kell lennie az e-mail-címe megváltoztatásához" -#: lib/graphql/resolvers/user.ex:345 #, elixir-format +#: lib/graphql/resolvers/user.ex:345 msgid "You need to be logged-in to change your password" msgstr "Bejelentkezve kell lennie a jelszava megváltoztatásához" -#: lib/graphql/resolvers/group.ex:207 #, elixir-format +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "Bejelentkezve kell lennie egy csoport törléséhez" -#: lib/graphql/resolvers/user.ex:447 #, elixir-format +#: lib/graphql/resolvers/user.ex:447 msgid "You need to be logged-in to delete your account" msgstr "Bejelentkezve kell lennie a fiókja törléséhez" -#: lib/graphql/resolvers/group.ex:237 #, elixir-format +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "Bejelentkezve kell lennie egy csoporthoz való csatlakozáshoz" -#: lib/graphql/resolvers/group.ex:270 #, elixir-format +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "Bejelentkezve kell lennie egy csoportból való kilépéshez" -#: lib/graphql/resolvers/group.ex:172 #, elixir-format +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "Bejelentkezve kell lennie egy csoport frissítéséhez" -#: lib/graphql/resolvers/user.ex:58 #, elixir-format -msgid "You need to have admin access to list users" -msgstr "Adminisztrátori hozzáférésre van szüksége a felhasználók felsorolásához" - #: lib/graphql/resolvers/user.ex:108 -#, elixir-format msgid "You need to have an existing token to get a refresh token" msgstr "Szüksége van egy meglévő tokenre egy frissítési token beszerzéséhez" -#: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 #, elixir-format +#: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 msgid "You requested again a confirmation email too soon" msgstr "Túl hamar kért újra egy megerősítő e-mailt" -#: lib/graphql/resolvers/user.ex:128 #, elixir-format +#: lib/graphql/resolvers/user.ex:128 msgid "Your email is not on the allowlist" msgstr "Az e-mail-címe nincs rajta az engedélyezési listán" -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 #, elixir-format +#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 msgid "Error while performing background task" msgstr "Hiba a háttérfeladat végrehajtásakor" -#: lib/graphql/resolvers/actor.ex:27 #, elixir-format +#: lib/graphql/resolvers/actor.ex:27 msgid "No profile found with this ID" msgstr "Nem található profil ezzel az azonosítóval" -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 #, elixir-format +#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 msgid "No remote profile found with this ID" msgstr "Nem található távoli profil ezzel az azonosítóval" -#: lib/graphql/resolvers/actor.ex:69 #, elixir-format +#: lib/graphql/resolvers/actor.ex:69 msgid "Only moderators and administrators can suspend a profile" msgstr "Csak moderátorok és adminisztrátorok függeszthetnek fel egy profilt" -#: lib/graphql/resolvers/actor.ex:99 #, elixir-format +#: lib/graphql/resolvers/actor.ex:99 msgid "Only moderators and administrators can unsuspend a profile" msgstr "" "Csak moderátorok és adminisztrátorok szüntethetik meg egy profil " "felfüggesztését" -#: lib/graphql/resolvers/actor.ex:24 #, elixir-format +#: lib/graphql/resolvers/actor.ex:24 msgid "Only remote profiles may be refreshed" msgstr "Csak távoli profilokat lehet frissíteni" -#: lib/graphql/resolvers/actor.ex:61 #, elixir-format +#: lib/graphql/resolvers/actor.ex:61 msgid "Profile already suspended" msgstr "A profil már fel van függesztve" -#: lib/graphql/resolvers/participant.ex:93 #, elixir-format +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "Érvényes e-mail-címet követelt meg az Ön példánya" -#: lib/graphql/resolvers/participant.ex:87 #, elixir-format +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "A névtelen részvétel nincs engedélyezve" -#: lib/graphql/resolvers/person.ex:184 #, elixir-format +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "Nem lehet eltávolítani egy csoport utolsó adminisztrátorát" -#: lib/graphql/resolvers/person.ex:181 #, elixir-format +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "Nem lehet eltávolítani egy felhasználó utolsó személyazonosságát" -#: lib/graphql/resolvers/comment.ex:105 #, elixir-format +#: lib/graphql/resolvers/comment.ex:105 msgid "Comment is already deleted" msgstr "A hozzászólást már törölték" -#: lib/graphql/resolvers/discussion.ex:61 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "Nem található a megbeszélés" -#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 #, elixir-format +#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 msgid "Error while saving report" msgstr "Hiba a jelentés mentésekor" -#: lib/graphql/resolvers/report.ex:96 #, elixir-format +#: lib/graphql/resolvers/report.ex:96 msgid "Error while updating report" msgstr "Hiba a jelentés frissítésekor" -#: lib/graphql/resolvers/participant.ex:128 #, elixir-format +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "Nem található az eseményazonosító" -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 #, elixir-format +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "Nem található az esemény" -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 #, elixir-format +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "Ezzel a(z) %{id} azonosítóval rendelkező esemény nem létezik" -#: lib/graphql/resolvers/participant.ex:100 #, elixir-format +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "Belső hiba" -#: lib/graphql/resolvers/discussion.ex:193 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "Nincs %{id} azonosítóval rendelkező megbeszélés" -#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 #, elixir-format +#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 msgid "No profile found for user" msgstr "Nem található profil a felhasználóhoz" -#: lib/graphql/resolvers/feed_token.ex:63 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:63 msgid "No such feed token" msgstr "Nincs ilyen hírforrástoken" -#: lib/graphql/resolvers/participant.ex:238 #, elixir-format +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "A résztvevő már rendelkezik %{role} szereppel" -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 #, elixir-format +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "Nem található a résztvevő" -#: lib/graphql/resolvers/person.ex:29 #, elixir-format +#: lib/graphql/resolvers/person.ex:29 msgid "Person with ID %{id} not found" msgstr "Nem található %{id} azonosítóval rendelkező személy" -#: lib/graphql/resolvers/person.ex:50 #, elixir-format +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "Nem található %{username} felhasználónévvel rendelkező személy" -#: lib/graphql/resolvers/picture.ex:41 -#, elixir-format -msgid "Picture with ID %{id} was not found" -msgstr "Nem található %{id} azonosítóval rendelkező fénykép" - -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 #, elixir-format +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "A hozzászólás-azonosító nem érvényes azonosító" -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 #, elixir-format +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "A hozzászólás nem létezik" -#: lib/graphql/resolvers/member.ex:83 #, elixir-format +#: lib/graphql/resolvers/member.ex:83 msgid "Profile invited doesn't exist" msgstr "A meghívott profil nem létezik" -#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 #, elixir-format +#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 msgid "Profile is already a member of this group" msgstr "A profil már tagja ennek a csoportnak" -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#, elixir-format +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 -#, elixir-format msgid "Profile is not member of group" msgstr "A profil nem tagja a csoportnak" -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 #, elixir-format +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "Nem található a profil" -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 #, elixir-format +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "A megadott moderátorprofilnak nincs jogosultsága ezen az eseményen" -#: lib/graphql/resolvers/report.ex:36 #, elixir-format +#: lib/graphql/resolvers/report.ex:36 msgid "Report not found" msgstr "Nem található a jelentés" -#: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 #, elixir-format +#: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 msgid "Resource doesn't exist" msgstr "Az erőforrás nem létezik" -#: lib/graphql/resolvers/participant.ex:121 #, elixir-format +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "Az esemény már elérte a legnagyobb kapacitását" -#: lib/graphql/resolvers/participant.ex:261 #, elixir-format +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "Ez a token érvénytelen" -#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 #, elixir-format +#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 msgid "Todo doesn't exist" msgstr "A tennivaló nem létezik" +#, elixir-format #: lib/graphql/resolvers/todos.ex:75 lib/graphql/resolvers/todos.ex:191 #: lib/graphql/resolvers/todos.ex:216 -#, elixir-format msgid "Todo list doesn't exist" msgstr "A tennivalólista nem létezik" -#: lib/graphql/resolvers/feed_token.ex:69 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:69 msgid "Token does not exist" msgstr "A token nem létezik" -#: lib/graphql/resolvers/feed_token.ex:66 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:66 msgid "Token is not a valid UUID" msgstr "A token nem érvényes UUID" -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 #, elixir-format +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "Nem található a felhasználó" -#: lib/graphql/resolvers/person.ex:232 #, elixir-format +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "Már rendelkezik profillal ehhez a felhasználóhoz" -#: lib/graphql/resolvers/participant.ex:131 #, elixir-format +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "Már résztvevője ennek az eseménynek" -#: lib/graphql/resolvers/discussion.ex:197 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "Nem tagja annak a csoportnak, amelyhez a megbeszélés tartozik" -#: lib/graphql/resolvers/member.ex:86 #, elixir-format +#: lib/graphql/resolvers/member.ex:86 msgid "You are not a member of this group" msgstr "Nem tagja ennek a csoportnak" -#: lib/graphql/resolvers/member.ex:151 #, elixir-format +#: lib/graphql/resolvers/member.ex:151 msgid "You are not a moderator or admin for this group" msgstr "Nem moderátor vagy adminisztrátor ennél a csoportnál" -#: lib/graphql/resolvers/comment.ex:51 #, elixir-format +#: lib/graphql/resolvers/comment.ex:51 msgid "You are not allowed to create a comment if not connected" msgstr "Nem hozhat létre hozzászólást, ha nincs kapcsolódva" -#: lib/graphql/resolvers/feed_token.ex:41 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:41 msgid "You are not allowed to create a feed token if not connected" msgstr "Nem hozhat létre hírforrástokent, ha nincs kapcsolódva" -#: lib/graphql/resolvers/comment.ex:110 #, elixir-format +#: lib/graphql/resolvers/comment.ex:110 msgid "You are not allowed to delete a comment if not connected" msgstr "Nem törölhet hozzászólást, ha nincs kapcsolódva" -#: lib/graphql/resolvers/feed_token.ex:78 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:78 msgid "You are not allowed to delete a feed token if not connected" msgstr "Nem törölhet hírforrástokent, ha nincs kapcsolódva" -#: lib/graphql/resolvers/comment.ex:73 #, elixir-format +#: lib/graphql/resolvers/comment.ex:73 msgid "You are not allowed to update a comment if not connected" msgstr "Nem frissíthet hozzászólást, ha nincs kapcsolódva" -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 #, elixir-format +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" "Nem hagyhatja el az eseményt, mert Ön az egyedüli eseménylétrehozó résztvevő" -#: lib/graphql/resolvers/member.ex:155 #, elixir-format +#: lib/graphql/resolvers/member.ex:155 msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgstr "" "Nem állíthatja magát alacsonyabb tagszerepre ennél a csoportnál, mert Ön az " "egyedüli adminisztrátor" -#: lib/graphql/resolvers/comment.ex:101 #, elixir-format +#: lib/graphql/resolvers/comment.ex:101 msgid "You cannot delete this comment" msgstr "Nem tudja törölni ezt a hozzászólást" -#: lib/graphql/resolvers/event.ex:275 #, elixir-format +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "Nem tudja törölni ezt az eseményt" -#: lib/graphql/resolvers/member.ex:89 #, elixir-format +#: lib/graphql/resolvers/member.ex:89 msgid "You cannot invite to this group" msgstr "Nem tud meghívni ebbe a csoportba" -#: lib/graphql/resolvers/feed_token.ex:72 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:72 msgid "You don't have permission to delete this token" msgstr "Nincs jogosultsága a token törléséhez" -#: lib/graphql/resolvers/admin.ex:52 #, elixir-format +#: lib/graphql/resolvers/admin.ex:52 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" "Bejelentkezve kell lennie és moderátornak kell lennie a műveletnaplók " "felsorolásához" -#: lib/graphql/resolvers/report.ex:26 #, elixir-format +#: lib/graphql/resolvers/report.ex:26 msgid "You need to be logged-in and a moderator to list reports" msgstr "" "Bejelentkezve kell lennie és moderátornak kell lennie a jelentések " "felsorolásához" -#: lib/graphql/resolvers/report.ex:101 #, elixir-format +#: lib/graphql/resolvers/report.ex:101 msgid "You need to be logged-in and a moderator to update a report" msgstr "" "Bejelentkezve kell lennie és moderátornak kell lennie egy jelentés " "frissítéséhez" -#: lib/graphql/resolvers/report.ex:41 #, elixir-format +#: lib/graphql/resolvers/report.ex:41 msgid "You need to be logged-in and a moderator to view a report" msgstr "" "Bejelentkezve kell lennie és moderátornak kell lennie egy jelentés " "megtekintéséhez" -#: lib/graphql/resolvers/admin.ex:236 #, elixir-format +#: lib/graphql/resolvers/admin.ex:236 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Bejelentkezve kell lennie és adminisztrátornak kell lennie az " "adminisztrátori beállításokhoz való hozzáféréshez" -#: lib/graphql/resolvers/admin.ex:221 #, elixir-format +#: lib/graphql/resolvers/admin.ex:221 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Bejelentkezve kell lennie és adminisztrátornak kell lennie a vezérlőpulti " "statisztikákhoz való hozzáféréshez" -#: lib/graphql/resolvers/admin.ex:260 #, elixir-format +#: lib/graphql/resolvers/admin.ex:260 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Bejelentkezve kell lennie és adminisztrátornak kell lennie az " "adminisztrátori beállítások mentéséhez" -#: lib/graphql/resolvers/discussion.ex:75 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "Bejelentkezve kell lennie a megbeszélésekhez való hozzáféréshez" -#: lib/graphql/resolvers/resource.ex:93 #, elixir-format +#: lib/graphql/resolvers/resource.ex:93 msgid "You need to be logged-in to access resources" msgstr "Bejelentkezve kell lennie az erőforrásokhoz való hozzáféréshez" -#: lib/graphql/resolvers/event.ex:210 #, elixir-format +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "Bejelentkezve kell lennie az események létrehozásához" -#: lib/graphql/resolvers/post.ex:139 #, elixir-format +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "Bejelentkezve kell lennie a hozzászólások létrehozásához" -#: lib/graphql/resolvers/report.ex:74 #, elixir-format +#: lib/graphql/resolvers/report.ex:74 msgid "You need to be logged-in to create reports" msgstr "Bejelentkezve kell lennie a jelentések létrehozásához" -#: lib/graphql/resolvers/resource.ex:129 #, elixir-format +#: lib/graphql/resolvers/resource.ex:129 msgid "You need to be logged-in to create resources" msgstr "Bejelentkezve kell lennie az erőforrások létrehozásához" -#: lib/graphql/resolvers/event.ex:284 #, elixir-format +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "Bejelentkezve kell lennie egy esemény törléséhez" -#: lib/graphql/resolvers/post.ex:209 #, elixir-format +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "Bejelentkezve kell lennie a hozzászólások törléséhez" -#: lib/graphql/resolvers/resource.ex:187 #, elixir-format +#: lib/graphql/resolvers/resource.ex:187 msgid "You need to be logged-in to delete resources" msgstr "Bejelentkezve kell lennie az erőforrások törléséhez" -#: lib/graphql/resolvers/participant.ex:105 #, elixir-format +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "Bejelentkezve kell lennie egy eseményhez való csatlakozáshoz" -#: lib/graphql/resolvers/participant.ex:204 #, elixir-format +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "Bejelentkezve kell lennie egy esemény elhagyásához" -#: lib/graphql/resolvers/event.ex:249 #, elixir-format +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "Bejelentkezve kell lennie egy esemény frissítéséhez" -#: lib/graphql/resolvers/post.ex:176 #, elixir-format +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "Bejelentkezve kell lennie a hozzászólások frissítéséhez" -#: lib/graphql/resolvers/resource.ex:158 #, elixir-format +#: lib/graphql/resolvers/resource.ex:158 msgid "You need to be logged-in to update resources" msgstr "Bejelentkezve kell lennie az erőforrások frissítéséhez" -#: lib/graphql/resolvers/resource.ex:210 #, elixir-format +#: lib/graphql/resolvers/resource.ex:210 msgid "You need to be logged-in to view a resource preview" msgstr "Bejelentkezve kell lennie egy erőforrás előnézetének megtekintéséhez" -#: lib/graphql/resolvers/picture.ex:79 #, elixir-format -msgid "You need to login to upload a picture" -msgstr "Be kell jelentkeznie egy fénykép feltöltéséhez" - #: lib/graphql/resolvers/resource.ex:121 -#, elixir-format msgid "Parent resource doesn't belong to this group" msgstr "A szülőerőforrás nem tartozik ehhez a csoporthoz" -#: lib/mobilizon/users/user.ex:109 #, elixir-format +#: lib/mobilizon/users/user.ex:109 msgid "The chosen password is too short." msgstr "A választott jelszó túl rövid." -#: lib/mobilizon/users/user.ex:138 #, elixir-format +#: lib/mobilizon/users/user.ex:138 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" "A regisztrációs token már használatban van. Ez hibának tűnik a mi oldalunkon." -#: lib/mobilizon/users/user.ex:104 #, elixir-format +#: lib/mobilizon/users/user.ex:104 msgid "This email is already used." msgstr "Ez az e-mail-cím már használatban van." -#: lib/graphql/error.ex:88 #, elixir-format +#: lib/graphql/error.ex:88 msgid "Post not found" msgstr "Nem található a hozzászólás" -#: lib/graphql/error.ex:75 #, elixir-format +#: lib/graphql/error.ex:75 msgid "Invalid arguments passed" msgstr "Érvénytelen argumentumok lettek átadva" -#: lib/graphql/error.ex:81 #, elixir-format +#: lib/graphql/error.ex:81 msgid "Invalid credentials" msgstr "Érvénytelen hitelesítési adatok" -#: lib/graphql/error.ex:79 #, elixir-format +#: lib/graphql/error.ex:79 msgid "Reset your password to login" msgstr "Állítsa vissza a jelszavát a bejelentkezéshez" -#: lib/graphql/error.ex:86 lib/graphql/error.ex:91 #, elixir-format +#: lib/graphql/error.ex:86 lib/graphql/error.ex:91 msgid "Resource not found" msgstr "Nem található az erőforrás" -#: lib/graphql/error.ex:92 #, elixir-format +#: lib/graphql/error.ex:92 msgid "Something went wrong" msgstr "Valami elromlott" -#: lib/graphql/error.ex:74 #, elixir-format +#: lib/graphql/error.ex:74 msgid "Unknown Resource" msgstr "Ismeretlen erőforrás" -#: lib/graphql/error.ex:84 #, elixir-format +#: lib/graphql/error.ex:84 msgid "You don't have permission to do this" msgstr "Nincs jogosultsága, hogy ezt tegye" -#: lib/graphql/error.ex:76 #, elixir-format +#: lib/graphql/error.ex:76 msgid "You need to be logged in" msgstr "Bejelentkezve kell lennie" -#: lib/graphql/resolvers/member.ex:116 #, elixir-format +#: lib/graphql/resolvers/member.ex:116 msgid "You can't accept this invitation with this profile." msgstr "Nem tudja elfogadni ezt a meghívást ezzel a profillal." -#: lib/graphql/resolvers/member.ex:134 #, elixir-format +#: lib/graphql/resolvers/member.ex:134 msgid "You can't reject this invitation with this profile." msgstr "Nem tudja visszautasítani ezt a meghívást ezzel a profillal." -#: lib/graphql/resolvers/picture.ex:71 #, elixir-format +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "A fájl nem rendelkezik engedélyezett MIME-típussal." -#: lib/graphql/resolvers/group.ex:167 #, elixir-format +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "A profil nem adminisztrátor ennél a csoportnál" -#: lib/graphql/resolvers/event.ex:238 #, elixir-format +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "Nem tudja szerkeszteni ezt az eseményt." -#: lib/graphql/resolvers/event.ex:241 #, elixir-format +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "Nem tudja ezt az eseményt ennek a profilnak tulajdonítani." -#: lib/graphql/resolvers/member.ex:137 #, elixir-format +#: lib/graphql/resolvers/member.ex:137 msgid "This invitation doesn't exist." msgstr "Ez a meghívás nem létezik." -#: lib/graphql/resolvers/member.ex:179 #, elixir-format +#: lib/graphql/resolvers/member.ex:179 msgid "This member already has been rejected." msgstr "Ez a tag már vissza lett utasítva." -#: lib/graphql/resolvers/member.ex:186 #, elixir-format +#: lib/graphql/resolvers/member.ex:186 msgid "You don't have the right to remove this member." msgstr "Nincs meg a jogosultsága a tag eltávolításához." -#: lib/mobilizon/actors/actor.ex:344 #, elixir-format +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "Ez a felhasználónév már foglalt." -#: lib/graphql/resolvers/discussion.ex:72 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" "Meg kell adnia vagy egy azonosítót, vagy egy keresőbarát URL-t egy " "megbeszéléshez való hozzáféréshez" -#: lib/graphql/resolvers/event.ex:199 #, elixir-format +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "A szervező profilját nem a felhasználó birtokolja" -#: lib/graphql/resolvers/participant.ex:90 #, elixir-format +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "A megadott profilazonosító nem a névtelen profil" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/it/LC_MESSAGES/default.po b/priv/gettext/it/LC_MESSAGES/default.po index 1fcbcabe1..8458137d3 100644 --- a/priv/gettext/it/LC_MESSAGES/default.po +++ b/priv/gettext/it/LC_MESSAGES/default.po @@ -21,11 +21,6 @@ msgstr "" "Se non l'hai richiesta tu, ignora questa mail. La tua password non sarà " "cambiata fino a che non accederai al link sotto per crearne una nuova." -#, elixir-format -#: lib/service/export/feed.ex:170 -msgid "Feed for %{email} on Mobilizon" -msgstr "Flusso di %{email} su Mobilizon" - #, elixir-format #: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" @@ -152,7 +147,7 @@ msgid "Warning" msgstr "Attenzione" #, elixir-format -#: lib/web/email/participation.ex:134 +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Conferma la tua partecipazione all'evento %{title}" @@ -368,7 +363,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon su %{instance}: email modificata" #, elixir-format -#: lib/web/email/notification.ex:46 +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un evento programmato oggi" @@ -421,19 +416,19 @@ msgid "View the event on: %{link}" msgstr "Visualizza l'evento su: %{link}" #, elixir-format -#: lib/web/email/group.ex:32 +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "Sei stato invitato da %{inviter} per partecipare al gruppo %{group}" #, elixir-format -#: lib/web/email/notification.ex:70 +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un evento in programma questa settimana" msgstr[1] "%{nb_events} eventi in programma questa settimana" #, elixir-format -#: lib/web/email/notification.ex:92 +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Una richiesta di partecipazione per l'evento %{title} da elaborare" @@ -1277,7 +1272,7 @@ msgid "So long, and thanks for the fish!" msgstr "Addio, e grazie per il pesce!" #, elixir-format -#: lib/web/email/group.ex:62 +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "Sei stato rimosso dal gruppo %{group}" @@ -1347,12 +1342,12 @@ msgstr "" "%{group_name} (%{group_address}). Non sei più un membro di questo gruppo." #, elixir-format -#: lib/web/email/group.ex:135 +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "Il gruppo %{group} è stato eliminato su %{instance}" #, elixir-format -#: lib/web/email/group.ex:96 +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "Il gruppo %{group} è stato sospeso su %{instance}" @@ -1598,12 +1593,12 @@ msgstr "" "ora sei nella lista degli invitati!" #, elixir-format -#: lib/mobilizon/posts/post.ex:91 +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "È richiesto un testo per il post" #, elixir-format -#: lib/mobilizon/posts/post.ex:90 +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "È richiesto un titolo per il post" @@ -1705,3 +1700,23 @@ msgstr "Siamo spiacenti, ma qualcosa è andato storto da parte nostra." #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Questo è un sito dimostrativo per testare Mobilizon." + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/it/LC_MESSAGES/errors.po b/priv/gettext/it/LC_MESSAGES/errors.po index 58043310d..454289aa1 100644 --- a/priv/gettext/it/LC_MESSAGES/errors.po +++ b/priv/gettext/it/LC_MESSAGES/errors.po @@ -93,773 +93,761 @@ msgstr "dev'essere maggiore o uguale di %{number}" msgid "must be equal to %{number}" msgstr "dev'essere uguale a %{number}" -#: lib/graphql/resolvers/user.ex:103 #, elixir-format +#: lib/graphql/resolvers/user.ex:103 msgid "Cannot refresh the token" msgstr "Il token non può essere aggiornato" -#: lib/graphql/resolvers/group.ex:198 #, elixir-format +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "Il profilo corrente non è membro di questo gruppo" -#: lib/graphql/resolvers/group.ex:202 #, elixir-format +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "Il profilo corrente non è amministratore del gruppo selezionato" -#: lib/graphql/resolvers/user.ex:512 #, elixir-format +#: lib/graphql/resolvers/user.ex:512 msgid "Error while saving user settings" msgstr "Errore nel salvare le preferenze utente" -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 #, elixir-format +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "Gruppo non trovato" -#: lib/graphql/resolvers/group.ex:66 #, elixir-format +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "Gruppo con ID %{id} non trovato" -#: lib/graphql/resolvers/user.ex:83 #, elixir-format +#: lib/graphql/resolvers/user.ex:83 msgid "Impossible to authenticate, either your email or password are invalid." msgstr "Impossibile autenticarsi: email e/o password non validi." -#: lib/graphql/resolvers/group.ex:258 #, elixir-format +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "Membro non trovato" +#, elixir-format #: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 #: lib/graphql/resolvers/user.ex:417 -#, elixir-format msgid "No profile found for the moderator user" msgstr "Nessun profilo trovato per l'utente moderatore" -#: lib/graphql/resolvers/user.ex:195 #, elixir-format +#: lib/graphql/resolvers/user.ex:195 msgid "No user to validate with this email was found" msgstr "Nessun utente da convalidare trovato con questa email" -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 #, elixir-format +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "Nessun utente con questa email" -#: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:28 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "L'utente autenticato non è propietario di questo profilo" -#: lib/graphql/resolvers/user.ex:125 #, elixir-format +#: lib/graphql/resolvers/user.ex:125 msgid "Registrations are not open" msgstr "Le registrazioni non sono aperte" -#: lib/graphql/resolvers/user.ex:330 #, elixir-format +#: lib/graphql/resolvers/user.ex:330 msgid "The current password is invalid" msgstr "la password corrente non è valida" -#: lib/graphql/resolvers/user.ex:382 #, elixir-format +#: lib/graphql/resolvers/user.ex:382 msgid "The new email doesn't seem to be valid" msgstr "La nuova email sembra non valida" -#: lib/graphql/resolvers/user.ex:379 #, elixir-format +#: lib/graphql/resolvers/user.ex:379 msgid "The new email must be different" msgstr "La nuova email dev'essere diversa" -#: lib/graphql/resolvers/user.ex:333 #, elixir-format +#: lib/graphql/resolvers/user.ex:333 msgid "The new password must be different" msgstr "La nuova password deve essere diversa" +#, elixir-format #: lib/graphql/resolvers/user.ex:376 lib/graphql/resolvers/user.ex:439 #: lib/graphql/resolvers/user.ex:442 -#, elixir-format msgid "The password provided is invalid" msgstr "La password assegnata non è valida" -#: lib/graphql/resolvers/user.ex:337 #, 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." msgstr "la password scelta è troppo corta, deve avere almeno 6 caratteri." -#: lib/graphql/resolvers/user.ex:215 #, elixir-format +#: lib/graphql/resolvers/user.ex:215 msgid "This user can't reset their password" msgstr "Questo utente non può resettare la password" -#: lib/graphql/resolvers/user.ex:79 #, elixir-format +#: lib/graphql/resolvers/user.ex:79 msgid "This user has been disabled" msgstr "L'utente è stato disabilitato" -#: lib/graphql/resolvers/user.ex:179 #, elixir-format +#: lib/graphql/resolvers/user.ex:179 msgid "Unable to validate user" msgstr "Impossibile convalidare l'utente" -#: lib/graphql/resolvers/user.ex:420 #, elixir-format +#: lib/graphql/resolvers/user.ex:420 msgid "User already disabled" msgstr "Utente già disabilitato" -#: lib/graphql/resolvers/user.ex:487 #, elixir-format +#: lib/graphql/resolvers/user.ex:487 msgid "User requested is not logged-in" msgstr "L'utente richiesto non è loggato" -#: lib/graphql/resolvers/group.ex:232 #, elixir-format +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "Sei già un membro di questo gruppo" -#: lib/graphql/resolvers/group.ex:265 #, elixir-format +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "Non puoi lasciare questo gruppo perchè sei l'unico amministratore" -#: lib/graphql/resolvers/group.ex:229 #, elixir-format +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "Non puoi unirti a questo gruppo" -#: lib/graphql/resolvers/group.ex:94 #, elixir-format +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "Non è possibile elencare i gruppi a meno che non sia un moderatore." -#: lib/graphql/resolvers/user.ex:387 #, elixir-format +#: lib/graphql/resolvers/user.ex:387 msgid "You need to be logged-in to change your email" msgstr "È necessario effettuare il login per modificare la tua email" -#: lib/graphql/resolvers/user.ex:345 #, elixir-format +#: lib/graphql/resolvers/user.ex:345 msgid "You need to be logged-in to change your password" msgstr "È necessario effettuare il login per modificare la tua password" -#: lib/graphql/resolvers/group.ex:207 #, elixir-format +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "È necessario effettuare il login per eliminare un gruppo" -#: lib/graphql/resolvers/user.ex:447 #, elixir-format +#: lib/graphql/resolvers/user.ex:447 msgid "You need to be logged-in to delete your account" msgstr "È necessario effettuare il login per eliminare il tuo account" -#: lib/graphql/resolvers/group.ex:237 #, elixir-format +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "È necessario effettuare il login per entrare a far parte di un gruppo" -#: lib/graphql/resolvers/group.ex:270 #, elixir-format +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "È necessario effettuare il login per lasciare un gruppo" -#: lib/graphql/resolvers/group.ex:172 #, elixir-format +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "È necessario effettuare il login per aggiornare un gruppo" -#: lib/graphql/resolvers/user.ex:58 #, elixir-format -msgid "You need to have admin access to list users" -msgstr "" -"È necessario disporre dell'accesso come amministratore per elencare gli " -"utenti" - #: lib/graphql/resolvers/user.ex:108 -#, elixir-format msgid "You need to have an existing token to get a refresh token" msgstr "" "È necessario disporre di un token esistente per ottenere un token di " "aggiornamento" -#: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 #, elixir-format +#: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 msgid "You requested again a confirmation email too soon" msgstr "Hai richiesto di nuovo un'e-mail di conferma troppo presto" -#: lib/graphql/resolvers/user.ex:128 #, elixir-format +#: lib/graphql/resolvers/user.ex:128 msgid "Your email is not on the allowlist" msgstr "La tua mail non è nella lista delle autorizzazioni" -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 #, elixir-format +#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 msgid "Error while performing background task" msgstr "Errore nell'eseguire un processo in background" -#: lib/graphql/resolvers/actor.ex:27 #, elixir-format +#: lib/graphql/resolvers/actor.ex:27 msgid "No profile found with this ID" msgstr "Nessun profilo trovato con questo ID" -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 #, elixir-format +#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 msgid "No remote profile found with this ID" msgstr "Nessun profilo remoto trovato con questo ID" -#: lib/graphql/resolvers/actor.ex:69 #, elixir-format +#: lib/graphql/resolvers/actor.ex:69 msgid "Only moderators and administrators can suspend a profile" msgstr "Solo i moderatori e gli amministratori possono sospendere un profilo" -#: lib/graphql/resolvers/actor.ex:99 #, elixir-format +#: lib/graphql/resolvers/actor.ex:99 msgid "Only moderators and administrators can unsuspend a profile" msgstr "Solo i moderatori e gli amministratori possono riattivare un profilo" -#: lib/graphql/resolvers/actor.ex:24 #, elixir-format +#: lib/graphql/resolvers/actor.ex:24 msgid "Only remote profiles may be refreshed" msgstr "È possibile aggiornare solo i profili remoti" -#: lib/graphql/resolvers/actor.ex:61 #, elixir-format +#: lib/graphql/resolvers/actor.ex:61 msgid "Profile already suspended" msgstr "Profilo già sospeso" -#: lib/graphql/resolvers/participant.ex:93 #, elixir-format +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "Un'email valida è richiesta dalla vostra istanza" -#: lib/graphql/resolvers/participant.ex:87 #, elixir-format +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "La partecipazione anonima non è abilitata" -#: lib/graphql/resolvers/person.ex:184 #, elixir-format +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "Impossibile rimuovere l'ultimo amministratore di un gruppo" -#: lib/graphql/resolvers/person.ex:181 #, elixir-format +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "Impossibile rimuovere l'ultima identità di un utente" -#: lib/graphql/resolvers/comment.ex:105 #, elixir-format +#: lib/graphql/resolvers/comment.ex:105 msgid "Comment is already deleted" msgstr "Commento già cancellato" -#: lib/graphql/resolvers/discussion.ex:61 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "Discussione non trovata" -#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 #, elixir-format +#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 msgid "Error while saving report" msgstr "Errore nel salvare la segnalazione" -#: lib/graphql/resolvers/report.ex:96 #, elixir-format +#: lib/graphql/resolvers/report.ex:96 msgid "Error while updating report" msgstr "Errore durante l'aggiornamento del rapporto" -#: lib/graphql/resolvers/participant.ex:128 #, elixir-format +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "ID evento non trovato" -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 #, elixir-format +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "Evento non trovato" -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 #, elixir-format +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "L'evento con questo ID %{id} non esiste" -#: lib/graphql/resolvers/participant.ex:100 #, elixir-format +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "Errore Interno" -#: lib/graphql/resolvers/discussion.ex:193 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "Nessuna discussione con l'ID %{id}" -#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 #, elixir-format +#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 msgid "No profile found for user" msgstr "Nessuno profilo trovato per l'utente" -#: lib/graphql/resolvers/feed_token.ex:63 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:63 msgid "No such feed token" msgstr "Nessun token di rifornimento corrispondente" -#: lib/graphql/resolvers/participant.ex:238 #, elixir-format +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "Il partecipante ha già il ruolo %{role}" -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 #, elixir-format +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "Partecipante non trovato" -#: lib/graphql/resolvers/person.ex:29 #, elixir-format +#: lib/graphql/resolvers/person.ex:29 msgid "Person with ID %{id} not found" msgstr "La persona con l'ID %{id} non è stata trovata" -#: lib/graphql/resolvers/person.ex:50 #, elixir-format +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "La persona con il nome utente %{username} non è stata trovata" -#: lib/graphql/resolvers/picture.ex:41 -#, elixir-format -msgid "Picture with ID %{id} was not found" -msgstr "L'immagine con l'ID %{id} non è stata trovata" - -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 #, elixir-format +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "L'ID del post non è un ID valido" -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 #, elixir-format +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "Il post non esiste" -#: lib/graphql/resolvers/member.ex:83 #, elixir-format +#: lib/graphql/resolvers/member.ex:83 msgid "Profile invited doesn't exist" msgstr "Il profilo invitato non esiste" -#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 #, elixir-format +#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 msgid "Profile is already a member of this group" msgstr "Il profilo è già un membro diquesto gruppo" -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#, elixir-format +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 -#, elixir-format msgid "Profile is not member of group" msgstr "Il profilo non è membro del gruppo" -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 #, elixir-format +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "Profilo non trovato" -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 #, elixir-format +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "" "Il profilo del moderatore fornito non dispone dell'autorizzazione per questo " "evento" -#: lib/graphql/resolvers/report.ex:36 #, elixir-format +#: lib/graphql/resolvers/report.ex:36 msgid "Report not found" msgstr "Segnalazione non trovata" -#: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 #, elixir-format +#: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 msgid "Resource doesn't exist" msgstr "La risorsa non esiste" -#: lib/graphql/resolvers/participant.ex:121 #, elixir-format +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "L'evento ha già raggiunto la sua massima capacità" -#: lib/graphql/resolvers/participant.ex:261 #, elixir-format +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "Questo token non è valido" -#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 #, elixir-format +#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 msgid "Todo doesn't exist" msgstr "L'elemento to-do non esiste" +#, elixir-format #: lib/graphql/resolvers/todos.ex:75 lib/graphql/resolvers/todos.ex:191 #: lib/graphql/resolvers/todos.ex:216 -#, elixir-format msgid "Todo list doesn't exist" msgstr "la lista non esiste" -#: lib/graphql/resolvers/feed_token.ex:69 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:69 msgid "Token does not exist" msgstr "Il token non esiste" -#: lib/graphql/resolvers/feed_token.ex:66 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:66 msgid "Token is not a valid UUID" msgstr "Il token non è un UUID valido" -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 #, elixir-format +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "Utente non trovato" -#: lib/graphql/resolvers/person.ex:232 #, elixir-format +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "Hai già un profilo per questo utente" -#: lib/graphql/resolvers/participant.ex:131 #, elixir-format +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "Se già un partecipante di questo evento" -#: lib/graphql/resolvers/discussion.ex:197 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "Non sei membro del gruppo a cui la discussione appartiene" -#: lib/graphql/resolvers/member.ex:86 #, elixir-format +#: lib/graphql/resolvers/member.ex:86 msgid "You are not a member of this group" msgstr "Non sei un membro di questo gruppo" -#: lib/graphql/resolvers/member.ex:151 #, elixir-format +#: lib/graphql/resolvers/member.ex:151 msgid "You are not a moderator or admin for this group" msgstr "Non sei un moderatore o amministratore di questo gruppo" -#: lib/graphql/resolvers/comment.ex:51 #, elixir-format +#: lib/graphql/resolvers/comment.ex:51 msgid "You are not allowed to create a comment if not connected" msgstr "Non è consentito creare un commento se non si è collegati" -#: lib/graphql/resolvers/feed_token.ex:41 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:41 msgid "You are not allowed to create a feed token if not connected" msgstr "Non puoi creare un token di rifornimento senza connessione" -#: lib/graphql/resolvers/comment.ex:110 #, elixir-format +#: lib/graphql/resolvers/comment.ex:110 msgid "You are not allowed to delete a comment if not connected" msgstr "Non è consentito eliminare un commento se non si è collegati" -#: lib/graphql/resolvers/feed_token.ex:78 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:78 msgid "You are not allowed to delete a feed token if not connected" msgstr "Non puoi eliminare un token di rifornimento senza connettersi" -#: lib/graphql/resolvers/comment.ex:73 #, elixir-format +#: lib/graphql/resolvers/comment.ex:73 msgid "You are not allowed to update a comment if not connected" msgstr "Non è consentito aggiornare un commento se non si è collegati" -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 #, elixir-format +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" "Non puoi lasciare l'evento perchè sei l'unico partecipante creatore di eventi" -#: lib/graphql/resolvers/member.ex:155 #, elixir-format +#: lib/graphql/resolvers/member.ex:155 msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgstr "" "Non puoi impostare te stesso per un ruolo di membro inferiore per questo " "gruppo perché sei l'unico amministratore" -#: lib/graphql/resolvers/comment.ex:101 #, elixir-format +#: lib/graphql/resolvers/comment.ex:101 msgid "You cannot delete this comment" msgstr "Non puoi eliminare questo commento" -#: lib/graphql/resolvers/event.ex:275 #, elixir-format +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "Non puoi eliminare questo evento" -#: lib/graphql/resolvers/member.ex:89 #, elixir-format +#: lib/graphql/resolvers/member.ex:89 msgid "You cannot invite to this group" msgstr "Non puoi invitare in questo gruppo" -#: lib/graphql/resolvers/feed_token.ex:72 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:72 msgid "You don't have permission to delete this token" msgstr "Non hai il permesso di cancellare questo token" -#: lib/graphql/resolvers/admin.ex:52 #, elixir-format +#: lib/graphql/resolvers/admin.ex:52 msgid "You need to be logged-in and a moderator to list action logs" msgstr "Devi essere connesso e un moderatore per elencare i log delle azioni" -#: lib/graphql/resolvers/report.ex:26 #, elixir-format +#: lib/graphql/resolvers/report.ex:26 msgid "You need to be logged-in and a moderator to list reports" msgstr "Devi essere connesso e un moderatore per elencare i rapporti" -#: lib/graphql/resolvers/report.ex:101 #, elixir-format +#: lib/graphql/resolvers/report.ex:101 msgid "You need to be logged-in and a moderator to update a report" msgstr "Devi essere connesso e un moderatore per aggiornare un rapporto" -#: lib/graphql/resolvers/report.ex:41 #, elixir-format +#: lib/graphql/resolvers/report.ex:41 msgid "You need to be logged-in and a moderator to view a report" msgstr "Devi essere connesso e un moderatore per visualizzare un rapporto" -#: lib/graphql/resolvers/admin.ex:236 #, elixir-format +#: lib/graphql/resolvers/admin.ex:236 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Devi essere connesso e un moderatore per accedere alle opzioni " "dell'amministratore" -#: lib/graphql/resolvers/admin.ex:221 #, elixir-format +#: lib/graphql/resolvers/admin.ex:221 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Devi essere connesso e un moderatore per accedere alle statistiche del " "dashboard" -#: lib/graphql/resolvers/admin.ex:260 #, elixir-format +#: lib/graphql/resolvers/admin.ex:260 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Devi essere connesso e un moderatore per salvare le impostazioni " "dell'amministratore" -#: lib/graphql/resolvers/discussion.ex:75 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "Devi essere connesso per accedere alle discussioni" -#: lib/graphql/resolvers/resource.ex:93 #, elixir-format +#: lib/graphql/resolvers/resource.ex:93 msgid "You need to be logged-in to access resources" msgstr "Devi essere connesso per accedere alle risorse" -#: lib/graphql/resolvers/event.ex:210 #, elixir-format +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "Devi essere connesso per creare eventi" -#: lib/graphql/resolvers/post.ex:139 #, elixir-format +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "Devi essere connesso per creare dei post" -#: lib/graphql/resolvers/report.ex:74 #, elixir-format +#: lib/graphql/resolvers/report.ex:74 msgid "You need to be logged-in to create reports" msgstr "Devi essere connesso per creare rapporti" -#: lib/graphql/resolvers/resource.ex:129 #, elixir-format +#: lib/graphql/resolvers/resource.ex:129 msgid "You need to be logged-in to create resources" msgstr "Devi essere connesso per creare risorse" -#: lib/graphql/resolvers/event.ex:284 #, elixir-format +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "Devi essere connesso per eliminare un evento" -#: lib/graphql/resolvers/post.ex:209 #, elixir-format +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "Devi essere connesso per eliminare dei post" -#: lib/graphql/resolvers/resource.ex:187 #, elixir-format +#: lib/graphql/resolvers/resource.ex:187 msgid "You need to be logged-in to delete resources" msgstr "Devi essere connesso per eliminare risorse" -#: lib/graphql/resolvers/participant.ex:105 #, elixir-format +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "Devi essere connesso per partecipare a un evento" -#: lib/graphql/resolvers/participant.ex:204 #, elixir-format +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "Devi essere connesso per lasciare un evento" -#: lib/graphql/resolvers/event.ex:249 #, elixir-format +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "Devi essere connesso per aggiornare un evento" -#: lib/graphql/resolvers/post.ex:176 #, elixir-format +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "Devi essere connesso per aggiornare dei post" -#: lib/graphql/resolvers/resource.ex:158 #, elixir-format +#: lib/graphql/resolvers/resource.ex:158 msgid "You need to be logged-in to update resources" msgstr "Devi essere connesso per aggiornare le risorse" -#: lib/graphql/resolvers/resource.ex:210 #, elixir-format +#: lib/graphql/resolvers/resource.ex:210 msgid "You need to be logged-in to view a resource preview" msgstr "Devi essere connesso per visualizzare l'anteprima di una risorsa" -#: lib/graphql/resolvers/picture.ex:79 #, elixir-format -msgid "You need to login to upload a picture" -msgstr "Devi essere connesso per caricare un'immagine" - #: lib/graphql/resolvers/resource.ex:121 -#, elixir-format msgid "Parent resource doesn't belong to this group" msgstr "La risorsa principale non appartiene a questo gruppo" -#: lib/mobilizon/users/user.ex:109 #, elixir-format +#: lib/mobilizon/users/user.ex:109 msgid "The chosen password is too short." msgstr "La password scelta è troppo corta." -#: lib/mobilizon/users/user.ex:138 #, elixir-format +#: lib/mobilizon/users/user.ex:138 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" "Il token di registrazione è già in uso, questo sembra un problema dalla " "nostra parte." -#: lib/mobilizon/users/user.ex:104 #, elixir-format +#: lib/mobilizon/users/user.ex:104 msgid "This email is already used." msgstr "Questa email è già in uso." -#: lib/graphql/error.ex:88 #, elixir-format +#: lib/graphql/error.ex:88 msgid "Post not found" msgstr "Post non trovato" -#: lib/graphql/error.ex:75 #, elixir-format +#: lib/graphql/error.ex:75 msgid "Invalid arguments passed" msgstr "Sono stati trasmessi argomenti non validi" -#: lib/graphql/error.ex:81 #, elixir-format +#: lib/graphql/error.ex:81 msgid "Invalid credentials" msgstr "Credenziali non valide" -#: lib/graphql/error.ex:79 #, elixir-format +#: lib/graphql/error.ex:79 msgid "Reset your password to login" msgstr "Reimposta la tua password per connetterti" -#: lib/graphql/error.ex:86 lib/graphql/error.ex:91 #, elixir-format +#: lib/graphql/error.ex:86 lib/graphql/error.ex:91 msgid "Resource not found" msgstr "Segnalazione non trovata" -#: lib/graphql/error.ex:92 #, elixir-format +#: lib/graphql/error.ex:92 msgid "Something went wrong" msgstr "Qualcosa è andato storto" -#: lib/graphql/error.ex:74 #, elixir-format +#: lib/graphql/error.ex:74 msgid "Unknown Resource" msgstr "Risorsa sconosciuta" -#: lib/graphql/error.ex:84 #, elixir-format +#: lib/graphql/error.ex:84 msgid "You don't have permission to do this" msgstr "Non hai il permesso di farlo" -#: lib/graphql/error.ex:76 #, elixir-format +#: lib/graphql/error.ex:76 msgid "You need to be logged in" msgstr "Devi essere connesso" -#: lib/graphql/resolvers/member.ex:116 #, elixir-format +#: lib/graphql/resolvers/member.ex:116 msgid "You can't accept this invitation with this profile." msgstr "Non puoi accettare l'invito con questo profilo." -#: lib/graphql/resolvers/member.ex:134 #, elixir-format +#: lib/graphql/resolvers/member.ex:134 msgid "You can't reject this invitation with this profile." msgstr "Non puoi rifiutare l'invito con questo profilo." -#: lib/graphql/resolvers/picture.ex:71 #, elixir-format +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "Il file non ha un tipo MIME consentito." -#: lib/graphql/resolvers/group.ex:167 #, elixir-format +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "Il profilo non è amministratore del gruppo" -#: lib/graphql/resolvers/event.ex:238 #, elixir-format +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "Non puoi modificare questo evento." -#: lib/graphql/resolvers/event.ex:241 #, elixir-format +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "Non puo iattribuire questo evento a questo profilo." -#: lib/graphql/resolvers/member.ex:137 #, elixir-format +#: lib/graphql/resolvers/member.ex:137 msgid "This invitation doesn't exist." msgstr "Questo invito non esiste." -#: lib/graphql/resolvers/member.ex:179 #, elixir-format +#: lib/graphql/resolvers/member.ex:179 msgid "This member already has been rejected." msgstr "Questo memebro è già stato rifiutato." -#: lib/graphql/resolvers/member.ex:186 #, elixir-format +#: lib/graphql/resolvers/member.ex:186 msgid "You don't have the right to remove this member." msgstr "Non hai il diritto di rimuovere questo membro." -#: lib/mobilizon/actors/actor.ex:344 #, elixir-format +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "Questo nome utente è già in uso." -#: lib/graphql/resolvers/discussion.ex:72 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" "Devi fornire un ID o la stringa utente (ad es. utente@mobilizon.sm) " "per accedere ad una discussione" -#: lib/graphql/resolvers/event.ex:199 #, elixir-format +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "Il profilo dell'organizzatore non è di proprietà dell'utente" -#: lib/graphql/resolvers/participant.ex:90 #, elixir-format +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "L'ID profilo fornito non è quello del profilo anonimo" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/ja/LC_MESSAGES/default.po b/priv/gettext/ja/LC_MESSAGES/default.po index 8ffe824ba..ebf788dcc 100644 --- a/priv/gettext/ja/LC_MESSAGES/default.po +++ b/priv/gettext/ja/LC_MESSAGES/default.po @@ -19,11 +19,6 @@ msgstr "" msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" -#, elixir-format -#: lib/service/export/feed.ex:170 -msgid "Feed for %{email} on Mobilizon" -msgstr "" - #, elixir-format #: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" @@ -144,7 +139,7 @@ msgid "Warning" msgstr "" #, elixir-format -#: lib/web/email/participation.ex:134 +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "" @@ -327,7 +322,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:46 +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -378,18 +373,18 @@ msgid "View the event on: %{link}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:32 +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:70 +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" #, elixir-format -#: lib/web/email/notification.ex:92 +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -1045,7 +1040,7 @@ msgid "So long, and thanks for the fish!" msgstr "" #, elixir-format -#: lib/web/email/group.ex:62 +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "" @@ -1101,12 +1096,12 @@ msgid "Your instance's moderation team has decided to suspend %{group_name} (%{g msgstr "" #, elixir-format -#: lib/web/email/group.ex:135 +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:96 +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1266,12 +1261,12 @@ msgid "You have now confirmed your participation. Update your calendar, because msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:91 +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:90 +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "" @@ -1363,3 +1358,23 @@ msgstr "" #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "" + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/ja/LC_MESSAGES/errors.po b/priv/gettext/ja/LC_MESSAGES/errors.po index 62dada908..edd3241c0 100644 --- a/priv/gettext/ja/LC_MESSAGES/errors.po +++ b/priv/gettext/ja/LC_MESSAGES/errors.po @@ -86,12 +86,12 @@ msgid "Cannot refresh the token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:198 +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:202 +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "" @@ -101,13 +101,13 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:66 +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "" @@ -117,7 +117,7 @@ msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:258 +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "" @@ -133,16 +133,15 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "" @@ -208,22 +207,22 @@ msgid "User requested is not logged-in" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:232 +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:265 +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:229 +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:94 +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "" @@ -238,7 +237,7 @@ msgid "You need to be logged-in to change your password" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:207 +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "" @@ -248,25 +247,20 @@ msgid "You need to be logged-in to delete your account" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:237 +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:270 +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:172 +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/user.ex:58 -msgid "You need to have admin access to list users" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/user.ex:108 msgid "You need to have an existing token to get a refresh token" @@ -318,22 +312,22 @@ msgid "Profile already suspended" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:93 +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:87 +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:184 +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:181 +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "" @@ -343,7 +337,7 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:61 +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "" @@ -358,29 +352,29 @@ msgid "Error while updating report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:100 +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:193 +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "" @@ -395,14 +389,14 @@ msgid "No such feed token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:238 +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "" @@ -412,22 +406,17 @@ msgid "Person with ID %{id} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:50 +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:41 -msgid "Picture with ID %{id} was not found" -msgstr "" - -#, elixir-format -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "" @@ -442,8 +431,8 @@ msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 @@ -451,12 +440,12 @@ msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "" @@ -471,12 +460,12 @@ msgid "Resource doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:121 +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:261 +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "" @@ -502,22 +491,22 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:232 +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:131 +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:197 +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "" @@ -557,8 +546,8 @@ msgid "You are not allowed to update a comment if not connected" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" @@ -573,7 +562,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:275 +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "" @@ -623,7 +612,7 @@ msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:75 +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "" @@ -633,12 +622,12 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:210 +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:139 +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "" @@ -653,12 +642,12 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "" @@ -668,22 +657,22 @@ msgid "You need to be logged-in to delete resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:105 +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:204 +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:249 +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:176 +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "" @@ -697,11 +686,6 @@ msgstr "" msgid "You need to be logged-in to view a resource preview" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/picture.ex:79 -msgid "You need to login to upload a picture" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/resource.ex:121 msgid "Parent resource doesn't belong to this group" @@ -778,22 +762,22 @@ msgid "You can't reject this invitation with this profile." msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:71 +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:167 +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:238 +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:241 +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "" @@ -813,21 +797,27 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:344 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:72 +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:199 +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:90 +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/nl/LC_MESSAGES/default.po b/priv/gettext/nl/LC_MESSAGES/default.po index a8d7b0da1..aa6dc53ea 100644 --- a/priv/gettext/nl/LC_MESSAGES/default.po +++ b/priv/gettext/nl/LC_MESSAGES/default.po @@ -22,11 +22,6 @@ msgstr "" "niet veranderen tot u op onderstaande link klikt en een nieuw wachtwoord " "instelt." -#, elixir-format -#: lib/service/export/feed.ex:170 -msgid "Feed for %{email} on Mobilizon" -msgstr "Feed voor %{email} op Mobilizon" - #, elixir-format #: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" @@ -153,7 +148,7 @@ msgid "Warning" msgstr "Waarschuwing" #, elixir-format -#: lib/web/email/participation.ex:134 +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "" @@ -336,7 +331,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:46 +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -389,19 +384,19 @@ msgid "View the event on: %{link}" msgstr "Bekijk het bijgewerkte evenement op: %{link}" #, elixir-format -#: lib/web/email/group.ex:32 +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:70 +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" msgstr[1] "" #, elixir-format -#: lib/web/email/notification.ex:92 +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -1069,7 +1064,7 @@ msgid "So long, and thanks for the fish!" msgstr "" #, elixir-format -#: lib/web/email/group.ex:62 +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "" @@ -1125,12 +1120,12 @@ msgid "Your instance's moderation team has decided to suspend %{group_name} (%{g msgstr "" #, elixir-format -#: lib/web/email/group.ex:135 +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:96 +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1291,12 +1286,12 @@ msgid "You have now confirmed your participation. Update your calendar, because msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:91 +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:90 +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "" @@ -1388,3 +1383,23 @@ msgstr "" #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Dit is een demosite om de bètaversie van Mobilizon te testen." + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/nl/LC_MESSAGES/errors.po b/priv/gettext/nl/LC_MESSAGES/errors.po index c1ab2808a..5d519a16d 100644 --- a/priv/gettext/nl/LC_MESSAGES/errors.po +++ b/priv/gettext/nl/LC_MESSAGES/errors.po @@ -92,12 +92,12 @@ msgid "Cannot refresh the token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:198 +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:202 +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "" @@ -107,13 +107,13 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:66 +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "" @@ -123,7 +123,7 @@ msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:258 +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "" @@ -139,16 +139,15 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "" @@ -214,22 +213,22 @@ msgid "User requested is not logged-in" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:232 +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:265 +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:229 +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:94 +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "" @@ -244,7 +243,7 @@ msgid "You need to be logged-in to change your password" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:207 +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "" @@ -254,25 +253,20 @@ msgid "You need to be logged-in to delete your account" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:237 +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:270 +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:172 +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/user.ex:58 -msgid "You need to have admin access to list users" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/user.ex:108 msgid "You need to have an existing token to get a refresh token" @@ -324,22 +318,22 @@ msgid "Profile already suspended" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:93 +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:87 +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:184 +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:181 +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "" @@ -349,7 +343,7 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:61 +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "" @@ -364,29 +358,29 @@ msgid "Error while updating report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:100 +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:193 +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "" @@ -401,14 +395,14 @@ msgid "No such feed token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:238 +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "" @@ -418,22 +412,17 @@ msgid "Person with ID %{id} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:50 +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:41 -msgid "Picture with ID %{id} was not found" -msgstr "" - -#, elixir-format -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "" @@ -448,8 +437,8 @@ msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 @@ -457,12 +446,12 @@ msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "" @@ -477,12 +466,12 @@ msgid "Resource doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:121 +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:261 +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "" @@ -508,22 +497,22 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:232 +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:131 +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:197 +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "" @@ -563,8 +552,8 @@ msgid "You are not allowed to update a comment if not connected" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" @@ -579,7 +568,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:275 +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "" @@ -629,7 +618,7 @@ msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:75 +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "" @@ -639,12 +628,12 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:210 +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:139 +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "" @@ -659,12 +648,12 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "" @@ -674,22 +663,22 @@ msgid "You need to be logged-in to delete resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:105 +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:204 +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:249 +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:176 +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "" @@ -703,11 +692,6 @@ msgstr "" msgid "You need to be logged-in to view a resource preview" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/picture.ex:79 -msgid "You need to login to upload a picture" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/resource.ex:121 msgid "Parent resource doesn't belong to this group" @@ -784,22 +768,22 @@ msgid "You can't reject this invitation with this profile." msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:71 +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:167 +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:238 +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:241 +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "" @@ -819,21 +803,27 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:344 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:72 +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:199 +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:90 +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/nn/LC_MESSAGES/default.po b/priv/gettext/nn/LC_MESSAGES/default.po index 836af703e..15e916662 100644 --- a/priv/gettext/nn/LC_MESSAGES/default.po +++ b/priv/gettext/nn/LC_MESSAGES/default.po @@ -21,11 +21,6 @@ msgstr "" "Viss du ikkje ba om dette, kan du sjå bort frå denne eposten. Passordet blir " "ikkje endra før du klikkar på lenka under og lagar eit nytt." -#, elixir-format -#: lib/service/export/feed.ex:170 -msgid "Feed for %{email} on Mobilizon" -msgstr "Kjelde for %{email} på Mobilizon" - #, elixir-format #: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" @@ -153,7 +148,7 @@ msgid "Warning" msgstr "Åtvaring" #, elixir-format -#: lib/web/email/participation.ex:134 +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Stadfest at du vil delta på hendinga %{title}" @@ -362,7 +357,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon på %{instance}: epostadressa er endra" #, elixir-format -#: lib/web/email/notification.ex:46 +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Ei planlagd hending i dag" @@ -415,19 +410,19 @@ msgid "View the event on: %{link}" msgstr "Sjå hendinga på: %{link}" #, elixir-format -#: lib/web/email/group.ex:32 +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} har invitert deg til å bli med i gruppa %{group}" #, elixir-format -#: lib/web/email/notification.ex:70 +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Ei planlagd hending denne veka" msgstr[1] "%{nb_events} planlagde hendingar denne veka" #, elixir-format -#: lib/web/email/notification.ex:92 +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Du har ein førespurnad om å delta på %{title} å handtera" @@ -1241,7 +1236,7 @@ msgid "So long, and thanks for the fish!" msgstr "Ha det så lenge, og takk for all fisken!" #, elixir-format -#: lib/web/email/group.ex:62 +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "Du er fjerna frå gruppa %{group}" @@ -1311,12 +1306,12 @@ msgstr "" "(%{group_address}). Du er ikkje lenger medlem av gruppa." #, elixir-format -#: lib/web/email/group.ex:135 +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "Gruppa %{group} på %{instance} er sletta" #, elixir-format -#: lib/web/email/group.ex:96 +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "Gruppa %{group} på %{instance} er sperra" @@ -1554,12 +1549,12 @@ msgstr "" "står på gjestelista no!" #, elixir-format -#: lib/mobilizon/posts/post.ex:91 +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "Du treng tekst i innlegget" #, elixir-format -#: lib/mobilizon/posts/post.ex:90 +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "Du treng ein tittel på innlegget" @@ -1661,3 +1656,23 @@ msgstr "Orsak, det skjedde noko feil hjå oss." #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Dette er ei demoside for å prøva ut Mobilizon." + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/nn/LC_MESSAGES/errors.po b/priv/gettext/nn/LC_MESSAGES/errors.po index d4522f297..e67e84b84 100644 --- a/priv/gettext/nn/LC_MESSAGES/errors.po +++ b/priv/gettext/nn/LC_MESSAGES/errors.po @@ -109,769 +109,759 @@ msgstr "må vera større enn eller lik %{number}" msgid "must be equal to %{number}" msgstr "må vera lik %{number}" -#: lib/graphql/resolvers/user.ex:103 #, elixir-format +#: lib/graphql/resolvers/user.ex:103 msgid "Cannot refresh the token" msgstr "Kan ikkje fornya teiknet" -#: lib/graphql/resolvers/group.ex:198 #, elixir-format +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "Denne brukaren er ikkje medlem av gruppa" -#: lib/graphql/resolvers/group.ex:202 #, elixir-format +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "Denne brukaren er ikkje styrar av gruppa" -#: lib/graphql/resolvers/user.ex:512 #, elixir-format +#: lib/graphql/resolvers/user.ex:512 msgid "Error while saving user settings" msgstr "Greidde ikkje lagra brukarinnstillingane" -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 #, elixir-format +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "Fann ikkje gruppa" -#: lib/graphql/resolvers/group.ex:66 #, elixir-format +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "Fann ikkje gruppa med ID %{id}" -#: lib/graphql/resolvers/user.ex:83 #, elixir-format +#: lib/graphql/resolvers/user.ex:83 msgid "Impossible to authenticate, either your email or password are invalid." msgstr "Greier ikkje å logga inn. Epostadressa eller passordet ditt er feil." -#: lib/graphql/resolvers/group.ex:258 #, elixir-format +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "Fann ikkje medlemen" +#, elixir-format #: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 #: lib/graphql/resolvers/user.ex:417 -#, elixir-format msgid "No profile found for the moderator user" msgstr "Fann ingen profil for moderator-brukaren" -#: lib/graphql/resolvers/user.ex:195 #, elixir-format +#: lib/graphql/resolvers/user.ex:195 msgid "No user to validate with this email was found" msgstr "Fann ingen brukar med denne eposten å godkjenna" -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 #, elixir-format +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "Fann ingen brukar med denne eposten" -#: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:28 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "Ingen godkjent brukar eig denne profilen" -#: lib/graphql/resolvers/user.ex:125 #, elixir-format +#: lib/graphql/resolvers/user.ex:125 msgid "Registrations are not open" msgstr "Det er ikkje opna for å registrera seg" -#: lib/graphql/resolvers/user.ex:330 #, elixir-format +#: lib/graphql/resolvers/user.ex:330 msgid "The current password is invalid" msgstr "Dette passordet er ugyldig" -#: lib/graphql/resolvers/user.ex:382 #, elixir-format +#: lib/graphql/resolvers/user.ex:382 msgid "The new email doesn't seem to be valid" msgstr "Den nye epostadressa ser ut til å vera feil" -#: lib/graphql/resolvers/user.ex:379 #, elixir-format +#: lib/graphql/resolvers/user.ex:379 msgid "The new email must be different" msgstr "Den nye epostadressa må vera annleis" -#: lib/graphql/resolvers/user.ex:333 #, elixir-format +#: lib/graphql/resolvers/user.ex:333 msgid "The new password must be different" msgstr "Det nye passordet må vera annleis" +#, elixir-format #: lib/graphql/resolvers/user.ex:376 lib/graphql/resolvers/user.ex:439 #: lib/graphql/resolvers/user.ex:442 -#, elixir-format msgid "The password provided is invalid" msgstr "Dette passordet er ugyldig" -#: lib/graphql/resolvers/user.ex:337 #, 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." msgstr "Dette passordet er for kort. Passord må ha minst 6 teikn." -#: lib/graphql/resolvers/user.ex:215 #, elixir-format +#: lib/graphql/resolvers/user.ex:215 msgid "This user can't reset their password" msgstr "Denne brukaren kan ikkje nullstilla passordet sitt" -#: lib/graphql/resolvers/user.ex:79 #, elixir-format +#: lib/graphql/resolvers/user.ex:79 msgid "This user has been disabled" msgstr "Denne brukaren er avskrudd" -#: lib/graphql/resolvers/user.ex:179 #, elixir-format +#: lib/graphql/resolvers/user.ex:179 msgid "Unable to validate user" msgstr "Greier ikkje godkjenna brukaren" -#: lib/graphql/resolvers/user.ex:420 #, elixir-format +#: lib/graphql/resolvers/user.ex:420 msgid "User already disabled" msgstr "Brukaren er allereie inaktiv" -#: lib/graphql/resolvers/user.ex:487 #, elixir-format +#: lib/graphql/resolvers/user.ex:487 msgid "User requested is not logged-in" msgstr "Den førespurte brukaren er ikkje innlogga" -#: lib/graphql/resolvers/group.ex:232 #, elixir-format +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "Du er allereie medlem av denne gruppa" -#: lib/graphql/resolvers/group.ex:265 #, elixir-format +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "Du kan ikkje forlata denne gruppa, fordi du er den einaste styraren" -#: lib/graphql/resolvers/group.ex:229 #, elixir-format +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "Du kan ikkje bli med i denne gruppa" -#: lib/graphql/resolvers/group.ex:94 #, elixir-format +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "Du kan ikkje lista opp grupper med mindre du er moderator." -#: lib/graphql/resolvers/user.ex:387 #, elixir-format +#: lib/graphql/resolvers/user.ex:387 msgid "You need to be logged-in to change your email" msgstr "Du må vera innlogga for å endra epostadressa di" -#: lib/graphql/resolvers/user.ex:345 #, elixir-format +#: lib/graphql/resolvers/user.ex:345 msgid "You need to be logged-in to change your password" msgstr "Du må vera innlogga for å endra passordet ditt" -#: lib/graphql/resolvers/group.ex:207 #, elixir-format +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "Du må vera innlogga for å sletta ei gruppe" -#: lib/graphql/resolvers/user.ex:447 #, elixir-format +#: lib/graphql/resolvers/user.ex:447 msgid "You need to be logged-in to delete your account" msgstr "Du må vera innlogga for å sletta kontoen din" -#: lib/graphql/resolvers/group.ex:237 #, elixir-format +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "Du må vera innlogga for å bli med i ei gruppe" -#: lib/graphql/resolvers/group.ex:270 #, elixir-format +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "Du må vera innlogga for å forlata ei gruppe" -#: lib/graphql/resolvers/group.ex:172 #, elixir-format +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "Du må vera innlogga for å oppdatera ei gruppe" -#: lib/graphql/resolvers/user.ex:58 #, elixir-format -msgid "You need to have admin access to list users" -msgstr "Du må ha administratorløyve for å lista opp brukarar" - #: lib/graphql/resolvers/user.ex:108 -#, elixir-format msgid "You need to have an existing token to get a refresh token" msgstr "Du treng eit eksisterande teikn for å få eit fornyingsteikn" -#: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 #, elixir-format +#: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 msgid "You requested again a confirmation email too soon" msgstr "Du ba om ny stadfestingsepost for snøgt" -#: lib/graphql/resolvers/user.ex:128 #, elixir-format +#: lib/graphql/resolvers/user.ex:128 msgid "Your email is not on the allowlist" msgstr "Epostadressa di er ikkje på lista over godkjende adresser" -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 #, elixir-format +#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 msgid "Error while performing background task" msgstr "Greidde ikkje utføra ei bakgrunnsoppgåve" -#: lib/graphql/resolvers/actor.ex:27 #, elixir-format +#: lib/graphql/resolvers/actor.ex:27 msgid "No profile found with this ID" msgstr "Fann ingen profil med denne ID-en" -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 #, elixir-format +#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 msgid "No remote profile found with this ID" msgstr "Fann ingen fjern profil med denne ID-en" -#: lib/graphql/resolvers/actor.ex:69 #, elixir-format +#: lib/graphql/resolvers/actor.ex:69 msgid "Only moderators and administrators can suspend a profile" msgstr "Berre moderatorar og styrarar kan sperra ein profil" -#: lib/graphql/resolvers/actor.ex:99 #, elixir-format +#: lib/graphql/resolvers/actor.ex:99 msgid "Only moderators and administrators can unsuspend a profile" msgstr "Berre moderatorar og styrarar kan oppheva sperring av profilar" -#: lib/graphql/resolvers/actor.ex:24 #, elixir-format +#: lib/graphql/resolvers/actor.ex:24 msgid "Only remote profiles may be refreshed" msgstr "Du kan berre lasta fjerne profilar på nytt" -#: lib/graphql/resolvers/actor.ex:61 #, elixir-format +#: lib/graphql/resolvers/actor.ex:61 msgid "Profile already suspended" msgstr "Profilen er allereie sperra" -#: lib/graphql/resolvers/participant.ex:93 #, elixir-format +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "Nettstaden din krev ei gyldig epostadresse" -#: lib/graphql/resolvers/participant.ex:87 #, elixir-format +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "Det er ikkje høve til å vera med anonymt" -#: lib/graphql/resolvers/person.ex:184 #, elixir-format +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "Kan ikkje fjerna den siste styraren i gruppa" -#: lib/graphql/resolvers/person.ex:181 #, elixir-format +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "Kan ikkje fjerna den siste identiteten til ein brukar" -#: lib/graphql/resolvers/comment.ex:105 #, elixir-format +#: lib/graphql/resolvers/comment.ex:105 msgid "Comment is already deleted" msgstr "Kommentaren er allereie sletta" -#: lib/graphql/resolvers/discussion.ex:61 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "Fann ikkje ordskiftet" -#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 #, elixir-format +#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 msgid "Error while saving report" msgstr "Greidde ikkje lagra rapporten" -#: lib/graphql/resolvers/report.ex:96 #, elixir-format +#: lib/graphql/resolvers/report.ex:96 msgid "Error while updating report" msgstr "Greidde ikkje oppdatera rapporten" -#: lib/graphql/resolvers/participant.ex:128 #, elixir-format +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "Fann ikkje ID-en til hendinga" -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 #, elixir-format +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "Fann ikkje hendinga" -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 #, elixir-format +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "Det finst inga hending med ID-en %{id}" -#: lib/graphql/resolvers/participant.ex:100 #, elixir-format +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "Intern feil" -#: lib/graphql/resolvers/discussion.ex:193 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "Ikkje noko ordskifte med ID-en %{id}" -#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 #, elixir-format +#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 msgid "No profile found for user" msgstr "Fann ingen profil for brukaren" -#: lib/graphql/resolvers/feed_token.ex:63 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:63 msgid "No such feed token" msgstr "Det finst ikkje noko slikt teikn for kjelda" -#: lib/graphql/resolvers/participant.ex:238 #, elixir-format +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "Deltakaren har rolla %{role} allereie" -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 #, elixir-format +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "Fann ikkje deltakaren" -#: lib/graphql/resolvers/person.ex:29 #, elixir-format +#: lib/graphql/resolvers/person.ex:29 msgid "Person with ID %{id} not found" msgstr "Fann ingen person med ID-en %{id}" -#: lib/graphql/resolvers/person.ex:50 #, elixir-format +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "Fann ingen person med brukarnamnet %{username}" -#: lib/graphql/resolvers/picture.ex:41 -#, elixir-format -msgid "Picture with ID %{id} was not found" -msgstr "Fann ikkje biletet med ID-en %{id}" - -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 #, elixir-format +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "Innleggs-IDen er ugyldig" -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 #, elixir-format +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "Innlegget finst ikkje" -#: lib/graphql/resolvers/member.ex:83 #, elixir-format +#: lib/graphql/resolvers/member.ex:83 msgid "Profile invited doesn't exist" msgstr "Den inviterte profilen finst ikkje" -#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 #, elixir-format +#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 msgid "Profile is already a member of this group" msgstr "Profilen er allereie medlem i denne gruppa" -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#, elixir-format +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 -#, elixir-format msgid "Profile is not member of group" msgstr "Profilen er ikkje medlem i gruppa" -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 #, elixir-format +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "Fann ikkje profilen" -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 #, elixir-format +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "Moderatorprofilen har ikkje tilgang til denne hendinga" -#: lib/graphql/resolvers/report.ex:36 #, elixir-format +#: lib/graphql/resolvers/report.ex:36 msgid "Report not found" msgstr "Fann ikkje rapporten" -#: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 #, elixir-format +#: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 msgid "Resource doesn't exist" msgstr "Ressursen finst ikkje" -#: lib/graphql/resolvers/participant.ex:121 #, elixir-format +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "Hendinga er fullteikna" -#: lib/graphql/resolvers/participant.ex:261 #, elixir-format +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "Teiknet er ugyldig" -#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 #, elixir-format +#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 msgid "Todo doesn't exist" msgstr "Gjeremålet finst ikkje" +#, elixir-format #: lib/graphql/resolvers/todos.ex:75 lib/graphql/resolvers/todos.ex:191 #: lib/graphql/resolvers/todos.ex:216 -#, elixir-format msgid "Todo list doesn't exist" msgstr "Gjeremålslista finst ikkje" -#: lib/graphql/resolvers/feed_token.ex:69 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:69 msgid "Token does not exist" msgstr "Teiknet finst ikkje" -#: lib/graphql/resolvers/feed_token.ex:66 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:66 msgid "Token is not a valid UUID" msgstr "Teiknet er ikkje ein gyldig UUID" -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 #, elixir-format +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "Fann ikkje brukaren" -#: lib/graphql/resolvers/person.ex:232 #, elixir-format +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "Du har allereie ein profil for denne brukaren" -#: lib/graphql/resolvers/participant.ex:131 #, elixir-format +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "Du er allereie deltakar på denne hendinga" -#: lib/graphql/resolvers/discussion.ex:197 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "Du er ikkje medlem i den gruppa der dei diskuterer dette" -#: lib/graphql/resolvers/member.ex:86 #, elixir-format +#: lib/graphql/resolvers/member.ex:86 msgid "You are not a member of this group" msgstr "Du er ikkje medlem i denne gruppa" -#: lib/graphql/resolvers/member.ex:151 #, elixir-format +#: lib/graphql/resolvers/member.ex:151 msgid "You are not a moderator or admin for this group" msgstr "Du er ikkje styrar eller administrator for denne gruppa" -#: lib/graphql/resolvers/comment.ex:51 #, elixir-format +#: lib/graphql/resolvers/comment.ex:51 msgid "You are not allowed to create a comment if not connected" msgstr "Du har ikkje løyve til å skriva kommentarar viss du ikkje er kopla til" -#: lib/graphql/resolvers/feed_token.ex:41 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:41 msgid "You are not allowed to create a feed token if not connected" msgstr "Du har ikkje løyve til å laga eit straumteikn når du ikkje er kopla til" -#: lib/graphql/resolvers/comment.ex:110 #, elixir-format +#: lib/graphql/resolvers/comment.ex:110 msgid "You are not allowed to delete a comment if not connected" msgstr "Du har ikkje løyve til å sletta ein kommentar når du ikkje er kopla til" -#: lib/graphql/resolvers/feed_token.ex:78 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:78 msgid "You are not allowed to delete a feed token if not connected" msgstr "Du har ikkje løyve til å sletta straumteikn når du ikkje er kopla til" -#: lib/graphql/resolvers/comment.ex:73 #, elixir-format +#: lib/graphql/resolvers/comment.ex:73 msgid "You are not allowed to update a comment if not connected" msgstr "" "Du har ikkje løyve til å oppdatera kommentarar når du ikkje er kopla til" -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 #, elixir-format +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" "Du kan ikkje forlata hendinga, fordi du er den einaste deltakaren som har " "oppretta hendinga" -#: lib/graphql/resolvers/member.ex:155 #, elixir-format +#: lib/graphql/resolvers/member.ex:155 msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgstr "" "Du kan ikkje gje deg sjølv ei deltakarrolle i denne gruppa, fordi du er den " "einaste administratoren" -#: lib/graphql/resolvers/comment.ex:101 #, elixir-format +#: lib/graphql/resolvers/comment.ex:101 msgid "You cannot delete this comment" msgstr "Du kan ikkje sletta denne kommentaren" -#: lib/graphql/resolvers/event.ex:275 #, elixir-format +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "Du kan ikkje sletta denne hendinga" -#: lib/graphql/resolvers/member.ex:89 #, elixir-format +#: lib/graphql/resolvers/member.ex:89 msgid "You cannot invite to this group" msgstr "Du kan ikkje invitera til denne gruppa" -#: lib/graphql/resolvers/feed_token.ex:72 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:72 msgid "You don't have permission to delete this token" msgstr "Du har ikkje løyve til å sletta dette teiknet" -#: lib/graphql/resolvers/admin.ex:52 #, elixir-format +#: lib/graphql/resolvers/admin.ex:52 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" "Du må vera innlogga og ha ei moderatorrolle for å lista opp hendingsloggar" -#: lib/graphql/resolvers/report.ex:26 #, elixir-format +#: lib/graphql/resolvers/report.ex:26 msgid "You need to be logged-in and a moderator to list reports" msgstr "Du må vera innlogga og ha ei moderatorrolle for å lista opp rapportar" -#: lib/graphql/resolvers/report.ex:101 #, elixir-format +#: lib/graphql/resolvers/report.ex:101 msgid "You need to be logged-in and a moderator to update a report" msgstr "Du må vera innlogga og ha ei moderatorrolle for å oppdatera ein rapport" -#: lib/graphql/resolvers/report.ex:41 #, elixir-format +#: lib/graphql/resolvers/report.ex:41 msgid "You need to be logged-in and a moderator to view a report" msgstr "Du må vera innlogga og ha ei moderatorrolle for å lesa rapportar" -#: lib/graphql/resolvers/admin.ex:236 #, elixir-format +#: lib/graphql/resolvers/admin.ex:236 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Du må vera innlogga og ha ei administratorrolle for å sjå admin-" "innstillingane" -#: lib/graphql/resolvers/admin.ex:221 #, elixir-format +#: lib/graphql/resolvers/admin.ex:221 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Du må vera innlogga og ha ei administratorrolle for å sjå statistikk på " "styringspanelet" -#: lib/graphql/resolvers/admin.ex:260 #, elixir-format +#: lib/graphql/resolvers/admin.ex:260 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Du må vera innlogga og ha ei administratorrolle for å lagra admin-" "innstillingar" -#: lib/graphql/resolvers/discussion.ex:75 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "Du må vera innlogga for å sjå ordskifte" -#: lib/graphql/resolvers/resource.ex:93 #, elixir-format +#: lib/graphql/resolvers/resource.ex:93 msgid "You need to be logged-in to access resources" msgstr "Du må vera innlogga for å sjå ressursane" -#: lib/graphql/resolvers/event.ex:210 #, elixir-format +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "Du må vera innlogga for å laga hendingar" -#: lib/graphql/resolvers/post.ex:139 #, elixir-format +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "Du må vera innlogga for å skriva innlegg" -#: lib/graphql/resolvers/report.ex:74 #, elixir-format +#: lib/graphql/resolvers/report.ex:74 msgid "You need to be logged-in to create reports" msgstr "Du må vera innlogga for å rapportera" -#: lib/graphql/resolvers/resource.ex:129 #, elixir-format +#: lib/graphql/resolvers/resource.ex:129 msgid "You need to be logged-in to create resources" msgstr "Du må vera innlogga for å laga ressursar" -#: lib/graphql/resolvers/event.ex:284 #, elixir-format +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "Du må vera innlogga for å sletta ei hending" -#: lib/graphql/resolvers/post.ex:209 #, elixir-format +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "Du må vera innlogga for å sletta innlegg" -#: lib/graphql/resolvers/resource.ex:187 #, elixir-format +#: lib/graphql/resolvers/resource.ex:187 msgid "You need to be logged-in to delete resources" msgstr "Du må vera innlogga for å sletta ressursar" -#: lib/graphql/resolvers/participant.ex:105 #, elixir-format +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "Du må vera innlogga for å bli med på ei hending" -#: lib/graphql/resolvers/participant.ex:204 #, elixir-format +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "Du må vera innlogga for å melda deg av ei hending" -#: lib/graphql/resolvers/event.ex:249 #, elixir-format +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "Du må vera innlogga for å oppdatera hendingar" -#: lib/graphql/resolvers/post.ex:176 #, elixir-format +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "Du må vera innlogga for å oppdatera innlegg" -#: lib/graphql/resolvers/resource.ex:158 #, elixir-format +#: lib/graphql/resolvers/resource.ex:158 msgid "You need to be logged-in to update resources" msgstr "Du må vera innlogga for å oppdatera ressursar" -#: lib/graphql/resolvers/resource.ex:210 #, elixir-format +#: lib/graphql/resolvers/resource.ex:210 msgid "You need to be logged-in to view a resource preview" msgstr "Du må vera innlogga for å førehandsvisa ressursar" -#: lib/graphql/resolvers/picture.ex:79 #, elixir-format -msgid "You need to login to upload a picture" -msgstr "Du må vera innlogga for å lasta opp bilete" - #: lib/graphql/resolvers/resource.ex:121 -#, elixir-format msgid "Parent resource doesn't belong to this group" msgstr "Opphavsressursen høyrer ikkje til denne gruppa" -#: lib/mobilizon/users/user.ex:109 #, elixir-format +#: lib/mobilizon/users/user.ex:109 msgid "The chosen password is too short." msgstr "Dette passordet er for kort." -#: lib/mobilizon/users/user.ex:138 #, elixir-format +#: lib/mobilizon/users/user.ex:138 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" "Registreringsteiknet er allereie i bruk, dette ser ut som ein feil frå vår " "side." -#: lib/mobilizon/users/user.ex:104 #, elixir-format +#: lib/mobilizon/users/user.ex:104 msgid "This email is already used." msgstr "Denne eposten er allereie i bruk." -#: lib/graphql/error.ex:88 #, elixir-format +#: lib/graphql/error.ex:88 msgid "Post not found" msgstr "Fann ikkje innlegget" -#: lib/graphql/error.ex:75 #, elixir-format +#: lib/graphql/error.ex:75 msgid "Invalid arguments passed" msgstr "Ugyldige argument" -#: lib/graphql/error.ex:81 #, elixir-format +#: lib/graphql/error.ex:81 msgid "Invalid credentials" msgstr "Ugyldig innlogging" -#: lib/graphql/error.ex:79 #, elixir-format +#: lib/graphql/error.ex:79 msgid "Reset your password to login" msgstr "Nullstill passordet for å logga inn" -#: lib/graphql/error.ex:86 lib/graphql/error.ex:91 #, elixir-format +#: lib/graphql/error.ex:86 lib/graphql/error.ex:91 msgid "Resource not found" msgstr "Fann ikkje ressursen" -#: lib/graphql/error.ex:92 #, elixir-format +#: lib/graphql/error.ex:92 msgid "Something went wrong" msgstr "Noko gjekk gale" -#: lib/graphql/error.ex:74 #, elixir-format +#: lib/graphql/error.ex:74 msgid "Unknown Resource" msgstr "Ukjend ressurs" -#: lib/graphql/error.ex:84 #, elixir-format +#: lib/graphql/error.ex:84 msgid "You don't have permission to do this" msgstr "Du har ikkje løyve til å gjera detet" -#: lib/graphql/error.ex:76 #, elixir-format +#: lib/graphql/error.ex:76 msgid "You need to be logged in" msgstr "Du må vera innlogga" -#: lib/graphql/resolvers/member.ex:116 #, elixir-format +#: lib/graphql/resolvers/member.ex:116 msgid "You can't accept this invitation with this profile." msgstr "Du kan ikkje ta imot invitasjonar med denne profilen." -#: lib/graphql/resolvers/member.ex:134 #, elixir-format +#: lib/graphql/resolvers/member.ex:134 msgid "You can't reject this invitation with this profile." msgstr "Du kan ikkje avslå invitasjonen med denne profilen." -#: lib/graphql/resolvers/picture.ex:71 #, elixir-format +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "Fila har ingen tillaten MIME-type." -#: lib/graphql/resolvers/group.ex:167 #, elixir-format +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "Profilen er ikkje administrator for gruppa" -#: lib/graphql/resolvers/event.ex:238 #, elixir-format +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "Du kan ikkje endra denne hendinga." -#: lib/graphql/resolvers/event.ex:241 #, elixir-format +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "Du kan ikkje kopla denne hendinga til denne profilen." -#: lib/graphql/resolvers/member.ex:137 #, elixir-format +#: lib/graphql/resolvers/member.ex:137 msgid "This invitation doesn't exist." msgstr "Invitasjonen finst ikkje." -#: lib/graphql/resolvers/member.ex:179 #, elixir-format +#: lib/graphql/resolvers/member.ex:179 msgid "This member already has been rejected." msgstr "Denne medlemen har allereie fått avslag." -#: lib/graphql/resolvers/member.ex:186 #, elixir-format +#: lib/graphql/resolvers/member.ex:186 msgid "You don't have the right to remove this member." msgstr "Du har ikkje løyve til å fjerna denne medlemen." -#: lib/mobilizon/actors/actor.ex:344 #, elixir-format +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "Dette brukarnamnet er oppteke." -#: lib/graphql/resolvers/discussion.ex:72 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" "Du må gje anten ein ID eller ei stuttadresse for å få tilgang til ordskiftet" -#: lib/graphql/resolvers/event.ex:199 #, elixir-format +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "Brukaren eig ikkje arrangørprofilen" -#: lib/graphql/resolvers/participant.ex:90 #, elixir-format +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "Denne profil-IDen er ikkje den anonyme profilen" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/oc/LC_MESSAGES/default.po b/priv/gettext/oc/LC_MESSAGES/default.po index 1bd630de6..2c5a78e46 100644 --- a/priv/gettext/oc/LC_MESSAGES/default.po +++ b/priv/gettext/oc/LC_MESSAGES/default.po @@ -20,11 +20,6 @@ msgid "If you didn't request this, please ignore this email. Your password won't msgstr "" "S’avètz pas demandat aquò, podètz ignorar aqueste corrièl. Vòstre senhal cambiarà pas mentre que cliquetz pas lo ligam çai-jos e ne definiscatz un novèl." -#, elixir-format -#: lib/service/export/feed.ex:170 -msgid "Feed for %{email} on Mobilizon" -msgstr "Flux per %{email} sus Mobilizon" - #, elixir-format #: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" @@ -145,7 +140,7 @@ msgid "Warning" msgstr "Avertiment" #, elixir-format -#: lib/web/email/participation.ex:134 +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Confirmatz vòstra participacion a l’eveniment %{title}" @@ -359,7 +354,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon sus %{instance} : adreça electronica cambiada" #, elixir-format -#: lib/web/email/notification.ex:46 +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un eveniment previst uèi" @@ -412,19 +407,19 @@ msgid "View the event on: %{link}" msgstr "Veire l’eveniment actualizat sus : %{link}" #, elixir-format -#: lib/web/email/group.ex:32 +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} vos a convidat a rejónher lo grop %{group}" #, elixir-format -#: lib/web/email/notification.ex:70 +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un eveniment previst aquesta setmana" msgstr[1] "%{nb_events} eveniments previstes aquesta setmana" #, elixir-format -#: lib/web/email/notification.ex:92 +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Una demanda de participacion a l’eveniment %{title} a tractar" @@ -1146,7 +1141,7 @@ msgid "So long, and thanks for the fish!" msgstr "" #, elixir-format -#: lib/web/email/group.ex:62 +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "Vos an tirat del grop %{group}" @@ -1208,12 +1203,12 @@ msgid "Your instance's moderation team has decided to suspend %{group_name} (%{g msgstr "" #, elixir-format -#: lib/web/email/group.ex:135 +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "Lo grop %{group} foguèt suprimit sus %{instance}" #, elixir-format -#: lib/web/email/group.ex:96 +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "Lo grop %{group} foguèt suspendut sus %{instance}" @@ -1375,12 +1370,12 @@ msgid "You have now confirmed your participation. Update your calendar, because msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:91 +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:90 +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "" @@ -1473,3 +1468,23 @@ msgstr "" msgid "This is a demonstration site to test Mobilizon." msgstr "" "Aquò es un site de demostracion per ensajar la version beta de Mobilizon." + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/oc/LC_MESSAGES/errors.po b/priv/gettext/oc/LC_MESSAGES/errors.po index cea3a78e7..f2303e86e 100644 --- a/priv/gettext/oc/LC_MESSAGES/errors.po +++ b/priv/gettext/oc/LC_MESSAGES/errors.po @@ -93,759 +93,749 @@ msgstr "deu èsser superior o egal a %{number}" msgid "must be equal to %{number}" msgstr "deu èsser egal a %{number}" -#: lib/graphql/resolvers/user.ex:103 #, elixir-format +#: lib/graphql/resolvers/user.ex:103 msgid "Cannot refresh the token" msgstr "Actualizacion impossibla del geton" -#: lib/graphql/resolvers/group.ex:198 #, elixir-format +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "Lo perfil actual es pas un membre d’aqueste grop" -#: lib/graphql/resolvers/group.ex:202 #, elixir-format +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "Lo perfil actual es pas administrator del grop seleccionat" -#: lib/graphql/resolvers/user.ex:512 #, elixir-format +#: lib/graphql/resolvers/user.ex:512 msgid "Error while saving user settings" msgstr "Error en salvagardant los paramètres utilizaire" -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 #, elixir-format +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "Grop pas trobat" -#: lib/graphql/resolvers/group.ex:66 #, elixir-format +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "Grop amb l’ID %{id} pas trobat" -#: lib/graphql/resolvers/user.ex:83 #, elixir-format +#: lib/graphql/resolvers/user.ex:83 msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" "Autentificacion impossibla, vòstra adreça electronica o lo vòstre senhal es " "invalid." -#: lib/graphql/resolvers/group.ex:258 #, elixir-format +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "Membre pas trobat" +#, elixir-format #: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 #: lib/graphql/resolvers/user.ex:417 -#, elixir-format msgid "No profile found for the moderator user" msgstr "Cap de perfil pas trobat per l’utilizaire moderator" -#: lib/graphql/resolvers/user.ex:195 #, elixir-format +#: lib/graphql/resolvers/user.ex:195 msgid "No user to validate with this email was found" msgstr "Cap d’utilizaire de validar amb aqueste email pas trobat" -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 #, elixir-format +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "Degun trobat d'amb aquesta email" -#: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:28 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "Lo perhiu es pas proprietat del utilizator autenticat" -#: lib/graphql/resolvers/user.ex:125 #, elixir-format +#: lib/graphql/resolvers/user.ex:125 msgid "Registrations are not open" msgstr "Las inscripciones sèn pas obèrtas" -#: lib/graphql/resolvers/user.ex:330 #, elixir-format +#: lib/graphql/resolvers/user.ex:330 msgid "The current password is invalid" msgstr "Lo mòt de santa clara actuau es invalid" -#: lib/graphql/resolvers/user.ex:382 #, elixir-format +#: lib/graphql/resolvers/user.ex:382 msgid "The new email doesn't seem to be valid" msgstr "Lo email nau sèm invalid" -#: lib/graphql/resolvers/user.ex:379 #, elixir-format +#: lib/graphql/resolvers/user.ex:379 msgid "The new email must be different" msgstr "Lo email nau deb esser different" -#: lib/graphql/resolvers/user.ex:333 #, elixir-format +#: lib/graphql/resolvers/user.ex:333 msgid "The new password must be different" msgstr "Lo mòt de santa clara nau deb esser different" +#, elixir-format #: lib/graphql/resolvers/user.ex:376 lib/graphql/resolvers/user.ex:439 #: lib/graphql/resolvers/user.ex:442 -#, elixir-format msgid "The password provided is invalid" msgstr "Lo mòt de santa clara aprovedit es invalid" -#: lib/graphql/resolvers/user.ex:337 #, 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." msgstr "" "Lo mòt de santa clara que avetz causit es tròp cort. Merci de vos assegurar " "que vostre mòt de santa clara contienga au mèns 6 caracteres." -#: lib/graphql/resolvers/user.ex:215 #, elixir-format +#: lib/graphql/resolvers/user.ex:215 msgid "This user can't reset their password" msgstr "Aquest utilizator pod pas reinicializar lo sèn mòt de santa clara" -#: lib/graphql/resolvers/user.ex:79 #, elixir-format +#: lib/graphql/resolvers/user.ex:79 msgid "This user has been disabled" msgstr "Aquest utilizator a essat dasactivat" -#: lib/graphql/resolvers/user.ex:179 #, elixir-format +#: lib/graphql/resolvers/user.ex:179 msgid "Unable to validate user" msgstr "Es impossible de validar l'utilizator" -#: lib/graphql/resolvers/user.ex:420 #, elixir-format +#: lib/graphql/resolvers/user.ex:420 msgid "User already disabled" msgstr "Utilizator déjà desactivat" -#: lib/graphql/resolvers/user.ex:487 #, elixir-format +#: lib/graphql/resolvers/user.ex:487 msgid "User requested is not logged-in" msgstr "L'utilizator demandat es pas conectat" -#: lib/graphql/resolvers/group.ex:232 #, elixir-format +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "Essetz déjà membre d'aquest grop" -#: lib/graphql/resolvers/group.ex:265 #, elixir-format +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "Podetz pas quitar aquest grop perque essetz lo sol administrator" -#: lib/graphql/resolvers/group.ex:229 #, elixir-format +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "Podetz pas rejónher aquest grop" -#: lib/graphql/resolvers/group.ex:94 #, elixir-format +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "Podetz listar los grops sonque se essetz moderator." -#: lib/graphql/resolvers/user.ex:387 #, elixir-format +#: lib/graphql/resolvers/user.ex:387 msgid "You need to be logged-in to change your email" msgstr "Debetz esser conectat per cambiar lo voste email" -#: lib/graphql/resolvers/user.ex:345 #, elixir-format +#: lib/graphql/resolvers/user.ex:345 msgid "You need to be logged-in to change your password" msgstr "Debetz d'esser conectat per cambiar lo voste mòt de santa clara" -#: lib/graphql/resolvers/group.ex:207 #, elixir-format +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "Debetz d'esser conectat per suprimir un grop" -#: lib/graphql/resolvers/user.ex:447 #, elixir-format +#: lib/graphql/resolvers/user.ex:447 msgid "You need to be logged-in to delete your account" msgstr "Devetz d'esser conectat per suprimir lo voste compte" -#: lib/graphql/resolvers/group.ex:237 #, elixir-format +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "Devetz d'esser conectat per rejónher un grop" -#: lib/graphql/resolvers/group.ex:270 #, elixir-format +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "Devetz d'esser conectat per quitar un grop" -#: lib/graphql/resolvers/group.ex:172 #, elixir-format +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "Devetz d'esser conectat per metre à jorn un grop" -#: lib/graphql/resolvers/user.ex:58 #, elixir-format -msgid "You need to have admin access to list users" -msgstr "Devetz aver un accès admin per listar los utilizators" - #: lib/graphql/resolvers/user.ex:108 -#, elixir-format msgid "You need to have an existing token to get a refresh token" msgstr "Devetz aver un senhau existant per obtiéner un senhau nau" -#: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 #, elixir-format +#: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 msgid "You requested again a confirmation email too soon" msgstr "Demandatz de nau un email de confirmacion tròp lèu" -#: lib/graphql/resolvers/user.ex:128 #, elixir-format +#: lib/graphql/resolvers/user.ex:128 msgid "Your email is not on the allowlist" msgstr "Vòstre email es pas en la lista d'autorizacions" -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 #, elixir-format +#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 msgid "Error while performing background task" msgstr "Error mentre que efectuant ua tasca de plan darrèr" -#: lib/graphql/resolvers/actor.ex:27 #, elixir-format +#: lib/graphql/resolvers/actor.ex:27 msgid "No profile found with this ID" msgstr "Cap de profiu trobat d'amb aquesta ID" -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 #, elixir-format +#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 msgid "No remote profile found with this ID" msgstr "Cap de profiu distant trobat d'amb aquesta ID" -#: lib/graphql/resolvers/actor.ex:69 #, elixir-format +#: lib/graphql/resolvers/actor.ex:69 msgid "Only moderators and administrators can suspend a profile" msgstr "Sonque moderators e administrators pòden suspendre un profiu" -#: lib/graphql/resolvers/actor.ex:99 #, elixir-format +#: lib/graphql/resolvers/actor.ex:99 msgid "Only moderators and administrators can unsuspend a profile" msgstr "" "Sonque moderators e administrators pòden annular la suspension d'un profiu" -#: lib/graphql/resolvers/actor.ex:24 #, elixir-format +#: lib/graphql/resolvers/actor.ex:24 msgid "Only remote profiles may be refreshed" msgstr "Sonque profius distants pòden esser refrescats" -#: lib/graphql/resolvers/actor.ex:61 #, elixir-format +#: lib/graphql/resolvers/actor.ex:61 msgid "Profile already suspended" msgstr "Profiu déjà suspendut" -#: lib/graphql/resolvers/participant.ex:93 #, elixir-format +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "Un email valid es requerit per la vòstra instància" -#: lib/graphql/resolvers/participant.ex:87 #, elixir-format +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "Ua participacion anonima es pas permetuda" -#: lib/graphql/resolvers/person.ex:184 #, elixir-format +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "Pòden pas suprimir lo darrièr administrator d'un grop" -#: lib/graphql/resolvers/person.ex:181 #, elixir-format +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "Pòden pas suprimir la darrièra identitat d'un utilizator" -#: lib/graphql/resolvers/comment.ex:105 #, elixir-format +#: lib/graphql/resolvers/comment.ex:105 msgid "Comment is already deleted" msgstr "Comentari déjà suprimit" -#: lib/graphql/resolvers/discussion.ex:61 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "Discussion non trobada" -#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 #, elixir-format +#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 msgid "Error while saving report" msgstr "Error mentre que sauvant lo rapòrt" -#: lib/graphql/resolvers/report.ex:96 #, elixir-format +#: lib/graphql/resolvers/report.ex:96 msgid "Error while updating report" msgstr "Error mentre la mesa a jorn dèu rapòrt" -#: lib/graphql/resolvers/participant.ex:128 #, elixir-format +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "ID d'eveniment non trobat" -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 #, elixir-format +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "Eveniment non trobat" -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 #, elixir-format +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "Un eveniment d'amb aquesta ID %{id} existís pas" -#: lib/graphql/resolvers/participant.ex:100 #, elixir-format +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "Error interna" -#: lib/graphql/resolvers/discussion.ex:193 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "Cap de discussion d'amb aquesta ID %{id}" -#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 #, elixir-format +#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 msgid "No profile found for user" msgstr "Cap de profiu trobat per l'utilizator" -#: lib/graphql/resolvers/feed_token.ex:63 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:63 msgid "No such feed token" msgstr "Cap de senhau d'alimentacion" -#: lib/graphql/resolvers/participant.ex:238 #, elixir-format +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "Lo/a participant-a a déjà lo ròtle %{role}" -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 #, elixir-format +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "Participant non trobat" -#: lib/graphql/resolvers/person.ex:29 #, elixir-format +#: lib/graphql/resolvers/person.ex:29 msgid "Person with ID %{id} not found" msgstr "Degun trobat d'amb ID %{id}" -#: lib/graphql/resolvers/person.ex:50 #, elixir-format +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "Degun trobat d'amb l'utilizator %{username}" -#: lib/graphql/resolvers/picture.ex:41 -#, elixir-format -msgid "Picture with ID %{id} was not found" -msgstr "" - -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 #, elixir-format +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "" -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 #, elixir-format +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "" -#: lib/graphql/resolvers/member.ex:83 #, elixir-format +#: lib/graphql/resolvers/member.ex:83 msgid "Profile invited doesn't exist" msgstr "" -#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 #, elixir-format +#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 msgid "Profile is already a member of this group" msgstr "" -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#, elixir-format +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 -#, elixir-format msgid "Profile is not member of group" msgstr "" -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 #, elixir-format +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "" -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 #, elixir-format +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "" -#: lib/graphql/resolvers/report.ex:36 #, elixir-format +#: lib/graphql/resolvers/report.ex:36 msgid "Report not found" msgstr "" -#: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 #, elixir-format +#: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 msgid "Resource doesn't exist" msgstr "" -#: lib/graphql/resolvers/participant.ex:121 #, elixir-format +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "" -#: lib/graphql/resolvers/participant.ex:261 #, elixir-format +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "" -#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 #, elixir-format +#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 msgid "Todo doesn't exist" msgstr "" +#, elixir-format #: lib/graphql/resolvers/todos.ex:75 lib/graphql/resolvers/todos.ex:191 #: lib/graphql/resolvers/todos.ex:216 -#, elixir-format msgid "Todo list doesn't exist" msgstr "" -#: lib/graphql/resolvers/feed_token.ex:69 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:69 msgid "Token does not exist" msgstr "" -#: lib/graphql/resolvers/feed_token.ex:66 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:66 msgid "Token is not a valid UUID" msgstr "" -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 #, elixir-format +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "" -#: lib/graphql/resolvers/person.ex:232 #, elixir-format +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "" -#: lib/graphql/resolvers/participant.ex:131 #, elixir-format +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "" -#: lib/graphql/resolvers/discussion.ex:197 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "" -#: lib/graphql/resolvers/member.ex:86 #, elixir-format +#: lib/graphql/resolvers/member.ex:86 msgid "You are not a member of this group" msgstr "" -#: lib/graphql/resolvers/member.ex:151 #, elixir-format +#: lib/graphql/resolvers/member.ex:151 msgid "You are not a moderator or admin for this group" msgstr "" -#: lib/graphql/resolvers/comment.ex:51 #, elixir-format +#: lib/graphql/resolvers/comment.ex:51 msgid "You are not allowed to create a comment if not connected" msgstr "" -#: lib/graphql/resolvers/feed_token.ex:41 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:41 msgid "You are not allowed to create a feed token if not connected" msgstr "" -#: lib/graphql/resolvers/comment.ex:110 #, elixir-format +#: lib/graphql/resolvers/comment.ex:110 msgid "You are not allowed to delete a comment if not connected" msgstr "" -#: lib/graphql/resolvers/feed_token.ex:78 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:78 msgid "You are not allowed to delete a feed token if not connected" msgstr "" -#: lib/graphql/resolvers/comment.ex:73 #, elixir-format +#: lib/graphql/resolvers/comment.ex:73 msgid "You are not allowed to update a comment if not connected" msgstr "" -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 #, elixir-format +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" -#: lib/graphql/resolvers/member.ex:155 #, elixir-format +#: lib/graphql/resolvers/member.ex:155 msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgstr "" -#: lib/graphql/resolvers/comment.ex:101 #, elixir-format +#: lib/graphql/resolvers/comment.ex:101 msgid "You cannot delete this comment" msgstr "" -#: lib/graphql/resolvers/event.ex:275 #, elixir-format +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "" -#: lib/graphql/resolvers/member.ex:89 #, elixir-format +#: lib/graphql/resolvers/member.ex:89 msgid "You cannot invite to this group" msgstr "" -#: lib/graphql/resolvers/feed_token.ex:72 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:72 msgid "You don't have permission to delete this token" msgstr "" -#: lib/graphql/resolvers/admin.ex:52 #, elixir-format +#: lib/graphql/resolvers/admin.ex:52 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" -#: lib/graphql/resolvers/report.ex:26 #, elixir-format +#: lib/graphql/resolvers/report.ex:26 msgid "You need to be logged-in and a moderator to list reports" msgstr "" -#: lib/graphql/resolvers/report.ex:101 #, elixir-format +#: lib/graphql/resolvers/report.ex:101 msgid "You need to be logged-in and a moderator to update a report" msgstr "" -#: lib/graphql/resolvers/report.ex:41 #, elixir-format +#: lib/graphql/resolvers/report.ex:41 msgid "You need to be logged-in and a moderator to view a report" msgstr "" -#: lib/graphql/resolvers/admin.ex:236 #, elixir-format +#: lib/graphql/resolvers/admin.ex:236 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" -#: lib/graphql/resolvers/admin.ex:221 #, elixir-format +#: lib/graphql/resolvers/admin.ex:221 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" -#: lib/graphql/resolvers/admin.ex:260 #, elixir-format +#: lib/graphql/resolvers/admin.ex:260 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" -#: lib/graphql/resolvers/discussion.ex:75 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "" -#: lib/graphql/resolvers/resource.ex:93 #, elixir-format +#: lib/graphql/resolvers/resource.ex:93 msgid "You need to be logged-in to access resources" msgstr "" -#: lib/graphql/resolvers/event.ex:210 #, elixir-format +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "" -#: lib/graphql/resolvers/post.ex:139 #, elixir-format +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "" -#: lib/graphql/resolvers/report.ex:74 #, elixir-format +#: lib/graphql/resolvers/report.ex:74 msgid "You need to be logged-in to create reports" msgstr "" -#: lib/graphql/resolvers/resource.ex:129 #, elixir-format +#: lib/graphql/resolvers/resource.ex:129 msgid "You need to be logged-in to create resources" msgstr "" -#: lib/graphql/resolvers/event.ex:284 #, elixir-format +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "" -#: lib/graphql/resolvers/post.ex:209 #, elixir-format +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "" -#: lib/graphql/resolvers/resource.ex:187 #, elixir-format +#: lib/graphql/resolvers/resource.ex:187 msgid "You need to be logged-in to delete resources" msgstr "" -#: lib/graphql/resolvers/participant.ex:105 #, elixir-format +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "" -#: lib/graphql/resolvers/participant.ex:204 #, elixir-format +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "" -#: lib/graphql/resolvers/event.ex:249 #, elixir-format +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "" -#: lib/graphql/resolvers/post.ex:176 #, elixir-format +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "" -#: lib/graphql/resolvers/resource.ex:158 #, elixir-format +#: lib/graphql/resolvers/resource.ex:158 msgid "You need to be logged-in to update resources" msgstr "" -#: lib/graphql/resolvers/resource.ex:210 #, elixir-format +#: lib/graphql/resolvers/resource.ex:210 msgid "You need to be logged-in to view a resource preview" msgstr "" -#: lib/graphql/resolvers/picture.ex:79 #, elixir-format -msgid "You need to login to upload a picture" -msgstr "" - #: lib/graphql/resolvers/resource.ex:121 -#, elixir-format msgid "Parent resource doesn't belong to this group" msgstr "" -#: lib/mobilizon/users/user.ex:109 #, elixir-format +#: lib/mobilizon/users/user.ex:109 msgid "The chosen password is too short." msgstr "" -#: lib/mobilizon/users/user.ex:138 #, elixir-format +#: lib/mobilizon/users/user.ex:138 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" -#: lib/mobilizon/users/user.ex:104 #, elixir-format +#: lib/mobilizon/users/user.ex:104 msgid "This email is already used." msgstr "" -#: lib/graphql/error.ex:88 #, elixir-format +#: lib/graphql/error.ex:88 msgid "Post not found" msgstr "" -#: lib/graphql/error.ex:75 #, elixir-format +#: lib/graphql/error.ex:75 msgid "Invalid arguments passed" msgstr "" -#: lib/graphql/error.ex:81 #, elixir-format +#: lib/graphql/error.ex:81 msgid "Invalid credentials" msgstr "" -#: lib/graphql/error.ex:79 #, elixir-format +#: lib/graphql/error.ex:79 msgid "Reset your password to login" msgstr "" -#: lib/graphql/error.ex:86 lib/graphql/error.ex:91 #, elixir-format +#: lib/graphql/error.ex:86 lib/graphql/error.ex:91 msgid "Resource not found" msgstr "" -#: lib/graphql/error.ex:92 #, elixir-format +#: lib/graphql/error.ex:92 msgid "Something went wrong" msgstr "" -#: lib/graphql/error.ex:74 #, elixir-format +#: lib/graphql/error.ex:74 msgid "Unknown Resource" msgstr "" -#: lib/graphql/error.ex:84 #, elixir-format +#: lib/graphql/error.ex:84 msgid "You don't have permission to do this" msgstr "" -#: lib/graphql/error.ex:76 #, elixir-format +#: lib/graphql/error.ex:76 msgid "You need to be logged in" msgstr "" -#: lib/graphql/resolvers/member.ex:116 #, elixir-format +#: lib/graphql/resolvers/member.ex:116 msgid "You can't accept this invitation with this profile." msgstr "" -#: lib/graphql/resolvers/member.ex:134 #, elixir-format +#: lib/graphql/resolvers/member.ex:134 msgid "You can't reject this invitation with this profile." msgstr "" -#: lib/graphql/resolvers/picture.ex:71 #, elixir-format +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "" -#: lib/graphql/resolvers/group.ex:167 #, elixir-format +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "" -#: lib/graphql/resolvers/event.ex:238 #, elixir-format +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "" -#: lib/graphql/resolvers/event.ex:241 #, elixir-format +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "" -#: lib/graphql/resolvers/member.ex:137 #, elixir-format +#: lib/graphql/resolvers/member.ex:137 msgid "This invitation doesn't exist." msgstr "" -#: lib/graphql/resolvers/member.ex:179 #, elixir-format +#: lib/graphql/resolvers/member.ex:179 msgid "This member already has been rejected." msgstr "" -#: lib/graphql/resolvers/member.ex:186 #, elixir-format +#: lib/graphql/resolvers/member.ex:186 msgid "You don't have the right to remove this member." msgstr "" -#: lib/mobilizon/actors/actor.ex:344 #, elixir-format +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" -#: lib/graphql/resolvers/discussion.ex:72 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" -#: lib/graphql/resolvers/event.ex:199 #, elixir-format +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "" -#: lib/graphql/resolvers/participant.ex:90 #, elixir-format +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/pl/LC_MESSAGES/default.po b/priv/gettext/pl/LC_MESSAGES/default.po index 264b02fc5..389ae3d0a 100644 --- a/priv/gettext/pl/LC_MESSAGES/default.po +++ b/priv/gettext/pl/LC_MESSAGES/default.po @@ -23,11 +23,6 @@ msgstr "" "zostanie zmienione, jeżeli nie skorzystasz z poniższego linku i nie ustawisz " "nowego." -#, elixir-format -#: lib/service/export/feed.ex:170 -msgid "Feed for %{email} on Mobilizon" -msgstr "Strumień dla %{email} na Mobilizon" - #, elixir-format #: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" @@ -155,7 +150,7 @@ msgid "Warning" msgstr "Ostrzeżenie" #, elixir-format -#: lib/web/email/participation.ex:134 +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Potwierdź swoje uczestnictwo w wydarzeniu %{title}" @@ -358,7 +353,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon na %{instance}: zmieniono e-mail" #, elixir-format -#: lib/web/email/notification.ex:46 +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Jedno wydarzenie zaplanowane na dzisiaj" @@ -414,12 +409,12 @@ msgid "View the event on: %{link}" msgstr "Zobacz zaktualizowane wydarzenie na %{link}" #, elixir-format -#: lib/web/email/group.ex:32 +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "Dostałeś(-aś) zaproszenie od %{inviter}, aby dołączyć do grupy %{group}" #, elixir-format -#: lib/web/email/notification.ex:70 +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Jedno wydarzenie zaplanowane na ten tydzień" @@ -427,7 +422,7 @@ msgstr[1] "%{nb_events} wydarzenia zaplanowane na ten tydzień" msgstr[2] "%{nb_events} wydarzeń zaplanowanych na ten tydzień" #, elixir-format -#: lib/web/email/notification.ex:92 +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Jedno zgłoszenie uczestnictwa dla wydarzenia %{title} do zatwierdzenia" @@ -1155,7 +1150,7 @@ msgid "So long, and thanks for the fish!" msgstr "" #, elixir-format -#: lib/web/email/group.ex:62 +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "Zostałeś(-aś) usunięty(-a) z grupy %{group}" @@ -1223,12 +1218,12 @@ msgid "Your instance's moderation team has decided to suspend %{group_name} (%{g msgstr "" #, elixir-format -#: lib/web/email/group.ex:135 +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "Grupa %{group} została usunięta na %{instance}" #, elixir-format -#: lib/web/email/group.ex:96 +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "Grupa %{group} została zawieszona na %{instance}" @@ -1389,12 +1384,12 @@ msgid "You have now confirmed your participation. Update your calendar, because msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:91 +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "Wpis wymaga tekstu" #, elixir-format -#: lib/mobilizon/posts/post.ex:90 +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "Wpis wymaga tytułu" @@ -1489,3 +1484,23 @@ msgstr "Przepraszamy, ale coś poszło nie tak po naszej stronie." #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "To jest strona demonstracyjna pozwalająca na przetestowanie Mobilizon." + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/pl/LC_MESSAGES/errors.po b/priv/gettext/pl/LC_MESSAGES/errors.po index 0bbfe9a1e..61be8ddfd 100644 --- a/priv/gettext/pl/LC_MESSAGES/errors.po +++ b/priv/gettext/pl/LC_MESSAGES/errors.po @@ -106,12 +106,12 @@ msgid "Cannot refresh the token" msgstr "Nie można odświeżyć tokenu" #, elixir-format -#: lib/graphql/resolvers/group.ex:198 +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "Obency profil nie jest członkiem tej grupy" #, elixir-format -#: lib/graphql/resolvers/group.ex:202 +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "Obecny profil nie jest administratorem zaznaczonej grupy" @@ -121,13 +121,13 @@ msgid "Error while saving user settings" msgstr "Błąd zapisywania ustawień użytkownika" #, elixir-format -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "Nie odnaleziono grupy" #, elixir-format -#: lib/graphql/resolvers/group.ex:66 +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "Nie odnaleziono grupy o ID %{id}" @@ -138,7 +138,7 @@ msgstr "" "Nie udało się uwierzytelnić. Adres e-mail bądź hasło jest nieprawidłowe." #, elixir-format -#: lib/graphql/resolvers/group.ex:258 +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "Nie odnaleziono użytkownika" @@ -155,16 +155,15 @@ msgstr "" "Nie znaleziono użytkownika do zatwierdzenia z użyciem tego adresu e-mail" #, elixir-format -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "Nie znaleziono użytkownika o tym adresie e-mail" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "Profil nie należy do uwierzytelnionego użytkownika" @@ -232,23 +231,23 @@ msgid "User requested is not logged-in" msgstr "Żądany użytkownik nie jest zalogowany" #, elixir-format -#: lib/graphql/resolvers/group.ex:232 +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "Już jesteś członkiem tej grupy" #, elixir-format -#: lib/graphql/resolvers/group.ex:265 +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "" "Nie możesz opuścić tej grupy, ponieważ jesteś jej jedynym administratorem" #, elixir-format -#: lib/graphql/resolvers/group.ex:229 +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "Nie możesz dołączyć do tej grupy" #, elixir-format -#: lib/graphql/resolvers/group.ex:94 +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "Nie masz dostępu do listy grup, jeżeli nie jesteś moderatorem." @@ -263,7 +262,7 @@ msgid "You need to be logged-in to change your password" msgstr "Musisz być zalogowany(-a), aby zmienić hasło" #, elixir-format -#: lib/graphql/resolvers/group.ex:207 +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "Musisz być zalogowany(-a), aby usunąć grupę" @@ -273,27 +272,20 @@ msgid "You need to be logged-in to delete your account" msgstr "Musisz być zalogowany(-a), aby usunąć konto" #, elixir-format -#: lib/graphql/resolvers/group.ex:237 +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "Musisz być zalogowany(-a), aby dołączyć do grupy" #, elixir-format -#: lib/graphql/resolvers/group.ex:270 +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "Musisz być zalogowany(-a), aby opuścić grupę" #, elixir-format -#: lib/graphql/resolvers/group.ex:172 +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "Musisz być zalogowany(-a), aby zaktualizować grupę" -#, elixir-format -#: lib/graphql/resolvers/user.ex:58 -msgid "You need to have admin access to list users" -msgstr "" -"Musisz mieć uprawnienia administratora, aby uzyskać dostęp do listy " -"użytkowników" - #, elixir-format #: lib/graphql/resolvers/user.ex:108 msgid "You need to have an existing token to get a refresh token" @@ -345,22 +337,22 @@ msgid "Profile already suspended" msgstr "Już zawieszono profil" #, elixir-format -#: lib/graphql/resolvers/participant.ex:93 +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "Twoja instancja wymaga prawidłowego adresu e-mail" #, elixir-format -#: lib/graphql/resolvers/participant.ex:87 +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "Anonimowe uczestnictwa nie są włączone" #, elixir-format -#: lib/graphql/resolvers/person.ex:184 +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "Nie można usunać jedynego administratora grupy" #, elixir-format -#: lib/graphql/resolvers/person.ex:181 +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "Nie można usunąć jedynej tożsamości użytkownika" @@ -370,7 +362,7 @@ msgid "Comment is already deleted" msgstr "Komentarz jest już usunięty" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:61 +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "Nie znaleziono dyskusji" @@ -385,29 +377,29 @@ msgid "Error while updating report" msgstr "Wystąpił błąd podczas aktualizacji zgłoszenia" #, elixir-format -#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "Nie znaleziono id wydarzenia" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "Nie znaleziono wydarzenia" #, elixir-format -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "Wydarzenie o ID %{id} nie istnieje" #, elixir-format -#: lib/graphql/resolvers/participant.ex:100 +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "Wewnętrzny błąd" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:193 +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "Nie znaleziono dyskusji o ID ${id}" @@ -422,14 +414,14 @@ msgid "No such feed token" msgstr "Nie ma takiego tokenu strumienia" #, elixir-format -#: lib/graphql/resolvers/participant.ex:238 +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "Uczestnik już ma rolę %{role}" #, elixir-format -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "Nie znaleziono uczestnika" @@ -439,22 +431,17 @@ msgid "Person with ID %{id} not found" msgstr "Osoba o ID %{id} nie istnieje" #, elixir-format -#: lib/graphql/resolvers/person.ex:50 +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "Nie znaleziono osoby o nazwie użytkownika %{username}" #, elixir-format -#: lib/graphql/resolvers/picture.ex:41 -msgid "Picture with ID %{id} was not found" -msgstr "Nie znaleziono obrazka o ID %{id}" - -#, elixir-format -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "ID wpisu nie jest prawidłowym ID" #, elixir-format -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "Wpis nie istnieje" @@ -469,8 +456,8 @@ msgid "Profile is already a member of this group" msgstr "Profil jest już członkiem tej grupy" #, elixir-format -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 @@ -478,12 +465,12 @@ msgid "Profile is not member of group" msgstr "Profil nie jest członkiem grupy" #, elixir-format -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "Nie znaleziono profilu" #, elixir-format -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "Wskazany profil moderatora nie ma uprawnień dla tego wydarzenia" @@ -498,12 +485,12 @@ msgid "Resource doesn't exist" msgstr "Zasób nie istnieje" #, elixir-format -#: lib/graphql/resolvers/participant.ex:121 +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "Wydarzenie już przekroczyło maksymalną zasobność" #, elixir-format -#: lib/graphql/resolvers/participant.ex:261 +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "Ten token jest nieprawidłowy" @@ -529,22 +516,22 @@ msgid "Token is not a valid UUID" msgstr "Token nie jest prawidłowym UUID" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "Nie znaleziono użytkownika" #, elixir-format -#: lib/graphql/resolvers/person.ex:232 +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "Już masz profil dla tego użytkownika" #, elixir-format -#: lib/graphql/resolvers/participant.ex:131 +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "Już jesteś uczestnikiem tego wydarzenia" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:197 +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "Nie jesteś członkiem grupy do której należy ta dyskusja" @@ -584,8 +571,8 @@ msgid "You are not allowed to update a comment if not connected" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" @@ -602,7 +589,7 @@ msgid "You cannot delete this comment" msgstr "Nie możesz usunąć tego komentarza" #, elixir-format -#: lib/graphql/resolvers/event.ex:275 +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "Nie możesz usunąć tego wydarzenia" @@ -658,7 +645,7 @@ msgstr "" "administratora" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:75 +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "Musisz być zalogowany(-a), aby uzyskać dostęp do dyskusji" @@ -668,12 +655,12 @@ msgid "You need to be logged-in to access resources" msgstr "Musisz być zalogowany(-a), aby uzyskać dostęp do zasobów" #, elixir-format -#: lib/graphql/resolvers/event.ex:210 +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "Musisz być zalogowany(-a), aby móc utworzyć wydarzenia" #, elixir-format -#: lib/graphql/resolvers/post.ex:139 +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "Musisz być zalogowany(-a), aby utworzyć wpis" @@ -688,12 +675,12 @@ msgid "You need to be logged-in to create resources" msgstr "Musisz być zalogowany(-a), aby utworzyć zasób" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "Musisz być zalogowany(-a), aby usunąć wydarzenie" #, elixir-format -#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "Musisz być zalogowany(-a), aby usunąć wpis" @@ -703,22 +690,22 @@ msgid "You need to be logged-in to delete resources" msgstr "Musisz być zalogowany(-a), aby usunąć zasób" #, elixir-format -#: lib/graphql/resolvers/participant.ex:105 +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "Musisz być zalogowany(-a), aby dołączyć do wydarzenia" #, elixir-format -#: lib/graphql/resolvers/participant.ex:204 +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "Musisz być zalogowany(-a), aby opuścić wydarzenie" #, elixir-format -#: lib/graphql/resolvers/event.ex:249 +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "Musisz być zalogowany(-a), aby zaktualizować wydarzenie" #, elixir-format -#: lib/graphql/resolvers/post.ex:176 +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "Musisz być zalogowany(-a), aby zaktualizować wpis" @@ -732,11 +719,6 @@ msgstr "Musisz być zalogowany(-a), aby zaktualizować zasób" msgid "You need to be logged-in to view a resource preview" msgstr "Musisz być zalogowany(-a), aby zobaczyć podgląd zasobu" -#, elixir-format -#: lib/graphql/resolvers/picture.ex:79 -msgid "You need to login to upload a picture" -msgstr "Musisz się zalogować, aby dodać obraz" - #, elixir-format #: lib/graphql/resolvers/resource.ex:121 msgid "Parent resource doesn't belong to this group" @@ -815,22 +797,22 @@ msgid "You can't reject this invitation with this profile." msgstr "Nie możesz odrzucić tego zaproszenia z tego profilu." #, elixir-format -#: lib/graphql/resolvers/picture.ex:71 +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "Plik nie ma dozwolonego typu MIME." #, elixir-format -#: lib/graphql/resolvers/group.ex:167 +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "Profil nie jest administratorem grupy" #, elixir-format -#: lib/graphql/resolvers/event.ex:238 +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "Nie możesz edytować tego wydarzenia." #, elixir-format -#: lib/graphql/resolvers/event.ex:241 +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "Nie możesz przypisać tego wydarzenia do tego profilu." @@ -850,21 +832,27 @@ msgid "You don't have the right to remove this member." msgstr "Nie masz uprawnień do usunięcia tego członka." #, elixir-format -#: lib/mobilizon/actors/actor.ex:344 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:72 +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:199 +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:90 +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/pt/LC_MESSAGES/default.po b/priv/gettext/pt/LC_MESSAGES/default.po index 51e7b93ca..4f4a55a6e 100644 --- a/priv/gettext/pt/LC_MESSAGES/default.po +++ b/priv/gettext/pt/LC_MESSAGES/default.po @@ -17,11 +17,6 @@ msgstr "" msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" -#, elixir-format -#: lib/service/export/feed.ex:170 -msgid "Feed for %{email} on Mobilizon" -msgstr "" - #, elixir-format #: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" @@ -142,7 +137,7 @@ msgid "Warning" msgstr "" #, elixir-format -#: lib/web/email/participation.ex:134 +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "" @@ -325,7 +320,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:46 +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -378,19 +373,19 @@ msgid "View the event on: %{link}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:32 +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:70 +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" msgstr[1] "" #, elixir-format -#: lib/web/email/notification.ex:92 +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -1050,7 +1045,7 @@ msgid "So long, and thanks for the fish!" msgstr "" #, elixir-format -#: lib/web/email/group.ex:62 +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "" @@ -1106,12 +1101,12 @@ msgid "Your instance's moderation team has decided to suspend %{group_name} (%{g msgstr "" #, elixir-format -#: lib/web/email/group.ex:135 +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:96 +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1271,12 +1266,12 @@ msgid "You have now confirmed your participation. Update your calendar, because msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:91 +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:90 +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "" @@ -1368,3 +1363,23 @@ msgstr "" #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "" + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/pt/LC_MESSAGES/errors.po b/priv/gettext/pt/LC_MESSAGES/errors.po index cd04b69b7..9a07c6072 100644 --- a/priv/gettext/pt/LC_MESSAGES/errors.po +++ b/priv/gettext/pt/LC_MESSAGES/errors.po @@ -92,12 +92,12 @@ msgid "Cannot refresh the token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:198 +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:202 +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "" @@ -107,13 +107,13 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:66 +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "" @@ -123,7 +123,7 @@ msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:258 +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "" @@ -139,16 +139,15 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "" @@ -214,22 +213,22 @@ msgid "User requested is not logged-in" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:232 +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:265 +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:229 +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:94 +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "" @@ -244,7 +243,7 @@ msgid "You need to be logged-in to change your password" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:207 +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "" @@ -254,25 +253,20 @@ msgid "You need to be logged-in to delete your account" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:237 +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:270 +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:172 +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/user.ex:58 -msgid "You need to have admin access to list users" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/user.ex:108 msgid "You need to have an existing token to get a refresh token" @@ -324,22 +318,22 @@ msgid "Profile already suspended" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:93 +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:87 +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:184 +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:181 +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "" @@ -349,7 +343,7 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:61 +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "" @@ -364,29 +358,29 @@ msgid "Error while updating report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:100 +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:193 +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "" @@ -401,14 +395,14 @@ msgid "No such feed token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:238 +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "" @@ -418,22 +412,17 @@ msgid "Person with ID %{id} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:50 +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:41 -msgid "Picture with ID %{id} was not found" -msgstr "" - -#, elixir-format -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "" @@ -448,8 +437,8 @@ msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 @@ -457,12 +446,12 @@ msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "" @@ -477,12 +466,12 @@ msgid "Resource doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:121 +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:261 +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "" @@ -508,22 +497,22 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:232 +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:131 +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:197 +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "" @@ -563,8 +552,8 @@ msgid "You are not allowed to update a comment if not connected" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" @@ -579,7 +568,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:275 +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "" @@ -629,7 +618,7 @@ msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:75 +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "" @@ -639,12 +628,12 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:210 +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:139 +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "" @@ -659,12 +648,12 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "" @@ -674,22 +663,22 @@ msgid "You need to be logged-in to delete resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:105 +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:204 +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:249 +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:176 +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "" @@ -703,11 +692,6 @@ msgstr "" msgid "You need to be logged-in to view a resource preview" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/picture.ex:79 -msgid "You need to login to upload a picture" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/resource.ex:121 msgid "Parent resource doesn't belong to this group" @@ -784,22 +768,22 @@ msgid "You can't reject this invitation with this profile." msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:71 +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:167 +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:238 +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:241 +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "" @@ -819,21 +803,27 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:344 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:72 +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:199 +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:90 +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/pt_BR/LC_MESSAGES/default.po b/priv/gettext/pt_BR/LC_MESSAGES/default.po index db5188ce6..b8ffe2578 100644 --- a/priv/gettext/pt_BR/LC_MESSAGES/default.po +++ b/priv/gettext/pt_BR/LC_MESSAGES/default.po @@ -21,11 +21,6 @@ msgstr "" "Se você não fez essa solicitação, favor ignorar este email. Sua senha não " "será modificada até que você acesse o link abaixo e crie uma nova senha." -#, elixir-format -#: lib/service/export/feed.ex:170 -msgid "Feed for %{email} on Mobilizon" -msgstr "Feed para %{email} sobre o Mobilizon" - #, elixir-format #: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" @@ -153,7 +148,7 @@ msgid "Warning" msgstr "Atenção" #, elixir-format -#: lib/web/email/participation.ex:134 +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Confirmar sua participação no evento %{title}" @@ -371,7 +366,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon da instância %{instance}: email alterado" #, elixir-format -#: lib/web/email/notification.ex:46 +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -424,19 +419,19 @@ msgid "View the event on: %{link}" msgstr "Veja o evento atualizado em: %{link}" #, elixir-format -#: lib/web/email/group.ex:32 +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:70 +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" msgstr[1] "" #, elixir-format -#: lib/web/email/notification.ex:92 +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -1127,7 +1122,7 @@ msgid "So long, and thanks for the fish!" msgstr "" #, elixir-format -#: lib/web/email/group.ex:62 +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "" @@ -1183,12 +1178,12 @@ msgid "Your instance's moderation team has decided to suspend %{group_name} (%{g msgstr "" #, elixir-format -#: lib/web/email/group.ex:135 +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:96 +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1383,12 +1378,12 @@ msgid "You have now confirmed your participation. Update your calendar, because msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:91 +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:90 +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "" @@ -1480,3 +1475,23 @@ msgstr "" #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Este é um site de demonstração para testar a versão beta do Mobilizon." + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/pt_BR/LC_MESSAGES/errors.po b/priv/gettext/pt_BR/LC_MESSAGES/errors.po index 22c9d0093..38a20cfcb 100644 --- a/priv/gettext/pt_BR/LC_MESSAGES/errors.po +++ b/priv/gettext/pt_BR/LC_MESSAGES/errors.po @@ -92,12 +92,12 @@ msgid "Cannot refresh the token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:198 +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:202 +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "" @@ -107,13 +107,13 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:66 +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "" @@ -123,7 +123,7 @@ msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:258 +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "" @@ -139,16 +139,15 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "" @@ -214,22 +213,22 @@ msgid "User requested is not logged-in" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:232 +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:265 +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:229 +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:94 +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "" @@ -244,7 +243,7 @@ msgid "You need to be logged-in to change your password" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:207 +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "" @@ -254,25 +253,20 @@ msgid "You need to be logged-in to delete your account" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:237 +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:270 +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:172 +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/user.ex:58 -msgid "You need to have admin access to list users" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/user.ex:108 msgid "You need to have an existing token to get a refresh token" @@ -324,22 +318,22 @@ msgid "Profile already suspended" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:93 +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:87 +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:184 +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:181 +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "" @@ -349,7 +343,7 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:61 +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "" @@ -364,29 +358,29 @@ msgid "Error while updating report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:100 +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:193 +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "" @@ -401,14 +395,14 @@ msgid "No such feed token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:238 +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "" @@ -418,22 +412,17 @@ msgid "Person with ID %{id} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:50 +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:41 -msgid "Picture with ID %{id} was not found" -msgstr "" - -#, elixir-format -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "" @@ -448,8 +437,8 @@ msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 @@ -457,12 +446,12 @@ msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "" @@ -477,12 +466,12 @@ msgid "Resource doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:121 +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:261 +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "" @@ -508,22 +497,22 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:232 +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:131 +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:197 +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "" @@ -563,8 +552,8 @@ msgid "You are not allowed to update a comment if not connected" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" @@ -579,7 +568,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:275 +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "" @@ -629,7 +618,7 @@ msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:75 +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "" @@ -639,12 +628,12 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:210 +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:139 +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "" @@ -659,12 +648,12 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "" @@ -674,22 +663,22 @@ msgid "You need to be logged-in to delete resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:105 +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:204 +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:249 +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:176 +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "" @@ -703,11 +692,6 @@ msgstr "" msgid "You need to be logged-in to view a resource preview" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/picture.ex:79 -msgid "You need to login to upload a picture" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/resource.ex:121 msgid "Parent resource doesn't belong to this group" @@ -784,22 +768,22 @@ msgid "You can't reject this invitation with this profile." msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:71 +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:167 +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:238 +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:241 +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "" @@ -819,21 +803,27 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:344 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:72 +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:199 +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:90 +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/ru/LC_MESSAGES/default.po b/priv/gettext/ru/LC_MESSAGES/default.po index 752b00678..73f447072 100644 --- a/priv/gettext/ru/LC_MESSAGES/default.po +++ b/priv/gettext/ru/LC_MESSAGES/default.po @@ -22,11 +22,6 @@ msgstr "" "Если вы не оставляли такой запрос, проигнорируйте данное письмо. Пароль не " "изменится, если не перейти по приведённой ссылке и не указать новый." -#, elixir-format -#: lib/service/export/feed.ex:170 -msgid "Feed for %{email} on Mobilizon" -msgstr "Лента для %{email} в Mobilizon" - #, elixir-format #: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" @@ -149,7 +144,7 @@ msgid "Warning" msgstr "" #, elixir-format -#: lib/web/email/participation.ex:134 +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "" @@ -332,7 +327,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:46 +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -387,12 +382,12 @@ msgid "View the event on: %{link}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:32 +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #, elixir-format -#: lib/web/email/notification.ex:70 +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" @@ -400,7 +395,7 @@ msgstr[1] "" msgstr[2] "" #, elixir-format -#: lib/web/email/notification.ex:92 +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -1066,7 +1061,7 @@ msgid "So long, and thanks for the fish!" msgstr "" #, elixir-format -#: lib/web/email/group.ex:62 +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "" @@ -1122,12 +1117,12 @@ msgid "Your instance's moderation team has decided to suspend %{group_name} (%{g msgstr "" #, elixir-format -#: lib/web/email/group.ex:135 +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "" #, elixir-format -#: lib/web/email/group.ex:96 +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1289,12 +1284,12 @@ msgid "You have now confirmed your participation. Update your calendar, because msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:91 +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "" #, elixir-format -#: lib/mobilizon/posts/post.ex:90 +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "" @@ -1386,3 +1381,23 @@ msgstr "" #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "" + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/ru/LC_MESSAGES/errors.po b/priv/gettext/ru/LC_MESSAGES/errors.po index f9bf404fd..89e386b17 100644 --- a/priv/gettext/ru/LC_MESSAGES/errors.po +++ b/priv/gettext/ru/LC_MESSAGES/errors.po @@ -98,12 +98,12 @@ msgid "Cannot refresh the token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:198 +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:202 +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "" @@ -113,13 +113,13 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:66 +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "" @@ -129,7 +129,7 @@ msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:258 +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "" @@ -145,16 +145,15 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "" @@ -220,22 +219,22 @@ msgid "User requested is not logged-in" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:232 +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:265 +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:229 +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:94 +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "" @@ -250,7 +249,7 @@ msgid "You need to be logged-in to change your password" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:207 +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "" @@ -260,25 +259,20 @@ msgid "You need to be logged-in to delete your account" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:237 +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:270 +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:172 +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/user.ex:58 -msgid "You need to have admin access to list users" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/user.ex:108 msgid "You need to have an existing token to get a refresh token" @@ -330,22 +324,22 @@ msgid "Profile already suspended" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:93 +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:87 +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:184 +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:181 +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "" @@ -355,7 +349,7 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:61 +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "" @@ -370,29 +364,29 @@ msgid "Error while updating report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:100 +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:193 +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "" @@ -407,14 +401,14 @@ msgid "No such feed token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:238 +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "" @@ -424,22 +418,17 @@ msgid "Person with ID %{id} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:50 +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:41 -msgid "Picture with ID %{id} was not found" -msgstr "" - -#, elixir-format -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "" @@ -454,8 +443,8 @@ msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 @@ -463,12 +452,12 @@ msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "" @@ -483,12 +472,12 @@ msgid "Resource doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:121 +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:261 +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "" @@ -514,22 +503,22 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:232 +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:131 +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:197 +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "" @@ -569,8 +558,8 @@ msgid "You are not allowed to update a comment if not connected" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" @@ -585,7 +574,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:275 +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "" @@ -635,7 +624,7 @@ msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:75 +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "" @@ -645,12 +634,12 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:210 +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:139 +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "" @@ -665,12 +654,12 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "" @@ -680,22 +669,22 @@ msgid "You need to be logged-in to delete resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:105 +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:204 +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:249 +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:176 +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "" @@ -709,11 +698,6 @@ msgstr "" msgid "You need to be logged-in to view a resource preview" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/picture.ex:79 -msgid "You need to login to upload a picture" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/resource.ex:121 msgid "Parent resource doesn't belong to this group" @@ -790,22 +774,22 @@ msgid "You can't reject this invitation with this profile." msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:71 +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:167 +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:238 +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:241 +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "" @@ -825,21 +809,27 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:344 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:72 +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:199 +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:90 +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/priv/gettext/sv/LC_MESSAGES/default.po b/priv/gettext/sv/LC_MESSAGES/default.po index 491240be8..871d34f37 100644 --- a/priv/gettext/sv/LC_MESSAGES/default.po +++ b/priv/gettext/sv/LC_MESSAGES/default.po @@ -14,772 +14,767 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.1\n" -#: lib/web/templates/email/password_reset.html.eex:48 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:48 msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" "Du kan ignorera det här meddelandet om du inte frågade efter det. Ditt " "lösenord kommer inte ändras förrän du har öppnat länken nedan och skapat ett " "nytt." -#: lib/service/export/feed.ex:170 #, elixir-format -msgid "Feed for %{email} on Mobilizon" -msgstr "Flöde för %{email} på Mobilizon" - #: lib/web/templates/email/report.html.eex:74 -#, elixir-format msgid "%{title} by %{creator}" msgstr "%{title} av %{creator}" -#: lib/web/templates/email/registration_confirmation.html.eex:58 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:58 msgid "Activate my account" msgstr "Aktivera mitt konto" +#, elixir-format #: lib/web/templates/email/email.html.eex:117 #: lib/web/templates/email/email.text.eex:9 -#, elixir-format msgid "Ask the community on Framacolibri" msgstr "Fråga människorna på Framacolibri" -#: lib/web/templates/email/report.text.eex:15 #, elixir-format +#: lib/web/templates/email/report.text.eex:15 msgid "Comments" msgstr "Kommentarer" +#, elixir-format #: lib/web/templates/email/report.html.eex:72 #: lib/web/templates/email/report.text.eex:11 -#, elixir-format msgid "Event" msgstr "Evenemang" -#: lib/web/email/user.ex:48 #, elixir-format +#: lib/web/email/user.ex:48 msgid "Instructions to reset your password on %{instance}" msgstr "Instruktioner för att återställa ditt lösenord på %{instance}" -#: lib/web/templates/email/report.text.eex:21 #, elixir-format +#: lib/web/templates/email/report.text.eex:21 msgid "Reason" msgstr "Motivering" -#: lib/web/templates/email/password_reset.html.eex:61 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:61 msgid "Reset Password" msgstr "Återställ lösenordet" -#: lib/web/templates/email/password_reset.html.eex:41 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:41 msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." msgstr "" "Det är enkelt att återställa ditt lösenord, klicka bara på knappen nedan och " "följ instruktionerna. Du kommer vara igång igen på nolltid." -#: lib/web/email/user.ex:28 #, elixir-format +#: lib/web/email/user.ex:28 msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Instruktioner för att bekräfta ditt Mobilizon-konto på %{instance}" -#: lib/web/email/admin.ex:24 #, elixir-format +#: lib/web/email/admin.ex:24 msgid "New report on Mobilizon instance %{instance}" msgstr "Ny anmälan på Mobilizon-instansen %{instance}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 -#, elixir-format msgid "Go to event page" msgstr "Gå till evenemangets sida" -#: lib/web/templates/email/report.text.eex:1 #, elixir-format +#: lib/web/templates/email/report.text.eex:1 msgid "New report from %{reporter} on %{instance}" msgstr "Ny anmälan från %{reporter} på %{instance}" -#: lib/web/templates/email/event_participation_approved.text.eex:1 #, elixir-format +#: lib/web/templates/email/event_participation_approved.text.eex:1 msgid "Participation approved" msgstr "Ditt deltagande har godkänts" +#, elixir-format #: lib/web/templates/email/password_reset.html.eex:13 #: lib/web/templates/email/password_reset.text.eex:1 -#, elixir-format msgid "Password reset" msgstr "Återställ lösenord" -#: lib/web/templates/email/password_reset.text.eex:7 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:7 msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." msgstr "" "Det är enkelt att återställa ditt lösenord, klicka bara på knappen nedan och " "följ instruktionerna. Du kommer vara igång igen på nolltid." -#: lib/web/templates/email/registration_confirmation.text.eex:5 #, elixir-format +#: lib/web/templates/email/registration_confirmation.text.eex:5 msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." msgstr "" "Du har skapat ett konto på %{host} med den här e-postadressen. Det återstår " "bara ett klick för att aktivera den. Om det inte var du som gjorde det kan " "du strunta i det här meddelandet." -#: lib/web/email/participation.ex:112 #, elixir-format +#: lib/web/email/participation.ex:112 msgid "Your participation to event %{title} has been approved" msgstr "Din förfrågan om att få delta i evenemanget %{title} har godkännts" -#: lib/web/email/participation.ex:70 #, elixir-format +#: lib/web/email/participation.ex:70 msgid "Your participation to event %{title} has been rejected" msgstr "Din förfrågan om att få delta i evenemanget %{title} har fått avslag" -#: lib/web/email/event.ex:37 #, elixir-format +#: lib/web/email/event.ex:37 msgid "Event %{title} has been updated" msgstr "Evenemanget %{title} har uppdaterats" -#: lib/web/templates/email/event_updated.text.eex:15 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:15 msgid "New title: %{title}" msgstr "Ny titel: %{title}" -#: lib/web/templates/email/password_reset.text.eex:5 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:5 msgid "You requested a new password for your account on %{instance}." msgstr "Du har bett om ett nytt lösenord för ditt konto på %{instance}." -#: lib/web/templates/email/email.html.eex:85 #, elixir-format +#: lib/web/templates/email/email.html.eex:85 msgid "Warning" msgstr "Varning" -#: lib/web/email/participation.ex:134 #, elixir-format +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Bekräfta ditt deltagande i eventet %{title}" -#: lib/web/templates/api/privacy.html.eex:75 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:75 msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "Ett internt ID för din nuvarande vald identitet" -#: lib/web/templates/api/privacy.html.eex:74 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:74 msgctxt "terms" msgid "An internal user ID" msgstr "Ett internt användar-ID" -#: lib/web/templates/api/privacy.html.eex:37 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:37 msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "All information som vi samlar från dig kan användas på följande sätt:" -#: lib/web/templates/api/privacy.html.eex:9 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:9 msgctxt "terms" msgid "Basic account information" msgstr "Grundläggande kontoinformation" -#: lib/web/templates/api/privacy.html.eex:25 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:25 msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "Dela inte farlig information över Mobilizon." -#: lib/web/templates/api/privacy.html.eex:90 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:90 msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "Utlämnar vi någon information till utanståender parter?" -#: lib/web/templates/api/privacy.html.eex:68 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:68 msgctxt "terms" msgid "Do we use cookies?" msgstr "Använder vi kakor?" -#: lib/web/templates/api/privacy.html.eex:51 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:51 msgctxt "terms" msgid "How do we protect your information?" msgstr "Hur skyddar vi din information?" -#: lib/web/templates/api/privacy.html.eex:29 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:29 msgctxt "terms" msgid "IPs and other metadata" msgstr "IP addresser och andra metadata" -#: lib/web/templates/api/privacy.html.eex:17 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:17 msgctxt "terms" msgid "Published events and comments" msgstr "Publicerade event och kommentarer" -#: lib/web/templates/api/privacy.html.eex:64 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:64 msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "" "Behåll IP-addressen associerad med registrerade användare inte längre än 12 " "månader." -#: lib/web/templates/api/privacy.html.eex:76 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:76 msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Nycklar för att identifiera dig" -#: lib/web/templates/api/privacy.html.eex:31 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:31 msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "" "Vi kan även behålla serverloggar som inkluderar IP-adresser från varje " "kontakt med våran server." -#: lib/web/templates/api/privacy.html.eex:70 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:70 msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "Vi sparar följande information på din enhet när du ansluter:" -#: lib/web/templates/api/privacy.html.eex:58 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:58 msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "" -#: lib/web/templates/api/privacy.html.eex:35 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:35 msgctxt "terms" msgid "What do we use your information for?" msgstr "" -#: lib/web/templates/api/privacy.html.eex:57 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:57 msgctxt "terms" msgid "What is our data retention policy?" msgstr "" -#: lib/web/templates/api/privacy.html.eex:67 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:67 msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "" -#: lib/web/templates/api/privacy.html.eex:115 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:115 msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "" -#: lib/web/templates/api/privacy.html.eex:106 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:106 msgctxt "terms" msgid "If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site." msgstr "" -#: lib/web/templates/api/privacy.html.eex:109 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:109 msgctxt "terms" msgid "If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site." msgstr "" -#: lib/web/templates/api/privacy.html.eex:117 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:117 msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "" -#: lib/web/templates/api/privacy.html.eex:112 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:112 msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "" -#: lib/web/templates/api/privacy.html.eex:103 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:103 msgctxt "terms" msgid "Site usage by children" msgstr "" -#: lib/web/templates/api/privacy.html.eex:47 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:47 msgctxt "terms" msgid "The email address you provide may be used to send you information, updates and notifications about other people\n interacting with your content or sending you messages and to respond to inquiries, and/or other requests or\n questions." msgstr "" -#: lib/web/templates/api/privacy.html.eex:45 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:45 msgctxt "terms" msgid "To aid moderation of the community, for example comparing your IP address with other known ones to determine ban\n evasion or other violations." msgstr "" -#: lib/web/templates/api/privacy.html.eex:43 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:43 msgctxt "terms" msgid "To provide the core functionality of Mobilizon. Depending on this instance's policy you may only be able to\n interact with other people's content and post your own content if you are logged in." msgstr "" -#: lib/web/templates/api/privacy.html.eex:6 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:6 msgctxt "terms" msgid "What information do we collect?" msgstr "" -#: lib/web/email/user.ex:176 #, elixir-format +#: lib/web/email/user.ex:176 msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon på %{instance}: bekräfta din e-postadress" -#: lib/web/email/user.ex:152 #, elixir-format +#: lib/web/email/user.ex:152 msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon på %{instance}: e-postadressen har ändrats" -#: lib/web/email/notification.ex:46 #, elixir-format +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Ett evenemang har planerats idag" msgstr[1] "%{nb_events} evenemang har planerats idag" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:38 #: lib/web/templates/email/on_day_notification.text.eex:4 -#, elixir-format msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Du har ett evenemang idag:" msgstr[1] "Du har %{total} evenemang idag:" -#: lib/web/templates/email/group_invite.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_invite.text.eex:3 msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} bjöd nyss in dig till sin grupp %{group}" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:13 #: lib/web/templates/email/group_invite.text.eex:1 -#, elixir-format msgid "Come along!" msgstr "Häng på!" -#: lib/web/email/notification.ex:24 #, elixir-format +#: lib/web/email/notification.ex:24 msgid "Don't forget to go to %{title}" msgstr "Glöm inte att gå till %{title}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 -#, elixir-format msgid "Get ready for %{title}" msgstr "Gör dig redo för %{title}" -#: lib/web/templates/email/group_invite.html.eex:59 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:59 msgid "See my groups" msgstr "Visa mina grupper" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:45 #: lib/web/templates/email/group_invite.text.eex:5 -#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Gå till dina grupper för att acceptera den här inbjudan." -#: lib/web/templates/email/before_event_notification.text.eex:5 #, elixir-format +#: lib/web/templates/email/before_event_notification.text.eex:5 msgid "View the event on: %{link}" msgstr "Visa det uppdaterade evenemanget på %{link}" -#: lib/web/email/group.ex:32 #, elixir-format +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} har bjudit in dig till gruppen %{group}" -#: lib/web/email/notification.ex:70 #, elixir-format +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" msgstr[1] "" -#: lib/web/email/notification.ex:92 #, elixir-format +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" msgstr[1] "" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "" msgstr[1] "" -#: lib/service/metadata/utils.ex:52 #, elixir-format +#: lib/service/metadata/utils.ex:52 msgid "The event organizer didn't add any description." msgstr "" -#: lib/web/templates/api/privacy.html.eex:54 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:54 msgctxt "terms" msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." msgstr "" -#: lib/web/templates/api/privacy.html.eex:94 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:94 msgctxt "terms" msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." msgstr "" -#: lib/web/templates/api/terms.html.eex:23 #, elixir-format +#: lib/web/templates/api/terms.html.eex:23 msgctxt "terms" msgid "Accepting these Terms" msgstr "" -#: lib/web/templates/api/terms.html.eex:27 #, elixir-format +#: lib/web/templates/api/terms.html.eex:27 msgctxt "terms" msgid "Changes to these Terms" msgstr "" -#: lib/web/templates/api/terms.html.eex:85 #, elixir-format +#: lib/web/templates/api/terms.html.eex:85 msgctxt "terms" msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." msgstr "" -#: lib/web/templates/api/terms.html.eex:60 #, elixir-format +#: lib/web/templates/api/terms.html.eex:60 msgctxt "terms" msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" msgstr "" -#: lib/web/templates/api/terms.html.eex:65 #, elixir-format +#: lib/web/templates/api/terms.html.eex:65 msgctxt "terms" msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." msgstr "" -#: lib/web/templates/api/terms.html.eex:64 #, elixir-format +#: lib/web/templates/api/terms.html.eex:64 msgctxt "terms" msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" msgstr "" -#: lib/web/templates/api/terms.html.eex:55 #, elixir-format +#: lib/web/templates/api/terms.html.eex:55 msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "" -#: lib/web/templates/api/terms.html.eex:56 #, elixir-format +#: lib/web/templates/api/terms.html.eex:56 msgctxt "terms" msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" msgstr "" -#: lib/web/templates/api/terms.html.eex:42 #, elixir-format +#: lib/web/templates/api/terms.html.eex:42 msgctxt "terms" msgid "Creating Accounts" msgstr "" -#: lib/web/templates/api/terms.html.eex:89 #, elixir-format +#: lib/web/templates/api/terms.html.eex:89 msgctxt "terms" msgid "Entire Agreement" msgstr "" -#: lib/web/templates/api/terms.html.eex:92 #, elixir-format +#: lib/web/templates/api/terms.html.eex:92 msgctxt "terms" msgid "Feedback" msgstr "" -#: lib/web/templates/api/terms.html.eex:83 #, elixir-format +#: lib/web/templates/api/terms.html.eex:83 msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "" -#: lib/web/templates/api/terms.html.eex:88 #, elixir-format +#: lib/web/templates/api/terms.html.eex:88 msgctxt "terms" msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." msgstr "" -#: lib/web/templates/api/terms.html.eex:63 #, elixir-format +#: lib/web/templates/api/terms.html.eex:63 msgctxt "terms" msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" msgstr "" -#: lib/web/templates/api/terms.html.eex:48 #, elixir-format +#: lib/web/templates/api/terms.html.eex:48 msgctxt "terms" msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." msgstr "" -#: lib/web/templates/api/terms.html.eex:39 #, elixir-format +#: lib/web/templates/api/terms.html.eex:39 msgctxt "terms" msgid "Privacy Policy" msgstr "" -#: lib/web/templates/api/terms.html.eex:95 #, elixir-format +#: lib/web/templates/api/terms.html.eex:95 msgctxt "terms" msgid "Questions & Contact Information" msgstr "" -#: lib/web/templates/api/terms.html.eex:87 #, elixir-format +#: lib/web/templates/api/terms.html.eex:87 msgctxt "terms" msgid "Termination" msgstr "" -#: lib/web/templates/api/terms.html.eex:62 #, elixir-format +#: lib/web/templates/api/terms.html.eex:62 msgctxt "terms" msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" msgstr "" -#: lib/web/templates/api/terms.html.eex:47 #, elixir-format +#: lib/web/templates/api/terms.html.eex:47 msgctxt "terms" msgid "Your Content & Conduct" msgstr "" -#: lib/web/templates/api/terms.html.eex:84 #, elixir-format +#: lib/web/templates/api/terms.html.eex:84 msgctxt "terms" msgid "%{instance_name} makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "" -#: lib/web/templates/api/terms.html.eex:68 #, elixir-format +#: lib/web/templates/api/terms.html.eex:68 msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "" -#: lib/web/templates/api/terms.html.eex:81 #, elixir-format +#: lib/web/templates/api/terms.html.eex:81 msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "" -#: lib/web/templates/api/terms.html.eex:18 #, elixir-format +#: lib/web/templates/api/terms.html.eex:18 msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "" -#: lib/web/templates/api/terms.html.eex:33 #, elixir-format +#: lib/web/templates/api/terms.html.eex:33 msgctxt "terms" msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." msgstr "" -#: lib/web/templates/api/terms.html.eex:53 #, elixir-format +#: lib/web/templates/api/terms.html.eex:53 msgctxt "terms" msgid "In order to make %{instance_name} a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" msgstr "" -#: lib/web/templates/api/terms.html.eex:57 #, elixir-format +#: lib/web/templates/api/terms.html.eex:57 msgctxt "terms" msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" msgstr "" -#: lib/web/templates/api/terms.html.eex:52 #, elixir-format +#: lib/web/templates/api/terms.html.eex:52 msgctxt "terms" msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." msgstr "" -#: lib/web/templates/api/terms.html.eex:90 #, elixir-format +#: lib/web/templates/api/terms.html.eex:90 msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "" -#: lib/web/templates/api/terms.html.eex:80 #, elixir-format +#: lib/web/templates/api/terms.html.eex:80 msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "" -#: lib/web/templates/api/terms.html.eex:58 #, elixir-format +#: lib/web/templates/api/terms.html.eex:58 msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "" -#: lib/web/templates/api/terms.html.eex:51 #, elixir-format +#: lib/web/templates/api/terms.html.eex:51 msgctxt "terms" msgid "You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time. Web server access logs might also be stored for some time in the system." msgstr "" -#: lib/web/templates/api/terms.html.eex:96 #, elixir-format +#: lib/web/templates/api/terms.html.eex:96 msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "" -#: lib/web/templates/api/terms.html.eex:79 #, elixir-format +#: lib/web/templates/api/terms.html.eex:79 msgctxt "terms" msgid "Source code" msgstr "" -#: lib/web/templates/api/terms.html.eex:93 #, elixir-format +#: lib/web/templates/api/terms.html.eex:93 msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "" -#: lib/web/templates/api/terms.html.eex:74 #, elixir-format +#: lib/web/templates/api/terms.html.eex:74 msgctxt "terms" msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." msgstr "" -#: lib/web/templates/api/terms.html.eex:6 #, elixir-format +#: lib/web/templates/api/terms.html.eex:6 msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "" -#: lib/web/templates/api/terms.html.eex:44 #, elixir-format +#: lib/web/templates/api/terms.html.eex:44 msgctxt "terms" msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact its contributors directly." msgstr "" -#: lib/web/templates/api/terms.html.eex:77 #, elixir-format +#: lib/web/templates/api/terms.html.eex:77 msgctxt "terms" msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." msgstr "" -#: lib/web/templates/api/terms.html.eex:98 #, elixir-format +#: lib/web/templates/api/terms.html.eex:98 msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "" -#: lib/web/templates/api/privacy.html.eex:119 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:119 msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "" -#: lib/web/templates/api/terms.html.eex:3 #, elixir-format +#: lib/web/templates/api/terms.html.eex:3 msgctxt "terms" msgid "Short version" msgstr "" -#: lib/web/templates/api/terms.html.eex:9 #, elixir-format +#: lib/web/templates/api/terms.html.eex:9 msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "" -#: lib/web/templates/api/privacy.html.eex:118 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:118 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "" -#: lib/web/templates/api/terms.html.eex:97 #, elixir-format +#: lib/web/templates/api/terms.html.eex:97 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "" -#: lib/web/templates/api/terms.html.eex:8 #, elixir-format +#: lib/web/templates/api/terms.html.eex:8 msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "" -#: lib/web/templates/api/terms.html.eex:7 #, elixir-format +#: lib/web/templates/api/terms.html.eex:7 msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "" -#: lib/web/templates/api/terms.html.eex:5 #, elixir-format +#: lib/web/templates/api/terms.html.eex:5 msgctxt "terms" msgid "Your content is yours" msgstr "" -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 msgid "Confirm my e-mail address" msgstr "" +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 -#, elixir-format msgid "Confirm your e-mail" msgstr "" -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" +#, elixir-format #: lib/web/templates/email/email.html.eex:114 #: lib/web/templates/email/email.text.eex:8 -#, elixir-format msgid "Need help? Is something not working as expected?" msgstr "Behöver du hjälp? Är det något som krånglar?" -#: lib/web/templates/email/registration_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:38 msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "" "Du har skapat ett konto på %{host} med den här e-postadressen. Nu " "återstår bara ett klick för att aktivera det." -#: lib/web/templates/email/report.html.eex:13 #, elixir-format +#: lib/web/templates/email/report.html.eex:13 msgid "New report on %{instance}" msgstr "Ny anmälan på %{instance}" -#: lib/web/templates/email/email_changed_old.html.eex:38 #, elixir-format +#: lib/web/templates/email/email_changed_old.html.eex:38 msgid "The email address for your account on %{host} is being changed to:" msgstr "" -#: lib/web/templates/email/password_reset.html.eex:38 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:38 msgid "You requested a new password for your account on %{instance}." msgstr "Du har bett om ett nytt lösenord för ditt konto på %{instance}." -#: lib/web/templates/email/email.text.eex:5 #, elixir-format +#: lib/web/templates/email/email.text.eex:5 msgid "Please do not use it for real purposes." msgstr "" +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 #: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 -#, elixir-format msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -789,610 +784,630 @@ msgstr[1] "" "Om du behöver lämna återbud är det bara att gå till evenemangens sidor, via " "länkarna ovan, och klicka på deltagande-knappen." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:38 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "" msgstr[1] "" -#: lib/web/templates/email/email.text.eex:11 #, elixir-format +#: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} är en Mobilizon-server." -#: lib/web/templates/email/email.html.eex:142 #, elixir-format +#: lib/web/templates/email/email.html.eex:142 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} är en Mobilizon-server." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 -#, elixir-format msgid "A request is pending!" msgstr "" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 -#, elixir-format msgid "An event is upcoming!" msgstr "" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 -#, elixir-format msgid "Confirm new email" msgstr "" -#: lib/web/templates/email/event_updated.html.eex:84 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:84 msgid "End" msgstr "" -#: lib/web/templates/email/event_updated.text.eex:21 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:21 msgid "End %{ends_on}" msgstr "" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:13 #: lib/web/templates/email/event_updated.text.eex:1 -#, elixir-format msgid "Event update!" msgstr "Evenemang uppdaterat!" -#: lib/web/templates/email/report.html.eex:88 #, elixir-format +#: lib/web/templates/email/report.html.eex:88 msgid "Flagged comments" msgstr "" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 -#, elixir-format msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:38 #: lib/web/templates/email/email_changed_new.text.eex:3 -#, elixir-format msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" -#: lib/web/templates/email/email_changed_old.text.eex:3 #, elixir-format +#: lib/web/templates/email/email_changed_old.text.eex:3 msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" msgstr "" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:41 #: lib/web/templates/email/email_changed_old.html.eex:65 lib/web/templates/email/email_changed_old.text.eex:5 -#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "" -#: lib/web/templates/email/password_reset.text.eex:12 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:12 msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." msgstr "" +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 -#, elixir-format msgid "If you didn't trigger this email, you may safely ignore it." msgstr "" "Du kan strunta i det här meddelandet om det inte var du frågade efter det." +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 -#, elixir-format msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "" "Om du behöver lämna återbud är det bara att gå till evenemangets sida, på " "länken ovan, och klicka på deltagande-knappen." +#, elixir-format #: lib/web/templates/email/email.html.eex:143 #: lib/web/templates/email/email.text.eex:11 -#, elixir-format msgid "Learn more about Mobilizon here!" msgstr "Läs mer om Mobilizon här!" -#: lib/web/templates/email/event_updated.html.eex:94 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:94 msgid "Location" msgstr "" -#: lib/web/templates/email/event_updated.html.eex:104 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:104 msgid "Location address was removed" msgstr "" +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:51 #: lib/web/templates/email/pending_participation_notification.text.eex:6 -#, elixir-format msgid "Manage pending requests" msgstr "" +#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 -#, elixir-format msgid "Nearly there!" msgstr "Snart framme!" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 -#, elixir-format msgid "New email confirmation" msgstr "" -#: lib/web/templates/email/report.html.eex:106 #, elixir-format +#: lib/web/templates/email/report.html.eex:106 msgid "Reasons for report" msgstr "" -#: lib/web/templates/email/report.html.eex:39 #, elixir-format +#: lib/web/templates/email/report.html.eex:39 msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "" +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 -#, elixir-format msgid "Sorry! You're not going." msgstr "" -#: lib/web/templates/email/event_updated.html.eex:74 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:74 msgid "Start" msgstr "" -#: lib/web/templates/email/event_updated.text.eex:18 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:18 msgid "Start %{begins_on}" msgstr "" -#: lib/web/templates/email/event_updated.text.eex:3 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:3 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:55 #: lib/web/templates/email/event_updated.text.eex:11 -#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:51 #: lib/web/templates/email/event_updated.text.eex:7 -#, elixir-format msgid "This event has been confirmed" msgstr "" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:53 #: lib/web/templates/email/event_updated.text.eex:9 -#, elixir-format msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "" +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 -#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "Organisatörerna har tyvärr gjort avslag på ditt deltagande." -#: lib/web/templates/email/email_changed_new.html.eex:51 #, elixir-format +#: lib/web/templates/email/email_changed_new.html.eex:51 msgid "Verify your email address" msgstr "" -#: lib/web/templates/email/report.html.eex:126 #, elixir-format +#: lib/web/templates/email/report.html.eex:126 msgid "View report" msgstr "Visa anmälan" -#: lib/web/templates/email/report.text.eex:24 #, elixir-format +#: lib/web/templates/email/report.text.eex:24 msgid "View report:" msgstr "Visa anmälan:" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:58 #: lib/web/templates/email/event_participation_confirmed.html.eex:58 -#, elixir-format msgid "Visit event page" msgstr "" -#: lib/web/templates/email/event_updated.html.eex:121 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:121 msgid "Visit the updated event page" msgstr "" -#: lib/web/templates/email/event_updated.text.eex:23 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:23 msgid "Visit the updated event page: %{link}" msgstr "Visa det uppdaterade evenemanget på %{link}" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 -#, elixir-format msgid "What's up this week?" msgstr "" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 -#, elixir-format msgid "What's up today?" msgstr "" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 -#, elixir-format msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:64 #: lib/web/templates/email/pending_participation_notification.text.eex:8 -#, elixir-format msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" -#: lib/web/templates/email/event_participation_rejected.text.eex:5 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.text.eex:5 msgid "You issued a request to attend %{title}." msgstr "" +#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Du har bett om att få delta i evenemanget %{title}." +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:13 #: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 -#, elixir-format msgid "You're going!" msgstr "" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 -#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "" -#: lib/web/templates/email/email.html.eex:89 #, elixir-format +#: lib/web/templates/email/email.html.eex:89 msgid "Please do not use it for real purposes." msgstr "" +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 -#, elixir-format msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "" +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 -#, elixir-format msgid "So long, and thanks for the fish!" msgstr "" -#: lib/web/email/group.ex:62 #, elixir-format +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "" -#: lib/web/templates/email/group_member_removal.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_member_removal.text.eex:3 msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." msgstr "" -#: lib/web/templates/email/group_invite.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:38 msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "" -#: lib/web/templates/email/group_member_removal.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_member_removal.html.eex:38 msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:54 #: lib/web/templates/email/group_suspension.text.eex:7 -#, elixir-format msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:46 #: lib/web/templates/email/group_suspension.text.eex:5 -#, elixir-format msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "" +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:38 #: lib/web/templates/email/group_deletion.text.eex:3 -#, elixir-format msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:13 #: lib/web/templates/email/group_suspension.text.eex:1 -#, elixir-format msgid "The group %{group} has been suspended on %{instance}!" msgstr "" +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:13 #: lib/web/templates/email/group_deletion.text.eex:1 -#, elixir-format msgid "The group %{group} was deleted on %{instance}!" msgstr "" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:38 #: lib/web/templates/email/group_suspension.text.eex:3 -#, elixir-format msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:135 #, elixir-format +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "" -#: lib/web/email/group.ex:96 #, elixir-format +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "" -#: lib/web/templates/api/terms.html.eex:24 #, elixir-format +#: lib/web/templates/api/terms.html.eex:24 msgctxt "terms" msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." msgstr "" -#: lib/web/templates/api/terms.html.eex:40 #, elixir-format +#: lib/web/templates/api/terms.html.eex:40 msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "" -#: lib/web/templates/api/terms.html.eex:36 #, elixir-format +#: lib/web/templates/api/terms.html.eex:36 msgctxt "terms" msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." msgstr "" -#: lib/web/templates/api/privacy.html.eex:78 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:78 msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "" -#: lib/web/templates/api/privacy.html.eex:80 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:80 msgctxt "terms" msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." msgstr "" -#: lib/web/templates/api/privacy.html.eex:87 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:87 msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "" -#: lib/web/templates/api/terms.html.eex:71 #, elixir-format +#: lib/web/templates/api/terms.html.eex:71 msgctxt "terms" msgid "Our responsibility" msgstr "" -#: lib/web/templates/api/privacy.html.eex:61 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:61 msgctxt "terms" msgid "Retain server logs containing the IP address of all requests to this server, insofar as such logs are kept, no more than 90 days." msgstr "" +#, elixir-format #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 -#, elixir-format msgctxt "terms" msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary to help you understand them better." msgstr "" -#: lib/web/templates/api/terms.html.eex:45 #, elixir-format +#: lib/web/templates/api/terms.html.eex:45 msgctxt "terms" msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." msgstr "" -#: lib/web/templates/api/terms.html.eex:50 #, elixir-format +#: lib/web/templates/api/terms.html.eex:50 msgctxt "terms" msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." msgstr "" -#: lib/web/templates/api/privacy.html.eex:10 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:10 msgctxt "terms" msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter an email address, a password (hashed) and at least an username. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" -#: lib/web/templates/api/terms.html.eex:30 #, elixir-format +#: lib/web/templates/api/terms.html.eex:30 msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.eex:20 #, elixir-format +#: lib/web/templates/api/terms.html.eex:20 msgctxt "terms" msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by Framasoft, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the \"About this instance\" page." msgstr "" -#: lib/web/templates/api/terms.html.eex:43 #, elixir-format +#: lib/web/templates/api/terms.html.eex:43 msgctxt "terms" msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to %{instance_name}." msgstr "" -#: lib/web/templates/api/terms.html.eex:49 #, elixir-format +#: lib/web/templates/api/terms.html.eex:49 msgctxt "terms" msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." msgstr "" -#: lib/web/templates/api/privacy.html.eex:19 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:19 msgctxt "terms" msgid "Your events and comments are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." msgstr "" -#: lib/web/templates/api/privacy.html.eex:99 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:99 msgctxt "terms" msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." msgstr "" -#: lib/web/templates/email/event_participation_confirmed.text.eex:4 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.text.eex:4 msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:38 #: lib/web/templates/email/event_participation_confirmed.html.eex:38 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Du har bett om att få delta i evenemanget %{title}." -#: lib/web/email/participation.ex:91 #, elixir-format +#: lib/web/email/participation.ex:91 msgid "Your participation to event %{title} has been confirmed" msgstr "Din förfrågan om att få delta i evenemanget %{title} har godkännts" -#: lib/web/templates/email/report.html.eex:41 #, elixir-format +#: lib/web/templates/email/report.html.eex:41 msgid "%{reporter} reported the following content." msgstr "" "%{reporter_name} (%{reporter_username}) har anmält följande innehåll." -#: lib/web/templates/email/report.text.eex:5 #, elixir-format +#: lib/web/templates/email/report.text.eex:5 msgid "Group %{group} was reported" msgstr "" -#: lib/web/templates/email/report.html.eex:51 #, elixir-format +#: lib/web/templates/email/report.html.eex:51 msgid "Group reported" msgstr "" -#: lib/web/templates/email/report.text.eex:7 #, elixir-format +#: lib/web/templates/email/report.text.eex:7 msgid "Profile %{profile} was reported" msgstr "" -#: lib/web/templates/email/report.html.eex:56 #, elixir-format +#: lib/web/templates/email/report.html.eex:56 msgid "Profile reported" msgstr "" -#: lib/web/templates/email/event_participation_confirmed.html.eex:45 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.html.eex:45 msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" -#: lib/mobilizon/posts/post.ex:91 #, elixir-format +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "" -#: lib/mobilizon/posts/post.ex:90 #, elixir-format +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "" -#: lib/web/templates/email/instance_follow.text.eex:3 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:3 msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "" -#: lib/web/email/follow.ex:54 #, elixir-format +#: lib/web/email/follow.ex:54 msgid "%{name} requests to follow your instance" msgstr "" -#: lib/web/templates/email/instance_follow.html.eex:38 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:38 msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "" -#: lib/web/templates/email/instance_follow.text.eex:4 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:4 msgid "If you accept, this instance will receive all of your public events." msgstr "" -#: lib/web/email/follow.ex:48 #, elixir-format +#: lib/web/email/follow.ex:48 msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "" -#: lib/web/templates/email/instance_follow.html.eex:66 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:66 msgid "See the federation settings" msgstr "" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:52 #: lib/web/templates/email/instance_follow.text.eex:6 -#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "Gå till dina grupper för att acceptera den här inbjudan." +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:13 #: lib/web/templates/email/instance_follow.text.eex:1 -#, elixir-format msgid "Want to connect?" msgstr "" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:45 #: lib/web/templates/email/instance_follow.text.eex:5 -#, elixir-format msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "" -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" -#: lib/web/templates/email/event_participation_rejected.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.html.eex:38 msgid "You issued a request to attend %{title}." msgstr "" -#: lib/web/templates/email/event_updated.html.eex:64 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:64 msgid "Event title" msgstr "Evenemangets titel" -#: lib/web/templates/email/event_updated.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:38 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Det har skett ändringar kring %{title} som vi misstänker att du vill " "känna till." -#: lib/web/templates/error/500_page.html.eex:46 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:46 msgid "The Mobilizon server seems to be temporarily down." msgstr "" -#: lib/web/templates/error/500_page.html.eex:7 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:7 msgid "This page is not correct" msgstr "" -#: lib/web/templates/error/500_page.html.eex:45 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:45 msgid "We're sorry, but something went wrong on our end." msgstr "" +#, elixir-format #: lib/web/templates/email/email.html.eex:88 #: lib/web/templates/email/email.text.eex:4 -#, elixir-format msgid "This is a demonstration site to test Mobilizon." msgstr "" "Detta är en webbplats för att visa upp och testa beta-versionen av Mobilizon." + +#, elixir-format +#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:77 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:72 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:203 +msgid "Feed for %{email} on %{instance}" +msgstr "" diff --git a/priv/gettext/sv/LC_MESSAGES/errors.po b/priv/gettext/sv/LC_MESSAGES/errors.po index 7d8d2a09e..1e98d7cb2 100644 --- a/priv/gettext/sv/LC_MESSAGES/errors.po +++ b/priv/gettext/sv/LC_MESSAGES/errors.po @@ -99,12 +99,12 @@ msgid "Cannot refresh the token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:198 +#: lib/graphql/resolvers/group.ex:195 msgid "Current profile is not a member of this group" msgstr "Den nuvarande profilen är inte med i den här gruppen" #, elixir-format -#: lib/graphql/resolvers/group.ex:202 +#: lib/graphql/resolvers/group.ex:199 msgid "Current profile is not an administrator of the selected group" msgstr "" @@ -114,13 +114,13 @@ msgid "Error while saving user settings" msgstr "Ett fel uppstod när användarinställningarna skulle sparas" #, elixir-format -#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:195 -#: lib/graphql/resolvers/group.ex:226 lib/graphql/resolvers/group.ex:261 lib/graphql/resolvers/member.ex:80 +#: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 +#: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 msgid "Group not found" msgstr "Gruppen kunde inte hittas" #, elixir-format -#: lib/graphql/resolvers/group.ex:66 +#: lib/graphql/resolvers/group.ex:63 msgid "Group with ID %{id} not found" msgstr "Gruppen med %{id} kunde inte hittas" @@ -130,7 +130,7 @@ msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:258 +#: lib/graphql/resolvers/group.ex:255 msgid "Member not found" msgstr "" @@ -146,16 +146,15 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:229 lib/graphql/resolvers/user.ex:76 -#: lib/graphql/resolvers/user.ex:219 +#: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:29 lib/graphql/resolvers/participant.ex:160 -#: lib/graphql/resolvers/participant.ex:189 lib/graphql/resolvers/person.ex:153 lib/graphql/resolvers/person.ex:187 -#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/person.ex:282 lib/graphql/resolvers/person.ex:295 +#: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 +#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 +#: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 msgid "Profile is not owned by authenticated user" msgstr "" @@ -221,22 +220,22 @@ msgid "User requested is not logged-in" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:232 +#: lib/graphql/resolvers/group.ex:229 msgid "You are already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:265 +#: lib/graphql/resolvers/group.ex:262 msgid "You can't leave this group because you are the only administrator" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:229 +#: lib/graphql/resolvers/group.ex:226 msgid "You cannot join this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:94 +#: lib/graphql/resolvers/group.ex:91 msgid "You may not list groups unless moderator." msgstr "" @@ -251,7 +250,7 @@ msgid "You need to be logged-in to change your password" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:207 +#: lib/graphql/resolvers/group.ex:204 msgid "You need to be logged-in to delete a group" msgstr "" @@ -261,25 +260,20 @@ msgid "You need to be logged-in to delete your account" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:237 +#: lib/graphql/resolvers/group.ex:234 msgid "You need to be logged-in to join a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:270 +#: lib/graphql/resolvers/group.ex:267 msgid "You need to be logged-in to leave a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:172 +#: lib/graphql/resolvers/group.ex:169 msgid "You need to be logged-in to update a group" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/user.ex:58 -msgid "You need to have admin access to list users" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/user.ex:108 msgid "You need to have an existing token to get a refresh token" @@ -331,22 +325,22 @@ msgid "Profile already suspended" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:93 +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:87 +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:184 +#: lib/graphql/resolvers/person.ex:192 msgid "Cannot remove the last administrator of a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:181 +#: lib/graphql/resolvers/person.ex:189 msgid "Cannot remove the last identity of a user" msgstr "" @@ -356,7 +350,7 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:61 +#: lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "" @@ -371,29 +365,29 @@ msgid "Error while updating report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:235 -#: lib/graphql/resolvers/event.ex:279 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 +#: lib/graphql/resolvers/event.ex:280 msgid "Event not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:84 -#: lib/graphql/resolvers/participant.ex:125 lib/graphql/resolvers/participant.ex:157 +#: lib/graphql/resolvers/participant.ex:83 +#: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 msgid "Event with this ID %{id} doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:100 +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:193 +#: lib/graphql/resolvers/discussion.ex:186 msgid "No discussion with ID %{id}" msgstr "" @@ -408,14 +402,14 @@ msgid "No such feed token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:238 +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:170 -#: lib/graphql/resolvers/participant.ex:199 lib/graphql/resolvers/participant.ex:231 -#: lib/graphql/resolvers/participant.ex:241 +#: lib/graphql/resolvers/participant.ex:169 +#: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 +#: lib/graphql/resolvers/participant.ex:240 msgid "Participant not found" msgstr "" @@ -425,22 +419,17 @@ msgid "Person with ID %{id} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:50 +#: lib/graphql/resolvers/person.ex:51 msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:41 -msgid "Picture with ID %{id} was not found" -msgstr "" - -#, elixir-format -#: lib/graphql/resolvers/post.ex:165 lib/graphql/resolvers/post.ex:198 +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:168 lib/graphql/resolvers/post.ex:201 +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "" @@ -455,8 +444,8 @@ msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:131 lib/graphql/resolvers/post.ex:171 -#: lib/graphql/resolvers/post.ex:204 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 +#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 +#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 @@ -464,12 +453,12 @@ msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:150 lib/graphql/resolvers/person.ex:178 +#: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:101 lib/graphql/resolvers/participant.ex:235 +#: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 msgid "Provided moderator profile doesn't have permission on this event" msgstr "" @@ -484,12 +473,12 @@ msgid "Resource doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:121 +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:261 +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "" @@ -515,22 +504,22 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:317 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 msgid "User not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:232 +#: lib/graphql/resolvers/person.ex:252 msgid "You already have a profile for this user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:131 +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:197 +#: lib/graphql/resolvers/discussion.ex:190 msgid "You are not a member of the group the discussion belongs to" msgstr "" @@ -570,8 +559,8 @@ msgid "You are not allowed to update a comment if not connected" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:164 -#: lib/graphql/resolvers/participant.ex:193 +#: lib/graphql/resolvers/participant.ex:163 +#: lib/graphql/resolvers/participant.ex:192 msgid "You can't leave event because you're the only event creator participant" msgstr "" @@ -586,7 +575,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:275 +#: lib/graphql/resolvers/event.ex:276 msgid "You cannot delete this event" msgstr "" @@ -636,7 +625,7 @@ msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:75 +#: lib/graphql/resolvers/discussion.ex:76 msgid "You need to be logged-in to access discussions" msgstr "" @@ -646,12 +635,12 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:210 +#: lib/graphql/resolvers/event.ex:211 msgid "You need to be logged-in to create events" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:139 +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "" @@ -666,12 +655,12 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:285 msgid "You need to be logged-in to delete an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "" @@ -681,22 +670,22 @@ msgid "You need to be logged-in to delete resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:105 +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:204 +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:249 +#: lib/graphql/resolvers/event.ex:250 msgid "You need to be logged-in to update an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:176 +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "" @@ -710,11 +699,6 @@ msgstr "" msgid "You need to be logged-in to view a resource preview" msgstr "" -#, elixir-format -#: lib/graphql/resolvers/picture.ex:79 -msgid "You need to login to upload a picture" -msgstr "" - #, elixir-format #: lib/graphql/resolvers/resource.ex:121 msgid "Parent resource doesn't belong to this group" @@ -791,22 +775,22 @@ msgid "You can't reject this invitation with this profile." msgstr "" #, elixir-format -#: lib/graphql/resolvers/picture.ex:71 +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:167 +#: lib/graphql/resolvers/group.ex:164 msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:238 +#: lib/graphql/resolvers/event.ex:239 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:241 +#: lib/graphql/resolvers/event.ex:242 msgid "You can't attribute this event to this profile." msgstr "" @@ -826,21 +810,27 @@ msgid "You don't have the right to remove this member." msgstr "" #, elixir-format -#: lib/mobilizon/actors/actor.ex:344 +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "" #, elixir-format -#: lib/graphql/resolvers/discussion.ex:72 +#: lib/graphql/resolvers/discussion.ex:73 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:199 +#: lib/graphql/resolvers/event.ex:200 msgid "Organizer profile is not owned by the user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/participant.ex:90 +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 +#: lib/graphql/resolvers/person.ex:246 +msgid "The provided picture is too heavy" +msgstr "" diff --git a/test/service/metadata/metadata_test.exs b/test/service/metadata/metadata_test.exs index 478d2f0a5..a2148258f 100644 --- a/test/service/metadata/metadata_test.exs +++ b/test/service/metadata/metadata_test.exs @@ -5,6 +5,8 @@ defmodule Mobilizon.Service.MetadataTest do alias Mobilizon.Posts.Post alias Mobilizon.Service.Metadata alias Mobilizon.Tombstone + alias Mobilizon.Web.Endpoint + alias Mobilizon.Web.Router.Helpers, as: Routes use Mobilizon.DataCase import Mobilizon.Factory @@ -21,7 +23,11 @@ defmodule Mobilizon.Service.MetadataTest do group.avatar.url }\" property=\"og:image\">" + }\",\"url\":\"#{group.url}\"}" assert group |> Map.put(:avatar, nil) @@ -33,7 +39,11 @@ defmodule Mobilizon.Service.MetadataTest do group.preferred_username }\" property=\"profile:username\">" + }\",\"url\":\"#{group.url}\"}" end test "that is not a group doesn't give anything" do diff --git a/test/web/controllers/feed_controller_test.exs b/test/web/controllers/feed_controller_test.exs index f6250cca2..1b56dabc3 100644 --- a/test/web/controllers/feed_controller_test.exs +++ b/test/web/controllers/feed_controller_test.exs @@ -3,6 +3,7 @@ defmodule Mobilizon.Web.FeedControllerTest do import Mobilizon.Factory + alias Mobilizon.Config alias Mobilizon.Web.Endpoint alias Mobilizon.Web.Router.Helpers, as: Routes @@ -28,7 +29,8 @@ defmodule Mobilizon.Web.FeedControllerTest do {:ok, feed} = ElixirFeedParser.parse(conn.resp_body) - assert feed.title == actor.preferred_username <> "'s public events feed on Mobilizon" + assert feed.title == + actor.preferred_username <> "'s public events feed on #{Config.instance_name()}" [entry1, entry2] = entries = feed.entries @@ -232,7 +234,7 @@ defmodule Mobilizon.Web.FeedControllerTest do {:ok, feed} = ElixirFeedParser.parse(conn.resp_body) - assert feed.title == "Feed for #{user.email} on Mobilizon" + assert feed.title == "Feed for #{user.email} on #{Config.instance_name()}" entries = feed.entries @@ -267,7 +269,8 @@ defmodule Mobilizon.Web.FeedControllerTest do {:ok, feed} = ElixirFeedParser.parse(conn.resp_body) - assert feed.title == "#{actor1.preferred_username}'s private events feed on Mobilizon" + assert feed.title == + "#{actor1.preferred_username}'s private events feed on #{Config.instance_name()}" [entry] = feed.entries assert entry.title == event1.title From 8ec09aaab7b64cc6007e550e1b0926d3bf6c0b2d Mon Sep 17 00:00:00 2001 From: Berto Te Date: Wed, 20 Jan 2021 09:06:44 +0000 Subject: [PATCH 071/114] Translated using Weblate (Spanish) Currently translated at 100.0% (831 of 831 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/es/ --- js/src/i18n/es.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/js/src/i18n/es.json b/js/src/i18n/es.json index 535fb771c..38d9a65b8 100644 --- a/js/src/i18n/es.json +++ b/js/src/i18n/es.json @@ -92,6 +92,7 @@ "Are you sure you want to delete this event? This action cannot be reverted.": "¿Seguro que quieres eliminar este evento? Esta acción no se puede revertir.", "As the event organizer has chosen to manually validate participation requests, your participation will be really confirmed only once you receive an email stating it's being accepted.": "Como el organizador del evento ha optado por validar manualmente las solicitudes de participación, su participación se confirmará realmente solo una vez que reciba un correo electrónico que indique que está siendo aceptada.", "Assigned to": "Asignado a", + "Atom feed for events and posts": "Flujo Atom para eventos y publicaciones", "Avatar": "Avatar", "Back to previous page": "Volver a la página anterior", "Banner": "Pancarta", @@ -342,6 +343,8 @@ "I participate": "Yo participo", "I want to allow people to participate without an account.": "Quiero permitir que las personas participen sin una cuenta.", "I want to approve every participation request": "Quiero aprobar cada solicitud de participación", + "ICS feed for events": "Flujo ICS para eventos", + "ICS/WebCal Feed": "Flujo ICS/WebCal", "Identity {displayName} created": "Identidad {displayName} creada", "Identity {displayName} deleted": "Identidad {displayName} eliminada", "Identity {displayName} updated": "Identidad {displayName} actualizada", From 8aa5fe68087bcdb95c50949ab94b608bf0606d0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20PAG=C3=88S?= Date: Tue, 19 Jan 2021 20:45:10 +0000 Subject: [PATCH 072/114] Translated using Weblate (Occitan) Currently translated at 98.9% (822 of 831 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/oc/ --- js/src/i18n/oc.json | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/js/src/i18n/oc.json b/js/src/i18n/oc.json index 3859f36e3..82f00d46d 100644 --- a/js/src/i18n/oc.json +++ b/js/src/i18n/oc.json @@ -27,6 +27,7 @@ "Abandon edition": "Abandonar la modificacion", "About": "A prepaus", "About Mobilizon": "A prepaus de Mobilizon", + "About anonymous participation": "A prepaus de la participacion anonima", "About this event": "Tocant aqueste eveniment", "About this instance": "Tocant aquesta instància", "About {instance}": "A prepaus de {instance}", @@ -90,6 +91,7 @@ "Are you sure you want to cancel your participation at event \"{title}\"?": "Volètz vertadièrament anullar vòstra participacion a l’eveniment « {title} » ?", "Are you sure you want to delete this event? This action cannot be reverted.": "Volètz vertadièrament suprimir aqueste eveniment ? Aquesta accion se pòt pas anullar.", "Assigned to": "Assignat a", + "Atom feed for events and posts": "Flux Atom per los eveniments e las publicacions", "Avatar": "Avatar", "Back to previous page": "Tornar a pas pagina precedenta", "Banner": "Banièra", @@ -109,6 +111,7 @@ "Cancel edition": "Anullar la modificacion", "Cancel my participation request…": "Anullar ma demanda de participacion…", "Cancel my participation…": "Anullar ma participacion…", + "Cancelled": "Anullat", "Cancelled: Won't happen": "Anullat : se tendrà pas", "Category": "Categoria", "Change": "Modificar", @@ -119,6 +122,8 @@ "Change timezone": "Cambiar de zòna orària", "Check your inbox (and your junk mail folder).": "Verificatz vòstra bóstia de recepcion (los indesirales tanben).", "Clear": "Escafar", + "Clear participation data for this event": "Escafar mas donadas de participacion per aqueste eveniment", + "Click for more information": "Clicatz per mai d’informacions", "Click to select": "Clicatz per seleccionar", "Click to upload": "Clicatz per enviar", "Close": "Tancar", @@ -157,6 +162,7 @@ "Create a visioconference": "Crear una vidèo-conferéncia", "Create an account": "Crear un compte", "Create and manage several identities from the same account": "Crear e gerir mantunas identitats amb lo meteis compte", + "Create event": "Crear un eveniment", "Create group": "Crear un grop", "Create my event": "Crear mon eveniment", "Create my group": "Crear mon grop", @@ -217,6 +223,8 @@ "Displayed on homepage and meta tags. Describe what Mobilizon is and what makes this instance special in a single paragraph.": "Afichadas sus la pagina d’acuèlh e dins las balisas meta. Descrivètz qu’es Mobilizon e çò que lo rend especific a aquesta instància en un sol paragraf.", "Do not receive any mail": "Recebre pas de corrièls", "Do you want to participate in {title}?": "Volètz participar a {title} ?", + "Do you wish to {create_event} or {explore_events}?": "Volètz {create_event} o {explore_events} ?", + "Do you wish to {create_group} or {explore_groups}?": "Volètz {create_group} o {explore_groups} ?", "Domain": "Domeni", "Don't show @{organizer} as event host alongside @{group}": "Mostrar pas @{organizer} coma organizator de l’eveniment amb @{group}", "Draft": "Borrolhon", @@ -300,6 +308,7 @@ "General": "General", "General information": "Informacions generalas", "Getting location": "Obtencion de la localizacion", + "Getting there": "I arribar", "Glossary": "Glossari", "Go": "Zo", "Go to the event page": "Anar a la pagina de l’eveniment", @@ -318,6 +327,7 @@ "Group {displayName} created": "Grop {displayName} creat", "Group {groupTitle} reported": "Grop {groupTitle} senhalat", "Groups": "Grops", + "Groups are not enabled on this instance.": "Los grops son pas activés sus aquesta instància.", "Groups are spaces for coordination and preparation to better organize events and manage your community.": "Los grops son d’espacis de coordinacion e de preparacion per melhor organizar d’eveniments e gerir vòstra comunautat.", "Headline picture": "Imatge endavant", "Hide replies": "Rescondre las responsas", @@ -333,6 +343,8 @@ "I participate": "Participi", "I want to allow people to participate without an account.": "Vòli permetre al monde de participar sens compte.", "I want to approve every participation request": "Vòli aprovar cada demanda de participacion", + "ICS feed for events": "Flux ICS pels eveniements", + "ICS/WebCal Feed": "flux ICS/WebCal", "Identities": "Identitats", "Identity": "Identitat", "Identity {displayName} created": "Identitat {displayName} creada", @@ -405,6 +417,7 @@ "Limited places": "Plaças limitadas", "List title": "Títol de la lista", "Load more": "Ne veire mai", + "Loading comments…": "Cargament dels comentaris…", "Loading…": "Cargament…", "Local": "Local", "Locality": "Comuna", @@ -526,6 +539,7 @@ "Only accessible to members of the group": "Accessible sonque als membres del grop", "Only alphanumeric characters and underscores are supported.": "Solament los caractèrs alfanumerics e los jonhents basses son suportats.", "Only alphanumeric lowercased characters and underscores are supported.": "Solament los caractèrs alfanumerics minusculs e los jonhents basses son acceptats.", + "Only group members can access discussions": "Sonque los membres del grop pòdon accedir a las discussions", "Only group moderators can create, edit and delete posts.": "Sonque los moderators de grops pòdon crear, modificar e suprimir de publicacions.", "Open": "Dobèrtas", "Opened reports": "Senhalaments dubèrts", @@ -655,6 +669,7 @@ "Resource provided is not an URL": "La ressorça fornida es pas una URL", "Resources": "Ressorsas", "Restricted": "Restrenchas", + "Return to the group page": "Tornar a la pagina del grop", "Right now": "Ara meteis", "Role": "Ròtle", "Rules": "Règlas", @@ -700,6 +715,7 @@ "Suspend group": "Suspendre lo grop", "Suspended": "Suspendut", "Task lists": "Lista dels prètzfaches", + "Tentative": "Provisòri", "Tentative: Will be confirmed later": "Provisòri : serà confirmat mai tard", "Terms": "Tèrmes", "Terms of service": "Condicions d’utilizacion", @@ -723,6 +739,7 @@ "The event will show as attributed to this group.": "L’eveniment serà mostrat coma atribuit a aqueste grop.", "The event will show as attributed to your personal profile.": "L’eveniment serà mostrat coma atribuit a vòstre perfil.", "The event will show the group as organizer.": "L’eveniment mostrarà lo grop coma organizator.", + "The events you created are not shown here.": "Aquí apareissan los eveniments qu’avètz creats.", "The group will be publicly listed in search results and may be suggested in the explore section. Only public informations will be shown on it's page.": "Lo grop serà listat publicament dins los resultats de recèrca e poirà èsser suggerit sus la pagina « Explorar ». Sonque las informacions publicas seràn mostradas sus la pagina.", "The instance administrator is the person or entity that runs this Mobilizon instance.": "L’administrator de l’instància es la persona o entitat que gerís aquesta instància Mobilizon.", "The member was removed from the group {group}": "Lo membre foguèt suprimit del grop {group}", @@ -741,6 +758,7 @@ "The {default_terms} will be used. They will be translated in the user's language.": "Los {default_terms} seràn utilizat. Seràn traduches dins la lenga de l’utilizaire.", "There are {participants} participants.": "I a pas qu’un participant | I a {participants} participants.", "There will be no way to recover your data.": "I aurà pas cap de biais de recuperar vòstras donadas.", + "There's no discussions yet": "I a pas cap de discussions", "These events may interest you": "Aquestes eveniments pòdon vos interessar", "This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "Aquesta instància Mobilizon e l’organizaire de l’eveniment permeton las participacions anonimas, mas aquò requerís una validacion per email.", "This URL is not supported": "Aquesta URL es pas compotibla", @@ -781,9 +799,11 @@ "Tomorrow": "Deman", "Transfer to {outsideDomain}": "Transferit a {outsideDomain}", "Type": "Tipe", + "Type or select a date…": "Picatz o seleccionatz una data…", "URL": "URL", "URL copied to clipboard": "URL copiada al quicha-papièrs", "Unable to detect timezone.": "Deteccion impossibla de la zòna orària.", + "Unable to save your participation in this browser.": "Fracàs de la salvagarda de vòstra participacion dins aqueste navegador.", "Unfortunately, this instance isn't opened to registrations": "Malaürosament, aquesta instància es pas dubèrta a las inscripcions", "Unfortunately, your participation request was rejected by the organizers.": "Malaürosament, vòstra demanda de participacion es estada refusada pels organizators.", "Unknown": "Desconegut", @@ -808,6 +828,7 @@ "Users": "Utilizaires", "View a reply": "|Veire una responsa|Veire {totalReplies} responsas", "View all": "O veire tot", + "View all events": "Veire totes eveniments", "View all posts": "Veire totas las publicacions", "View all resources": "Veire totas las ressorsas", "View all todos": "Veire totes los todos", @@ -848,6 +869,7 @@ "You are already logged-in.": "Sètz ja connectat.", "You are an organizer.": "Sètz un organizaire.", "You are not an administrator for this group.": "Sètz pas administrator d’aqueste grop.", + "You are not part of any group.": "Fasètz pas part de cap de grop.", "You are participating in this event anonymously": "Participatz a aqueste eveniment d’un biais anonim", "You are participating in this event anonymously but didn't confirm participation": "Participatz a aqueste eveniment d’un biais anonim mas avètz pas encara confirmat vòstra participacion", "You can add tags by hitting the Enter key or by adding a comma": "Podètz ajustar d’etiquetas en tocant la tòca Entrada o en ajustant una vergula", @@ -856,6 +878,7 @@ "You can try another search term or drag and drop the marker on the map": "Podètz ensajar un autre tèrme de recèrca o botar lo marcador sus la mapa", "You can't change your password because you are registered through {provider}.": "Podètz pas cambiar vòstre senhal perque sètz enregistrat via {provider}.", "You can't remove your last identity.": "Podètz pas suprimir vòstra darrièra identitat.", + "You didn't create or join any event yet.": "Avètz pas encara pas creat o participat a un eveniment.", "You don't follow any instances yet.": "Seguissètz pas cap d’instància pel moment.", "You have been disconnected": "Sètz estat desconnectat", "You have been invited by {invitedBy} to the following group:": "{invitedBy} vos a convidat a rejónher lo grop seguent :", @@ -865,6 +888,7 @@ "You have one event today.": "Avètz pas cap d’eveniment uèi | Avètz un eveniment uèi. | Avètz {count} eveniments uèi", "You have one event tomorrow.": "Avètz pas cap d’eveniment deman| Avètz un eveniment deman. | Avètz {count} eveniments deman", "You may also ask to {resend_confirmation_email}.": "Podètz tanben demandar a {resend_confirmation_email}.", + "You may now close this window, or {return_to_event}.": "Ara podètz tampar aquesta fenèstra o {return_to_event}.", "You may now close this window.": "Podètz ara tampar aquesta fenèstra.", "You need to create the group before you create an event.": "Vos cal crear lo grop abans de crear l’eveniment.", "You need to login.": "Vos cal vos connectar.", @@ -911,10 +935,14 @@ "as {identity}": "coma {identity}", "change the world, one byte at a time": "cambiar lo monde, un octet a l’encòp", "contact uninformed": "contacte pas fornit", + "create a group": "crear un grop", + "create an event": "crear un eveniment", "default Mobilizon privacy policy": "politica de confidencialitat per defaut de Mobilizon", "default Mobilizon terms": "tèrmes per defaut de Mobilizon", "digital habits of activists": "los usatges numerics de militants", "e.g. 10 Rue Jangot": "per exemple : 10 carrièra Jangot", + "explore the events": "explorar los eveniments", + "explore the groups": "explorar los grops", "firstDayOfWeek": "1", "fit the needs and uses of the people": "als besonhs e usatges", "full rules": "règlas complètas", @@ -928,6 +956,7 @@ "report #{report_number}": "lo senhalament #{report_number}", "resend confirmation email": "tornar enviar lo messatge de confirmacion", "respect of the fundamental freedoms": "lo respet de las libertats fondamentalas", + "return to the event's page": "tornar a la pagina de l’eveniment", "terms of service": "condicions generalas d’utilizacion", "with another identity…": "amb una autra identitat…", "{actor}'s avatar": "Avatar de {actor}", From 21b99632c2654d6e000b370b39d69b138feb1563 Mon Sep 17 00:00:00 2001 From: Berto Te Date: Wed, 20 Jan 2021 09:02:26 +0000 Subject: [PATCH 073/114] Translated using Weblate (Spanish) Currently translated at 100.0% (241 of 241 strings) Translation: Mobilizon/Backend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/es/ --- priv/gettext/es/LC_MESSAGES/default.po | 496 ++++++++++++------------- 1 file changed, 248 insertions(+), 248 deletions(-) diff --git a/priv/gettext/es/LC_MESSAGES/default.po b/priv/gettext/es/LC_MESSAGES/default.po index 4e86e49cc..7a0e5639c 100644 --- a/priv/gettext/es/LC_MESSAGES/default.po +++ b/priv/gettext/es/LC_MESSAGES/default.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-09-24 14:39+0000\n" -"PO-Revision-Date: 2020-10-29 08:17+0000\n" +"PO-Revision-Date: 2021-01-20 16:18+0000\n" "Last-Translator: Berto Te \n" "Language-Team: Spanish \n" @@ -12,269 +12,269 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1\n" +"X-Generator: Weblate 4.4\n" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:48 +#, elixir-format msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" "Si no solicitaste este correo, simplemente ignóralo. Su contraseña no " "cambiará al menos que use el siguiente enlace para crear una nueva." -#, elixir-format #: lib/web/templates/email/report.html.eex:74 +#, elixir-format msgid "%{title} by %{creator}" msgstr "%{title} por %{creator}" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:58 +#, elixir-format msgid "Activate my account" msgstr "Activar mi cuenta" -#, elixir-format #: lib/web/templates/email/email.html.eex:117 #: lib/web/templates/email/email.text.eex:9 +#, elixir-format msgid "Ask the community on Framacolibri" msgstr "Preguntar a la comunidad en framacolibri" -#, elixir-format #: lib/web/templates/email/report.text.eex:15 +#, elixir-format msgid "Comments" msgstr "Comentarios" -#, elixir-format #: lib/web/templates/email/report.html.eex:72 #: lib/web/templates/email/report.text.eex:11 +#, elixir-format msgid "Event" msgstr "Evento" -#, elixir-format #: lib/web/email/user.ex:48 +#, elixir-format msgid "Instructions to reset your password on %{instance}" msgstr "Instrucciones para restablecer su contraseña en %{instance}" -#, elixir-format #: lib/web/templates/email/report.text.eex:21 +#, elixir-format msgid "Reason" msgstr "Razón" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:61 +#, elixir-format msgid "Reset Password" msgstr "Reinicializar la contraseña" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:41 +#, elixir-format msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." msgstr "" "Restablecer tu contraseña es fácil. Simplemente presione el botón y siga las " "instrucciones. Te tendremos en funcionamiento en poco tiempo." -#, elixir-format #: lib/web/email/user.ex:28 +#, elixir-format msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Instrucciones para confirmar su cuenta Mobilizon en %{instance}" -#, elixir-format #: lib/web/email/admin.ex:24 +#, elixir-format msgid "New report on Mobilizon instance %{instance}" msgstr "Nuevo informe sobre la instancia Mobilizon %{instance}" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 +#, elixir-format msgid "Go to event page" msgstr "Ir a la página del evento" -#, elixir-format #: lib/web/templates/email/report.text.eex:1 +#, elixir-format msgid "New report from %{reporter} on %{instance}" msgstr "Nuevo informe de %{reporter} en %{instance}" -#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:1 +#, elixir-format msgid "Participation approved" msgstr "Participación aprobada" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:13 #: lib/web/templates/email/password_reset.text.eex:1 +#, elixir-format msgid "Password reset" msgstr "Restablecer contraseña" -#, elixir-format #: lib/web/templates/email/password_reset.text.eex:7 +#, elixir-format msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." msgstr "" "Restablecer tu contraseña es fácil. Simplemente haga clic en el enlace a " "continuación y siga las instrucciones. Estarás operacional en muy poco " "tiempo." -#, elixir-format #: lib/web/templates/email/registration_confirmation.text.eex:5 +#, elixir-format msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." msgstr "" "Has creado una cuenta en %{host} con esta dirección de correo electrónico. " "Estás a un clic de activarlo. Si no eras tú, ignora este correo electrónico." -#, elixir-format #: lib/web/email/participation.ex:112 +#, elixir-format msgid "Your participation to event %{title} has been approved" msgstr "Su participación en el evento %{title} ha sido aprobada" -#, elixir-format #: lib/web/email/participation.ex:70 +#, elixir-format msgid "Your participation to event %{title} has been rejected" msgstr "Su participación en el evento %{title} ha sido rechazada" -#, elixir-format #: lib/web/email/event.ex:37 +#, elixir-format msgid "Event %{title} has been updated" msgstr "El evento %{title} ha sido actualizado" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:15 +#, elixir-format msgid "New title: %{title}" msgstr "Nuevo título: %{title}" -#, elixir-format #: lib/web/templates/email/password_reset.text.eex:5 +#, elixir-format msgid "You requested a new password for your account on %{instance}." msgstr "Solicitó una nueva contraseña para su cuenta en %{instancia}." -#, elixir-format #: lib/web/templates/email/email.html.eex:85 +#, elixir-format msgid "Warning" msgstr "Advertencia" -#, elixir-format #: lib/web/email/participation.ex:135 +#, elixir-format msgid "Confirm your participation to event %{title}" msgstr "Confirme su participación en el evento %{title}" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:75 +#, elixir-format msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "Un ID interno para su identidad seleccionada actualmente" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:74 +#, elixir-format msgctxt "terms" msgid "An internal user ID" msgstr "Un ID de usuario interna" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:37 +#, elixir-format msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "" "Cualquier información que recopilemos sobre usted puede usarse de las " "siguientes maneras:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:9 +#, elixir-format msgctxt "terms" msgid "Basic account information" msgstr "Información básica de la cuenta" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:25 +#, elixir-format msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "No comparta ninguna información peligrosa a través de Mobilizon." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:90 +#, elixir-format msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "¿Divulgamos alguna información a terceros?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:68 +#, elixir-format msgctxt "terms" msgid "Do we use cookies?" msgstr "¿Usamos cookies?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:51 +#, elixir-format msgctxt "terms" msgid "How do we protect your information?" msgstr "¿Cómo protegemos tu información?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:29 +#, elixir-format msgctxt "terms" msgid "IPs and other metadata" msgstr "dirección IP y otros metadatos" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:17 +#, elixir-format msgctxt "terms" msgid "Published events and comments" msgstr "Eventos publicados y comentarios" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:64 +#, elixir-format msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "" "Conserva las direcciones IP asociadas con usuarios registrados no más de 12 " "meses." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:76 +#, elixir-format msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Fichas para \"autenticarte\"" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:31 +#, elixir-format msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "" "También podemos conservar los registros del servidor que incluyen la " "dirección IP de cada solicitud a nuestro servidor." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:70 +#, elixir-format msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "" "Almacenamos la siguiente información en tu dispositivo cuando te conectas:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:58 +#, elixir-format msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Haremos un esfuerzo de buena fe para:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:35 +#, elixir-format msgctxt "terms" msgid "What do we use your information for?" msgstr "¿Para qué utilizamos tu información?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:57 +#, elixir-format msgctxt "terms" msgid "What is our data retention policy?" msgstr "¿Cuál es nuestra política de retención de datos?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:67 +#, elixir-format msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Puede eliminar irreversiblemente su cuenta en cualquier momento." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:115 +#, elixir-format msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Cambios a nuestra política de privacidad" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:106 +#, elixir-format msgctxt "terms" msgid "If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site." msgstr "" @@ -284,8 +284,8 @@ msgstr "" "https://en.wikipedia.org/wiki/General_Data_Protection_Regulation\"> " "Reglamento general de protección de datos ) no utilice este sitio ." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:109 +#, elixir-format msgctxt "terms" msgid "If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site." msgstr "" @@ -296,30 +296,30 @@ msgstr "" "Ley de protección de la privacidad en línea para niños ) no utilice este " "sitio." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:117 +#, elixir-format msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "" "Si decidimos cambiar nuestra política de privacidad, publicaremos esos " "cambios en esta página." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:112 +#, elixir-format msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "" "Los requisitos legales pueden ser diferentes si este servidor se encuentra " "en otra jurisdicción." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:103 +#, elixir-format msgctxt "terms" msgid "Site usage by children" msgstr "Uso del sitio por niños" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:47 +#, elixir-format msgctxt "terms" msgid "The email address you provide may be used to send you information, updates and notifications about other people\n interacting with your content or sending you messages and to respond to inquiries, and/or other requests or\n questions." msgstr "" @@ -330,8 +330,8 @@ msgstr "" "consultas y / u otras solicitudes o\n" " preguntas." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:45 +#, elixir-format msgctxt "terms" msgid "To aid moderation of the community, for example comparing your IP address with other known ones to determine ban\n evasion or other violations." msgstr "" @@ -339,8 +339,8 @@ msgstr "" "dirección IP con otras conocidas para determinar la prohibición,\n" " evasión u otras violaciones." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:43 +#, elixir-format msgctxt "terms" msgid "To provide the core functionality of Mobilizon. Depending on this instance's policy you may only be able to\n interact with other people's content and post your own content if you are logged in." msgstr "" @@ -349,89 +349,89 @@ msgstr "" " interactuar con el contenido de otras personas y publicar tu propio " "contenido si ha iniciado sesión." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:6 +#, elixir-format msgctxt "terms" msgid "What information do we collect?" msgstr "¿Qué información recopilamos?" -#, elixir-format #: lib/web/email/user.ex:176 +#, elixir-format msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon en %{instance}: confirma tu dirección de correo electrónico" -#, elixir-format #: lib/web/email/user.ex:152 +#, elixir-format msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon en %{instance}: correo electrónico modificado" -#, elixir-format #: lib/web/email/notification.ex:47 +#, elixir-format msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un evento programado para hoy" msgstr[1] "%{nb_events} eventos planeados hoy" -#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:38 #: lib/web/templates/email/on_day_notification.text.eex:4 +#, elixir-format msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Tienes un evento hoy:" msgstr[1] "Tienes %{total} eventos hoy:" -#, elixir-format #: lib/web/templates/email/group_invite.text.eex:3 +#, elixir-format msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} te acaba de invitar a unirte a su grupo %{group}" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:13 #: lib/web/templates/email/group_invite.text.eex:1 +#, elixir-format msgid "Come along!" msgstr "¡ Únete a nosotros !" -#, elixir-format #: lib/web/email/notification.ex:24 +#, elixir-format msgid "Don't forget to go to %{title}" msgstr "No olvides ir a %{title}" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 +#, elixir-format msgid "Get ready for %{title}" msgstr "Prepárate para %{title}" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:59 +#, elixir-format msgid "See my groups" msgstr "Ver mis grupos" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:45 #: lib/web/templates/email/group_invite.text.eex:5 +#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Para aceptar esta invitación, dirígete a tus grupos." -#, elixir-format #: lib/web/templates/email/before_event_notification.text.eex:5 +#, elixir-format msgid "View the event on: %{link}" msgstr "Ver el evento actualizado en: %{link}" -#, elixir-format #: lib/web/email/group.ex:33 +#, elixir-format msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{Inviter} te ha invitado a unirte al grupo %{group}" -#, elixir-format #: lib/web/email/notification.ex:71 +#, elixir-format msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un evento programado para hoy" msgstr[1] "%{nb_events} eventos planeados hoy" -#, elixir-format #: lib/web/email/notification.ex:93 +#, elixir-format msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Una solicitud para participar en el evento %{title} a procesar" @@ -439,21 +439,21 @@ msgstr[1] "" "%{number_participation_requests} solicitudes para participar en el evento " "%{title} a procesar" -#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 +#, elixir-format msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Tienes un evento hoy:" msgstr[1] "Tienes %{total} eventos hoy:" -#, elixir-format #: lib/service/metadata/utils.ex:52 +#, elixir-format msgid "The event organizer didn't add any description." msgstr "El organizador del evento no agregó ninguna descripción." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:54 +#, elixir-format msgctxt "terms" msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." msgstr "" @@ -463,8 +463,8 @@ msgstr "" "el tráfico entre tus aplicaciones y la API, están protegidas con SSL /TLS, y " "su contraseña se codifica con un fuerte algoritmo unidireccional." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:94 +#, elixir-format msgctxt "terms" msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." msgstr "" @@ -477,20 +477,20 @@ msgstr "" "de nuestro sitio o proteger los derechos, nuestros o de otros, propiedades o " "seguridad." -#, elixir-format #: lib/web/templates/api/terms.html.eex:23 +#, elixir-format msgctxt "terms" msgid "Accepting these Terms" msgstr "Aceptar estos Términos" -#, elixir-format #: lib/web/templates/api/terms.html.eex:27 +#, elixir-format msgctxt "terms" msgid "Changes to these Terms" msgstr "Cambios a estos Términos de uso" -#, elixir-format #: lib/web/templates/api/terms.html.eex:85 +#, elixir-format msgctxt "terms" msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." msgstr "" @@ -502,16 +502,16 @@ msgstr "" "responsable y asume todos los riesgos derivados de su uso o su confianza en " "cualquier contenido." -#, elixir-format #: lib/web/templates/api/terms.html.eex:60 +#, elixir-format msgctxt "terms" msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" msgstr "" "Además, acepta que no hará nada de lo siguiente en relación con el Servicio " "u otros usuarios:" -#, elixir-format #: lib/web/templates/api/terms.html.eex:65 +#, elixir-format msgctxt "terms" msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." msgstr "" @@ -519,23 +519,23 @@ msgstr "" "velocidad u otras características diseñadas para proteger el Servicio, los " "usuarios del Servicio o terceros." -#, elixir-format #: lib/web/templates/api/terms.html.eex:64 +#, elixir-format msgctxt "terms" msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" msgstr "" "Recopilar información personal sobre otros usuarios, o intimidar, amenazar, " "acosar o acosar a otros usuarios del Servicio;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:55 +#, elixir-format msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "" "Contenido que es ilegal o ilegal, que de otro modo crearía responsabilidad;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:56 +#, elixir-format msgctxt "terms" msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" msgstr "" @@ -543,48 +543,48 @@ msgstr "" "secreto comercial, derecho de autor, derecho de privacidad, derecho de " "publicidad u otro derecho intelectual u otro derecho de cualquier parte;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:42 +#, elixir-format msgctxt "terms" msgid "Creating Accounts" msgstr "Crear cuentas" -#, elixir-format #: lib/web/templates/api/terms.html.eex:89 +#, elixir-format msgctxt "terms" msgid "Entire Agreement" msgstr "Acuerdo completo" -#, elixir-format #: lib/web/templates/api/terms.html.eex:92 +#, elixir-format msgctxt "terms" msgid "Feedback" msgstr "Comentarios" -#, elixir-format #: lib/web/templates/api/terms.html.eex:83 +#, elixir-format msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Hipervínculos y contenido de terceros" -#, elixir-format #: lib/web/templates/api/terms.html.eex:88 +#, elixir-format msgctxt "terms" msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." msgstr "" "Si incumple alguno de estos Términos, tenemos el derecho de suspender o " "deshabilitar su acceso o uso del Servicio." -#, elixir-format #: lib/web/templates/api/terms.html.eex:63 +#, elixir-format msgctxt "terms" msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" msgstr "" "Suplantar o publicar en nombre de cualquier persona o entidad o tergiversar " "su afiliación con una persona o entidad;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:48 +#, elixir-format msgctxt "terms" msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." msgstr "" @@ -592,26 +592,26 @@ msgstr "" "poner a disposición contenido. Usted es responsable del contenido que pone a " "disposición del Servicio, incluida su legalidad, confiabilidad y adecuación." -#, elixir-format #: lib/web/templates/api/terms.html.eex:39 +#, elixir-format msgctxt "terms" msgid "Privacy Policy" msgstr "Política de privacidad" -#, elixir-format #: lib/web/templates/api/terms.html.eex:95 +#, elixir-format msgctxt "terms" msgid "Questions & Contact Information" msgstr "Preguntas e información de contacto" -#, elixir-format #: lib/web/templates/api/terms.html.eex:87 +#, elixir-format msgctxt "terms" msgid "Termination" msgstr "Terminación" -#, elixir-format #: lib/web/templates/api/terms.html.eex:62 +#, elixir-format msgctxt "terms" msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" msgstr "" @@ -620,14 +620,14 @@ msgstr "" "Servicio o que pueda dañar, deshabilitar, sobrecargar o perjudicar el " "funcionamiento del Servicio;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:47 +#, elixir-format msgctxt "terms" msgid "Your Content & Conduct" msgstr "Su contenido y conducta" -#, elixir-format #: lib/web/templates/api/terms.html.eex:84 +#, elixir-format msgctxt "terms" msgid "%{instance_name} makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "" @@ -639,8 +639,8 @@ msgstr "" "no implica la aprobación por % {instance_name} del sitio. El uso de " "cualquier sitio web vinculado es bajo el propio riesgo del usuario." -#, elixir-format #: lib/web/templates/api/terms.html.eex:68 +#, elixir-format msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "" @@ -649,16 +649,16 @@ msgstr "" "código de conducta y las reglas de moderación. Romper esas reglas también " "puede resultar en que su cuenta sea deshabilitada o suspendida." -#, elixir-format #: lib/web/templates/api/terms.html.eex:81 +#, elixir-format msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "" "Para obtener detalles completos sobre el software Mobilizon ver aquí ." -#, elixir-format #: lib/web/templates/api/terms.html.eex:18 +#, elixir-format msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "" @@ -668,8 +668,8 @@ msgstr "" "Estos son nuestros términos de servicio (\"Términos\"). Por favor, léalos " "atentamente." -#, elixir-format #: lib/web/templates/api/terms.html.eex:33 +#, elixir-format msgctxt "terms" msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." msgstr "" @@ -678,8 +678,8 @@ msgstr "" "página de nuestro sitio web. Es su responsabilidad revisar el sitio web " "regularmente para ver los cambios a estos Términos." -#, elixir-format #: lib/web/templates/api/terms.html.eex:53 +#, elixir-format msgctxt "terms" msgid "In order to make %{instance_name} a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" msgstr "" @@ -687,8 +687,8 @@ msgstr "" "publique, enlace ni ponga a disposición en el Servicio ni a través de él " "ninguno de los siguientes:" -#, elixir-format #: lib/web/templates/api/terms.html.eex:57 +#, elixir-format msgctxt "terms" msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" msgstr "" @@ -696,8 +696,8 @@ msgstr "" "de teléfono, direcciones de correo electrónico, números de Seguro Social y " "números de tarjetas de crédito); y" -#, elixir-format #: lib/web/templates/api/terms.html.eex:52 +#, elixir-format msgctxt "terms" msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." msgstr "" @@ -709,8 +709,8 @@ msgstr "" "instancias termina aquí. Si por alguna razón, alguna otra instancia no " "elimina el contenido, no podemos ser responsables." -#, elixir-format #: lib/web/templates/api/terms.html.eex:90 +#, elixir-format msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "" @@ -719,8 +719,8 @@ msgstr "" "cualquier acuerdo previo entre usted y % {instance_name} relacionado " "con su uso de el servicio." -#, elixir-format #: lib/web/templates/api/terms.html.eex:80 +#, elixir-format msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "" @@ -730,16 +730,16 @@ msgstr "" "significa que están autorizados e incluso alentados a tomar el código " "fuente, modificarlo y usarlo." -#, elixir-format #: lib/web/templates/api/terms.html.eex:58 +#, elixir-format msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "" "Virus, datos corruptos u otros archivos o códigos dañinos, perjudiciales o " "destructivos." -#, elixir-format #: lib/web/templates/api/terms.html.eex:51 +#, elixir-format msgctxt "terms" msgid "You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time. Web server access logs might also be stored for some time in the system." msgstr "" @@ -749,29 +749,29 @@ msgstr "" "un período de tiempo. Los registros de acceso al servidor web también pueden " "almacenarse durante algún tiempo en el sistema." -#, elixir-format #: lib/web/templates/api/terms.html.eex:96 +#, elixir-format msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "" "Las preguntas o comentarios sobre el Servicio pueden dirigirse a% {contact}" -#, elixir-format #: lib/web/templates/api/terms.html.eex:79 +#, elixir-format msgctxt "terms" msgid "Source code" msgstr "Código fuente" -#, elixir-format #: lib/web/templates/api/terms.html.eex:93 +#, elixir-format msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "" "Nos encantan los comentarios. Háganos saber lo que piensa del Servicio, " "estos Términos y, en general, % {instance_name} ." -#, elixir-format #: lib/web/templates/api/terms.html.eex:74 +#, elixir-format msgctxt "terms" msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." msgstr "" @@ -784,16 +784,16 @@ msgstr "" "incumplir estos términos o por otros comportamientos que consideren " "inapropiados, amenazantes, ofensivos o dañinos." -#, elixir-format #: lib/web/templates/api/terms.html.eex:6 +#, elixir-format msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "" "% {instance_name} no usará ni transmitirá ni revenderá sus datos " "personales" -#, elixir-format #: lib/web/templates/api/terms.html.eex:44 +#, elixir-format msgctxt "terms" msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact its contributors directly." msgstr "" @@ -802,8 +802,8 @@ msgstr "" "de Mobilizon, comuníquese directamente con sus colaboradores ." -#, elixir-format #: lib/web/templates/api/terms.html.eex:77 +#, elixir-format msgctxt "terms" msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." msgstr "" @@ -811,8 +811,8 @@ msgstr "" "alojada en la instancia esté moderada adecuadamente de acuerdo con las " "reglas definidas." -#, elixir-format #: lib/web/templates/api/terms.html.eex:98 +#, elixir-format msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "" @@ -821,8 +821,8 @@ msgstr "" ">App.net privacy policies, also licensed under CC BY-SA." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:119 +#, elixir-format msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "" @@ -831,22 +831,22 @@ msgstr "" "políticas de privacidad, también bajo licencia CC BY-SA." -#, elixir-format #: lib/web/templates/api/terms.html.eex:3 +#, elixir-format msgctxt "terms" msgid "Short version" msgstr "Version corta" -#, elixir-format #: lib/web/templates/api/terms.html.eex:9 +#, elixir-format msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "" "El servicio se brinda sin garantías y estos términos pueden cambiar en el " "futuro" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:118 +#, elixir-format msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "" @@ -854,8 +854,8 @@ msgstr "" "licenses/by-sa/4.0/\"> CC BY-SA . Se actualizó por última vez el 18 de " "junio de 2020." -#, elixir-format #: lib/web/templates/api/terms.html.eex:97 +#, elixir-format msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "" @@ -863,85 +863,85 @@ msgstr "" "licenses/by-sa/4.0/\"> CC BY-SA . Se actualizó por última vez el 22 de " "junio de 2020." -#, elixir-format #: lib/web/templates/api/terms.html.eex:8 +#, elixir-format msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "" "Debe respetar las reglas de otras personas y % {instance_name} al " "usar el servicio" -#, elixir-format #: lib/web/templates/api/terms.html.eex:7 +#, elixir-format msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "Debe respetar la ley cuando use % {instance_name} " -#, elixir-format #: lib/web/templates/api/terms.html.eex:5 +#, elixir-format msgctxt "terms" msgid "Your content is yours" msgstr "Tu contenido es tuyo" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 +#, elixir-format msgid "Confirm my e-mail address" msgstr "Confirmar mi dirección de correo electrónico" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 +#, elixir-format msgid "Confirm your e-mail" msgstr "Confirme su email" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 +#, elixir-format msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "¡Hola! Te acabas de registrar para unirte a este evento: «% {title}». " "Confirme la dirección de correo electrónico que proporcionó:" -#, elixir-format #: lib/web/templates/email/email.html.eex:114 #: lib/web/templates/email/email.text.eex:8 +#, elixir-format msgid "Need help? Is something not working as expected?" msgstr "¿Necesita ayuda? ¿Algo no está funcionando correctamente?" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:38 +#, elixir-format msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "" "Creó una cuenta en % {host} con esta dirección de correo " "electrónico. Estás a un clic de activarlo." -#, elixir-format #: lib/web/templates/email/report.html.eex:13 +#, elixir-format msgid "New report on %{instance}" msgstr "Nuevo informe sobre % {instancia} " -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:38 +#, elixir-format msgid "The email address for your account on %{host} is being changed to:" msgstr "" "La dirección de correo electrónico de su cuenta en % {host} se " "cambiará a:" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:38 +#, elixir-format msgid "You requested a new password for your account on %{instance}." msgstr "Solicitó una nueva contraseña para su cuenta en % {instancia} ." -#, elixir-format #: lib/web/templates/email/email.text.eex:5 +#, elixir-format msgid "Please do not use it for real purposes." msgstr "Por favor no lo use de ninguna manera real." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 #: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 +#, elixir-format msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -951,9 +951,9 @@ msgstr[1] "" "Si necesitas cancelar su participación, sólo accede a la página del evento " "mediante el enlace debajo y presiona el botón." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:38 #: lib/web/templates/email/pending_participation_notification.text.eex:4 +#, elixir-format msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "Tiene una solicitud de participación pendiente de procesar:" @@ -961,66 +961,66 @@ msgstr[1] "" "Tienes %{number_participation_requests} solicitudes de participación " "pendientes de procesar:" -#, elixir-format #: lib/web/templates/email/email.text.eex:11 +#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} es un servidor de Mobilizon." -#, elixir-format #: lib/web/templates/email/email.html.eex:142 +#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instancia} es una instancia de Mobilizon." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 +#, elixir-format msgid "A request is pending!" msgstr "¡Hay una solicitud pendiente!" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 +#, elixir-format msgid "An event is upcoming!" msgstr "¡Se acerca un evento!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 +#, elixir-format msgid "Confirm new email" msgstr "Confirme su email" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:84 +#, elixir-format msgid "End" msgstr "Final" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:21 +#, elixir-format msgid "End %{ends_on}" msgstr "Final% {ends_on}" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:13 #: lib/web/templates/email/event_updated.text.eex:1 +#, elixir-format msgid "Event update!" msgstr "¡Evento actualizado!" -#, elixir-format #: lib/web/templates/email/report.html.eex:88 +#, elixir-format msgid "Flagged comments" msgstr "Comentarios marcados" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 +#, elixir-format msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "" "Buenas noticias: uno de los organizadores del evento acaba de aprobar su " "solicitud. Actualice su calendario, ¡porque ya está en la lista de invitados!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:38 #: lib/web/templates/email/email_changed_new.text.eex:3 +#, elixir-format msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "¡Hola! Parece que desea cambiar la dirección de correo electrónico vinculada " @@ -1028,16 +1028,16 @@ msgstr "" "botón de abajo para confirmar el cambio. Luego podrá iniciar sesión en% " "{instance} con esta nueva dirección de correo electrónico." -#, elixir-format #: lib/web/templates/email/email_changed_old.text.eex:3 +#, elixir-format msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" msgstr "" "¡Hola! Solo una nota rápida para confirmar que la dirección de correo " "electrónico vinculada a su cuenta en% {host} se ha cambiado de esta a:" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:41 #: lib/web/templates/email/email_changed_old.html.eex:65 lib/web/templates/email/email_changed_old.text.eex:5 +#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "" "Si no activó este cambio usted mismo, es probable que alguien haya obtenido " @@ -1045,174 +1045,174 @@ msgstr "" "inmediatamente. Si no puede iniciar sesión, comuníquese con el administrador " "en% {host}." -#, elixir-format #: lib/web/templates/email/password_reset.text.eex:12 +#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." msgstr "" "Si no activó el cambio usted mismo, ignore este mensaje. Su contraseña no se " "cambiará hasta que haga clic en el enlace de arriba." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 +#, elixir-format msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Si no activó esta alerta, puede ignorarla con seguridad." -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 +#, elixir-format msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "" "Si necesitas cancelar su participación, sólo accede a la página del evento " "mediante el enlace debajo y presiona el botón." -#, elixir-format #: lib/web/templates/email/email.html.eex:143 #: lib/web/templates/email/email.text.eex:11 +#, elixir-format msgid "Learn more about Mobilizon here!" msgstr "¡Aprenda más sobre Mobilizon aquí!" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:94 +#, elixir-format msgid "Location" msgstr "Ubicación" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:104 +#, elixir-format msgid "Location address was removed" msgstr "Dirección física fue eliminada" -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:51 #: lib/web/templates/email/pending_participation_notification.text.eex:6 +#, elixir-format msgid "Manage pending requests" msgstr "Gestionar solicitudes de participación pendientes" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 +#, elixir-format msgid "Nearly there!" msgstr "¡Ya casi estas!" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 +#, elixir-format msgid "New email confirmation" msgstr "Nueva confirmación de correo electrónico" -#, elixir-format #: lib/web/templates/email/report.html.eex:106 +#, elixir-format msgid "Reasons for report" msgstr "Razones para informar" -#, elixir-format #: lib/web/templates/email/report.html.eex:39 +#, elixir-format msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "Alguien en % {instancia} informó el siguiente contenido:" -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 +#, elixir-format msgid "Sorry! You're not going." msgstr "¡Lo siento! No vas." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:74 +#, elixir-format msgid "Start" msgstr "Inicio" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:18 +#, elixir-format msgid "Start %{begins_on}" msgstr "Inicio% {starts_on}" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:3 +#, elixir-format msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Ha habido cambios para% {title}, así que pensamos en avisarle." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:55 #: lib/web/templates/email/event_updated.text.eex:11 +#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Este evento ha sido cancelado por sus organizadores. ¡Lo siento!" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:51 #: lib/web/templates/email/event_updated.text.eex:7 +#, elixir-format msgid "This event has been confirmed" msgstr "El evento ha sido confirmado" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:53 #: lib/web/templates/email/event_updated.text.eex:9 +#, elixir-format msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "" "Este evento aún no se ha confirmado: los organizadores te avisarán si lo " "confirman." -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 +#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "" "Lamentablemente, los organizadores rechazaron tu solicitud de participación." -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:51 +#, elixir-format msgid "Verify your email address" msgstr "Verifica tu dirección de correo electrónico" -#, elixir-format #: lib/web/templates/email/report.html.eex:126 +#, elixir-format msgid "View report" msgstr "Ver el informe" -#, elixir-format #: lib/web/templates/email/report.text.eex:24 +#, elixir-format msgid "View report:" msgstr "Ver el informe:" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:58 #: lib/web/templates/email/event_participation_confirmed.html.eex:58 +#, elixir-format msgid "Visit event page" msgstr "Visita la página del evento" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:121 +#, elixir-format msgid "Visit the updated event page" msgstr "Visita la página del evento actualizada" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:23 +#, elixir-format msgid "Visit the updated event page: %{link}" msgstr "Ver el evento actualizado en: %{link}" -#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 +#, elixir-format msgid "What's up this week?" msgstr "¿Qué pasa esta semana?" -#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 +#, elixir-format msgid "What's up today?" msgstr "Qué pasa hoy?" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 +#, elixir-format msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" "Si desea actualizar o cancelar su asistencia, simplemente acceda a la página " "del evento a través del enlace de arriba y haga clic en el botón Asistir." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:64 #: lib/web/templates/email/pending_participation_notification.text.eex:8 +#, elixir-format msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" "Recibió este correo electrónico porque eligió recibir notificaciones de " @@ -1220,130 +1220,130 @@ msgstr "" "cambiar la configuración de notificaciones en la configuración de su cuenta " "de usuario en «Notificaciones»." -#, elixir-format #: lib/web/templates/email/event_participation_rejected.text.eex:5 +#, elixir-format msgid "You issued a request to attend %{title}." msgstr "Envió una solicitud para asistir a %{title}." -#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 +#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Solicitaste participar en el evento %{title}." -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:13 #: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#, elixir-format msgid "You're going!" msgstr "¡Vas!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 +#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "Si no activó el cambio usted mismo, ignore este mensaje." -#, elixir-format #: lib/web/templates/email/email.html.eex:89 +#, elixir-format msgid "Please do not use it for real purposes." msgstr "Por favor no lo use de ninguna manera real." -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 +#, elixir-format msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "" "Si cree que esto es un error, puede comunicarse con los administradores del " "grupo para que lo puedan integrar de nuevo." -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 +#, elixir-format msgid "So long, and thanks for the fish!" msgstr "¡Hasta luego y gracias por el pescado!" -#, elixir-format #: lib/web/email/group.ex:63 +#, elixir-format msgid "You have been removed from group %{group}" msgstr "Ha sido eliminado del grupo %{group}" -#, elixir-format #: lib/web/templates/email/group_member_removal.text.eex:3 +#, elixir-format msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." msgstr "" "Se le ha eliminado del grupo %{group}. Ya no podrá acceder al contenido " "privado de este grupo." -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:38 +#, elixir-format msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "" "%{inviter} le acaba de invitar a unirse a su grupo% {link_start} " "% {group} % {link_end}" -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:38 +#, elixir-format msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "" "Ha sido eliminado del grupo% {link_start} % {group} % {link_end}. Ya " "no podrá acceder al contenido privado de este grupo." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:54 #: lib/web/templates/email/group_suspension.text.eex:7 +#, elixir-format msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "" "Como este grupo estaba ubicado en otra instancia, seguirá funcionando para " "otras instancias además de esta." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:46 #: lib/web/templates/email/group_suspension.text.eex:5 +#, elixir-format msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "" "Como este grupo estaba ubicado en esta instancia, todos sus datos se han " "eliminado de forma irremediable." -#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:38 #: lib/web/templates/email/group_deletion.text.eex:3 +#, elixir-format msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "" "El administrador %{author} ha eliminado el grupo %{group}. Todos los " "eventos, discusiones, publicaciones y tareas del grupo se han eliminado ." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:13 #: lib/web/templates/email/group_suspension.text.eex:1 +#, elixir-format msgid "The group %{group} has been suspended on %{instance}!" msgstr "¡El grupo %{group} ha sido suspendido en %{instance}!" -#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:13 #: lib/web/templates/email/group_deletion.text.eex:1 +#, elixir-format msgid "The group %{group} was deleted on %{instance}!" msgstr "¡El grupo %{group} fue eliminado en %{instance}!" -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:38 #: lib/web/templates/email/group_suspension.text.eex:3 +#, elixir-format msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" "El equipo de moderación de su instancia ha decidido suspender a %{group_name}" " (%{group_address}). Ya no eres miembro de este grupo." -#, elixir-format #: lib/web/email/group.ex:136 +#, elixir-format msgid "The group %{group} has been deleted on %{instance}" msgstr "El grupo %{group} se eliminó en %{instance}" -#, elixir-format #: lib/web/email/group.ex:97 +#, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "El grupo %{group} ha sido suspendido en %{instance}" -#, elixir-format #: lib/web/templates/api/terms.html.eex:24 +#, elixir-format msgctxt "terms" msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." msgstr "" @@ -1351,8 +1351,8 @@ msgstr "" "todos los términos a continuación. Si estos términos no son claros de alguna " "manera, háganoslo saber poniéndose en contacto con %{contact}." -#, elixir-format #: lib/web/templates/api/terms.html.eex:40 +#, elixir-format msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "" @@ -1360,22 +1360,22 @@ msgstr "" "sobre los usuarios del Servicio, consulte nuestra " "política de privacidad ." -#, elixir-format #: lib/web/templates/api/terms.html.eex:36 +#, elixir-format msgctxt "terms" msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." msgstr "" "Si continúa utilizando el Servicio después de que los Términos revisados " "entren en vigencia, entonces ha aceptado los Términos revisados." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:78 +#, elixir-format msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "Si eliminas esta información, deberás iniciar sesión nuevamente." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:80 +#, elixir-format msgctxt "terms" msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." msgstr "" @@ -1386,22 +1386,22 @@ msgstr "" "información solo dejará de mostrar el estado de participación en tu " "navegador." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:87 +#, elixir-format msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "" "Nota: Estas informaciones se almacenan en tu almacenamiento local y no en " "tus cookies." -#, elixir-format #: lib/web/templates/api/terms.html.eex:71 +#, elixir-format msgctxt "terms" msgid "Our responsibility" msgstr "Nuestra responsabilidad" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:61 +#, elixir-format msgctxt "terms" msgid "Retain server logs containing the IP address of all requests to this server, insofar as such logs are kept, no more than 90 days." msgstr "" @@ -1409,9 +1409,9 @@ msgstr "" "las solicitudes a este servidor, en la medida en que dichos registros se " "mantengan, no más de 90 días." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 +#, elixir-format msgctxt "terms" msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary to help you understand them better." msgstr "" @@ -1420,8 +1420,8 @@ msgstr "" "Proporcionamos un glosario para ayudarlo a " "comprenderlos mejor." -#, elixir-format #: lib/web/templates/api/terms.html.eex:45 +#, elixir-format msgctxt "terms" msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." msgstr "" @@ -1429,8 +1429,8 @@ msgstr "" "resultado de que otra persona use su correo electrónico o contraseña, ya sea " "con o sin su conocimiento." -#, elixir-format #: lib/web/templates/api/terms.html.eex:50 +#, elixir-format msgctxt "terms" msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." msgstr "" @@ -1440,8 +1440,8 @@ msgstr "" "todos sus derechos sobre el contenido que publica, vincula y de lo contrario " "pone a disposición en oa través del Servicio." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:10 +#, elixir-format msgctxt "terms" msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter an email address, a password (hashed) and at least an username. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" @@ -1459,8 +1459,8 @@ msgstr "" "imagen del encabezado siempre se listan públicamente. Sin " "embargo, también puedes visitar este servidor sin registrarse." -#, elixir-format #: lib/web/templates/api/terms.html.eex:30 +#, elixir-format msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" @@ -1468,8 +1468,8 @@ msgstr "" "Por ejemplo, es posible que necesitemos cambiar estos Términos si " "presentamos una nueva función o por alguna otra razón." -#, elixir-format #: lib/web/templates/api/terms.html.eex:20 +#, elixir-format msgctxt "terms" msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by Framasoft, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the \"About this instance\" page." msgstr "" @@ -1484,8 +1484,8 @@ msgstr "" "encontrar más información sobre esta instancia en la página \"Acerca de esta instancia\" ." -#, elixir-format #: lib/web/templates/api/terms.html.eex:43 +#, elixir-format msgctxt "terms" msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to %{instance_name}." msgstr "" @@ -1494,8 +1494,8 @@ msgstr "" "autorizado a los datos de su cuenta y cualquier otra información que " "proporcione a % {instance_name} ." -#, elixir-format #: lib/web/templates/api/terms.html.eex:49 +#, elixir-format msgctxt "terms" msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." msgstr "" @@ -1508,8 +1508,8 @@ msgstr "" "visibilidad que ha establecido para el contenido. No modificaremos la " "visibilidad del contenido que ha establecido." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:19 +#, elixir-format msgctxt "terms" msgid "Your events and comments are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." msgstr "" @@ -1521,8 +1521,8 @@ msgstr "" "servidor y cualquier servidor receptor puede ver dichos mensajes, y los " "destinatarios pueden capturar, copiar o de incluso volver a compartirlos." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:99 +#, elixir-format msgctxt "terms" msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." msgstr "" @@ -1531,179 +1531,179 @@ msgstr "" "mensajes directos se entregan a los servidores de los destinatarios, en la " "medida en que estos destinatarios residen en un servidor diferente a este." -#, elixir-format #: lib/web/templates/email/event_participation_confirmed.text.eex:4 +#, elixir-format msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Ha confirmado su participación. Actualice su calendario, ¡porque ya está en " "la lista de invitados!" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:38 #: lib/web/templates/email/event_participation_confirmed.html.eex:38 +#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Solicitaste participar en el evento %{title}." -#, elixir-format #: lib/web/email/participation.ex:91 +#, elixir-format msgid "Your participation to event %{title} has been confirmed" msgstr "Su participación en el evento %{title} ha sido aprobada" -#, elixir-format #: lib/web/templates/email/report.html.eex:41 +#, elixir-format msgid "%{reporter} reported the following content." msgstr "" "% {reporter_name} (% {reporter_username}) informó el siguiente " "contenido." -#, elixir-format #: lib/web/templates/email/report.text.eex:5 +#, elixir-format msgid "Group %{group} was reported" msgstr "Se informó el grupo %{group}" -#, elixir-format #: lib/web/templates/email/report.html.eex:51 +#, elixir-format msgid "Group reported" msgstr "Grupo informado" -#, elixir-format #: lib/web/templates/email/report.text.eex:7 +#, elixir-format msgid "Profile %{profile} was reported" msgstr "Se informó el perfil %{profile}" -#, elixir-format #: lib/web/templates/email/report.html.eex:56 +#, elixir-format msgid "Profile reported" msgstr "Perfil informado" -#, elixir-format #: lib/web/templates/email/event_participation_confirmed.html.eex:45 +#, elixir-format msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Ahora ha confirmado su participación. Actualice su calendario, ¡porque ya " "está en la lista de invitados!" -#, elixir-format #: lib/mobilizon/posts/post.ex:94 +#, elixir-format msgid "A text is required for the post" msgstr "Se requiere un texto para la publicación" -#, elixir-format #: lib/mobilizon/posts/post.ex:93 +#, elixir-format msgid "A title is required for the post" msgstr "Se requiere un título para la publicación" -#, elixir-format #: lib/web/templates/email/instance_follow.text.eex:3 +#, elixir-format msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "%{name} (%{domain}) sólo solicitó seguir su instancia." -#, elixir-format #: lib/web/email/follow.ex:54 +#, elixir-format msgid "%{name} requests to follow your instance" msgstr "%{name}solicita seguir tu instancia" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:38 +#, elixir-format msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "" "%{name} (%{domain}) solo pedí seguir tu instancia. Si acepta, su " "instancia recibirá todos los eventos públicos para su instancia." -#, elixir-format #: lib/web/templates/email/instance_follow.text.eex:4 +#, elixir-format msgid "If you accept, this instance will receive all of your public events." msgstr "Si acepta, esta instancia recibirá todos sus eventos públicos." -#, elixir-format #: lib/web/email/follow.ex:48 +#, elixir-format msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "La instancia %{name} (%{domain}) solicita seguir tu instancia" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:66 +#, elixir-format msgid "See the federation settings" msgstr "Ver la configuración de la federación" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:52 #: lib/web/templates/email/instance_follow.text.eex:6 +#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "Para aceptar esta invitación, dirígete a tus grupos." -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:13 #: lib/web/templates/email/instance_follow.text.eex:1 +#, elixir-format msgid "Want to connect?" msgstr "¿Quieres conectarte?" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:45 #: lib/web/templates/email/instance_follow.text.eex:5 +#, elixir-format msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "" "Nota: el hecho que %{name} (%{domain} te siga, no implica necesariamente que " "sigas esta instancia, pero puedes solicitar seguirla también." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 +#, elixir-format msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "¡Hola! Te acabas de registrar para unirte a este evento: «% {title}». " "Confirme la dirección de correo electrónico que proporcionó:" -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:38 +#, elixir-format msgid "You issued a request to attend %{title}." msgstr "Envió una solicitud para asistir a %{title}." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:64 +#, elixir-format msgid "Event title" msgstr "Título del evento" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:38 +#, elixir-format msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Ha habido cambios para% {title}, así que pensamos en avisarle." -#, elixir-format #: lib/web/templates/error/500_page.html.eex:46 +#, elixir-format msgid "The Mobilizon server seems to be temporarily down." msgstr "El servidor de Mobilizon parece estar temporalmente inactivo." -#, elixir-format #: lib/web/templates/error/500_page.html.eex:7 +#, elixir-format msgid "This page is not correct" msgstr "Esta página no es correcta" -#, elixir-format #: lib/web/templates/error/500_page.html.eex:45 +#, elixir-format msgid "We're sorry, but something went wrong on our end." msgstr "Lo sentimos, pero algo salió mal por nuestra parte." -#, elixir-format #: lib/web/templates/email/email.html.eex:88 #: lib/web/templates/email/email.text.eex:4 +#, elixir-format msgid "This is a demonstration site to test Mobilizon." msgstr "Este es un sitio de demostración para probar Mobilizon." -#, elixir-format #: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +#, elixir-format msgid "%{name}'s feed" -msgstr "" +msgstr "Flujo de %{name}" -#, elixir-format #: lib/service/export/feed.ex:77 +#, elixir-format msgid "%{actor}'s private events feed on %{instance}" -msgstr "" +msgstr "Flujo de eventos privados de %{actor} a %{instance}" -#, elixir-format #: lib/service/export/feed.ex:72 -msgid "%{actor}'s public events feed on %{instance}" -msgstr "" - #, elixir-format +msgid "%{actor}'s public events feed on %{instance}" +msgstr "Flujo público de eventos de %{actor} a %{instance}" + #: lib/service/export/feed.ex:203 +#, elixir-format msgid "Feed for %{email} on %{instance}" -msgstr "" +msgstr "Flujo para %{email} en %{instance}" From ed2878ed052f2dc926454593abfef1e403cf128b Mon Sep 17 00:00:00 2001 From: Taru Luojola Date: Tue, 19 Jan 2021 15:32:41 +0000 Subject: [PATCH 074/114] Translated using Weblate (Finnish) Currently translated at 100.0% (241 of 241 strings) Translation: Mobilizon/Backend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/fi/ --- priv/gettext/fi/LC_MESSAGES/default.po | 498 ++++++++++++------------- 1 file changed, 249 insertions(+), 249 deletions(-) diff --git a/priv/gettext/fi/LC_MESSAGES/default.po b/priv/gettext/fi/LC_MESSAGES/default.po index 34540ce97..61f948e59 100644 --- a/priv/gettext/fi/LC_MESSAGES/default.po +++ b/priv/gettext/fi/LC_MESSAGES/default.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-17 12:51+0000\n" -"PO-Revision-Date: 2020-10-29 15:52+0000\n" -"Last-Translator: Ville Ranki \n" +"PO-Revision-Date: 2021-01-20 16:18+0000\n" +"Last-Translator: Taru Luojola \n" "Language-Team: Finnish \n" "Language: fi\n" @@ -12,265 +12,265 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1\n" +"X-Generator: Weblate 4.4\n" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:48 +#, elixir-format msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" "Jos et lähettänyt pyyntöä, voit jättää tämän viestin huomiotta. Salasanasi " "ei vaihdu, ennen kuin käytät alla olevaa linkkiä ja luot uuden salasanan." -#, elixir-format #: lib/web/templates/email/report.html.eex:74 +#, elixir-format msgid "%{title} by %{creator}" msgstr "%{title} luojalta %{creator}" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:58 +#, elixir-format msgid "Activate my account" msgstr "Aktivoi tilini" -#, elixir-format #: lib/web/templates/email/email.html.eex:117 #: lib/web/templates/email/email.text.eex:9 +#, elixir-format msgid "Ask the community on Framacolibri" msgstr "Kysy yhteisöltä Framacolibrissa" -#, elixir-format #: lib/web/templates/email/report.text.eex:15 +#, elixir-format msgid "Comments" msgstr "Kommentit" -#, elixir-format #: lib/web/templates/email/report.html.eex:72 #: lib/web/templates/email/report.text.eex:11 +#, elixir-format msgid "Event" msgstr "Tapahtuma" -#, elixir-format #: lib/web/email/user.ex:48 +#, elixir-format msgid "Instructions to reset your password on %{instance}" msgstr "Ohjeet salasanan palauttamiseen palvelimella %{instance}" -#, elixir-format #: lib/web/templates/email/report.text.eex:21 +#, elixir-format msgid "Reason" msgstr "Syy" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:61 +#, elixir-format msgid "Reset Password" msgstr "Palauta salasana" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:41 +#, elixir-format msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." msgstr "" "Salasana on helppo palauttaa. Paina alla olevaa painiketta ja noudata " "ohjeita. Pääset tuota pikaa jatkamaan käyttöä." -#, elixir-format #: lib/web/email/user.ex:28 +#, elixir-format msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Ohjeet Mobilizon-tilin vahvistamiseen palvelimella %{instance}" -#, elixir-format #: lib/web/email/admin.ex:24 +#, elixir-format msgid "New report on Mobilizon instance %{instance}" msgstr "Uusi raportti Mobilizon-palvelimella %{instance}" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 +#, elixir-format msgid "Go to event page" msgstr "Siirry tapahtuman sivulle" -#, elixir-format #: lib/web/templates/email/report.text.eex:1 +#, elixir-format msgid "New report from %{reporter} on %{instance}" msgstr "Uusi raportti käyttäjältä %{reporter} palvelimella %{instance}" -#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:1 +#, elixir-format msgid "Participation approved" msgstr "Osallistuminen hyväksytty" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:13 #: lib/web/templates/email/password_reset.text.eex:1 +#, elixir-format msgid "Password reset" msgstr "Salasanan palautus" -#, elixir-format #: lib/web/templates/email/password_reset.text.eex:7 +#, elixir-format msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." msgstr "" "Salasana on helppo palauttaa. Paina alla olevaa linkkiä ja noudata ohjeita. " "Pääset tuota pikaa jatkamaan käyttöä." -#, elixir-format #: lib/web/templates/email/registration_confirmation.text.eex:5 +#, elixir-format msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." msgstr "" "Loit palvelimelle %{host} tilin tällä sähköpostiosoitteella. Aktivoi se " "yhdellä napsautuksella. Jos et luonut tiliä itse, voit jättää tämän viestin " "huomiotta." -#, elixir-format #: lib/web/email/participation.ex:112 +#, elixir-format msgid "Your participation to event %{title} has been approved" msgstr "Osallistumisesi tapahtumaan %{title} on hyväksytty" -#, elixir-format #: lib/web/email/participation.ex:70 +#, elixir-format msgid "Your participation to event %{title} has been rejected" msgstr "Osallistumisesi tapahtumaan %{title) on hylätty" -#, elixir-format #: lib/web/email/event.ex:37 +#, elixir-format msgid "Event %{title} has been updated" msgstr "Tapahtumaa %{title} on päivitetty" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:15 +#, elixir-format msgid "New title: %{title}" msgstr "Uusi otsikko: %{title}" -#, elixir-format #: lib/web/templates/email/password_reset.text.eex:5 +#, elixir-format msgid "You requested a new password for your account on %{instance}." msgstr "Pyysit uutta salasanaa tilillesi palvelimella %{instance}." -#, elixir-format #: lib/web/templates/email/email.html.eex:85 +#, elixir-format msgid "Warning" msgstr "Varoitus" -#, elixir-format #: lib/web/email/participation.ex:135 +#, elixir-format msgid "Confirm your participation to event %{title}" msgstr "Vahvista osallistumisesi tapahtumaan %{title}" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:75 +#, elixir-format msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "Valittuna olevan identiteettisi sisäinen tunniste" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:74 +#, elixir-format msgctxt "terms" msgid "An internal user ID" msgstr "Sisäinen käyttäjätunniste" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:37 +#, elixir-format msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "Kaikkia sinulta kerättäviä tietoja voidaan käyttää seuraavin tavoin:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:9 +#, elixir-format msgctxt "terms" msgid "Basic account information" msgstr "Tilin perustiedot" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:25 +#, elixir-format msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "Älä jaa vaarallisia tietoja Mobilizonin kautta." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:90 +#, elixir-format msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "Luovutetaanko tietoja ulkopuolisille?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:68 +#, elixir-format msgctxt "terms" msgid "Do we use cookies?" msgstr "Käytetäänkö evästeitä?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:51 +#, elixir-format msgctxt "terms" msgid "How do we protect your information?" msgstr "Kuinka tietojasi suojataan?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:29 +#, elixir-format msgctxt "terms" msgid "IPs and other metadata" msgstr "IP-osoitteet ja muu metadata" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:17 +#, elixir-format msgctxt "terms" msgid "Published events and comments" msgstr "Julkaistut tapahtumat ja kommentit" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:64 +#, elixir-format msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "" "Säilyttämään rekisteröityjen käyttäjien IP-osoitteita enintään 12 kuukautta." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:76 +#, elixir-format msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Tunnistautumismerkkisi" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:31 +#, elixir-format msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "" "Myös palvelinlokeja, jotka sisältävät jokaisen palvelimelle tehdyn pyynnön " "IP-osoitteen, saatetaan säilyttää." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:70 +#, elixir-format msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "Kun muodostat yhteyden, laitteellesi tallennetaan seuraavat tiedot:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:58 +#, elixir-format msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Pyrimme parhaamme mukaan seuraavaan:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:35 +#, elixir-format msgctxt "terms" msgid "What do we use your information for?" msgstr "Mihin käytämme tietojasi?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:57 +#, elixir-format msgctxt "terms" msgid "What is our data retention policy?" msgstr "Millainen tietojensäilytyskäytäntö meillä on?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:67 +#, elixir-format msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Voit milloin tahansa poistaa tilisi pysyvästi." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:115 +#, elixir-format msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Muutokset tietosuojakäytäntöön" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:106 +#, elixir-format msgctxt "terms" msgid "If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site." msgstr "" @@ -280,8 +280,8 @@ msgstr "" "wiki/Yleinen_tietosuoja-asetus\">yleinen tietosuoja-asetus) mukaisesti " "et voi käyttää tätä sivustoa." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:109 +#, elixir-format msgctxt "terms" msgid "If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site." msgstr "" @@ -291,30 +291,30 @@ msgstr "" "27s_Online_Privacy_Protection_Act\">Children's Online Privacy Protection " "Act) mukaisesti et voi käyttää tätä sivustoa." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:117 +#, elixir-format msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "" "Jos päätämme muuttaa tietosuojakäytäntöämme, muutoksesta kerrotaan tällä " "sivulla." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:112 +#, elixir-format msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "" "Lakisääteiset vaatimukset saattavat poiketa tästä, jos palvelin sijaitsee " "muulla lainkäyttöalueella." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:103 +#, elixir-format msgctxt "terms" msgid "Site usage by children" msgstr "Lapset sivuston käyttäjinä" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:47 +#, elixir-format msgctxt "terms" msgid "The email address you provide may be used to send you information, updates and notifications about other people\n interacting with your content or sending you messages and to respond to inquiries, and/or other requests or\n questions." msgstr "" @@ -324,8 +324,8 @@ msgstr "" "kyselyihisi, tai muihin pyyntöihin tai kysymyksiin\n" " liittyen." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:45 +#, elixir-format msgctxt "terms" msgid "To aid moderation of the community, for example comparing your IP address with other known ones to determine ban\n evasion or other violations." msgstr "" @@ -333,8 +333,8 @@ msgstr "" "muihin tiedossa oleviin osoitteisiin\n" " porttikieltojen kiertämisen tai muiden rikkomusten havaitsemiseksi." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:43 +#, elixir-format msgctxt "terms" msgid "To provide the core functionality of Mobilizon. Depending on this instance's policy you may only be able to\n interact with other people's content and post your own content if you are logged in." msgstr "" @@ -343,89 +343,89 @@ msgstr "" " vaikuttaminen ja oman sisällön julkaiseminen saattaa olla mahdollista " "vain sisäänkirjautuneena." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:6 +#, elixir-format msgctxt "terms" msgid "What information do we collect?" msgstr "Mitä tietoja kerätään?" -#, elixir-format #: lib/web/email/user.ex:176 +#, elixir-format msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon palvelimella %{instance}: vahvista sähköpostiosoitteesi" -#, elixir-format #: lib/web/email/user.ex:152 +#, elixir-format msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon palvelimella %{instance}: sähköpostiosoite vaihdettu" -#, elixir-format #: lib/web/email/notification.ex:47 +#, elixir-format msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Yksi suunniteltu tapahtuma tänään" msgstr[1] "%{nb_events} suunniteltua tapahtumaa tänään" -#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:38 #: lib/web/templates/email/on_day_notification.text.eex:4 +#, elixir-format msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Sinulla on tänään yksi tapahtuma:" msgstr[1] "Sinulla on tänään %{total} tapahtumaa:" -#, elixir-format #: lib/web/templates/email/group_invite.text.eex:3 +#, elixir-format msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} kutsui sinut ryhmään %{group}" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:13 #: lib/web/templates/email/group_invite.text.eex:1 +#, elixir-format msgid "Come along!" msgstr "Tule mukaan!" -#, elixir-format #: lib/web/email/notification.ex:24 +#, elixir-format msgid "Don't forget to go to %{title}" msgstr "Muista %{title}" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 +#, elixir-format msgid "Get ready for %{title}" msgstr "%{title} tulee, oletko valmis?" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:59 +#, elixir-format msgid "See my groups" msgstr "Näytä omat ryhmät" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:45 #: lib/web/templates/email/group_invite.text.eex:5 +#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Hyväksy kutsu siirtymällä omiin ryhmiisi." -#, elixir-format #: lib/web/templates/email/before_event_notification.text.eex:5 +#, elixir-format msgid "View the event on: %{link}" msgstr "Katso päivitetty tapahtuma: %{linkki}" -#, elixir-format #: lib/web/email/group.ex:33 +#, elixir-format msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} kutsui sinut ryhmään %{group}" -#, elixir-format #: lib/web/email/notification.ex:71 +#, elixir-format msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Yksi suunniteltu tapahtuma tällä viikolla" msgstr[1] "%{nb_events} suunniteltua tapahtumaa tällä viikolla" -#, elixir-format #: lib/web/email/notification.ex:93 +#, elixir-format msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Yksi osallistujapyyntö tapahtumaan %{title} odottaa käsittelyä" @@ -433,21 +433,21 @@ msgstr[1] "" "%{number_participation_requests} osallistujapyyntöä tapahtumaan %{title} " "odottaa käsittelyä" -#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 +#, elixir-format msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Sinulla on tällä viikolla yksi tapahtuma:" msgstr[1] "Sinulla on tällä viikolla %{total} tapahtumaa:" -#, elixir-format #: lib/service/metadata/utils.ex:52 +#, elixir-format msgid "The event organizer didn't add any description." msgstr "Tapahtuman järjestäjä ei ole lisännyt kuvausta." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:54 +#, elixir-format msgctxt "terms" msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." msgstr "" @@ -456,8 +456,8 @@ msgstr "" "sovellusten ja sovellusrajapinnan välinen tietoliikenne ovat SSL/TLS-" "suojattuja, ja salasanasi salataan vahvalla yksisuuntaisella algoritmilla." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:94 +#, elixir-format msgctxt "terms" msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." msgstr "" @@ -469,20 +469,20 @@ msgstr "" "välttämätöntä lain tai sivustomme noudattamisen tahi meidän tai muiden " "oikeuksien, omaisuuden tai turvallisuuden suojelemisen kannalta." -#, elixir-format #: lib/web/templates/api/terms.html.eex:23 +#, elixir-format msgctxt "terms" msgid "Accepting these Terms" msgstr "Ehtojen hyväksyminen" -#, elixir-format #: lib/web/templates/api/terms.html.eex:27 +#, elixir-format msgctxt "terms" msgid "Changes to these Terms" msgstr "Ehtojen muutokset" -#, elixir-format #: lib/web/templates/api/terms.html.eex:85 +#, elixir-format msgctxt "terms" msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." msgstr "" @@ -493,16 +493,16 @@ msgstr "" "Olet yksin vastuussa sisällön käyttämisestä, siihen luottamisesta ja siihen " "liittyvistä riskeistä." -#, elixir-format #: lib/web/templates/api/terms.html.eex:60 +#, elixir-format msgctxt "terms" msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" msgstr "" "Lisäksi sitoudut olemaan tekemättä palvelun tai muiden käyttäjien osalta " "mitään seuraavista:" -#, elixir-format #: lib/web/templates/api/terms.html.eex:65 +#, elixir-format msgctxt "terms" msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." msgstr "" @@ -510,22 +510,22 @@ msgstr "" "suodatus- ja turvallisuuskeinojen, käyttömäärärajoitusten tai muiden " "vastaavien ominaisuuksien kiertäminen tai kiertämisen yritys" -#, elixir-format #: lib/web/templates/api/terms.html.eex:64 +#, elixir-format msgctxt "terms" msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" msgstr "" "palvelun muiden käyttäjien henkilötietojen kerääminen tai heidän " "ahdisteleminen, uhkaaminen, seuraaminen tai häiritseminen muilla tavoin" -#, elixir-format #: lib/web/templates/api/terms.html.eex:55 +#, elixir-format msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "laittoman sisällön oikeudellisiin seuraamuksiin johtava lähettäminen" -#, elixir-format #: lib/web/templates/api/terms.html.eex:56 +#, elixir-format msgctxt "terms" msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" msgstr "" @@ -533,48 +533,48 @@ msgstr "" "yksityisyydensuojaa, julkisuusoikeutta tai muuta immateriaali- tai muuta " "oikeutta loukkaavan sisällön lähettäminen" -#, elixir-format #: lib/web/templates/api/terms.html.eex:42 +#, elixir-format msgctxt "terms" msgid "Creating Accounts" msgstr "Tilien luominen" -#, elixir-format #: lib/web/templates/api/terms.html.eex:89 +#, elixir-format msgctxt "terms" msgid "Entire Agreement" msgstr "Koko sopimusteksti" -#, elixir-format #: lib/web/templates/api/terms.html.eex:92 +#, elixir-format msgctxt "terms" msgid "Feedback" msgstr "Palaute" -#, elixir-format #: lib/web/templates/api/terms.html.eex:83 +#, elixir-format msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Linkit ja kolmansien osapuolten sisältö" -#, elixir-format #: lib/web/templates/api/terms.html.eex:88 +#, elixir-format msgctxt "terms" msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." msgstr "" "Jos toimit näiden ehtojen vastaisesti, voimme poistaa tai keskeyttää " "käyttöoikeutesi palveluun." -#, elixir-format #: lib/web/templates/api/terms.html.eex:63 +#, elixir-format msgctxt "terms" msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" msgstr "" "luvaton toisen henkilön tai tahon nimissä esiintyminen tai julkaiseminen tai " "muunlainen valheellisen yhteyden ilmaiseminen" -#, elixir-format #: lib/web/templates/api/terms.html.eex:48 +#, elixir-format msgctxt "terms" msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." msgstr "" @@ -583,26 +583,26 @@ msgstr "" "saataville saattamastasi sisällöstä sekä sen laillisuudesta, " "luotettavuudesta ja sopivaisuudesta." -#, elixir-format #: lib/web/templates/api/terms.html.eex:39 +#, elixir-format msgctxt "terms" msgid "Privacy Policy" msgstr "Tietosuojakäytäntö" -#, elixir-format #: lib/web/templates/api/terms.html.eex:95 +#, elixir-format msgctxt "terms" msgid "Questions & Contact Information" msgstr "Kysymykset ja yhteystiedot" -#, elixir-format #: lib/web/templates/api/terms.html.eex:87 +#, elixir-format msgctxt "terms" msgid "Termination" msgstr "Lopettaminen" -#, elixir-format #: lib/web/templates/api/terms.html.eex:62 +#, elixir-format msgctxt "terms" msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" msgstr "" @@ -610,14 +610,14 @@ msgstr "" "käyttäjiä heidän käyttäessään palvelua, tai joka voi vahingoittaa, estää, " "ylikuormittaa tai rajoittaa palvelun toimivuutta" -#, elixir-format #: lib/web/templates/api/terms.html.eex:47 +#, elixir-format msgctxt "terms" msgid "Your Content & Conduct" msgstr "Oma sisältö ja käytös" -#, elixir-format #: lib/web/templates/api/terms.html.eex:84 +#, elixir-format msgctxt "terms" msgid "%{instance_name} makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "" @@ -629,8 +629,8 @@ msgstr "" "sivuston. Linkitettyjen verkkosivujen käyttö tapahtuu käyttäjän omalla " "vastuulla." -#, elixir-format #: lib/web/templates/api/terms.html.eex:68 +#, elixir-format msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "" @@ -639,16 +639,16 @@ msgstr "" "hyväksymistä. Sääntöjen rikkomisesta voi seurata tilisi tilapäinen tai " "pysyvä käytöstäpoisto." -#, elixir-format #: lib/web/templates/api/terms.html.eex:81 +#, elixir-format msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "" "Katso täältä tarkempia Mobilizon-" "ohjelmaa koskevia tietoja." -#, elixir-format #: lib/web/templates/api/terms.html.eex:18 +#, elixir-format msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "" @@ -657,8 +657,8 @@ msgstr "" "palvelua (yhteisesti ”palvelu”). Ne ovat käyttöehtomme (”ehdot”). Lue ne " "huolellisesti." -#, elixir-format #: lib/web/templates/api/terms.html.eex:33 +#, elixir-format msgctxt "terms" msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." msgstr "" @@ -667,8 +667,8 @@ msgstr "" "huomautuksella verkkosivun alaosassa. Verkkosivun ehdoissa tapahtuvien " "muutosten säännöllinen tarkistaminen on omalla vastuullasi." -#, elixir-format #: lib/web/templates/api/terms.html.eex:53 +#, elixir-format msgctxt "terms" msgid "In order to make %{instance_name} a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" msgstr "" @@ -676,16 +676,16 @@ msgstr "" "julkaise, linkitä tai muulla tavoin saata palvelussa tai sen välityksellä " "saataville mitään seuraavista:" -#, elixir-format #: lib/web/templates/api/terms.html.eex:57 +#, elixir-format msgctxt "terms" msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" msgstr "" "kolmannen osapuolen yksityisiä tietoja (esim. osoitteita, puhelinnumeroita, " "sähköpostiosoitteita, henkilötunnuksia ja maksukorttien numeroita)" -#, elixir-format #: lib/web/templates/api/terms.html.eex:52 +#, elixir-format msgctxt "terms" msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." msgstr "" @@ -696,8 +696,8 @@ msgstr "" "sisällön poistamisesta päättyy siihen. Jos jokin toinen palvelin ei syystä " "tai toisesta poista sisältöä, emme ole siitä vastuussa." -#, elixir-format #: lib/web/templates/api/terms.html.eex:90 +#, elixir-format msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "" @@ -706,8 +706,8 @@ msgstr "" "aiemmat sinun ja palvelimen %{instance_name} väliset palvelun käyttöä " "koskevat sopimukset." -#, elixir-format #: lib/web/templates/api/terms.html.eex:80 +#, elixir-format msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "" @@ -717,16 +717,16 @@ msgstr "" "tarkoittaa, että lähdekoodin lataaminen, muokkaaminen ja käyttö on paitsi " "sallittua myös kannustettavaa." -#, elixir-format #: lib/web/templates/api/terms.html.eex:58 +#, elixir-format msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "" "Virukset, vioittuneet tiedot tai muut haitalliset, häiritsevät tai tuhoa " "aiheuttavat tiedostot tai koodikatkelmat." -#, elixir-format #: lib/web/templates/api/terms.html.eex:51 +#, elixir-format msgctxt "terms" msgid "You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time. Web server access logs might also be stored for some time in the system." msgstr "" @@ -735,30 +735,30 @@ msgstr "" "järjestelmässämme tai varmuuskopioissamme. Niin ikään www-palvelimen " "käyttölokeja säilytetään järjestelmässä jonkin aikaa." -#, elixir-format #: lib/web/templates/api/terms.html.eex:96 +#, elixir-format msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "" "Meille voi lähettää palvelua koskevia kysymyksiä ja kommentteja osoitteeseen " "%{contact}" -#, elixir-format #: lib/web/templates/api/terms.html.eex:79 +#, elixir-format msgctxt "terms" msgid "Source code" msgstr "Lähdekoodi" -#, elixir-format #: lib/web/templates/api/terms.html.eex:93 +#, elixir-format msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "" "Pidämme palautteesta. Kerro meille, mitä mieltä olet palvelusta, näistä " "ehdoista ja yleisesti palvelimesta %{instance_name}." -#, elixir-format #: lib/web/templates/api/terms.html.eex:74 +#, elixir-format msgctxt "terms" msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." msgstr "" @@ -771,15 +771,15 @@ msgstr "" "toimivat muulla tavoin asiattomasti, uhkaavasti, hyökkäävästi tai " "vahingollisesti." -#, elixir-format #: lib/web/templates/api/terms.html.eex:6 +#, elixir-format msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "" "%{instance_name} ei käytä, lähetä edelleen tai myy henkilötietojasi" -#, elixir-format #: lib/web/templates/api/terms.html.eex:44 +#, elixir-format msgctxt "terms" msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact its contributors directly." msgstr "" @@ -788,16 +788,16 @@ msgstr "" "aukkojen osalta ota yhteyttä suoraan ohjelman tekijöihin." -#, elixir-format #: lib/web/templates/api/terms.html.eex:77 +#, elixir-format msgctxt "terms" msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." msgstr "" "Palvelimen ylläpitäjien tulee varmistaa, että kaikkia palvelimella toimivia " "yhteisöjä moderoidaan sääntöjen mukaisesti." -#, elixir-format #: lib/web/templates/api/terms.html.eex:98 +#, elixir-format msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "" @@ -806,8 +806,8 @@ msgstr "" "a> tietosuojakäytännöistä, lisäksi lisensoitu CC BY-SA -lisenssillä." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:119 +#, elixir-format msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "" @@ -816,114 +816,114 @@ msgstr "" "tietosuojakäytännöistä, lisäksi lisensoitu CC BY-SA -lisenssillä." -#, elixir-format #: lib/web/templates/api/terms.html.eex:3 +#, elixir-format msgctxt "terms" msgid "Short version" msgstr "Lyhyt versio" -#, elixir-format #: lib/web/templates/api/terms.html.eex:9 +#, elixir-format msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "" "Palvelu tarjotaan ilman minkäänlaista takuuta, ja nämä ehdot voivat " "myöhemmin muuttua" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:118 +#, elixir-format msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "" "Tämän asiakirjan lisenssinä on CC BY-SA. Se päivitettiin viimeksi 18.6.2020." -#, elixir-format #: lib/web/templates/api/terms.html.eex:97 +#, elixir-format msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "" "Tämän asiakirjan lisenssinä on CC BY-SA. Se päivitettiin viimeksi 22.6.2020." -#, elixir-format #: lib/web/templates/api/terms.html.eex:8 +#, elixir-format msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "" "Kun käytät palvelua, kunnioita muita ihmisiä ja palvelimen " "%{instance_name} sääntöjä" -#, elixir-format #: lib/web/templates/api/terms.html.eex:7 +#, elixir-format msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "Noudata lakia käyttäessäsi palvelinta %{instance_name}" -#, elixir-format #: lib/web/templates/api/terms.html.eex:5 +#, elixir-format msgctxt "terms" msgid "Your content is yours" msgstr "Sisältösi kuuluu sinulle" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 +#, elixir-format msgid "Confirm my e-mail address" msgstr "Vahvista sähköpostiosoite" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 +#, elixir-format msgid "Confirm your e-mail" msgstr "Vahvista sähköpostiosoite" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 +#, elixir-format msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "Hei! Rekisteröidyit juuri tapahtumaan ”%{title}”. Vahvista ilmoittamasi " "sähköpostiosoite:" -#, elixir-format #: lib/web/templates/email/email.html.eex:114 #: lib/web/templates/email/email.text.eex:8 +#, elixir-format msgid "Need help? Is something not working as expected?" msgstr "Tarvitsetko apua? Eikö kaikki toimi niin kuin pitäisi?" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:38 +#, elixir-format msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "" "Loit palvelimelle %{host} tilin tällä sähköpostiosoitteella. Aktivoi " "se yhdellä napsautuksella." -#, elixir-format #: lib/web/templates/email/report.html.eex:13 +#, elixir-format msgid "New report on %{instance}" msgstr "Uusi raportti palvelimella %{instance}" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:38 +#, elixir-format msgid "The email address for your account on %{host} is being changed to:" msgstr "" "Palvelimella %{host} olevan tilisi sähköpostiosoitteeksi vaihdetaan:" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:38 +#, elixir-format msgid "You requested a new password for your account on %{instance}." msgstr "Pyysit uutta salasanaa tilillesi palvelimella %{instance}." -#, elixir-format #: lib/web/templates/email/email.text.eex:5 +#, elixir-format msgid "Please do not use it for real purposes." msgstr "Älä käytä todellisiin tarkoituksiin." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 #: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 +#, elixir-format msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -933,75 +933,75 @@ msgstr[1] "" "Jos haluat perua osallistumisesi, siirry tapahtumien sivuille yllä olevista " "linkeistä ja napsauta niissä osallistumispainiketta." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:38 #: lib/web/templates/email/pending_participation_notification.text.eex:4 +#, elixir-format msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "Yksi osallistujapyyntö odottaa käsittelyäsi:" msgstr[1] "" "%{number_participation_requests} osallistujapyyntöä odottaa käsittelyäsi:" -#, elixir-format #: lib/web/templates/email/email.text.eex:11 +#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} on Mobilizon-palvelin." -#, elixir-format #: lib/web/templates/email/email.html.eex:142 +#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} on Mobilizon-palvelin." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 +#, elixir-format msgid "A request is pending!" msgstr "Pyyntö odottaa!" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 +#, elixir-format msgid "An event is upcoming!" msgstr "Tapahtuma lähestyy!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 +#, elixir-format msgid "Confirm new email" msgstr "Vahvista sähköpostiosoite" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:84 +#, elixir-format msgid "End" msgstr "Päättyy" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:21 +#, elixir-format msgid "End %{ends_on}" msgstr "Päättyy %{ends_on}" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:13 #: lib/web/templates/email/event_updated.text.eex:1 +#, elixir-format msgid "Event update!" msgstr "Tapahtuma päivitetty!" -#, elixir-format #: lib/web/templates/email/report.html.eex:88 +#, elixir-format msgid "Flagged comments" msgstr "Merkityt kommentit" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 +#, elixir-format msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "" "Hyviä uutisia: joku tapahtuman järjestäjistä hyväksyi juuri pyyntösi. Olet " "kutsuttujen joukossa, joten merkitse tapahtuma kalenteriisi!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:38 #: lib/web/templates/email/email_changed_new.text.eex:3 +#, elixir-format msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "Hei! Haluat ilmeisesti vaihtaa palvelimella %{instance} olevaan " @@ -1009,16 +1009,16 @@ msgstr "" "vaihto napsauttamalla alla olevaa painiketta. Sen jälkeen voit kirjautua " "palvelimelle %{instance} uudella sähköpostiosoitteella." -#, elixir-format #: lib/web/templates/email/email_changed_old.text.eex:3 +#, elixir-format msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" msgstr "" "Hei! Vahvistamme vain, että palvelimella %{host} olevaan tiliisi yhdistetty " "sähköpostiosoite on vaihdettu seuraavaan osoitteeseen:" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:41 #: lib/web/templates/email/email_changed_old.html.eex:65 lib/web/templates/email/email_changed_old.text.eex:5 +#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "" "Jos et tehnyt vaihtoa itse, todennäköisesti joku muu on päässyt käyttämään " @@ -1026,173 +1026,173 @@ msgstr "" "viipymättä. Jos et pääse kirjautumaan sisään, ota yhteyttä palvelimen %{host}" " ylläpitäjään." -#, elixir-format #: lib/web/templates/email/password_reset.text.eex:12 +#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." msgstr "" "Jos et tehnyt vaihtoa itse, voit jättää tämän viestin huomiotta. Salasana ei " "vaihdu, ellet avaa yllä olevaa linkkiä." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 +#, elixir-format msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Jos et lähettänyt pyyntöä, voit jättää tämän viestin huomiotta." -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 +#, elixir-format msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "" "Jos haluat perua osallistumisesi, siirry tapahtuman sivulle yllä olevasta " "linkistä ja napsauta siellä osallistumispainiketta." -#, elixir-format #: lib/web/templates/email/email.html.eex:143 #: lib/web/templates/email/email.text.eex:11 +#, elixir-format msgid "Learn more about Mobilizon here!" msgstr "Lue lisää Mobilizonista." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:94 +#, elixir-format msgid "Location" msgstr "Sijainti" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:104 +#, elixir-format msgid "Location address was removed" msgstr "Käyntiosoite poistettiin" -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:51 #: lib/web/templates/email/pending_participation_notification.text.eex:6 +#, elixir-format msgid "Manage pending requests" msgstr "Hallinnoi odottavia osallistujapyyntöjä" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 +#, elixir-format msgid "Nearly there!" msgstr "Melkein valmista!" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 +#, elixir-format msgid "New email confirmation" msgstr "Uuden sähköpostiosoitteen vahvistaminen" -#, elixir-format #: lib/web/templates/email/report.html.eex:106 +#, elixir-format msgid "Reasons for report" msgstr "Raportin syy" -#, elixir-format #: lib/web/templates/email/report.html.eex:39 +#, elixir-format msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "Seuraava sisältö raportoitiin palvelimelta %{instance}:" -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 +#, elixir-format msgid "Sorry! You're not going." msgstr "Valitettavasti et pääse mukaan." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:74 +#, elixir-format msgid "Start" msgstr "Alkaa" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:18 +#, elixir-format msgid "Start %{begins_on}" msgstr "Alkaa %{begins_on}" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:3 +#, elixir-format msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "%{title} on joiltain osin muuttunut, ja ajattelimme ilmoittaa asiasta." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:55 #: lib/web/templates/email/event_updated.text.eex:11 +#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Valitettavasti tapahtuman järjestäjät peruivat tapahtuman." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:51 #: lib/web/templates/email/event_updated.text.eex:7 +#, elixir-format msgid "This event has been confirmed" msgstr "Tapahtuma on vahvistettu" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:53 #: lib/web/templates/email/event_updated.text.eex:9 +#, elixir-format msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "" "Tapahtumaa ei ole vielä vahvistettu. Järjestäjät ilmoittavat vahvistamisesta " "myöhemmin." -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 +#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "Ikävä kyllä järjestäjät hylkäsivät osallistumisesi." -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:51 +#, elixir-format msgid "Verify your email address" msgstr "Vahvista sähköpostiosoite" -#, elixir-format #: lib/web/templates/email/report.html.eex:126 +#, elixir-format msgid "View report" msgstr "Näytä raportti" -#, elixir-format #: lib/web/templates/email/report.text.eex:24 +#, elixir-format msgid "View report:" msgstr "Näytä raportti:" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:58 #: lib/web/templates/email/event_participation_confirmed.html.eex:58 +#, elixir-format msgid "Visit event page" msgstr "Käy tapahtumasivulla" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:121 +#, elixir-format msgid "Visit the updated event page" msgstr "Käy päivitetyllä tapahtumasivulla" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:23 +#, elixir-format msgid "Visit the updated event page: %{link}" msgstr "Katso päivitetty tapahtuma: %{linkki}" -#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 +#, elixir-format msgid "What's up this week?" msgstr "Mitä tällä viikolla tapahtuu?" -#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 +#, elixir-format msgid "What's up today?" msgstr "Mitä tänään tapahtuu?" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 +#, elixir-format msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" "Jos haluat päivittää tai perua osallistumisesi, siirry yllä olevasta " "linkistä tapahtumasivulle ja napsauta osallistumispainiketta." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:64 #: lib/web/templates/email/pending_participation_notification.text.eex:8 +#, elixir-format msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" "Saat tämän sähköpostin, koska olet tilannut ilmoitukset tapahtumiesi " @@ -1200,160 +1200,160 @@ msgstr "" "poistaa ilmoitukset käytöstä käyttäjätilisi asetuksista kohdasta " "”Ilmoitukset”." -#, elixir-format #: lib/web/templates/email/event_participation_rejected.text.eex:5 +#, elixir-format msgid "You issued a request to attend %{title}." msgstr "Lähetit pyynnön osallistua tapahtumaan %{title}." -#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 +#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Lähetit pyynnön osallistua tapahtumaan %{title}." -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:13 #: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#, elixir-format msgid "You're going!" msgstr "Olet mukana!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 +#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "Jos et tehnyt vaihtoa itse, voit jättää tämän viestin huomiotta." -#, elixir-format #: lib/web/templates/email/email.html.eex:89 +#, elixir-format msgid "Please do not use it for real purposes." msgstr "Älä käytä todellisiin tarkoituksiin." -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 +#, elixir-format msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "" "Jos tämä on virhe, ota yhteyttä ryhmän ylläpitäjiin ja pyydä lisäämään sinut " "takaisin." -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 +#, elixir-format msgid "So long, and thanks for the fish!" msgstr "Näkemiin ja kiitos kaloista!" -#, elixir-format #: lib/web/email/group.ex:63 +#, elixir-format msgid "You have been removed from group %{group}" msgstr "Sinut on poistettu ryhmästä %{group}" -#, elixir-format #: lib/web/templates/email/group_member_removal.text.eex:3 +#, elixir-format msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." msgstr "" "Sinut on poistettu ryhmästä %{group}. Et voi enää käyttää ryhmän yksityistä " "sisältöä." -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:38 +#, elixir-format msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "" "%{inviter} kutsui sinut ryhmään " "%{link_start}%{group}%{link_end}" -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:38 +#, elixir-format msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "" "Sinut on poistettu ryhmästä %{link_start}%{group}%{link_end}. Et voi " "enää käyttää ryhmän yksityistä sisältöä." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:54 #: lib/web/templates/email/group_suspension.text.eex:7 +#, elixir-format msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "" "Koska tämä ryhmä sijaitsi toisella palvelimella, sen toiminta jatkuu muilla " "kuin tällä palvelimella." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:46 #: lib/web/templates/email/group_suspension.text.eex:5 +#, elixir-format msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "" "Koska tämä ryhmä sijaitsi tällä palvelimella, kaikki siihen kuuluvat tiedot " "on poistettu pysyvästi." -#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:38 #: lib/web/templates/email/group_deletion.text.eex:3 +#, elixir-format msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "" "Ylläpitäjä %{author} poisti ryhmän %{group}. Kaikki ryhmän tapahtumat, " "keskustelut, julkaisut ja tehtävät on poistettu." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:13 #: lib/web/templates/email/group_suspension.text.eex:1 +#, elixir-format msgid "The group %{group} has been suspended on %{instance}!" msgstr "Ryhmä %{group} on estetty palvelimella %{instance}!" -#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:13 #: lib/web/templates/email/group_deletion.text.eex:1 +#, elixir-format msgid "The group %{group} was deleted on %{instance}!" msgstr "Ryhmä %{group} on poistettu palvelimelta %{instance}!" -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:38 #: lib/web/templates/email/group_suspension.text.eex:3 +#, elixir-format msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" "Palvelimesi moderointitiimi on päättänyt estää ryhmän %{group_name} " "(%{group_address}). Et ole enää tämän ryhmän jäsen." -#, elixir-format #: lib/web/email/group.ex:136 +#, elixir-format msgid "The group %{group} has been deleted on %{instance}" msgstr "Ryhmä %{group} on poistettu palvelimelta %{instance}" -#, elixir-format #: lib/web/email/group.ex:97 +#, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "Ryhmä %{group} on estetty palvelimella %{instance}" -#, elixir-format #: lib/web/templates/api/terms.html.eex:24 +#, elixir-format msgctxt "terms" msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." msgstr "" "Jos käytät palvelua, sinun katsotaan hyväksyvän kaikki alla olevat ehdot. " "Jos et ymmärrä jotain kohtaa ehdoista, ota yhteyttä: %{contact}." -#, elixir-format #: lib/web/templates/api/terms.html.eex:40 +#, elixir-format msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "" "Tietosuojakäytännössämme kerrotaan, kuinka keräämme " "ja käytämme palvelun käyttäjien tietoja." -#, elixir-format #: lib/web/templates/api/terms.html.eex:36 +#, elixir-format msgctxt "terms" msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." msgstr "" "Jos jatkat palvelun käyttöä muutettujen ehtojen astuttua voimaan, osoitat " "hyväksyneesi muutetut ehdot." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:78 +#, elixir-format msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "Jos poistat nämä tiedot, joudut kirjautumaan uudelleen." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:80 +#, elixir-format msgctxt "terms" msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." msgstr "" @@ -1363,20 +1363,20 @@ msgstr "" "voidaan näyttää. Näiden tietojen poisto vaikuttaa vain siten, että " "osallistumisen tilaa ei enää näytetä selaimessa." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:87 +#, elixir-format msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "Huomaa: Nämä tiedot tallennetaan localStorage-tietoina eikä evästeinä." -#, elixir-format #: lib/web/templates/api/terms.html.eex:71 +#, elixir-format msgctxt "terms" msgid "Our responsibility" msgstr "Meidän vastuumme" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:61 +#, elixir-format msgctxt "terms" msgid "Retain server logs containing the IP address of all requests to this server, insofar as such logs are kept, no more than 90 days." msgstr "" @@ -1384,9 +1384,9 @@ msgstr "" "sisältäviä palvelinlokeja, mikäli sellaisia pidetään, enintään 90 päivän " "ajan." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 +#, elixir-format msgctxt "terms" msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary to help you understand them better." msgstr "" @@ -1394,16 +1394,16 @@ msgstr "" "ymmärtää. Laatimamme sanasto voi auttaa niiden " "ymmärtämisessä." -#, elixir-format #: lib/web/templates/api/terms.html.eex:45 +#, elixir-format msgctxt "terms" msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." msgstr "" "Emme ole vastuussa seurauksista, jos joku muu käyttää sähköpostiosoitettasi " "ja salasanaasi joko sinun tietäen tai tietämättäsi." -#, elixir-format #: lib/web/templates/api/terms.html.eex:50 +#, elixir-format msgctxt "terms" msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." msgstr "" @@ -1413,8 +1413,8 @@ msgstr "" "julkaisemaasi, linkittämääsi tai muulla tavoin palvelussa tai sen kautta " "saataville saattamaasi sisältöä koskevat oikeudet säilyvät sinulla." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:10 +#, elixir-format msgctxt "terms" msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter an email address, a password (hashed) and at least an username. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" @@ -1430,8 +1430,8 @@ msgstr "" "otsikkokuva ovat aina julkista tietoa. Voit myös käyttää " "palvelinta rekisteröitymättä." -#, elixir-format #: lib/web/templates/api/terms.html.eex:30 +#, elixir-format msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" @@ -1439,8 +1439,8 @@ msgstr "" "esimerkiksi olla tarpeen muuttaa, jos käyttöön otetaan uusia ominaisuuksia, " "tai muusta syystä." -#, elixir-format #: lib/web/templates/api/terms.html.eex:20 +#, elixir-format msgctxt "terms" msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by Framasoft, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the \"About this instance\" page." msgstr "" @@ -1453,8 +1453,8 @@ msgstr "" "itsenäinen palvelu. Voit lukea lisää tästä palvelimesta ”Tietoja tästä palvelimesta” -sivulta." -#, elixir-format #: lib/web/templates/api/terms.html.eex:43 +#, elixir-format msgctxt "terms" msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to %{instance_name}." msgstr "" @@ -1463,8 +1463,8 @@ msgstr "" "luovuttamiesi tilitietojen ja muiden tietojen luvattomaan käyttöön liittyvät " "riskit." -#, elixir-format #: lib/web/templates/api/terms.html.eex:49 +#, elixir-format msgctxt "terms" msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." msgstr "" @@ -1476,8 +1476,8 @@ msgstr "" "sisällölle asettamiesi näkyvyysehtojen mukaisesti. Emme muuta sisällölle " "asettamiasi näkyvyysehtoja." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:19 +#, elixir-format msgctxt "terms" msgid "Your events and comments are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." msgstr "" @@ -1490,8 +1490,8 @@ msgstr "" "voivat kopioida viestin tekstinä tai kuvankaappauksena tai muulla tavoin " "levittää niitä edelleen." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:99 +#, elixir-format msgctxt "terms" msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." msgstr "" @@ -1501,182 +1501,182 @@ msgstr "" "jäsenten kaikille palvelimille, mikäli ryhmässä on muita kuin tätä " "palvelinta käyttäviä jäseniä." -#, elixir-format #: lib/web/templates/email/event_participation_confirmed.text.eex:4 +#, elixir-format msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Olet vahvistanut osallistumisesi. Päivitä kalenterisi, sillä olet " "osallistujaluettelossa!" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:38 #: lib/web/templates/email/event_participation_confirmed.html.eex:38 +#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Lähetit pyynnön osallistua tapahtumaan %{title}." -#, elixir-format #: lib/web/email/participation.ex:91 +#, elixir-format msgid "Your participation to event %{title} has been confirmed" msgstr "Osallistumisesi tapahtumaan %{title} on hyväksytty" -#, elixir-format #: lib/web/templates/email/report.html.eex:41 +#, elixir-format msgid "%{reporter} reported the following content." msgstr "" "%{reporter_name} (%{reporter_username}) raportoi seuraavan sisällön." -#, elixir-format #: lib/web/templates/email/report.text.eex:5 +#, elixir-format msgid "Group %{group} was reported" msgstr "Ryhmästä %{group} tehtiin ilmoitus" -#, elixir-format #: lib/web/templates/email/report.html.eex:51 +#, elixir-format msgid "Group reported" msgstr "Ryhmästä ilmoitettu" -#, elixir-format #: lib/web/templates/email/report.text.eex:7 +#, elixir-format msgid "Profile %{profile} was reported" msgstr "Profiilista %{profile} tehtiin ilmoitus" -#, elixir-format #: lib/web/templates/email/report.html.eex:56 +#, elixir-format msgid "Profile reported" msgstr "Profiili ilmoitettu" -#, elixir-format #: lib/web/templates/email/event_participation_confirmed.html.eex:45 +#, elixir-format msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Olet vahvistanut osallistumisesi. Päivitä kalenterisi, sillä olet " "osallistujaluettelossa!" -#, elixir-format #: lib/mobilizon/posts/post.ex:94 +#, elixir-format msgid "A text is required for the post" msgstr "Julkaisuun vaaditaan tekstiä" -#, elixir-format #: lib/mobilizon/posts/post.ex:93 +#, elixir-format msgid "A title is required for the post" msgstr "Julkaisulle vaaditaan otsikko" -#, elixir-format #: lib/web/templates/email/instance_follow.text.eex:3 +#, elixir-format msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "%{name} (%{domain}) pyysi saada seurata palvelintasi." -#, elixir-format #: lib/web/email/follow.ex:54 +#, elixir-format msgid "%{name} requests to follow your instance" msgstr "%{name} pyytää saada seurata palvelintasi" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:38 +#, elixir-format msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "" "%{name} (%{domain}) pyysi saada seurata palvelintasi. Jos hyväksyt " "pyynnön, kyseiselle palvelimelle lähetetään kaikki julkiset tapahtumat tällä " "palvelimella." -#, elixir-format #: lib/web/templates/email/instance_follow.text.eex:4 +#, elixir-format msgid "If you accept, this instance will receive all of your public events." msgstr "" "Jos hyväksyt, kyseiselle palvelimelle lähetetään kaikki julkiset tapahtumasi." -#, elixir-format #: lib/web/email/follow.ex:48 +#, elixir-format msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "Palvelin %{name} (%{domain}) haluaa seurata palvelintasi" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:66 +#, elixir-format msgid "See the federation settings" msgstr "Katso federaatioasetukset" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:52 #: lib/web/templates/email/instance_follow.text.eex:6 +#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "Hyväksy kutsu siirtymällä omiin ryhmiisi." -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:13 #: lib/web/templates/email/instance_follow.text.eex:1 +#, elixir-format msgid "Want to connect?" msgstr "Haluatko yhdistää?" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:45 #: lib/web/templates/email/instance_follow.text.eex:5 +#, elixir-format msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "" "Huom: vaikka %{name} (%{domain}) seuraa sinua, se ei tarkoita, että sinä " "seuraisit kyseistä palvelinta, mutta voit tietenkin lähettää sinne " "seuraamispyynnön." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 +#, elixir-format msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "Hei! Rekisteröidyit juuri tapahtumaan ”%{title}”. Vahvista " "ilmoittamasi sähköpostiosoite:" -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:38 +#, elixir-format msgid "You issued a request to attend %{title}." msgstr "Lähetit pyynnön osallistua tapahtumaan %{title}." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:64 +#, elixir-format msgid "Event title" msgstr "Tapahtuman otsikko" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:38 +#, elixir-format msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "" "%{title} on joiltain osin muuttunut, ja ajattelimme ilmoittaa asiasta." -#, elixir-format #: lib/web/templates/error/500_page.html.eex:46 +#, elixir-format msgid "The Mobilizon server seems to be temporarily down." msgstr "Mobilizon-palvelin näyttää olevan väliakaisesti alhaalla." -#, elixir-format #: lib/web/templates/error/500_page.html.eex:7 +#, elixir-format msgid "This page is not correct" msgstr "Sivua ei löydy" -#, elixir-format #: lib/web/templates/error/500_page.html.eex:45 +#, elixir-format msgid "We're sorry, but something went wrong on our end." msgstr "Pahoittelemme, tapahtui virhe palvelimen päässä." -#, elixir-format #: lib/web/templates/email/email.html.eex:88 #: lib/web/templates/email/email.text.eex:4 +#, elixir-format msgid "This is a demonstration site to test Mobilizon." msgstr "Tällä kokeilusivustolla voit koekäyttää Mobilizonia." -#, elixir-format #: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +#, elixir-format msgid "%{name}'s feed" -msgstr "" +msgstr "%{name} – syöte" -#, elixir-format #: lib/service/export/feed.ex:77 +#, elixir-format msgid "%{actor}'s private events feed on %{instance}" -msgstr "" +msgstr "%{actor} – yksityistapahtumien syöte palvelimella %{instance}" -#, elixir-format #: lib/service/export/feed.ex:72 -msgid "%{actor}'s public events feed on %{instance}" -msgstr "" - #, elixir-format +msgid "%{actor}'s public events feed on %{instance}" +msgstr "%{actor} – julkisten tapahtumien syöte palvelimella %{instance}" + #: lib/service/export/feed.ex:203 +#, elixir-format msgid "Feed for %{email} on %{instance}" -msgstr "" +msgstr "%{email}-syöte palvelimella %{instance}" From 977a69ee95898f53989bc122cc076bf8907d7400 Mon Sep 17 00:00:00 2001 From: Taru Luojola Date: Tue, 19 Jan 2021 15:31:09 +0000 Subject: [PATCH 075/114] Translated using Weblate (Finnish) Currently translated at 100.0% (831 of 831 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fi/ --- js/src/i18n/fi.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/js/src/i18n/fi.json b/js/src/i18n/fi.json index c9cb57270..7b6290d80 100644 --- a/js/src/i18n/fi.json +++ b/js/src/i18n/fi.json @@ -89,6 +89,7 @@ "Are you sure you want to delete this event? This action cannot be reverted.": "Haluatko varmasti poistaa tämän tapahtuman? Toimintoa ei voi perua.", "As the event organizer has chosen to manually validate participation requests, your participation will be really confirmed only once you receive an email stating it's being accepted.": "Tapahtuman järjestäjä vahvistaa osallistumispyynnöt käsin, joten osallistumisesi on vahvistettu vasta sitten, kun saat vahvistuksesta kertovan sähköpostin.", "Assigned to": "Yhdistetty", + "Atom feed for events and posts": "Tapahtumien ja julkaisujen Atom-syöte", "Avatar": "Avatar", "Back to previous page": "Palaa edelliselle sivulle", "Banner": "Banneri", @@ -333,6 +334,8 @@ "I participate": "Osallistun", "I want to allow people to participate without an account.": "Osallistuminen ilman käyttäjätiliä sallittu.", "I want to approve every participation request": "Haluan hyväksyä kaikki osallistumispyynnöt", + "ICS feed for events": "Tapahtumien ICS-syöte", + "ICS/WebCal Feed": "ICS/WebCal-syöte", "Identity {displayName} created": "Identiteetti {displayName} luotu", "Identity {displayName} deleted": "Identiteetti {displayName} poistettu", "Identity {displayName} updated": "Identiteetti {displayName} päivitetty", From 5826a2154b74b208b27096607376113c53201612 Mon Sep 17 00:00:00 2001 From: Berto Te Date: Wed, 20 Jan 2021 08:59:06 +0000 Subject: [PATCH 076/114] Translated using Weblate (Spanish) Currently translated at 100.0% (166 of 166 strings) Translation: Mobilizon/Backend errors Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/es/ --- priv/gettext/es/LC_MESSAGES/errors.po | 296 +++++++++++++------------- 1 file changed, 148 insertions(+), 148 deletions(-) diff --git a/priv/gettext/es/LC_MESSAGES/errors.po b/priv/gettext/es/LC_MESSAGES/errors.po index 9f87cefe3..8167a4c87 100644 --- a/priv/gettext/es/LC_MESSAGES/errors.po +++ b/priv/gettext/es/LC_MESSAGES/errors.po @@ -8,7 +8,7 @@ ## to merge POT files into PO files. msgid "" msgstr "" -"PO-Revision-Date: 2020-11-21 23:52+0000\n" +"PO-Revision-Date: 2021-01-20 16:18+0000\n" "Last-Translator: Berto Te \n" "Language-Team: Spanish \n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1\n" +"X-Generator: Weblate 4.4\n" msgid "can't be blank" msgstr "no pueden estar vacíos" @@ -93,764 +93,764 @@ msgstr "debe ser mayor o igual que% {number}" msgid "must be equal to %{number}" msgstr "debe ser igual a% {number}" -#, elixir-format #: lib/graphql/resolvers/user.ex:103 +#, elixir-format msgid "Cannot refresh the token" msgstr "No se puede actualizar el token" -#, elixir-format #: lib/graphql/resolvers/group.ex:195 +#, elixir-format msgid "Current profile is not a member of this group" msgstr "El perfil actual no es miembro de este grupo" -#, elixir-format #: lib/graphql/resolvers/group.ex:199 +#, elixir-format msgid "Current profile is not an administrator of the selected group" msgstr "El perfil actual no es un administrador del grupo seleccionado" -#, elixir-format #: lib/graphql/resolvers/user.ex:512 +#, elixir-format msgid "Error while saving user settings" msgstr "Error al guardar los parámetros del usuario" -#, elixir-format #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 #: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 +#, elixir-format msgid "Group not found" msgstr "Grupo no encontrado" -#, elixir-format #: lib/graphql/resolvers/group.ex:63 +#, elixir-format msgid "Group with ID %{id} not found" msgstr "No se encontró el grupo con ID% {id}" -#, elixir-format #: lib/graphql/resolvers/user.ex:83 +#, elixir-format msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" "Imposible autenticarse, su correo electrónico o contraseña no son válidos." -#, elixir-format #: lib/graphql/resolvers/group.ex:255 +#, elixir-format msgid "Member not found" msgstr "Miembro no encontrado" -#, elixir-format #: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 #: lib/graphql/resolvers/user.ex:417 +#, elixir-format msgid "No profile found for the moderator user" msgstr "No se encontró el perfil del usuario moderador" -#, elixir-format #: lib/graphql/resolvers/user.ex:195 +#, elixir-format msgid "No user to validate with this email was found" msgstr "No se encontró ningún usuario para validar con este correo electrónico" -#, elixir-format #: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 +#, elixir-format msgid "No user with this email was found" msgstr "No se encontró ningún usuario con este correo electrónico" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 #: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 +#, elixir-format msgid "Profile is not owned by authenticated user" msgstr "El perfil no es propiedad del usuario autenticado" -#, elixir-format #: lib/graphql/resolvers/user.ex:125 +#, elixir-format msgid "Registrations are not open" msgstr "Las inscripciones no están abiertas" -#, elixir-format #: lib/graphql/resolvers/user.ex:330 +#, elixir-format msgid "The current password is invalid" msgstr "La contraseña actual no es válida" -#, elixir-format #: lib/graphql/resolvers/user.ex:382 +#, elixir-format msgid "The new email doesn't seem to be valid" msgstr "El nuevo correo electrónico no parece ser válido" -#, elixir-format #: lib/graphql/resolvers/user.ex:379 +#, elixir-format msgid "The new email must be different" msgstr "El nuevo correo electrónico debe ser diferente" -#, elixir-format #: lib/graphql/resolvers/user.ex:333 +#, elixir-format msgid "The new password must be different" 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:442 +#, elixir-format msgid "The password provided is invalid" msgstr "La contraseña proporcionada no es válida" -#, elixir-format #: lib/graphql/resolvers/user.ex:337 +#, elixir-format msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" "La contraseña que ha elegido es demasiado corta. Asegúrese de que su " "contraseña contenga al menos 6 caracteres." -#, elixir-format #: lib/graphql/resolvers/user.ex:215 +#, elixir-format msgid "This user can't reset their password" msgstr "Este usuario no puede restablecer su contraseña" -#, elixir-format #: lib/graphql/resolvers/user.ex:79 +#, elixir-format msgid "This user has been disabled" msgstr "Este usuario ha sido inhabilitado" -#, elixir-format #: lib/graphql/resolvers/user.ex:179 +#, elixir-format msgid "Unable to validate user" msgstr "No se puede validar al usuario" -#, elixir-format #: lib/graphql/resolvers/user.ex:420 +#, elixir-format msgid "User already disabled" msgstr "El usuario ya está inhabilitado" -#, elixir-format #: lib/graphql/resolvers/user.ex:487 +#, elixir-format msgid "User requested is not logged-in" msgstr "El usuario solicitado no ha iniciado sesión" -#, elixir-format #: lib/graphql/resolvers/group.ex:229 +#, elixir-format msgid "You are already a member of this group" msgstr "Ya eres miembro de este grupo" -#, elixir-format #: lib/graphql/resolvers/group.ex:262 +#, elixir-format msgid "You can't leave this group because you are the only administrator" msgstr "No puedes dejar este grupo porque eres el único administrador" -#, elixir-format #: lib/graphql/resolvers/group.ex:226 +#, elixir-format msgid "You cannot join this group" msgstr "No puedes unirte a este grupo" -#, elixir-format #: lib/graphql/resolvers/group.ex:91 +#, elixir-format msgid "You may not list groups unless moderator." msgstr "No puedes enumerar grupos a menos que seas moderador." -#, elixir-format #: lib/graphql/resolvers/user.ex:387 +#, elixir-format msgid "You need to be logged-in to change your email" msgstr "Debes iniciar sesión para cambiar tu correo electrónico" -#, elixir-format #: lib/graphql/resolvers/user.ex:345 +#, elixir-format msgid "You need to be logged-in to change your password" msgstr "Debes iniciar sesión para cambiar tu contraseña" -#, elixir-format #: lib/graphql/resolvers/group.ex:204 +#, elixir-format msgid "You need to be logged-in to delete a group" msgstr "Debes iniciar sesión para eliminar un grupo" -#, elixir-format #: lib/graphql/resolvers/user.ex:447 +#, elixir-format msgid "You need to be logged-in to delete your account" msgstr "Debes iniciar sesión para eliminar su cuenta" -#, elixir-format #: lib/graphql/resolvers/group.ex:234 +#, elixir-format msgid "You need to be logged-in to join a group" msgstr "Debes iniciar sesión para eliminar su cuenta" -#, elixir-format #: lib/graphql/resolvers/group.ex:267 +#, elixir-format msgid "You need to be logged-in to leave a group" msgstr "Debes iniciar sesión para dejar un grupo" -#, elixir-format #: lib/graphql/resolvers/group.ex:169 +#, elixir-format msgid "You need to be logged-in to update a group" msgstr "Debes iniciar sesión para actualizar un grupo" -#, elixir-format #: lib/graphql/resolvers/user.ex:108 +#, elixir-format 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" -#, elixir-format #: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 +#, elixir-format msgid "You requested again a confirmation email too soon" msgstr "" "Solicitó de nuevo un correo electrónico de confirmación demasiado pronto" -#, elixir-format #: lib/graphql/resolvers/user.ex:128 +#, elixir-format msgid "Your email is not on the allowlist" msgstr "Tu correo electrónico no está en la lista de permitidos" -#, elixir-format #: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#, elixir-format msgid "Error while performing background task" msgstr "Error al realizar la tarea en segundo plano" -#, elixir-format #: lib/graphql/resolvers/actor.ex:27 +#, elixir-format msgid "No profile found with this ID" msgstr "No se encontró ningún perfil con este ID" -#, elixir-format #: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#, elixir-format msgid "No remote profile found with this ID" msgstr "No se encontró ningún perfil remoto con este ID" -#, elixir-format #: lib/graphql/resolvers/actor.ex:69 +#, elixir-format msgid "Only moderators and administrators can suspend a profile" msgstr "Solo los moderadores y administradores pueden suspender un perfil" -#, elixir-format #: lib/graphql/resolvers/actor.ex:99 +#, elixir-format msgid "Only moderators and administrators can unsuspend a profile" msgstr "" "Solo los moderadores y administradores pueden anular la suspensión de un " "perfil" -#, elixir-format #: lib/graphql/resolvers/actor.ex:24 +#, elixir-format msgid "Only remote profiles may be refreshed" msgstr "Solo se pueden actualizar los perfiles remotos" -#, elixir-format #: lib/graphql/resolvers/actor.ex:61 +#, elixir-format msgid "Profile already suspended" msgstr "Perfil ya suspendido" -#, elixir-format #: lib/graphql/resolvers/participant.ex:92 +#, elixir-format msgid "A valid email is required by your instance" msgstr "Su instancia requiere un correo electrónico válido" -#, elixir-format #: lib/graphql/resolvers/participant.ex:86 +#, elixir-format msgid "Anonymous participation is not enabled" msgstr "La participación anónima no está habilitada" -#, elixir-format #: lib/graphql/resolvers/person.ex:192 +#, elixir-format msgid "Cannot remove the last administrator of a group" msgstr "No se puede eliminar al último administrador de un grupo" -#, elixir-format #: lib/graphql/resolvers/person.ex:189 +#, elixir-format msgid "Cannot remove the last identity of a user" msgstr "No se puede eliminar la última identidad de un usuario" -#, elixir-format #: lib/graphql/resolvers/comment.ex:105 +#, elixir-format msgid "Comment is already deleted" msgstr "El comentario ya está eliminado" -#, elixir-format #: lib/graphql/resolvers/discussion.ex:62 +#, elixir-format msgid "Discussion not found" msgstr "Discusión no encontrada" -#, elixir-format #: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 +#, elixir-format msgid "Error while saving report" msgstr "Error al guardar el informe" -#, elixir-format #: lib/graphql/resolvers/report.ex:96 +#, elixir-format msgid "Error while updating report" msgstr "Error al actualizar el informe" -#, elixir-format #: lib/graphql/resolvers/participant.ex:127 +#, elixir-format msgid "Event id not found" msgstr "ID de evento no encontrado" -#, elixir-format #: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 #: lib/graphql/resolvers/event.ex:280 +#, elixir-format msgid "Event not found" msgstr "Evento no encontrado" -#, elixir-format #: lib/graphql/resolvers/participant.ex:83 #: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 +#, elixir-format msgid "Event with this ID %{id} doesn't exist" msgstr "El evento con este ID%{id} no existe" -#, elixir-format #: lib/graphql/resolvers/participant.ex:99 +#, elixir-format msgid "Internal Error" msgstr "Error interno" -#, elixir-format #: lib/graphql/resolvers/discussion.ex:186 +#, elixir-format msgid "No discussion with ID %{id}" msgstr "Sin discusión con ID%{id}" -#, elixir-format #: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 +#, elixir-format msgid "No profile found for user" msgstr "No se encontró perfil para el usuario" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:63 +#, elixir-format msgid "No such feed token" msgstr "No existe tal token de alimentación" -#, elixir-format #: lib/graphql/resolvers/participant.ex:237 +#, elixir-format msgid "Participant already has role %{role}" msgstr "El participante ya tiene el rol%{role}" -#, elixir-format #: lib/graphql/resolvers/participant.ex:169 #: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 #: lib/graphql/resolvers/participant.ex:240 +#, elixir-format msgid "Participant not found" msgstr "Participante no encontrado" -#, elixir-format #: lib/graphql/resolvers/person.ex:29 +#, elixir-format msgid "Person with ID %{id} not found" msgstr "Persona con ID%{id} no encontrada" -#, elixir-format #: lib/graphql/resolvers/person.ex:51 +#, elixir-format msgid "Person with username %{username} not found" msgstr "Persona con nombre de usuario %{username} no encontrada" -#, elixir-format #: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 +#, elixir-format msgid "Post ID is not a valid ID" msgstr "La ID de publicación no es válida" -#, elixir-format #: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 +#, elixir-format msgid "Post doesn't exist" msgstr "La publicación no existe" -#, elixir-format #: lib/graphql/resolvers/member.ex:83 +#, elixir-format msgid "Profile invited doesn't exist" msgstr "El perfil invitado no existe" -#, elixir-format #: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 +#, elixir-format msgid "Profile is already a member of this group" msgstr "Perfil ya es miembro de este grupo" -#, elixir-format #: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 #: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 +#, elixir-format msgid "Profile is not member of group" msgstr "El perfil no es miembro del grupo" -#, elixir-format #: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 +#, elixir-format msgid "Profile not found" msgstr "Perfil no encontrado" -#, elixir-format #: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 +#, elixir-format msgid "Provided moderator profile doesn't have permission on this event" msgstr "El perfil de moderador proporcionado no tiene permiso para este evento" -#, elixir-format #: lib/graphql/resolvers/report.ex:36 +#, elixir-format msgid "Report not found" msgstr "Informe no encontrado" -#, elixir-format #: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 +#, elixir-format msgid "Resource doesn't exist" msgstr "El recurso no existe" -#, elixir-format #: lib/graphql/resolvers/participant.ex:120 +#, elixir-format msgid "The event has already reached its maximum capacity" msgstr "El evento ya alcanzó su capacidad máxima" -#, elixir-format #: lib/graphql/resolvers/participant.ex:260 +#, elixir-format msgid "This token is invalid" msgstr "Este token no es válido" -#, elixir-format #: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 +#, elixir-format msgid "Todo doesn't exist" msgstr "Todo no existe" -#, elixir-format #: lib/graphql/resolvers/todos.ex:75 lib/graphql/resolvers/todos.ex:191 #: lib/graphql/resolvers/todos.ex:216 +#, elixir-format msgid "Todo list doesn't exist" msgstr "La lista de tareas pendientes no existe" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:69 +#, elixir-format msgid "Token does not exist" msgstr "El token no existe" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:66 +#, elixir-format msgid "Token is not a valid UUID" msgstr "El token no es un UUID válido" -#, elixir-format #: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 +#, elixir-format msgid "User not found" msgstr "Usuario no encontrado" -#, elixir-format #: lib/graphql/resolvers/person.ex:252 +#, elixir-format msgid "You already have a profile for this user" msgstr "Ya tienes un perfil para este usuario" -#, elixir-format #: lib/graphql/resolvers/participant.ex:130 +#, elixir-format msgid "You are already a participant of this event" msgstr "Ya eres participante de este evento" -#, elixir-format #: lib/graphql/resolvers/discussion.ex:190 +#, elixir-format 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" -#, elixir-format #: lib/graphql/resolvers/member.ex:86 +#, elixir-format msgid "You are not a member of this group" msgstr "no eres un miembro de este grupo" -#, elixir-format #: lib/graphql/resolvers/member.ex:151 +#, elixir-format msgid "You are not a moderator or admin for this group" msgstr "No eres moderador ni administrador de este grupo" -#, elixir-format #: lib/graphql/resolvers/comment.ex:51 +#, elixir-format msgid "You are not allowed to create a comment if not connected" msgstr "No está permitido crear un comentario si no está conectado" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:41 +#, elixir-format 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" -#, elixir-format #: lib/graphql/resolvers/comment.ex:110 +#, elixir-format msgid "You are not allowed to delete a comment if not connected" msgstr "No puede eliminar un comentario si no está conectado" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:78 +#, elixir-format 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" -#, elixir-format #: lib/graphql/resolvers/comment.ex:73 +#, elixir-format msgid "You are not allowed to update a comment if not connected" msgstr "No se le permite actualizar un comentario si no está conectado" -#, elixir-format #: lib/graphql/resolvers/participant.ex:163 #: lib/graphql/resolvers/participant.ex:192 +#, elixir-format msgid "You can't leave event because you're the only event creator participant" msgstr "" "No puedes abandonar el evento porque eres el único participante creador del " "evento" -#, elixir-format #: lib/graphql/resolvers/member.ex:155 +#, elixir-format msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgstr "" "No puede establecerse en un rol de miembro inferior para este grupo porque " "es el único administrador" -#, elixir-format #: lib/graphql/resolvers/comment.ex:101 +#, elixir-format msgid "You cannot delete this comment" msgstr "No puedes borrar este comentario" -#, elixir-format #: lib/graphql/resolvers/event.ex:276 +#, elixir-format msgid "You cannot delete this event" msgstr "No puedes borrar este evento" -#, elixir-format #: lib/graphql/resolvers/member.ex:89 +#, elixir-format msgid "You cannot invite to this group" msgstr "No puedes invitar a este grupo" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:72 +#, elixir-format msgid "You don't have permission to delete this token" msgstr "No tienes permiso para eliminar este token" -#, elixir-format #: lib/graphql/resolvers/admin.ex:52 +#, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" "Debe iniciar sesión y un moderador para enumerar los registros de acción" -#, elixir-format #: lib/graphql/resolvers/report.ex:26 +#, elixir-format 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" -#, elixir-format #: lib/graphql/resolvers/report.ex:101 +#, elixir-format 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" -#, elixir-format #: lib/graphql/resolvers/report.ex:41 +#, elixir-format 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" -#, elixir-format #: lib/graphql/resolvers/admin.ex:236 +#, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Debe iniciar sesión y ser administrador para acceder a la configuración de " "administrador" -#, elixir-format #: lib/graphql/resolvers/admin.ex:221 +#, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Debe iniciar sesión y ser administrador para acceder a las estadísticas del " "panel" -#, elixir-format #: lib/graphql/resolvers/admin.ex:260 +#, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Debe iniciar sesión y ser administrador para acceder a las estadísticas del " "panel" -#, elixir-format #: lib/graphql/resolvers/discussion.ex:76 +#, elixir-format msgid "You need to be logged-in to access discussions" msgstr "Debe iniciar sesión para acceder a las discusiones" -#, elixir-format #: lib/graphql/resolvers/resource.ex:93 +#, elixir-format msgid "You need to be logged-in to access resources" msgstr "Debes iniciar sesión para acceder a los recursos" -#, elixir-format #: lib/graphql/resolvers/event.ex:211 +#, elixir-format msgid "You need to be logged-in to create events" msgstr "Debes iniciar sesión para crear eventos" -#, elixir-format #: lib/graphql/resolvers/post.ex:140 +#, elixir-format msgid "You need to be logged-in to create posts" msgstr "Debes iniciar sesión para crear publicaciones" -#, elixir-format #: lib/graphql/resolvers/report.ex:74 +#, elixir-format msgid "You need to be logged-in to create reports" msgstr "Debe iniciar sesión para crear informes" -#, elixir-format #: lib/graphql/resolvers/resource.ex:129 +#, elixir-format msgid "You need to be logged-in to create resources" msgstr "Debe iniciar sesión para crear recursos" -#, elixir-format #: lib/graphql/resolvers/event.ex:285 +#, elixir-format msgid "You need to be logged-in to delete an event" msgstr "Debe iniciar sesión para eliminar un evento" -#, elixir-format #: lib/graphql/resolvers/post.ex:211 +#, elixir-format msgid "You need to be logged-in to delete posts" msgstr "Debes iniciar sesión para eliminar publicaciones" -#, elixir-format #: lib/graphql/resolvers/resource.ex:187 +#, elixir-format msgid "You need to be logged-in to delete resources" msgstr "Debes iniciar sesión para eliminar recursos" -#, elixir-format #: lib/graphql/resolvers/participant.ex:104 +#, elixir-format msgid "You need to be logged-in to join an event" msgstr "Debes iniciar sesión para eliminar recursos" -#, elixir-format #: lib/graphql/resolvers/participant.ex:203 +#, elixir-format msgid "You need to be logged-in to leave an event" msgstr "Debes iniciar sesión para salir de un evento" -#, elixir-format #: lib/graphql/resolvers/event.ex:250 +#, elixir-format msgid "You need to be logged-in to update an event" msgstr "Debe iniciar sesión para actualizar un evento" -#, elixir-format #: lib/graphql/resolvers/post.ex:178 +#, elixir-format msgid "You need to be logged-in to update posts" msgstr "Debes iniciar sesión para actualizar las publicaciones" -#, elixir-format #: lib/graphql/resolvers/resource.ex:158 +#, elixir-format msgid "You need to be logged-in to update resources" msgstr "Debes iniciar sesión para actualizar los recursos" -#, elixir-format #: lib/graphql/resolvers/resource.ex:210 +#, elixir-format msgid "You need to be logged-in to view a resource preview" msgstr "Debe iniciar sesión para ver una vista previa del recurso" -#, elixir-format #: lib/graphql/resolvers/resource.ex:121 +#, elixir-format msgid "Parent resource doesn't belong to this group" msgstr "El recurso principal no pertenece a este grupo" -#, elixir-format #: lib/mobilizon/users/user.ex:109 +#, elixir-format msgid "The chosen password is too short." msgstr "La contraseña elegida es demasiado corta." -#, elixir-format #: lib/mobilizon/users/user.ex:138 +#, elixir-format msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" "El token de registro ya está en uso, esto parece un problema de nuestra " "parte." -#, elixir-format #: lib/mobilizon/users/user.ex:104 +#, elixir-format msgid "This email is already used." msgstr "Este correo electrónico ya está en uso." -#, elixir-format #: lib/graphql/error.ex:88 +#, elixir-format msgid "Post not found" msgstr "Informe no encontrado" -#, elixir-format #: lib/graphql/error.ex:75 +#, elixir-format msgid "Invalid arguments passed" msgstr "Se pasaron argumentos no válidos" -#, elixir-format #: lib/graphql/error.ex:81 +#, elixir-format msgid "Invalid credentials" msgstr "Credenciales no válidas" -#, elixir-format #: lib/graphql/error.ex:79 +#, elixir-format msgid "Reset your password to login" msgstr "Restablezca su contraseña para iniciar sesión" -#, elixir-format #: lib/graphql/error.ex:86 lib/graphql/error.ex:91 +#, elixir-format msgid "Resource not found" msgstr "Recurso no encontrado" -#, elixir-format #: lib/graphql/error.ex:92 +#, elixir-format msgid "Something went wrong" msgstr "Algo salió mal" -#, elixir-format #: lib/graphql/error.ex:74 +#, elixir-format msgid "Unknown Resource" msgstr "Recurso desconocido" -#, elixir-format #: lib/graphql/error.ex:84 +#, elixir-format msgid "You don't have permission to do this" msgstr "No tienes permiso para hacer esto" -#, elixir-format #: lib/graphql/error.ex:76 +#, elixir-format msgid "You need to be logged in" msgstr "Debes iniciar sesión" -#, elixir-format #: lib/graphql/resolvers/member.ex:116 +#, elixir-format msgid "You can't accept this invitation with this profile." msgstr "No puedes aceptar esta invitación con este perfil." -#, elixir-format #: lib/graphql/resolvers/member.ex:134 +#, elixir-format msgid "You can't reject this invitation with this profile." msgstr "No puedes rechazar esta invitación con este perfil." -#, elixir-format #: lib/graphql/resolvers/media.ex:62 +#, elixir-format msgid "File doesn't have an allowed MIME type." msgstr "El archivo no tiene un tipo MIME permitido." -#, elixir-format #: lib/graphql/resolvers/group.ex:164 +#, elixir-format msgid "Profile is not administrator for the group" msgstr "El perfil no es miembro del grupo" -#, elixir-format #: lib/graphql/resolvers/event.ex:239 +#, elixir-format msgid "You can't edit this event." msgstr "No puedes borrar este evento." -#, elixir-format #: lib/graphql/resolvers/event.ex:242 +#, elixir-format msgid "You can't attribute this event to this profile." msgstr "No puedes rechazar esta invitación con este perfil." -#, elixir-format #: lib/graphql/resolvers/member.ex:137 +#, elixir-format msgid "This invitation doesn't exist." msgstr "Esta invitación no existe." -#, elixir-format #: lib/graphql/resolvers/member.ex:179 +#, elixir-format msgid "This member already has been rejected." msgstr "Este miembro ya ha sido rechazado." -#, elixir-format #: lib/graphql/resolvers/member.ex:186 +#, elixir-format msgid "You don't have the right to remove this member." msgstr "No tiene derecho a eliminar este miembro." -#, elixir-format #: lib/mobilizon/actors/actor.ex:351 +#, elixir-format msgid "This username is already taken." msgstr "Este nombre de usuario ya está en uso." -#, elixir-format #: lib/graphql/resolvers/discussion.ex:73 +#, elixir-format msgid "You must provide either an ID or a slug to access a discussion" msgstr "" "Debe proporcionar una identificación o un slug para acceder a una discusión" -#, elixir-format #: lib/graphql/resolvers/event.ex:200 +#, elixir-format msgid "Organizer profile is not owned by the user" msgstr "El perfil del organizador no es propiedad del usuario" -#, elixir-format #: lib/graphql/resolvers/participant.ex:89 +#, elixir-format msgid "Profile ID provided is not the anonymous profile one" msgstr "El ID de perfil proporcionado no es el del perfil anónimo" -#, elixir-format #: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 #: lib/graphql/resolvers/person.ex:246 +#, elixir-format msgid "The provided picture is too heavy" -msgstr "" +msgstr "La imagen proporcionada es demasiado pesada" From a5883c2cb0200dbfff64b7d4abe0d948af130314 Mon Sep 17 00:00:00 2001 From: Taru Luojola Date: Tue, 19 Jan 2021 15:33:22 +0000 Subject: [PATCH 077/114] Translated using Weblate (Finnish) Currently translated at 100.0% (166 of 166 strings) Translation: Mobilizon/Backend errors Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/fi/ --- priv/gettext/fi/LC_MESSAGES/errors.po | 296 +++++++++++++------------- 1 file changed, 148 insertions(+), 148 deletions(-) diff --git a/priv/gettext/fi/LC_MESSAGES/errors.po b/priv/gettext/fi/LC_MESSAGES/errors.po index c259b0e83..f4dd2a073 100644 --- a/priv/gettext/fi/LC_MESSAGES/errors.po +++ b/priv/gettext/fi/LC_MESSAGES/errors.po @@ -8,7 +8,7 @@ ## to merge POT files into PO files. msgid "" msgstr "" -"PO-Revision-Date: 2020-11-20 14:29+0000\n" +"PO-Revision-Date: 2021-01-20 16:18+0000\n" "Last-Translator: Taru Luojola \n" "Language-Team: Finnish \n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1\n" +"X-Generator: Weblate 4.4\n" msgid "can't be blank" msgstr "ei voi olla tyhjä" @@ -93,750 +93,750 @@ msgstr "tulee olla vähintään %{number}" msgid "must be equal to %{number}" msgstr "tulee olla tasas %{number}" -#, elixir-format #: lib/graphql/resolvers/user.ex:103 +#, elixir-format msgid "Cannot refresh the token" msgstr "Merkkiä ei voi päivittää" -#, elixir-format #: lib/graphql/resolvers/group.ex:195 +#, elixir-format msgid "Current profile is not a member of this group" msgstr "Nykyinen profiili ei kuulu tähän ryhmään" -#, elixir-format #: lib/graphql/resolvers/group.ex:199 +#, elixir-format msgid "Current profile is not an administrator of the selected group" msgstr "Nykyinen profiili ei ole valitun ryhmän ylläpitäjä" -#, elixir-format #: lib/graphql/resolvers/user.ex:512 +#, elixir-format msgid "Error while saving user settings" msgstr "Käyttäjän asetusten tallennuksessa tapahtui virhe" -#, elixir-format #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 #: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 +#, elixir-format msgid "Group not found" msgstr "Ryhmää ei löydy" -#, elixir-format #: lib/graphql/resolvers/group.ex:63 +#, elixir-format msgid "Group with ID %{id} not found" msgstr "Tunnuksella %{id} ei löydy ryhmää" -#, elixir-format #: lib/graphql/resolvers/user.ex:83 +#, elixir-format msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" "Kirjautuminen epäonnistui - joko sähköpostiosoitteesi tai salasana on väärin." -#, elixir-format #: lib/graphql/resolvers/group.ex:255 +#, elixir-format msgid "Member not found" msgstr "Jäsentä ei löydy" -#, elixir-format #: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 #: lib/graphql/resolvers/user.ex:417 +#, elixir-format msgid "No profile found for the moderator user" msgstr "Moderaattorikäyttäjän profiilia ei löydy" -#, elixir-format #: lib/graphql/resolvers/user.ex:195 +#, elixir-format msgid "No user to validate with this email was found" msgstr "Käyttäjää tämän sähköpostin vahvistamiseksi ei löydy" -#, elixir-format #: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 +#, elixir-format msgid "No user with this email was found" msgstr "Käyttäjää, jolla on tämä sähköpostiosoite ei löydy" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 #: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 +#, elixir-format msgid "Profile is not owned by authenticated user" msgstr "Profiili ei ole tunnistautuneen käyttäjän omistuksessa" -#, elixir-format #: lib/graphql/resolvers/user.ex:125 +#, elixir-format msgid "Registrations are not open" msgstr "Ei voi rekisteröityä" -#, elixir-format #: lib/graphql/resolvers/user.ex:330 +#, elixir-format msgid "The current password is invalid" msgstr "Nykyinen salasana ei kelpaa" -#, elixir-format #: lib/graphql/resolvers/user.ex:382 +#, elixir-format msgid "The new email doesn't seem to be valid" msgstr "Uusi sähköpostiosoite ei vaikuta kelvolliselta" -#, elixir-format #: lib/graphql/resolvers/user.ex:379 +#, elixir-format msgid "The new email must be different" msgstr "Uuden sähköpostiosoitteen on poikettava vanhasta" -#, elixir-format #: lib/graphql/resolvers/user.ex:333 +#, elixir-format msgid "The new password must be different" msgstr "Uuden salasanan on poikettava vanhasta" -#, elixir-format #: lib/graphql/resolvers/user.ex:376 lib/graphql/resolvers/user.ex:439 #: lib/graphql/resolvers/user.ex:442 +#, elixir-format msgid "The password provided is invalid" msgstr "Annettu salasana on epäkelpo" -#, elixir-format #: lib/graphql/resolvers/user.ex:337 +#, elixir-format msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" "Valitsemasi salasana on liian lyhyt. Käytä vähintään kuuden merkin mittaista " "salasanaa." -#, elixir-format #: lib/graphql/resolvers/user.ex:215 +#, elixir-format msgid "This user can't reset their password" msgstr "Käyttäjä ei voi palauttaa salasanaansa" -#, elixir-format #: lib/graphql/resolvers/user.ex:79 +#, elixir-format msgid "This user has been disabled" msgstr "Käyttäjä on poistettu käytöstä" -#, elixir-format #: lib/graphql/resolvers/user.ex:179 +#, elixir-format msgid "Unable to validate user" msgstr "Käyttäjää ei voi vahvistaa" -#, elixir-format #: lib/graphql/resolvers/user.ex:420 +#, elixir-format msgid "User already disabled" msgstr "Käyttäjä on jo poistettu käytöstä" -#, elixir-format #: lib/graphql/resolvers/user.ex:487 +#, elixir-format msgid "User requested is not logged-in" msgstr "Pyydetty käyttäjä ei ole kirjautuneena sisään" -#, elixir-format #: lib/graphql/resolvers/group.ex:229 +#, elixir-format msgid "You are already a member of this group" msgstr "Olet jo tämän ryhmän jäsen" -#, elixir-format #: lib/graphql/resolvers/group.ex:262 +#, elixir-format msgid "You can't leave this group because you are the only administrator" msgstr "Et voi poistua ryhmästä, koska olet sen ainoa ylläpitäjä" -#, elixir-format #: lib/graphql/resolvers/group.ex:226 +#, elixir-format msgid "You cannot join this group" msgstr "Et voi liittyä tähän ryhmään" -#, elixir-format #: lib/graphql/resolvers/group.ex:91 +#, elixir-format msgid "You may not list groups unless moderator." msgstr "Voit nähdä ryhmäluettelon vain, jos olet moderaattori." -#, elixir-format #: lib/graphql/resolvers/user.ex:387 +#, elixir-format msgid "You need to be logged-in to change your email" msgstr "Sähköpostiosoitteen voi vaihtaa vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/user.ex:345 +#, elixir-format msgid "You need to be logged-in to change your password" msgstr "Salasanan voi vaihtaa vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/group.ex:204 +#, elixir-format msgid "You need to be logged-in to delete a group" msgstr "Ryhmän voi poistaa vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/user.ex:447 +#, elixir-format msgid "You need to be logged-in to delete your account" msgstr "Voit poistaa tilisi vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/group.ex:234 +#, elixir-format msgid "You need to be logged-in to join a group" msgstr "Voit liittyä ryhmään vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/group.ex:267 +#, elixir-format msgid "You need to be logged-in to leave a group" msgstr "Voit poistua ryhmästä vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/group.ex:169 +#, elixir-format msgid "You need to be logged-in to update a group" msgstr "Voit päivittää ryhmää vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/user.ex:108 +#, elixir-format msgid "You need to have an existing token to get a refresh token" msgstr "Voit saada uuden merkin vain, jos sinulla on jo merkki" -#, elixir-format #: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 +#, elixir-format msgid "You requested again a confirmation email too soon" msgstr "Pyysit uutta vahvistussähköpostia liian aikaisin" -#, elixir-format #: lib/graphql/resolvers/user.ex:128 +#, elixir-format msgid "Your email is not on the allowlist" msgstr "Sähköpostiosoitteesi ei ole sallittujen luettelossa" -#, elixir-format #: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#, elixir-format msgid "Error while performing background task" msgstr "Virhe taustatehtävää suoritettaessa" -#, elixir-format #: lib/graphql/resolvers/actor.ex:27 +#, elixir-format msgid "No profile found with this ID" msgstr "Tällä tunnisteella ei löytynyt profiilia" -#, elixir-format #: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#, elixir-format msgid "No remote profile found with this ID" msgstr "Tällä tunnisteella ei löytynyt etäprofiilia" -#, elixir-format #: lib/graphql/resolvers/actor.ex:69 +#, elixir-format msgid "Only moderators and administrators can suspend a profile" msgstr "Vain moderaattorit ja ylläpitäjät voivat hyllyttää profiilin" -#, elixir-format #: lib/graphql/resolvers/actor.ex:99 +#, elixir-format msgid "Only moderators and administrators can unsuspend a profile" msgstr "Vain moderaattorit ja ylläpitäjät voivat palauttaa hyllytetyn profiilin" -#, elixir-format #: lib/graphql/resolvers/actor.ex:24 +#, elixir-format msgid "Only remote profiles may be refreshed" msgstr "Vain etäprofiilit voi ladata uudelleen" -#, elixir-format #: lib/graphql/resolvers/actor.ex:61 +#, elixir-format msgid "Profile already suspended" msgstr "Profiili on jo hyllytetty" -#, elixir-format #: lib/graphql/resolvers/participant.ex:92 +#, elixir-format msgid "A valid email is required by your instance" msgstr "Palvelin vaatii kelvollisen sähköpostiosoitteen" -#, elixir-format #: lib/graphql/resolvers/participant.ex:86 +#, elixir-format msgid "Anonymous participation is not enabled" msgstr "Anonyymi osallistuminen ei ole käytössä" -#, elixir-format #: lib/graphql/resolvers/person.ex:192 +#, elixir-format msgid "Cannot remove the last administrator of a group" msgstr "Ryhmän viimeistä ylläpitäjää ei voi poistaa" -#, elixir-format #: lib/graphql/resolvers/person.ex:189 +#, elixir-format msgid "Cannot remove the last identity of a user" msgstr "Käyttäjän viimeistä identiteettiä ei voi poistaa" -#, elixir-format #: lib/graphql/resolvers/comment.ex:105 +#, elixir-format msgid "Comment is already deleted" msgstr "Kommentti on jo poistettu" -#, elixir-format #: lib/graphql/resolvers/discussion.ex:62 +#, elixir-format msgid "Discussion not found" msgstr "Keskustelua ei löydy" -#, elixir-format #: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 +#, elixir-format msgid "Error while saving report" msgstr "Virhe raporttia tallennettaessa" -#, elixir-format #: lib/graphql/resolvers/report.ex:96 +#, elixir-format msgid "Error while updating report" msgstr "Virhe raporttia päivitettäessä" -#, elixir-format #: lib/graphql/resolvers/participant.ex:127 +#, elixir-format msgid "Event id not found" msgstr "Tapahtumatunnistetta ei löydy" -#, elixir-format #: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 #: lib/graphql/resolvers/event.ex:280 +#, elixir-format msgid "Event not found" msgstr "Tapahtumaa ei löydy" -#, elixir-format #: lib/graphql/resolvers/participant.ex:83 #: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 +#, elixir-format msgid "Event with this ID %{id} doesn't exist" msgstr "Tunnisteella %{id} ei ole tapahtumaa" -#, elixir-format #: lib/graphql/resolvers/participant.ex:99 +#, elixir-format msgid "Internal Error" msgstr "Sisäinen virhe" -#, elixir-format #: lib/graphql/resolvers/discussion.ex:186 +#, elixir-format msgid "No discussion with ID %{id}" msgstr "Tunnisteella %{id} ei ole keskustelua" -#, elixir-format #: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 +#, elixir-format msgid "No profile found for user" msgstr "Käyttäjälle ei löydy profiilia" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:63 +#, elixir-format msgid "No such feed token" msgstr "Kyseistä syötemerkkiä ei ole" -#, elixir-format #: lib/graphql/resolvers/participant.ex:237 +#, elixir-format msgid "Participant already has role %{role}" msgstr "Osallistujalla on jo rooli %{role}" -#, elixir-format #: lib/graphql/resolvers/participant.ex:169 #: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 #: lib/graphql/resolvers/participant.ex:240 +#, elixir-format msgid "Participant not found" msgstr "Osallistujaa ei löydy" -#, elixir-format #: lib/graphql/resolvers/person.ex:29 +#, elixir-format msgid "Person with ID %{id} not found" msgstr "Tunnuksella %{id} ei löydy henkilöä" -#, elixir-format #: lib/graphql/resolvers/person.ex:51 +#, elixir-format msgid "Person with username %{username} not found" msgstr "Käyttäjänimellä %{username} ei löydy henkilöä" -#, elixir-format #: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 +#, elixir-format msgid "Post ID is not a valid ID" msgstr "Julkaisun tunnus ei ole kelvollinen" -#, elixir-format #: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 +#, elixir-format msgid "Post doesn't exist" msgstr "Julkaisua ei ole" -#, elixir-format #: lib/graphql/resolvers/member.ex:83 +#, elixir-format msgid "Profile invited doesn't exist" msgstr "Kutsuttua profiilia ei ole" -#, elixir-format #: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 +#, elixir-format msgid "Profile is already a member of this group" msgstr "Profiili on jo ryhmän jäsen" -#, elixir-format #: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 #: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 +#, elixir-format msgid "Profile is not member of group" msgstr "Profiili ei ole ryhmän jäsen" -#, elixir-format #: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 +#, elixir-format msgid "Profile not found" msgstr "Profiilia ei löydy" -#, elixir-format #: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 +#, elixir-format msgid "Provided moderator profile doesn't have permission on this event" msgstr "Annetulla moderaattoriprofiililla ei ole oikeuksia tähän tapahtumaan" -#, elixir-format #: lib/graphql/resolvers/report.ex:36 +#, elixir-format msgid "Report not found" msgstr "Raporttia ei löydy" -#, elixir-format #: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 +#, elixir-format msgid "Resource doesn't exist" msgstr "Resurssia ei ole" -#, elixir-format #: lib/graphql/resolvers/participant.ex:120 +#, elixir-format msgid "The event has already reached its maximum capacity" msgstr "Tapahtuma on jo täynnä" -#, elixir-format #: lib/graphql/resolvers/participant.ex:260 +#, elixir-format msgid "This token is invalid" msgstr "Epäkelpo merkki" -#, elixir-format #: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 +#, elixir-format msgid "Todo doesn't exist" msgstr "Työkalua ei ole" -#, elixir-format #: lib/graphql/resolvers/todos.ex:75 lib/graphql/resolvers/todos.ex:191 #: lib/graphql/resolvers/todos.ex:216 +#, elixir-format msgid "Todo list doesn't exist" msgstr "Tehtäväluetteloa ei ole" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:69 +#, elixir-format msgid "Token does not exist" msgstr "Merkkiä ei ole" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:66 +#, elixir-format msgid "Token is not a valid UUID" msgstr "Merkki ei ole kelvollinen UUID" -#, elixir-format #: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 +#, elixir-format msgid "User not found" msgstr "Käyttäjää ei löydy" -#, elixir-format #: lib/graphql/resolvers/person.ex:252 +#, elixir-format msgid "You already have a profile for this user" msgstr "Sinulla on jo profiili tälle käyttäjälle" -#, elixir-format #: lib/graphql/resolvers/participant.ex:130 +#, elixir-format msgid "You are already a participant of this event" msgstr "Olet jo tapahtuman osallistuja" -#, elixir-format #: lib/graphql/resolvers/discussion.ex:190 +#, elixir-format msgid "You are not a member of the group the discussion belongs to" msgstr "Et ole jäsenenä ryhmässä, johon keskustelu liittyy" -#, elixir-format #: lib/graphql/resolvers/member.ex:86 +#, elixir-format msgid "You are not a member of this group" msgstr "Et ole ryhmän jäsen" -#, elixir-format #: lib/graphql/resolvers/member.ex:151 +#, elixir-format msgid "You are not a moderator or admin for this group" msgstr "Et ole ryhmän moderaattori tai ylläpitäjä" -#, elixir-format #: lib/graphql/resolvers/comment.ex:51 +#, elixir-format msgid "You are not allowed to create a comment if not connected" msgstr "Ilman yhteyttä ei voi kommentoida" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:41 +#, elixir-format msgid "You are not allowed to create a feed token if not connected" msgstr "Ilman yhteyttä ei voi luoda syötemerkkiä" -#, elixir-format #: lib/graphql/resolvers/comment.ex:110 +#, elixir-format msgid "You are not allowed to delete a comment if not connected" msgstr "Ilman yhteyttä ei voi poistaa kommenttia" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:78 +#, elixir-format msgid "You are not allowed to delete a feed token if not connected" msgstr "Ilman yhteyttä ei voi poistaa syötemerkkiä" -#, elixir-format #: lib/graphql/resolvers/comment.ex:73 +#, elixir-format msgid "You are not allowed to update a comment if not connected" msgstr "Ilman yhteyttä ei voi päivittää kommenttia" -#, elixir-format #: lib/graphql/resolvers/participant.ex:163 #: lib/graphql/resolvers/participant.ex:192 +#, elixir-format msgid "You can't leave event because you're the only event creator participant" msgstr "" "Et voi poistua tapahtumasta, koska olet ainoa tapahtuman luonut osallistuja" -#, elixir-format #: lib/graphql/resolvers/member.ex:155 +#, elixir-format msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgstr "" "Et voi vaihtaa jäsenrooliasi ryhmässä nykyistä alemmaksi, koska olet ainoa " "ylläpitäjä" -#, elixir-format #: lib/graphql/resolvers/comment.ex:101 +#, elixir-format msgid "You cannot delete this comment" msgstr "Et voi poistaa kommenttia" -#, elixir-format #: lib/graphql/resolvers/event.ex:276 +#, elixir-format msgid "You cannot delete this event" msgstr "Et voi poistaa tapahtumaa" -#, elixir-format #: lib/graphql/resolvers/member.ex:89 +#, elixir-format msgid "You cannot invite to this group" msgstr "Et voi kutsua tähän ryhmään" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:72 +#, elixir-format msgid "You don't have permission to delete this token" msgstr "Sinulla ei ole oikeutta poistaa tätä merkkiä" -#, elixir-format #: lib/graphql/resolvers/admin.ex:52 +#, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "Toimintalokien katselu vain moderaattorille sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/report.ex:26 +#, elixir-format msgid "You need to be logged-in and a moderator to list reports" msgstr "Raporttien katselu vain moderaattorille sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/report.ex:101 +#, elixir-format msgid "You need to be logged-in and a moderator to update a report" msgstr "Raportin päivittäminen vain moderaattorille sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/report.ex:41 +#, elixir-format msgid "You need to be logged-in and a moderator to view a report" msgstr "Raportin katselu vain moderaattorille sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/admin.ex:236 +#, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "Pääsy ylläpitoasetuksiin vain ylläpitäjälle sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/admin.ex:221 +#, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "Pääsy koontinäytön tilastoihin vain ylläpitäjälle sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/admin.ex:260 +#, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "Ylläpitoasetusten tallennus vain ylläpitäjälle sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/discussion.ex:76 +#, elixir-format msgid "You need to be logged-in to access discussions" msgstr "Pääsy keskusteluihin vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/resource.ex:93 +#, elixir-format msgid "You need to be logged-in to access resources" msgstr "Pääsy resursseihin vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/event.ex:211 +#, elixir-format msgid "You need to be logged-in to create events" msgstr "Tapahtumien luonti vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/post.ex:140 +#, elixir-format msgid "You need to be logged-in to create posts" msgstr "Julkaisujen luonti vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/report.ex:74 +#, elixir-format msgid "You need to be logged-in to create reports" msgstr "Raporttien luonti vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/resource.ex:129 +#, elixir-format msgid "You need to be logged-in to create resources" msgstr "Resurssien luonti vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/event.ex:285 +#, elixir-format msgid "You need to be logged-in to delete an event" msgstr "Tapahtuman poisto vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/post.ex:211 +#, elixir-format msgid "You need to be logged-in to delete posts" msgstr "Julkaisujen poisto vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/resource.ex:187 +#, elixir-format msgid "You need to be logged-in to delete resources" msgstr "Resurssien poisto vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/participant.ex:104 +#, elixir-format msgid "You need to be logged-in to join an event" msgstr "Tapahtumaan liittyminen vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/participant.ex:203 +#, elixir-format msgid "You need to be logged-in to leave an event" msgstr "Tapahtumasta poistuminen vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/event.ex:250 +#, elixir-format msgid "You need to be logged-in to update an event" msgstr "Tapahtuman päivittäminen vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/post.ex:178 +#, elixir-format msgid "You need to be logged-in to update posts" msgstr "Julkaisujen päivittäminen vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/resource.ex:158 +#, elixir-format msgid "You need to be logged-in to update resources" msgstr "Resurssien päivittäminen vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/resource.ex:210 +#, elixir-format msgid "You need to be logged-in to view a resource preview" msgstr "Resurssin esikatselu vain sisäänkirjautuneena" -#, elixir-format #: lib/graphql/resolvers/resource.ex:121 +#, elixir-format msgid "Parent resource doesn't belong to this group" msgstr "Ylätason resurssi ei kuulu tähän ryhmään" -#, elixir-format #: lib/mobilizon/users/user.ex:109 +#, elixir-format msgid "The chosen password is too short." msgstr "Valittu salasana on liian lyhyt." -#, elixir-format #: lib/mobilizon/users/user.ex:138 +#, elixir-format msgid "The registration token is already in use, this looks like an issue on our side." msgstr "Rekisteröintimerkki on jo käytössä. Vaikuttaa palvelinpään virheeltä." -#, elixir-format #: lib/mobilizon/users/user.ex:104 +#, elixir-format msgid "This email is already used." msgstr "Sähköpostiosoite on jo käytössä." -#, elixir-format #: lib/graphql/error.ex:88 +#, elixir-format msgid "Post not found" msgstr "Julkaisua ei löydy" -#, elixir-format #: lib/graphql/error.ex:75 +#, elixir-format msgid "Invalid arguments passed" msgstr "Virheelliset argumentit välitetty" -#, elixir-format #: lib/graphql/error.ex:81 +#, elixir-format msgid "Invalid credentials" msgstr "Virheelliset kirjautumistiedot" -#, elixir-format #: lib/graphql/error.ex:79 +#, elixir-format msgid "Reset your password to login" msgstr "Palauta salasana, jotta voit kirjautua sisään" -#, elixir-format #: lib/graphql/error.ex:86 lib/graphql/error.ex:91 +#, elixir-format msgid "Resource not found" msgstr "Resurssia ei löydy" -#, elixir-format #: lib/graphql/error.ex:92 +#, elixir-format msgid "Something went wrong" msgstr "Jokin meni vikaan" -#, elixir-format #: lib/graphql/error.ex:74 +#, elixir-format msgid "Unknown Resource" msgstr "Tuntematon resurssi" -#, elixir-format #: lib/graphql/error.ex:84 +#, elixir-format msgid "You don't have permission to do this" msgstr "Sinulla ei ole oikeutta tähän" -#, elixir-format #: lib/graphql/error.ex:76 +#, elixir-format msgid "You need to be logged in" msgstr "Kirjaudu ensin sisään" -#, elixir-format #: lib/graphql/resolvers/member.ex:116 +#, elixir-format msgid "You can't accept this invitation with this profile." msgstr "Et voi hyväksyä kutsua tällä profiililla." -#, elixir-format #: lib/graphql/resolvers/member.ex:134 +#, elixir-format msgid "You can't reject this invitation with this profile." msgstr "Et voi hylätä kutsua tällä profiililla." -#, elixir-format #: lib/graphql/resolvers/media.ex:62 +#, elixir-format msgid "File doesn't have an allowed MIME type." msgstr "Tiedostolla ei ole sallittua MIME-tyyppiä." -#, elixir-format #: lib/graphql/resolvers/group.ex:164 +#, elixir-format msgid "Profile is not administrator for the group" msgstr "Profiili ei ole ryhmän ylläpitäjä" -#, elixir-format #: lib/graphql/resolvers/event.ex:239 +#, elixir-format msgid "You can't edit this event." msgstr "Et voi muokata tapahtumaa." -#, elixir-format #: lib/graphql/resolvers/event.ex:242 +#, elixir-format msgid "You can't attribute this event to this profile." msgstr "Et voi yhdistää tapahtumaa tähän profiiliin." -#, elixir-format #: lib/graphql/resolvers/member.ex:137 +#, elixir-format msgid "This invitation doesn't exist." msgstr "Kutsua ei ole." -#, elixir-format #: lib/graphql/resolvers/member.ex:179 +#, elixir-format msgid "This member already has been rejected." msgstr "Jäsen on jo hylätty." -#, elixir-format #: lib/graphql/resolvers/member.ex:186 +#, elixir-format msgid "You don't have the right to remove this member." msgstr "Sinulla ei ole oikeutta poistaa jäsentä." -#, elixir-format #: lib/mobilizon/actors/actor.ex:351 +#, elixir-format msgid "This username is already taken." msgstr "Käyttäjänimi on jo käytössä." -#, elixir-format #: lib/graphql/resolvers/discussion.ex:73 +#, elixir-format msgid "You must provide either an ID or a slug to access a discussion" msgstr "Keskusteluun pääsemiseen vaaditaan tunniste tai polkutunnus" -#, elixir-format #: lib/graphql/resolvers/event.ex:200 +#, elixir-format msgid "Organizer profile is not owned by the user" msgstr "Järjestäjän profiili ei ole käyttäjän hallussa" -#, elixir-format #: lib/graphql/resolvers/participant.ex:89 +#, elixir-format msgid "Profile ID provided is not the anonymous profile one" msgstr "Annettu profiilitunniste ei kuulu anonyymille profiilille" -#, elixir-format #: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 #: lib/graphql/resolvers/person.ex:246 +#, elixir-format msgid "The provided picture is too heavy" -msgstr "" +msgstr "Toimitettu kuva on liian suuri" From 1d59c11cbb707587d0e2958a273019cb8e4b304c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jos=C3=A9=20m?= Date: Wed, 20 Jan 2021 06:06:42 +0000 Subject: [PATCH 078/114] Translated using Weblate (Galician) Currently translated at 99.8% (830 of 831 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/ --- js/src/i18n/gl.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/js/src/i18n/gl.json b/js/src/i18n/gl.json index 2ceae6afe..6451e1601 100644 --- a/js/src/i18n/gl.json +++ b/js/src/i18n/gl.json @@ -86,6 +86,7 @@ "Are you sure you want to delete this event? This action cannot be reverted.": "¿Tes a certeza de que queres eliminar este evento? Esta acción non é reversible.", "As the event organizer has chosen to manually validate participation requests, your participation will be really confirmed only once you receive an email stating it's being accepted.": "Como a organización do evento escolleu validar manualmente as solicitudes, a túa participación estará realmente confirmada cando recibas un email informándote.", "Assigned to": "Asignado a", + "Atom feed for events and posts": "Fonte Atom para eventos e publicacións", "Avatar": "Avatar", "Back to previous page": "Volver á páxina anterior", "Banner": "Cabeceira", @@ -321,6 +322,8 @@ "I participate": "Eu participo", "I want to allow people to participate without an account.": "Quero que a xente poida participar sen ter unha conta.", "I want to approve every participation request": "Quero aprobar cada solicitude de participación", + "ICS feed for events": "Fonte ICS para eventos", + "ICS/WebCal Feed": "Fonte ICS/WebCal", "Identity {displayName} created": "Creouse a identidade {displayName}", "Identity {displayName} deleted": "Eliminada a identidade {displayName}", "Identity {displayName} updated": "Identidade {displayName} actualizada", From 4da96ad8107a4665c4a808e6ba0c9556f913401a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jos=C3=A9=20m?= Date: Wed, 20 Jan 2021 06:05:13 +0000 Subject: [PATCH 079/114] Translated using Weblate (Galician) Currently translated at 100.0% (241 of 241 strings) Translation: Mobilizon/Backend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/gl/ --- priv/gettext/gl/LC_MESSAGES/default.po | 496 ++++++++++++------------- 1 file changed, 248 insertions(+), 248 deletions(-) diff --git a/priv/gettext/gl/LC_MESSAGES/default.po b/priv/gettext/gl/LC_MESSAGES/default.po index 9ee007823..0601617e7 100644 --- a/priv/gettext/gl/LC_MESSAGES/default.po +++ b/priv/gettext/gl/LC_MESSAGES/default.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-10-18 04:49+0000\n" -"PO-Revision-Date: 2020-11-26 06:52+0000\n" +"PO-Revision-Date: 2021-01-20 16:18+0000\n" "Last-Translator: josé m. \n" "Language-Team: Galician \n" @@ -12,267 +12,267 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1\n" +"X-Generator: Weblate 4.4\n" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:48 +#, elixir-format msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" "Se non solicitaches isto, ignora este email. O teu constrasinal non cambiará " "ata que accedas á ligazón inferior e cres un novo." -#, elixir-format #: lib/web/templates/email/report.html.eex:74 +#, elixir-format msgid "%{title} by %{creator}" msgstr "%{title} por %{creator}" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:58 +#, elixir-format msgid "Activate my account" msgstr "Activar a miña conta" -#, elixir-format #: lib/web/templates/email/email.html.eex:117 #: lib/web/templates/email/email.text.eex:9 +#, elixir-format msgid "Ask the community on Framacolibri" msgstr "Pregunta á comunidade en Framacolibri" -#, elixir-format #: lib/web/templates/email/report.text.eex:15 +#, elixir-format msgid "Comments" msgstr "Comentarios" -#, elixir-format #: lib/web/templates/email/report.html.eex:72 #: lib/web/templates/email/report.text.eex:11 +#, elixir-format msgid "Event" msgstr "Evento" -#, elixir-format #: lib/web/email/user.ex:48 +#, elixir-format msgid "Instructions to reset your password on %{instance}" msgstr "Instruccións para restablecer o contrasinal en %{instance}" -#, elixir-format #: lib/web/templates/email/report.text.eex:21 +#, elixir-format msgid "Reason" msgstr "Razón" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:61 +#, elixir-format msgid "Reset Password" msgstr "Restablecer Contrasinal" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:41 +#, elixir-format msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." msgstr "" "Restablecer o contrasinal é doado. Preme no botón inferior e segue as " "instrucción. Volverás a poder conectarte nuns intres." -#, elixir-format #: lib/web/email/user.ex:28 +#, elixir-format msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Instruccións para confirmar a túa conta Mobilizon en %{instance}" -#, elixir-format #: lib/web/email/admin.ex:24 +#, elixir-format msgid "New report on Mobilizon instance %{instance}" msgstr "Nova denuncia sobre a instancia Mobilizon %{instance}" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 +#, elixir-format msgid "Go to event page" msgstr "Ir á páxina do evento" -#, elixir-format #: lib/web/templates/email/report.text.eex:1 +#, elixir-format msgid "New report from %{reporter} on %{instance}" msgstr "Nova denuncia de %{reporter} sobre %{instance}" -#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:1 +#, elixir-format msgid "Participation approved" msgstr "Participación aprobada" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:13 #: lib/web/templates/email/password_reset.text.eex:1 +#, elixir-format msgid "Password reset" msgstr "Restablece o contrasinal" -#, elixir-format #: lib/web/templates/email/password_reset.text.eex:7 +#, elixir-format msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." msgstr "" "Restablecer o contrasinal é doado. Preme na ligazón inferior e segue as " "instruccións. Moi pronto poderás volver e conectarte." -#, elixir-format #: lib/web/templates/email/registration_confirmation.text.eex:5 +#, elixir-format msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." msgstr "" "Creaches unha conta en %{host} con este enderezo de email. Só precisas " "activalo. Se non foches ti, por favor ignora este email." -#, elixir-format #: lib/web/email/participation.ex:112 +#, elixir-format msgid "Your participation to event %{title} has been approved" msgstr "Foi aprobada a túa participación no evento %{title}" -#, elixir-format #: lib/web/email/participation.ex:70 +#, elixir-format msgid "Your participation to event %{title} has been rejected" msgstr "Foi rexeitada a túa participación no evento %{title}" -#, elixir-format #: lib/web/email/event.ex:37 +#, elixir-format msgid "Event %{title} has been updated" msgstr "Actualizouse o evento %{title}" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:15 +#, elixir-format msgid "New title: %{title}" msgstr "Novo título: %{title}" -#, elixir-format #: lib/web/templates/email/password_reset.text.eex:5 +#, elixir-format msgid "You requested a new password for your account on %{instance}." msgstr "" "Solicitaches un novo contrasinal para a túa conta na instancia %{instance]." -#, elixir-format #: lib/web/templates/email/email.html.eex:85 +#, elixir-format msgid "Warning" msgstr "Aviso" -#, elixir-format #: lib/web/email/participation.ex:135 +#, elixir-format msgid "Confirm your participation to event %{title}" msgstr "Confirma a túa participación no evento %{title}" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:75 +#, elixir-format msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "ID interno para a túa identidade seleccionada" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:74 +#, elixir-format msgctxt "terms" msgid "An internal user ID" msgstr "ID de usuaria interno" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:37 +#, elixir-format msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "" "Calquera información que obtemos de ti podería usarse dos seguintes xeitos:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:9 +#, elixir-format msgctxt "terms" msgid "Basic account information" msgstr "Información básica da conta" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:25 +#, elixir-format msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "Non compartas informacións perigosas en Mobilizon." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:90 +#, elixir-format msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "Enviamos información a terceiras partes alleas?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:68 +#, elixir-format msgctxt "terms" msgid "Do we use cookies?" msgstr "Usamos cookies?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:51 +#, elixir-format msgctxt "terms" msgid "How do we protect your information?" msgstr "Como protexemos a túa información?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:29 +#, elixir-format msgctxt "terms" msgid "IPs and other metadata" msgstr "IPs e outros metadatos" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:17 +#, elixir-format msgctxt "terms" msgid "Published events and comments" msgstr "Eventos publicados e comentarios" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:64 +#, elixir-format msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "" "Retención de enderezos IP asociados con usuarias rexistradas durante non " "máis de 12 meses." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:76 +#, elixir-format msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Tokens para autenticarte" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:31 +#, elixir-format msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "" "Tamén retemos rexistros do servidor que inclúen enderezos IP de cada " "solicitude ó noso servidor." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:70 +#, elixir-format msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "Gardamos información no teu dispositivo cando te conectas:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:58 +#, elixir-format msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Esforzarémonos de boa fe para:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:35 +#, elixir-format msgctxt "terms" msgid "What do we use your information for?" msgstr "Para que usamos a túa información?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:57 +#, elixir-format msgctxt "terms" msgid "What is our data retention policy?" msgstr "Cal é a nosa política de retención de datos?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:67 +#, elixir-format msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Podes eliminar de xeito definitivo a túa conta cando queiras." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:115 +#, elixir-format msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Cambios na nosa Política de Privacidade" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:106 +#, elixir-format msgctxt "terms" msgid "If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site." msgstr "" @@ -282,8 +282,8 @@ msgstr "" "General_Data_Protection_Regulation\">Regulación Xeral de Protección de " "Datos)) non uses esta web." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:109 +#, elixir-format msgctxt "terms" msgid "If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site." msgstr "" @@ -293,30 +293,30 @@ msgstr "" "27s_Online_Privacy_Protection_Act\">Children's Online Privacy Protection " "Act) non utilices esta web." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:117 +#, elixir-format msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "" "Se decidimos cambiar a nosa política de privacidade, publicaremos aquí os " "cambios." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:112 +#, elixir-format msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "" "Os requerimentos legais poderían ser diferentes se o servidor está noutra " "xurisdición." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:103 +#, elixir-format msgctxt "terms" msgid "Site usage by children" msgstr "Utilización da web por menores" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:47 +#, elixir-format msgctxt "terms" msgid "The email address you provide may be used to send you information, updates and notifications about other people\n interacting with your content or sending you messages and to respond to inquiries, and/or other requests or\n questions." msgstr "" @@ -326,8 +326,8 @@ msgstr "" "así como para responder a preguntas, e/ou outras solicitudes\n" "ou cuestións." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:45 +#, elixir-format msgctxt "terms" msgid "To aid moderation of the community, for example comparing your IP address with other known ones to determine ban\n evasion or other violations." msgstr "" @@ -335,8 +335,8 @@ msgstr "" "con outro coñecidos para evitar o salto\n" "de bloqueos ou outros infrinximentos." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:43 +#, elixir-format msgctxt "terms" msgid "To provide the core functionality of Mobilizon. Depending on this instance's policy you may only be able to\n interact with other people's content and post your own content if you are logged in." msgstr "" @@ -345,89 +345,89 @@ msgstr "" "estar conectada para así poder interactuar co contido doutras usuarias e " "publicar o teu contido." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:6 +#, elixir-format msgctxt "terms" msgid "What information do we collect?" msgstr "Que información recollemos?" -#, elixir-format #: lib/web/email/user.ex:176 +#, elixir-format msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon en %{instance}: confirma o enderezo de email" -#, elixir-format #: lib/web/email/user.ex:152 +#, elixir-format msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon en %{instance}: email cambiado" -#, elixir-format #: lib/web/email/notification.ex:47 +#, elixir-format msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un evento previsto para hoxe" msgstr[1] "%{nb_events} eventos previstos hoxe" -#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:38 #: lib/web/templates/email/on_day_notification.text.eex:4 +#, elixir-format msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Hoxe tes un evento:" msgstr[1] "Tes %{total} eventos hoxe:" -#, elixir-format #: lib/web/templates/email/group_invite.text.eex:3 +#, elixir-format msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} convidoute a unirte ó seu grupo %{group}" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:13 #: lib/web/templates/email/group_invite.text.eex:1 +#, elixir-format msgid "Come along!" msgstr "Imos!" -#, elixir-format #: lib/web/email/notification.ex:24 +#, elixir-format msgid "Don't forget to go to %{title}" msgstr "Non esquezas ir a %{title}" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 +#, elixir-format msgid "Get ready for %{title}" msgstr "Prepárate para %{title}" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:59 +#, elixir-format msgid "See my groups" msgstr "Ver os meus grupos" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:45 #: lib/web/templates/email/group_invite.text.eex:5 +#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Para aceptar o convite, vaite ós teus grupos." -#, elixir-format #: lib/web/templates/email/before_event_notification.text.eex:5 +#, elixir-format msgid "View the event on: %{link}" msgstr "Ver o evento en: %{link}" -#, elixir-format #: lib/web/email/group.ex:33 +#, elixir-format msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} convidoute a unirte ó grupo %{group}" -#, elixir-format #: lib/web/email/notification.ex:71 +#, elixir-format msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un evento previsto nesta semana" msgstr[1] "%{nb_events} eventos previstos nesta semana" -#, elixir-format #: lib/web/email/notification.ex:93 +#, elixir-format msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Hai unha solicitude de participación para o evento %{title} que atender" @@ -435,21 +435,21 @@ msgstr[1] "" "Hai %{number_participation_requests} solicitudes de participación no evento " "%{title} que atender" -#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 +#, elixir-format msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Tes un evento esta semana:" msgstr[1] "Tes %{total} eventos esta semana:" -#, elixir-format #: lib/service/metadata/utils.ex:52 +#, elixir-format msgid "The event organizer didn't add any description." msgstr "A organización do evento non proporcionou unha descrición." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:54 +#, elixir-format msgctxt "terms" msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." msgstr "" @@ -459,8 +459,8 @@ msgstr "" "e a API, están protexidas con SSL/TLS, e o contrasinal protexido cun " "algoritmo forte." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:94 +#, elixir-format msgctxt "terms" msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." msgstr "" @@ -472,20 +472,20 @@ msgstr "" "facelo é apropiado para cumprir coa lei, facer cumprir as políticas desta " "web, ou protexer os dereitos ou a seguridade doutras persoas ou os nosos." -#, elixir-format #: lib/web/templates/api/terms.html.eex:23 +#, elixir-format msgctxt "terms" msgid "Accepting these Terms" msgstr "Aceptando estos Termos" -#, elixir-format #: lib/web/templates/api/terms.html.eex:27 +#, elixir-format msgctxt "terms" msgid "Changes to these Terms" msgstr "Cambios nos Termos" -#, elixir-format #: lib/web/templates/api/terms.html.eex:85 +#, elixir-format msgctxt "terms" msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." msgstr "" @@ -496,16 +496,16 @@ msgstr "" "presente no Servizo. É responsabilidade túa asumir o risco procedente de " "utilizar ou confiar en calquera contido." -#, elixir-format #: lib/web/templates/api/terms.html.eex:60 +#, elixir-format msgctxt "terms" msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" msgstr "" "Tamén, aceptas que non vas facer nada do seguinte en conexión co Servizo ou " "outras usuarias:" -#, elixir-format #: lib/web/templates/api/terms.html.eex:65 +#, elixir-format msgctxt "terms" msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." msgstr "" @@ -513,22 +513,22 @@ msgstr "" "uso ou outras características deseñadas para protexer o Servizo, usuarias do " "Servizo, ou terceiras partes." -#, elixir-format #: lib/web/templates/api/terms.html.eex:64 +#, elixir-format msgctxt "terms" msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" msgstr "" "Recoller información personal acerca doutras usuarias, ou intimidar, " "ameazar, presionar ou molestar doutros xeitos ás usuarias do Servizo;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:55 +#, elixir-format msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "Contido que é ilegal ou alegal, que podería ser comprometido;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:56 +#, elixir-format msgctxt "terms" msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" msgstr "" @@ -536,48 +536,48 @@ msgstr "" "comerciais, copyright, dereitos de privacidade, dereitos de publicidade ou " "outros dereitos intelectuais de calquera tipo;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:42 +#, elixir-format msgctxt "terms" msgid "Creating Accounts" msgstr "Creando Contas" -#, elixir-format #: lib/web/templates/api/terms.html.eex:89 +#, elixir-format msgctxt "terms" msgid "Entire Agreement" msgstr "Acordo completo" -#, elixir-format #: lib/web/templates/api/terms.html.eex:92 +#, elixir-format msgctxt "terms" msgid "Feedback" msgstr "Opinión" -#, elixir-format #: lib/web/templates/api/terms.html.eex:83 +#, elixir-format msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Ligazóns e Contido de Terceiras Partes" -#, elixir-format #: lib/web/templates/api/terms.html.eex:88 +#, elixir-format msgctxt "terms" msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." msgstr "" "Se vulneras algún destos Termos, temos dereito a suspender ou desactivar o " "acceso á conta ou a usar o Servizo." -#, elixir-format #: lib/web/templates/api/terms.html.eex:63 +#, elixir-format msgctxt "terms" msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" msgstr "" "Suplantar ou publicar en nome doutra persoa ou entidade oy confundir doutro " "xeito sobre a túa relación con esa persoa ou entidade;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:48 +#, elixir-format msgctxt "terms" msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." msgstr "" @@ -585,26 +585,26 @@ msgstr "" "accesible os contidos. Es responsable do contido que publicas no Servizo, " "tanto da súa legalidade, fiabilidade e corrección." -#, elixir-format #: lib/web/templates/api/terms.html.eex:39 +#, elixir-format msgctxt "terms" msgid "Privacy Policy" msgstr "Política de Privacidade" -#, elixir-format #: lib/web/templates/api/terms.html.eex:95 +#, elixir-format msgctxt "terms" msgid "Questions & Contact Information" msgstr "Preguntas e Información de Contacto" -#, elixir-format #: lib/web/templates/api/terms.html.eex:87 +#, elixir-format msgctxt "terms" msgid "Termination" msgstr "Finalización" -#, elixir-format #: lib/web/templates/api/terms.html.eex:62 +#, elixir-format msgctxt "terms" msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" msgstr "" @@ -612,14 +612,14 @@ msgstr "" "negativo ou facer que outras non desfruten do Servizo ou puidese danar, " "desactivar, sobrecargar ou impedir o funcionamento do Servizo;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:47 +#, elixir-format msgctxt "terms" msgid "Your Content & Conduct" msgstr "O teu Contido e Conduta" -#, elixir-format #: lib/web/templates/api/terms.html.eex:84 +#, elixir-format msgctxt "terms" msgid "%{instance_name} makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "" @@ -630,8 +630,8 @@ msgstr "" "implica o apoio de %{instance_name} a esa web. O uso de tales sitios " "web farase baixo responsabilidade propia da usuaria." -#, elixir-format #: lib/web/templates/api/terms.html.eex:68 +#, elixir-format msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "" @@ -640,16 +640,16 @@ msgstr "" "regras de moderación. Romper esas regras podería resultar na cancelación ou " "suspensión da túa conta." -#, elixir-format #: lib/web/templates/api/terms.html.eex:81 +#, elixir-format msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "" "Para coñecer máis sobre o software Mobilizon visita esta web." -#, elixir-format #: lib/web/templates/api/terms.html.eex:18 +#, elixir-format msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "" @@ -658,8 +658,8 @@ msgstr "" ">%{instance_url}) e o servizo (colectivamente, o \"Servizo\"). Estos son " "os nosos termos do servizo (\"Termos\"). Le con atención." -#, elixir-format #: lib/web/templates/api/terms.html.eex:33 +#, elixir-format msgctxt "terms" msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." msgstr "" @@ -667,8 +667,8 @@ msgstr "" "evidente. Os cambios menores poderían aparecer simplemente no pé do sitio " "web. É responsabilidade túa estar atenta a estos cambios nos Termos." -#, elixir-format #: lib/web/templates/api/terms.html.eex:53 +#, elixir-format msgctxt "terms" msgid "In order to make %{instance_name} a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" msgstr "" @@ -676,16 +676,16 @@ msgstr "" "publiques, ligues ou poñas a disposición a través do Servizo calquera do " "seguinte:" -#, elixir-format #: lib/web/templates/api/terms.html.eex:57 +#, elixir-format msgctxt "terms" msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" msgstr "" "Información privada sobre terceiras partes (ex., enderzos, números de " "teléfono, email, número da Seguridade Social, cartón de crédito), e" -#, elixir-format #: lib/web/templates/api/terms.html.eex:52 +#, elixir-format msgctxt "terms" msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." msgstr "" @@ -696,8 +696,8 @@ msgstr "" "do contido nesas outras instancias remata aquí. Se por algunha razón esas " "outras instancias non eliminan o contido non seremos responsables." -#, elixir-format #: lib/web/templates/api/terms.html.eex:90 +#, elixir-format msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "" @@ -705,8 +705,8 @@ msgstr "" "respecto do uso do Servizo, deixando sen efecto calquera acordo anterior " "entre ti e %{instance_name} respecto da utilización do Servizo." -#, elixir-format #: lib/web/templates/api/terms.html.eex:80 +#, elixir-format msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "" @@ -715,14 +715,14 @@ msgstr "" "license-v3-(agpl-3.0)\">AGPLv3 que che permite e anima a coñecer, " "modificar e usar o código." -#, elixir-format #: lib/web/templates/api/terms.html.eex:58 +#, elixir-format msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "Viruses, datos corruptos e ficheiros ou código malicioso ou destrutivo." -#, elixir-format #: lib/web/templates/api/terms.html.eex:51 +#, elixir-format msgctxt "terms" msgid "You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time. Web server access logs might also be stored for some time in the system." msgstr "" @@ -732,30 +732,30 @@ msgstr "" "tempo. Os rexistros de acceso ó servidor tamén poderían permanecer algún " "tempo no sistema." -#, elixir-format #: lib/web/templates/api/terms.html.eex:96 +#, elixir-format msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "" "Preguntas e comentarios sobre o Servizo poderían sernos enviados hacia " "%{contact}" -#, elixir-format #: lib/web/templates/api/terms.html.eex:79 +#, elixir-format msgctxt "terms" msgid "Source code" msgstr "Código fonte" -#, elixir-format #: lib/web/templates/api/terms.html.eex:93 +#, elixir-format msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "" "Apreciamos a túa opinión. Dinos o que pensas sobre o Servizo, estos Termos " "e, en xeral, sobre %{instance_name}." -#, elixir-format #: lib/web/templates/api/terms.html.eex:74 +#, elixir-format msgctxt "terms" msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." msgstr "" @@ -767,16 +767,16 @@ msgstr "" "comunidade, ou instancia por non acatar os termos ou por outros " "comportamentos que estimen inapropiados, ameazantes, ofensivos ou daninos." -#, elixir-format #: lib/web/templates/api/terms.html.eex:6 +#, elixir-format msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "" "%{instance_name} non utilizará, transmitirá ou comerciará cos teus " "datos personais" -#, elixir-format #: lib/web/templates/api/terms.html.eex:44 +#, elixir-format msgctxt "terms" msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact its contributors directly." msgstr "" @@ -785,16 +785,16 @@ msgstr "" "contacta directamente coas súas programadoras." -#, elixir-format #: lib/web/templates/api/terms.html.eex:77 +#, elixir-format msgctxt "terms" msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." msgstr "" "A administración da instancia debe asegurar que toda comunidade hospedada na " "instancia está moderada de xeito correcto acorde coas regras definidas." -#, elixir-format #: lib/web/templates/api/terms.html.eex:98 +#, elixir-format msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "" @@ -803,8 +803,8 @@ msgstr "" "appdotnet/terms-of-service\">App.net, tamén con licenza CC BY-SA." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:119 +#, elixir-format msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "" @@ -813,113 +813,113 @@ msgstr "" ">Discourse, tamén con licenza CC BY-SA." -#, elixir-format #: lib/web/templates/api/terms.html.eex:3 +#, elixir-format msgctxt "terms" msgid "Short version" msgstr "Versión curta" -#, elixir-format #: lib/web/templates/api/terms.html.eex:9 +#, elixir-format msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "" "O servizo proporciónase sen garantía e estos termos poderían mudar no futuro" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:118 +#, elixir-format msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "" "Este documento publícase baixo licenza CC BY-SA. Actualizado o 18 de Xuño de 2020." -#, elixir-format #: lib/web/templates/api/terms.html.eex:97 +#, elixir-format msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "" "Este documento publícase baixo licenza CC BY-SA. Actualizado o 22 de Xuño de 2020." -#, elixir-format #: lib/web/templates/api/terms.html.eex:8 +#, elixir-format msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "" "Debes respectar a outras persoas e ás regras de %{instance_name} ó " "utilizar o servizo" -#, elixir-format #: lib/web/templates/api/terms.html.eex:7 +#, elixir-format msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "Debes respectar a lei ó utilizar %{instance_name}" -#, elixir-format #: lib/web/templates/api/terms.html.eex:5 +#, elixir-format msgctxt "terms" msgid "Your content is yours" msgstr "O teu contido é teu" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 +#, elixir-format msgid "Confirm my e-mail address" msgstr "Confirma o enderezo de email" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 +#, elixir-format msgid "Confirm your e-mail" msgstr "Confirma o teu email" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 +#, elixir-format msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "Vaites! Rexistrácheste para participar neste evento: « %{title} ». Por favor " "confirma o email proporcionado:" -#, elixir-format #: lib/web/templates/email/email.html.eex:114 #: lib/web/templates/email/email.text.eex:8 +#, elixir-format msgid "Need help? Is something not working as expected?" msgstr "Precisas axuda? Algo non funciona como agardabas?" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:38 +#, elixir-format msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "" "Creaches unha conta en %{host} con este enderezo de email. Estás a un " "click de activalo." -#, elixir-format #: lib/web/templates/email/report.html.eex:13 +#, elixir-format msgid "New report on %{instance}" msgstr "Nova denuncia sobre %{instance}" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:38 +#, elixir-format msgid "The email address for your account on %{host} is being changed to:" msgstr "O enderezo de email da túa conta en %{host} vaise cambiar a:" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:38 +#, elixir-format msgid "You requested a new password for your account on %{instance}." msgstr "" "Solicitaches un novo contrasinal para a túa conta en %{instance}." -#, elixir-format #: lib/web/templates/email/email.text.eex:5 +#, elixir-format msgid "Please do not use it for real purposes." msgstr "Por favor, non o utilices nun entorno de produción." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 #: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 +#, elixir-format msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -929,9 +929,9 @@ msgstr[1] "" "Desexas cancelar a túa participación nun ou en varios eventos, visita as " "páxinas a través das ligazóns superiores e preme no botón « Attending »." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:38 #: lib/web/templates/email/pending_participation_notification.text.eex:4 +#, elixir-format msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "Tes unha solicitude de participación pendente de atender:" @@ -939,66 +939,66 @@ msgstr[1] "" "Tes %{number_participation_requests} solicitudes de participación pendentes " "de atender:" -#, elixir-format #: lib/web/templates/email/email.text.eex:11 +#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} funciona grazas a Mobilizon." -#, elixir-format #: lib/web/templates/email/email.html.eex:142 +#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} funciona grazas a Mobilizon." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 +#, elixir-format msgid "A request is pending!" msgstr "Hai unha solicitude pendente!" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 +#, elixir-format msgid "An event is upcoming!" msgstr "Un evento está próximo!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 +#, elixir-format msgid "Confirm new email" msgstr "Confirma o novo email" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:84 +#, elixir-format msgid "End" msgstr "Fin" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:21 +#, elixir-format msgid "End %{ends_on}" msgstr "Remata o %{ends_on}" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:13 #: lib/web/templates/email/event_updated.text.eex:1 +#, elixir-format msgid "Event update!" msgstr "Actualización do evento!" -#, elixir-format #: lib/web/templates/email/report.html.eex:88 +#, elixir-format msgid "Flagged comments" msgstr "Comentarios marcados" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 +#, elixir-format msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "" "Boa nova: a organización aprobou a túa solicitude. Actualiza o calendario, " "xa que agora estás na lista de convidadas!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:38 #: lib/web/templates/email/email_changed_new.text.eex:3 +#, elixir-format msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "Ola! Semella que queres cambiar o enderezo de email asociado á túa conta en " @@ -1006,16 +1006,16 @@ msgstr "" "o cambio. Despois poderás conectarte a %{instance} utilizando este novo " "enderezo de email." -#, elixir-format #: lib/web/templates/email/email_changed_old.text.eex:3 +#, elixir-format msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" msgstr "" "Ola! Aquí un aviso para confirmar que o enderezo de email asociado á túa " "conta en %{host} cambiouse a:" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:41 #: lib/web/templates/email/email_changed_old.html.eex:65 lib/web/templates/email/email_changed_old.text.eex:5 +#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "" "Se non fixeches este cambio ti mesma, é probable que alguén obtivese acceso " @@ -1023,305 +1023,305 @@ msgstr "" "inmediatamente. Se non podes conectar, contacta coa administración de " "%{host}." -#, elixir-format #: lib/web/templates/email/password_reset.text.eex:12 +#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." msgstr "" "Se non solicitaches ti mesma o cambio, ignora esta mensaxe. O contrasinal " "non cambiará ata que premas na ligazón superior." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 +#, elixir-format msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Se non solicitaches este email, podes ignoralo con seguridade." -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 +#, elixir-format msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "" "Se queres cancelar a túa participación, visita a páxina do evento a través " "da ligazón superior e preme no botón « Participar »." -#, elixir-format #: lib/web/templates/email/email.html.eex:143 #: lib/web/templates/email/email.text.eex:11 +#, elixir-format msgid "Learn more about Mobilizon here!" msgstr "Coñece máis acerca de Mobilizon!" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:94 +#, elixir-format msgid "Location" msgstr "Localización" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:104 +#, elixir-format msgid "Location address was removed" msgstr "Eliminouse o enderezo da localización" -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:51 #: lib/web/templates/email/pending_participation_notification.text.eex:6 +#, elixir-format msgid "Manage pending requests" msgstr "Xestionar solicitudes pendentes" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 +#, elixir-format msgid "Nearly there!" msgstr "Case rematamos!" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 +#, elixir-format msgid "New email confirmation" msgstr "Novo email de confirmación" -#, elixir-format #: lib/web/templates/email/report.html.eex:106 +#, elixir-format msgid "Reasons for report" msgstr "Razóns para denunciar" -#, elixir-format #: lib/web/templates/email/report.html.eex:39 +#, elixir-format msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "" "Alguén na %{instancia} denunciou o seguinte contido para que o " "analices:" -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 +#, elixir-format msgid "Sorry! You're not going." msgstr "Lamentámos que non participes." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:74 +#, elixir-format msgid "Start" msgstr "Inicio" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:18 +#, elixir-format msgid "Start %{begins_on}" msgstr "Comeza en %{begins_on}" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:3 +#, elixir-format msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Houbo cambios no título para %{title} e cremos que é do teu interese." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:55 #: lib/web/templates/email/event_updated.text.eex:11 +#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Evento cancelado pola organización. Lamentámolo!" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:51 #: lib/web/templates/email/event_updated.text.eex:7 +#, elixir-format msgid "This event has been confirmed" msgstr "Este evento foi confirmado" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:53 #: lib/web/templates/email/event_updated.text.eex:9 +#, elixir-format msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "" "Este evento aínda ten que ser confirmado: a organización farache saber se o " "confirman." -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 +#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "É unha mágoa, pero a organización rexeitou a túa solicitude." -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:51 +#, elixir-format msgid "Verify your email address" msgstr "Verifica o teu enderezo de email" -#, elixir-format #: lib/web/templates/email/report.html.eex:126 +#, elixir-format msgid "View report" msgstr "Ver denuncia" -#, elixir-format #: lib/web/templates/email/report.text.eex:24 +#, elixir-format msgid "View report:" msgstr "Ver denuncia:" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:58 #: lib/web/templates/email/event_participation_confirmed.html.eex:58 +#, elixir-format msgid "Visit event page" msgstr "Visitar páxina do evento" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:121 +#, elixir-format msgid "Visit the updated event page" msgstr "Visita a páxina do evento actualizada" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:23 +#, elixir-format msgid "Visit the updated event page: %{link}" msgstr "Visita a páxina do evento actualizada: %{link}" -#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 +#, elixir-format msgid "What's up this week?" msgstr "Que acontece nesta semana?" -#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 +#, elixir-format msgid "What's up today?" msgstr "Que temos para hoxe?" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 +#, elixir-format msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" "Desexas actualizar ou cancelar a túa participación, simplemente accede á " "páxina do evento na ligazón superior e preme no botón Participar." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:64 #: lib/web/templates/email/pending_participation_notification.text.eex:8 +#, elixir-format msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" "Recibes este email porque escolleches ser notificada sobre as solicitudes " "pendentes nos teus eventos. Podes desactivar ou cambiar os axustes das " "notificación nos axustes da conta baixo « Notificacións »." -#, elixir-format #: lib/web/templates/email/event_participation_rejected.text.eex:5 +#, elixir-format msgid "You issued a request to attend %{title}." msgstr "Solicitaches participar en %{title}." -#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 +#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Recentemente solicitaches participar en %{title}." -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:13 #: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#, elixir-format msgid "You're going!" msgstr "Vas ir!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 +#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "Se non propiciaches ti o cambio, por favor ignora esta mensaxe." -#, elixir-format #: lib/web/templates/email/email.html.eex:89 +#, elixir-format msgid "Please do not use it for real purposes." msgstr "Por favor, non o uses para eventos reais." -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 +#, elixir-format msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "" "Se cres que é un erro, podes contactar co grupo de administradoras para que " "poidan volver a engadirte." -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 +#, elixir-format msgid "So long, and thanks for the fish!" msgstr "Ata aquí, e grazas pola atención!" -#, elixir-format #: lib/web/email/group.ex:63 +#, elixir-format msgid "You have been removed from group %{group}" msgstr "Foches eliminada do grupo %{group}" -#, elixir-format #: lib/web/templates/email/group_member_removal.text.eex:3 +#, elixir-format msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." msgstr "" "Foches eliminada do grupo %{group}. Agora non poderás acceder ós contidos " "privados do grupo." -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:38 +#, elixir-format msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "" "%{inviter} convidoute a unirte ó seu grupo " "%{link_start}%{group}%{link_end}" -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:38 +#, elixir-format msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "" "Foches eliminada do grupo %{link_start}%{group}%{link_end}. Agora non " "poderás acceder ós contidos privados deste grupo." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:54 #: lib/web/templates/email/group_suspension.text.eex:7 +#, elixir-format msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "" "Este grupo estaba localizado noutra instancia, seguirá funcionando para " "outras instancias pero non nesta." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:46 #: lib/web/templates/email/group_suspension.text.eex:5 +#, elixir-format msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "" "Como este grupo estaba noutra instancia, todos os seus datos serán " "irreversiblemente eliminados." -#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:38 #: lib/web/templates/email/group_deletion.text.eex:3 +#, elixir-format msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "" "A administradora %{author} eliminou o grupo %{group}. Todos os eventos do " "grupo, debates, publicacións e tarefas foron elminados." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:13 #: lib/web/templates/email/group_suspension.text.eex:1 +#, elixir-format msgid "The group %{group} has been suspended on %{instance}!" msgstr "O grupo %{group} foi suspendido en %{instance}!" -#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:13 #: lib/web/templates/email/group_deletion.text.eex:1 +#, elixir-format msgid "The group %{group} was deleted on %{instance}!" msgstr "O grupo %{group} foi eliminado de %{instance}!" -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:38 #: lib/web/templates/email/group_suspension.text.eex:3 +#, elixir-format msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" "Os moderadores da túa instancia decidiron suspender %{group_name} " "(%{group_address}). Xa non pertences a este grupo." -#, elixir-format #: lib/web/email/group.ex:136 +#, elixir-format msgid "The group %{group} has been deleted on %{instance}" msgstr "O grupo %{group} foi eliminado de %{instance}" -#, elixir-format #: lib/web/email/group.ex:97 +#, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "O grupo %{group} foi suspendido en %{instance}" -#, elixir-format #: lib/web/templates/api/terms.html.eex:24 +#, elixir-format msgctxt "terms" msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." msgstr "" @@ -1329,8 +1329,8 @@ msgstr "" "Se estos termos dalgún xeito non están claros, por favor fainolo saber " "contactando con %{contact}." -#, elixir-format #: lib/web/templates/api/terms.html.eex:40 +#, elixir-format msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "" @@ -1338,22 +1338,22 @@ msgstr "" "usuarias do Servizo, mira a nosa política de " "privacidade." -#, elixir-format #: lib/web/templates/api/terms.html.eex:36 +#, elixir-format msgctxt "terms" msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." msgstr "" "Se continúas a usar o Servizo tras estar vixentes os Termos revisados, " "aceptas os Termos revisados." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:78 +#, elixir-format msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "Se eliminas esta información deberás conectarte de volta." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:80 +#, elixir-format msgctxt "terms" msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." msgstr "" @@ -1364,29 +1364,29 @@ msgstr "" "Eliminando esta información só fará que deixes de ver o estado da " "participación no teu navegador." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:87 +#, elixir-format msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "Nota: esta información gárdase no localStorage e non nas cookies." -#, elixir-format #: lib/web/templates/api/terms.html.eex:71 +#, elixir-format msgctxt "terms" msgid "Our responsibility" msgstr "A nosa responsabilidade" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:61 +#, elixir-format msgctxt "terms" msgid "Retain server logs containing the IP address of all requests to this server, insofar as such logs are kept, no more than 90 days." msgstr "" "Gardar rexistros do servidor que conteñen enderezos IP de todas as peticións " "ó servidor, de tal xeito que non será durante máis de 90 días." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 +#, elixir-format msgctxt "terms" msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary to help you understand them better." msgstr "" @@ -1394,16 +1394,16 @@ msgstr "" "poderían referir conceptos difíciles de comprender. Aquí tes un glosario para axudarche a comprendelos mellor." -#, elixir-format #: lib/web/templates/api/terms.html.eex:45 +#, elixir-format msgctxt "terms" msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." msgstr "" "Non somos responsables de calquera perda que puideses sufrir se alguén " "utiliza o teu email ou contrasinal, con ou sen o teu consentimento." -#, elixir-format #: lib/web/templates/api/terms.html.eex:50 +#, elixir-format msgctxt "terms" msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." msgstr "" @@ -1413,8 +1413,8 @@ msgstr "" "dereitos do contido que publicas, ligas ou doutro xeito pos a disposición a " "través do Servizo." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:10 +#, elixir-format msgctxt "terms" msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter an email address, a password (hashed) and at least an username. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" @@ -1430,16 +1430,16 @@ msgstr "" "público. Porén, sempre podes visitar a instancia sen precisar " "rexistrarte." -#, elixir-format #: lib/web/templates/api/terms.html.eex:30 +#, elixir-format msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" "Reservamos o dereito a modificar estos Termos en calquera momento. Por " "exemplo, poderiamos cambiar os Termos se introducimos novas funcións." -#, elixir-format #: lib/web/templates/api/terms.html.eex:20 +#, elixir-format msgctxt "terms" msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by Framasoft, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the \"About this instance\" page." msgstr "" @@ -1453,8 +1453,8 @@ msgstr "" "información sobre esta instancia na páxina Acerca desta instancia." -#, elixir-format #: lib/web/templates/api/terms.html.eex:43 +#, elixir-format msgctxt "terms" msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to %{instance_name}." msgstr "" @@ -1462,8 +1462,8 @@ msgstr "" "contrasinal e aceptas os riscos dun acceso non autorizado á túa conta e a " "calquera outra información que proporciones a %{instance_name}." -#, elixir-format #: lib/web/templates/api/terms.html.eex:49 +#, elixir-format msgctxt "terms" msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." msgstr "" @@ -1475,8 +1475,8 @@ msgstr "" "de acordo ás regras de visibilidade que establezas para o contido. Non " "modificaremos a visibilidade que ti estableceches para o contido." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:19 +#, elixir-format msgctxt "terms" msgid "Your events and comments are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." msgstr "" @@ -1489,8 +1489,8 @@ msgstr "" "ver esas mensaxes e información, e as correspondentes poden facer capturas " "de pantalla, copiar e volver a compartir de múltiples xeitos esa información." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:99 +#, elixir-format msgctxt "terms" msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." msgstr "" @@ -1500,178 +1500,178 @@ msgstr "" "membros do grupo, sempre que esos membros do grupo residan en diferentes " "instancias desta." -#, elixir-format #: lib/web/templates/email/event_participation_confirmed.text.eex:4 +#, elixir-format msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Confirmaches a participación. Actualiza o calendario, xa que agora estás na " "lista de convidadas!" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:38 #: lib/web/templates/email/event_participation_confirmed.html.eex:38 +#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Recentemente solicitaches participar en %{title}." -#, elixir-format #: lib/web/email/participation.ex:91 +#, elixir-format msgid "Your participation to event %{title} has been confirmed" msgstr "Confirmouse a túa participación no evento %{title}" -#, elixir-format #: lib/web/templates/email/report.html.eex:41 +#, elixir-format msgid "%{reporter} reported the following content." msgstr "%{reporter} denunciou o seguinte contido." -#, elixir-format #: lib/web/templates/email/report.text.eex:5 +#, elixir-format msgid "Group %{group} was reported" msgstr "O grupo %{group} foi denunciado" -#, elixir-format #: lib/web/templates/email/report.html.eex:51 +#, elixir-format msgid "Group reported" msgstr "Grupo denunciado" -#, elixir-format #: lib/web/templates/email/report.text.eex:7 +#, elixir-format msgid "Profile %{profile} was reported" msgstr "O perfil %{profile} foi denunciado" -#, elixir-format #: lib/web/templates/email/report.html.eex:56 +#, elixir-format msgid "Profile reported" msgstr "Perfil denunciado" -#, elixir-format #: lib/web/templates/email/event_participation_confirmed.html.eex:45 +#, elixir-format msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Confirmaches a túa participación. Actualiza o calendario, agora estás na " "lista de convidadas!" -#, elixir-format #: lib/mobilizon/posts/post.ex:94 +#, elixir-format msgid "A text is required for the post" msgstr "Requírese un texto para a publicación" -#, elixir-format #: lib/mobilizon/posts/post.ex:93 +#, elixir-format msgid "A title is required for the post" msgstr "Requírese un título para a publicación" -#, elixir-format #: lib/web/templates/email/instance_follow.text.eex:3 +#, elixir-format msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "%{name} (%{domain}) solicitou seguir a túa instancia." -#, elixir-format #: lib/web/email/follow.ex:54 +#, elixir-format msgid "%{name} requests to follow your instance" msgstr "%{name} solicita seguir a túa instancia" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:38 +#, elixir-format msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "" "%{name} (%{domain}) solicitou pedir a túa instancia. Se aceptas, esta " "instancia recibirá todos os eventos públicos da túa instancia." -#, elixir-format #: lib/web/templates/email/instance_follow.text.eex:4 +#, elixir-format msgid "If you accept, this instance will receive all of your public events." msgstr "Se aceptas, esta instancia recibirá todos os teus eventos públicos." -#, elixir-format #: lib/web/email/follow.ex:48 +#, elixir-format msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "A instancia %{name} (%{domain}) solicita seguir a túa instancia" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:66 +#, elixir-format msgid "See the federation settings" msgstr "Ver axustes de federación" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:52 #: lib/web/templates/email/instance_follow.text.eex:6 +#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "" "Para aceptar o convite, vaite ós axustes de administración da instancia." -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:13 #: lib/web/templates/email/instance_follow.text.eex:1 +#, elixir-format msgid "Want to connect?" msgstr "Desexas conectarte?" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:45 #: lib/web/templates/email/instance_follow.text.eex:5 +#, elixir-format msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "" "Nota: que %{name} (%{domain}) te siga non implica que sigas a esta " "instancia, pero podes tamén solicitar seguilos a eles." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 +#, elixir-format msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "Ola! Rexistrácheste para unirte a este evento: « %{title} ». Confirma " "o enderezo de email proporcionado:" -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:38 +#, elixir-format msgid "You issued a request to attend %{title}." msgstr "Fixeches unha solicitude para participar en %{title}." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:64 +#, elixir-format msgid "Event title" msgstr "Título do evento" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:38 +#, elixir-format msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Houbo cambios en %{title} e cremos que debes sabelo." -#, elixir-format #: lib/web/templates/error/500_page.html.eex:46 +#, elixir-format msgid "The Mobilizon server seems to be temporarily down." msgstr "O servidor Mobilizon semella estar temporalmente fóra de servizo." -#, elixir-format #: lib/web/templates/error/500_page.html.eex:7 +#, elixir-format msgid "This page is not correct" msgstr "Esta páxina non é correcta" -#, elixir-format #: lib/web/templates/error/500_page.html.eex:45 +#, elixir-format msgid "We're sorry, but something went wrong on our end." msgstr "Lamentámolo, pero algo está a fallar pola nosa parte." -#, elixir-format #: lib/web/templates/email/email.html.eex:88 #: lib/web/templates/email/email.text.eex:4 +#, elixir-format msgid "This is a demonstration site to test Mobilizon." msgstr "Este é un sitio web de exemplo para probar Mobilizon." -#, elixir-format #: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +#, elixir-format msgid "%{name}'s feed" -msgstr "" +msgstr "fonte de %{name}" -#, elixir-format #: lib/service/export/feed.ex:77 +#, elixir-format msgid "%{actor}'s private events feed on %{instance}" -msgstr "" +msgstr "fonte dos eventos privados de %{actor} en %{instance}" -#, elixir-format #: lib/service/export/feed.ex:72 -msgid "%{actor}'s public events feed on %{instance}" -msgstr "" - #, elixir-format +msgid "%{actor}'s public events feed on %{instance}" +msgstr "fonte dos eventos públicos de %{actor} en %{instance}" + #: lib/service/export/feed.ex:203 +#, elixir-format msgid "Feed for %{email} on %{instance}" -msgstr "" +msgstr "Fonte para %{email} en %{instance}" From 2de5a82b2d94f63397a895366e8a8e33aefc2ee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jos=C3=A9=20m?= Date: Wed, 20 Jan 2021 06:06:03 +0000 Subject: [PATCH 080/114] Translated using Weblate (Galician) Currently translated at 100.0% (166 of 166 strings) Translation: Mobilizon/Backend errors Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/gl/ --- priv/gettext/gl/LC_MESSAGES/errors.po | 296 +++++++++++++------------- 1 file changed, 148 insertions(+), 148 deletions(-) diff --git a/priv/gettext/gl/LC_MESSAGES/errors.po b/priv/gettext/gl/LC_MESSAGES/errors.po index 9a5a5183b..f703ccef3 100644 --- a/priv/gettext/gl/LC_MESSAGES/errors.po +++ b/priv/gettext/gl/LC_MESSAGES/errors.po @@ -8,7 +8,7 @@ ## to merge POT files into PO files. msgid "" msgstr "" -"PO-Revision-Date: 2020-11-21 23:52+0000\n" +"PO-Revision-Date: 2021-01-20 16:18+0000\n" "Last-Translator: josé m. \n" "Language-Team: Galician \n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1\n" +"X-Generator: Weblate 4.4\n" msgid "can't be blank" msgstr "non pode estar baleiro" @@ -93,759 +93,759 @@ msgstr "ten que ser maior ou igual a %{number}" msgid "must be equal to %{number}" msgstr "ten que ser igual a %{number}" -#, elixir-format #: lib/graphql/resolvers/user.ex:103 +#, elixir-format msgid "Cannot refresh the token" msgstr "Non puido actualizar o token" -#, elixir-format #: lib/graphql/resolvers/group.ex:195 +#, elixir-format msgid "Current profile is not a member of this group" msgstr "O perfil actual non é membro deste grupo" -#, elixir-format #: lib/graphql/resolvers/group.ex:199 +#, elixir-format msgid "Current profile is not an administrator of the selected group" msgstr "O perfil actual non é administrador do grupo seleccionado" -#, elixir-format #: lib/graphql/resolvers/user.ex:512 +#, elixir-format msgid "Error while saving user settings" msgstr "Erro ó gardar os axustes de usuaria" -#, elixir-format #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:192 #: lib/graphql/resolvers/group.ex:223 lib/graphql/resolvers/group.ex:258 lib/graphql/resolvers/member.ex:80 +#, elixir-format msgid "Group not found" msgstr "Grupo non atopado" -#, elixir-format #: lib/graphql/resolvers/group.ex:63 +#, elixir-format msgid "Group with ID %{id} not found" msgstr "Grupo con ID %{id} non atopado" -#, elixir-format #: lib/graphql/resolvers/user.ex:83 +#, elixir-format msgid "Impossible to authenticate, either your email or password are invalid." msgstr "" "A autenticación non foi posible, o contrasinal ou o email non son correctos." -#, elixir-format #: lib/graphql/resolvers/group.ex:255 +#, elixir-format msgid "Member not found" msgstr "Membro non atopado" -#, elixir-format #: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 #: lib/graphql/resolvers/user.ex:417 +#, elixir-format msgid "No profile found for the moderator user" msgstr "Non se atopou o perfil para a usuaria moderadora" -#, elixir-format #: lib/graphql/resolvers/user.ex:195 +#, elixir-format msgid "No user to validate with this email was found" msgstr "Non se atopou unha usuaria con este email para validar" -#, elixir-format #: lib/graphql/resolvers/person.ex:249 lib/graphql/resolvers/user.ex:219 +#, elixir-format msgid "No user with this email was found" msgstr "Non se atopa ningunha usuaria con este email" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:195 #: lib/graphql/resolvers/person.ex:273 lib/graphql/resolvers/person.ex:302 lib/graphql/resolvers/person.ex:315 +#, elixir-format msgid "Profile is not owned by authenticated user" msgstr "O perfil non pertence a unha usuaria autenticada" -#, elixir-format #: lib/graphql/resolvers/user.ex:125 +#, elixir-format msgid "Registrations are not open" msgstr "O rexistro está pechado" -#, elixir-format #: lib/graphql/resolvers/user.ex:330 +#, elixir-format msgid "The current password is invalid" msgstr "O contrasinal actual non é válido" -#, elixir-format #: lib/graphql/resolvers/user.ex:382 +#, elixir-format msgid "The new email doesn't seem to be valid" msgstr "O novo email non semella ser válido" -#, elixir-format #: lib/graphql/resolvers/user.ex:379 +#, elixir-format msgid "The new email must be different" msgstr "O novo email ten que ser diferente" -#, elixir-format #: lib/graphql/resolvers/user.ex:333 +#, elixir-format msgid "The new password must be different" msgstr "O novo contrasinal ten que ser diferente" -#, elixir-format #: lib/graphql/resolvers/user.ex:376 lib/graphql/resolvers/user.ex:439 #: lib/graphql/resolvers/user.ex:442 +#, elixir-format msgid "The password provided is invalid" msgstr "O contrasinal escrito non é válido" -#, elixir-format #: lib/graphql/resolvers/user.ex:337 +#, elixir-format msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" "O contrasinal escollido é demasiado curto, ten que ter 6 caracteres polo " "menos." -#, elixir-format #: lib/graphql/resolvers/user.ex:215 +#, elixir-format msgid "This user can't reset their password" msgstr "Esta usuaria non pode restablecer o seu contrasinal" -#, elixir-format #: lib/graphql/resolvers/user.ex:79 +#, elixir-format msgid "This user has been disabled" msgstr "Estab usuaria foi desactivada" -#, elixir-format #: lib/graphql/resolvers/user.ex:179 +#, elixir-format msgid "Unable to validate user" msgstr "Non se puido validar a usuaria" -#, elixir-format #: lib/graphql/resolvers/user.ex:420 +#, elixir-format msgid "User already disabled" msgstr "A usuaria xa está desactivada" -#, elixir-format #: lib/graphql/resolvers/user.ex:487 +#, elixir-format msgid "User requested is not logged-in" msgstr "A usuaria solicitada non está conectada" -#, elixir-format #: lib/graphql/resolvers/group.ex:229 +#, elixir-format msgid "You are already a member of this group" msgstr "Xa es membro deste grupo" -#, elixir-format #: lib/graphql/resolvers/group.ex:262 +#, elixir-format msgid "You can't leave this group because you are the only administrator" msgstr "Non podes deixar este grupo porque es a única administradora" -#, elixir-format #: lib/graphql/resolvers/group.ex:226 +#, elixir-format msgid "You cannot join this group" msgstr "Non podes unirte a este grupo" -#, elixir-format #: lib/graphql/resolvers/group.ex:91 +#, elixir-format msgid "You may not list groups unless moderator." msgstr "Non podes facer listas de grupos porque non es moderadora." -#, elixir-format #: lib/graphql/resolvers/user.ex:387 +#, elixir-format msgid "You need to be logged-in to change your email" msgstr "Tes que estar conectada para poder cambiar o email" -#, elixir-format #: lib/graphql/resolvers/user.ex:345 +#, elixir-format msgid "You need to be logged-in to change your password" msgstr "Tes que estar conectada para poder cambiar o contrasinal" -#, elixir-format #: lib/graphql/resolvers/group.ex:204 +#, elixir-format msgid "You need to be logged-in to delete a group" msgstr "Tes que estar conectada para poder eleminar un grupo" -#, elixir-format #: lib/graphql/resolvers/user.ex:447 +#, elixir-format msgid "You need to be logged-in to delete your account" msgstr "Tes que estar conectada para poder eliminar a conta" -#, elixir-format #: lib/graphql/resolvers/group.ex:234 +#, elixir-format msgid "You need to be logged-in to join a group" msgstr "Tes que estar conectada para poder unirte a un grupo" -#, elixir-format #: lib/graphql/resolvers/group.ex:267 +#, elixir-format msgid "You need to be logged-in to leave a group" msgstr "Tes que estar conectada para poder deixar un grupo" -#, elixir-format #: lib/graphql/resolvers/group.ex:169 +#, elixir-format msgid "You need to be logged-in to update a group" msgstr "Tes que estar conectada para poder actualizar un grupo" -#, elixir-format #: lib/graphql/resolvers/user.ex:108 +#, elixir-format msgid "You need to have an existing token to get a refresh token" msgstr "Tes que ter un token existente para obter un token actualizado" -#, elixir-format #: lib/graphql/resolvers/user.ex:198 lib/graphql/resolvers/user.ex:222 +#, elixir-format msgid "You requested again a confirmation email too soon" msgstr "Solicitaches demasiado pronto un email de confirmación" -#, elixir-format #: lib/graphql/resolvers/user.ex:128 +#, elixir-format msgid "Your email is not on the allowlist" msgstr "O teu email non está na lista dos permitidos" -#, elixir-format #: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#, elixir-format msgid "Error while performing background task" msgstr "Erro ó executar a tarefa en segundo plano" -#, elixir-format #: lib/graphql/resolvers/actor.ex:27 +#, elixir-format msgid "No profile found with this ID" msgstr "Non se atopa o perfil con este ID" -#, elixir-format #: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#, elixir-format msgid "No remote profile found with this ID" msgstr "Non se atopa o perfil remoto con este ID" -#, elixir-format #: lib/graphql/resolvers/actor.ex:69 +#, elixir-format msgid "Only moderators and administrators can suspend a profile" msgstr "Só moderadoras e administradoras poden suspender un perfil" -#, elixir-format #: lib/graphql/resolvers/actor.ex:99 +#, elixir-format msgid "Only moderators and administrators can unsuspend a profile" msgstr "Só moderadoras e administradoras pode restablecer un perfil" -#, elixir-format #: lib/graphql/resolvers/actor.ex:24 +#, elixir-format msgid "Only remote profiles may be refreshed" msgstr "Só os perfís remotos poderían ser actualizdos" -#, elixir-format #: lib/graphql/resolvers/actor.ex:61 +#, elixir-format msgid "Profile already suspended" msgstr "O perfil xa está suspendido" -#, elixir-format #: lib/graphql/resolvers/participant.ex:92 +#, elixir-format msgid "A valid email is required by your instance" msgstr "A túa instancia require un email válido" -#, elixir-format #: lib/graphql/resolvers/participant.ex:86 +#, elixir-format msgid "Anonymous participation is not enabled" msgstr "Non está permitida a participación ánonima" -#, elixir-format #: lib/graphql/resolvers/person.ex:192 +#, elixir-format msgid "Cannot remove the last administrator of a group" msgstr "Non se pode eliminar a última administradora dun grupo" -#, elixir-format #: lib/graphql/resolvers/person.ex:189 +#, elixir-format msgid "Cannot remove the last identity of a user" msgstr "Non se pode eliminar a última identidade dunha usuaria" -#, elixir-format #: lib/graphql/resolvers/comment.ex:105 +#, elixir-format msgid "Comment is already deleted" msgstr "O comentario xa foi eliminado" -#, elixir-format #: lib/graphql/resolvers/discussion.ex:62 +#, elixir-format msgid "Discussion not found" msgstr "Non se atopa a conversa" -#, elixir-format #: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 +#, elixir-format msgid "Error while saving report" msgstr "Erro ó gardar a denuncia" -#, elixir-format #: lib/graphql/resolvers/report.ex:96 +#, elixir-format msgid "Error while updating report" msgstr "Erro ó actualizar a denuncia" -#, elixir-format #: lib/graphql/resolvers/participant.ex:127 +#, elixir-format msgid "Event id not found" msgstr "Non se atopou o ID do evento" -#, elixir-format #: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:236 #: lib/graphql/resolvers/event.ex:280 +#, elixir-format msgid "Event not found" msgstr "Evento non atopado" -#, elixir-format #: lib/graphql/resolvers/participant.ex:83 #: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 +#, elixir-format msgid "Event with this ID %{id} doesn't exist" msgstr "Non existe un evento co ID %{id}" -#, elixir-format #: lib/graphql/resolvers/participant.ex:99 +#, elixir-format msgid "Internal Error" msgstr "Erro interno" -#, elixir-format #: lib/graphql/resolvers/discussion.ex:186 +#, elixir-format msgid "No discussion with ID %{id}" msgstr "Non hai conversa con ID %{id}" -#, elixir-format #: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 +#, elixir-format msgid "No profile found for user" msgstr "Non se atopou o perfil da usuaria" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:63 +#, elixir-format msgid "No such feed token" msgstr "Non hai tal token da fonte" -#, elixir-format #: lib/graphql/resolvers/participant.ex:237 +#, elixir-format msgid "Participant already has role %{role}" msgstr "A participante xa ten o rol %{role}" -#, elixir-format #: lib/graphql/resolvers/participant.ex:169 #: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 #: lib/graphql/resolvers/participant.ex:240 +#, elixir-format msgid "Participant not found" msgstr "Non se atopou a participante" -#, elixir-format #: lib/graphql/resolvers/person.ex:29 +#, elixir-format msgid "Person with ID %{id} not found" msgstr "Non se atopou a persoa con ID %{id}" -#, elixir-format #: lib/graphql/resolvers/person.ex:51 +#, elixir-format msgid "Person with username %{username} not found" msgstr "Non se atopa a persoa con nome de usuaria %{username}" -#, elixir-format #: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 +#, elixir-format msgid "Post ID is not a valid ID" msgstr "ID da publicación non é un ID válido" -#, elixir-format #: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 +#, elixir-format msgid "Post doesn't exist" msgstr "Non existe a publicación" -#, elixir-format #: lib/graphql/resolvers/member.ex:83 +#, elixir-format msgid "Profile invited doesn't exist" msgstr "O perfil convidado non existe" -#, elixir-format #: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 +#, elixir-format msgid "Profile is already a member of this group" msgstr "O perfil xa é membro deste grupo" -#, elixir-format #: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 #: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:87 lib/graphql/resolvers/resource.ex:124 #: lib/graphql/resolvers/resource.ex:153 lib/graphql/resolvers/resource.ex:182 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 +#, elixir-format msgid "Profile is not member of group" msgstr "O perfil non é membro do grupo" -#, elixir-format #: lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:186 +#, elixir-format msgid "Profile not found" msgstr "Perfil non atopado" -#, elixir-format #: lib/graphql/resolvers/event.ex:100 lib/graphql/resolvers/participant.ex:234 +#, elixir-format msgid "Provided moderator profile doesn't have permission on this event" msgstr "O perfil da moderadora proporcionado non ten permisos neste evento" -#, elixir-format #: lib/graphql/resolvers/report.ex:36 +#, elixir-format msgid "Report not found" msgstr "Denuncia non atopada" -#, elixir-format #: lib/graphql/resolvers/resource.ex:150 lib/graphql/resolvers/resource.ex:179 +#, elixir-format msgid "Resource doesn't exist" msgstr "Non existe o recurso" -#, elixir-format #: lib/graphql/resolvers/participant.ex:120 +#, elixir-format msgid "The event has already reached its maximum capacity" msgstr "Este evento xa acadou a súa capacidade máxima" -#, elixir-format #: lib/graphql/resolvers/participant.ex:260 +#, elixir-format msgid "This token is invalid" msgstr "Este token non é válido" -#, elixir-format #: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 +#, elixir-format msgid "Todo doesn't exist" msgstr "Lista de tarefas non existe" -#, elixir-format #: lib/graphql/resolvers/todos.ex:75 lib/graphql/resolvers/todos.ex:191 #: lib/graphql/resolvers/todos.ex:216 +#, elixir-format msgid "Todo list doesn't exist" msgstr "A lista de tarefas non existe" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:69 +#, elixir-format msgid "Token does not exist" msgstr "Non existe o token" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:66 +#, elixir-format msgid "Token is not a valid UUID" msgstr "O token non é un UUID válido" -#, elixir-format #: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:331 +#, elixir-format msgid "User not found" msgstr "Usuaria non atopada" -#, elixir-format #: lib/graphql/resolvers/person.ex:252 +#, elixir-format msgid "You already have a profile for this user" msgstr "Xa tes un perfil para esta usuaria" -#, elixir-format #: lib/graphql/resolvers/participant.ex:130 +#, elixir-format msgid "You are already a participant of this event" msgstr "Xa es unha participante neste evento" -#, elixir-format #: lib/graphql/resolvers/discussion.ex:190 +#, elixir-format msgid "You are not a member of the group the discussion belongs to" msgstr "Non es membro do grupo ó que pertence a conversa" -#, elixir-format #: lib/graphql/resolvers/member.ex:86 +#, elixir-format msgid "You are not a member of this group" msgstr "Non es membro deste grupo" -#, elixir-format #: lib/graphql/resolvers/member.ex:151 +#, elixir-format msgid "You are not a moderator or admin for this group" msgstr "Non es moderadora ou administradora deste grupo" -#, elixir-format #: lib/graphql/resolvers/comment.ex:51 +#, elixir-format msgid "You are not allowed to create a comment if not connected" msgstr "Non tes permiso para crear un comentario sen estar conectada" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:41 +#, elixir-format msgid "You are not allowed to create a feed token if not connected" msgstr "Non tes permiso para crear un token da fonte se non estás conectada" -#, elixir-format #: lib/graphql/resolvers/comment.ex:110 +#, elixir-format msgid "You are not allowed to delete a comment if not connected" msgstr "Non tes permiso para eliminar un comentario se non estás conectada" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:78 +#, elixir-format msgid "You are not allowed to delete a feed token if not connected" msgstr "Non tes permiso para eliminar o token da fonte se non estás conectada" -#, elixir-format #: lib/graphql/resolvers/comment.ex:73 +#, elixir-format msgid "You are not allowed to update a comment if not connected" msgstr "Non tes permiso para actualizar un comentario se non estás conectada" -#, elixir-format #: lib/graphql/resolvers/participant.ex:163 #: lib/graphql/resolvers/participant.ex:192 +#, elixir-format msgid "You can't leave event because you're the only event creator participant" msgstr "" "Non podes saír do evento porque es a única creadora do evento que participa" -#, elixir-format #: lib/graphql/resolvers/member.ex:155 +#, elixir-format msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgstr "" "Non podes adxudicarte un rol menor neste grupo porque es a única " "administradora" -#, elixir-format #: lib/graphql/resolvers/comment.ex:101 +#, elixir-format msgid "You cannot delete this comment" msgstr "Non podes eliminar este comentario" -#, elixir-format #: lib/graphql/resolvers/event.ex:276 +#, elixir-format msgid "You cannot delete this event" msgstr "Non podes eliminar este evento" -#, elixir-format #: lib/graphql/resolvers/member.ex:89 +#, elixir-format msgid "You cannot invite to this group" msgstr "Non podes convidar a este grupo" -#, elixir-format #: lib/graphql/resolvers/feed_token.ex:72 +#, elixir-format msgid "You don't have permission to delete this token" msgstr "Non tes permiso para eliminar este token" -#, elixir-format #: lib/graphql/resolvers/admin.ex:52 +#, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" "Tes que estar conectada e ser moderadora para ver listas de rexistros de " "accións" -#, elixir-format #: lib/graphql/resolvers/report.ex:26 +#, elixir-format msgid "You need to be logged-in and a moderator to list reports" msgstr "Tes que estar conectada e ser moderadora para ver listas de denuncias" -#, elixir-format #: lib/graphql/resolvers/report.ex:101 +#, elixir-format msgid "You need to be logged-in and a moderator to update a report" msgstr "Tes que estas conectada e ser moderadora para actualizar unha denuncia" -#, elixir-format #: lib/graphql/resolvers/report.ex:41 +#, elixir-format msgid "You need to be logged-in and a moderator to view a report" msgstr "Tes que estar conectada e ser moderadora para ver unha denuncia" -#, elixir-format #: lib/graphql/resolvers/admin.ex:236 +#, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Tes que estar conectada e ser administradora para acceder ós axustes de " "administración" -#, elixir-format #: lib/graphql/resolvers/admin.ex:221 +#, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Tes que estar conectada e ser administradora para acceder ó taboleiro de " "estatísticas" -#, elixir-format #: lib/graphql/resolvers/admin.ex:260 +#, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Tes que estar conectada e ser administradora para gardar os axustes de " "administración" -#, elixir-format #: lib/graphql/resolvers/discussion.ex:76 +#, elixir-format msgid "You need to be logged-in to access discussions" msgstr "Tes que estar conectada para acceder ás conversas" -#, elixir-format #: lib/graphql/resolvers/resource.ex:93 +#, elixir-format msgid "You need to be logged-in to access resources" msgstr "Tes que estar conectada para acceder ós recursos" -#, elixir-format #: lib/graphql/resolvers/event.ex:211 +#, elixir-format msgid "You need to be logged-in to create events" msgstr "Tes que estar conectada para crear eventos" -#, elixir-format #: lib/graphql/resolvers/post.ex:140 +#, elixir-format msgid "You need to be logged-in to create posts" msgstr "Tes que estar conectada para crear publicacións" -#, elixir-format #: lib/graphql/resolvers/report.ex:74 +#, elixir-format msgid "You need to be logged-in to create reports" msgstr "Tes que estar conectada para crear denuncias" -#, elixir-format #: lib/graphql/resolvers/resource.ex:129 +#, elixir-format msgid "You need to be logged-in to create resources" msgstr "Tes que estar conectada para crear recursos" -#, elixir-format #: lib/graphql/resolvers/event.ex:285 +#, elixir-format msgid "You need to be logged-in to delete an event" msgstr "Tes que estar conectada para eliminar un evento" -#, elixir-format #: lib/graphql/resolvers/post.ex:211 +#, elixir-format msgid "You need to be logged-in to delete posts" msgstr "Tes que estar conectada para eliminar publicacións" -#, elixir-format #: lib/graphql/resolvers/resource.ex:187 +#, elixir-format msgid "You need to be logged-in to delete resources" msgstr "Tes que estar conectada para eliminar recursos" -#, elixir-format #: lib/graphql/resolvers/participant.ex:104 +#, elixir-format msgid "You need to be logged-in to join an event" msgstr "Tes que estar conectada para unirte a un evento" -#, elixir-format #: lib/graphql/resolvers/participant.ex:203 +#, elixir-format msgid "You need to be logged-in to leave an event" msgstr "Tes que estar conectada para saír dun evento" -#, elixir-format #: lib/graphql/resolvers/event.ex:250 +#, elixir-format msgid "You need to be logged-in to update an event" msgstr "Tes que estar conectada para actualizar un evento" -#, elixir-format #: lib/graphql/resolvers/post.ex:178 +#, elixir-format msgid "You need to be logged-in to update posts" msgstr "Tes que estar conectada para actualizar publicacións" -#, elixir-format #: lib/graphql/resolvers/resource.ex:158 +#, elixir-format msgid "You need to be logged-in to update resources" msgstr "Tes que estar conectada para actualizar recursos" -#, elixir-format #: lib/graphql/resolvers/resource.ex:210 +#, elixir-format msgid "You need to be logged-in to view a resource preview" msgstr "Tes que estar conectada para ver vista previa dun recurso" -#, elixir-format #: lib/graphql/resolvers/resource.ex:121 +#, elixir-format msgid "Parent resource doesn't belong to this group" msgstr "O recurso relacionado non pertence a este grupo" -#, elixir-format #: lib/mobilizon/users/user.ex:109 +#, elixir-format msgid "The chosen password is too short." msgstr "O contrasinal elexido é demasiado curto." -#, elixir-format #: lib/mobilizon/users/user.ex:138 +#, elixir-format msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" "O token de rexistro xa está a ser usado, semella un problema pola nosa parte." -#, elixir-format #: lib/mobilizon/users/user.ex:104 +#, elixir-format msgid "This email is already used." msgstr "Este email xa se está a usar." -#, elixir-format #: lib/graphql/error.ex:88 +#, elixir-format msgid "Post not found" msgstr "Non se atopa a publicación" -#, elixir-format #: lib/graphql/error.ex:75 +#, elixir-format msgid "Invalid arguments passed" msgstr "Argumentos proporcionados non válidos" -#, elixir-format #: lib/graphql/error.ex:81 +#, elixir-format msgid "Invalid credentials" msgstr "Credenciais non válidas" -#, elixir-format #: lib/graphql/error.ex:79 +#, elixir-format msgid "Reset your password to login" msgstr "Restablece o teu contrasinal para conectar" -#, elixir-format #: lib/graphql/error.ex:86 lib/graphql/error.ex:91 +#, elixir-format msgid "Resource not found" msgstr "Recurso non atopado" -#, elixir-format #: lib/graphql/error.ex:92 +#, elixir-format msgid "Something went wrong" msgstr "Algo foi mal" -#, elixir-format #: lib/graphql/error.ex:74 +#, elixir-format msgid "Unknown Resource" msgstr "Recurso descoñecido" -#, elixir-format #: lib/graphql/error.ex:84 +#, elixir-format msgid "You don't have permission to do this" msgstr "Non tes permiso para facer isto" -#, elixir-format #: lib/graphql/error.ex:76 +#, elixir-format msgid "You need to be logged in" msgstr "Tes que estar conectada" -#, elixir-format #: lib/graphql/resolvers/member.ex:116 +#, elixir-format msgid "You can't accept this invitation with this profile." msgstr "Non podes aceptar este convite con este perfil." -#, elixir-format #: lib/graphql/resolvers/member.ex:134 +#, elixir-format msgid "You can't reject this invitation with this profile." msgstr "Non podes rexeitar este convite con este perfil." -#, elixir-format #: lib/graphql/resolvers/media.ex:62 +#, elixir-format msgid "File doesn't have an allowed MIME type." msgstr "O ficheiro non ten un tipo MIME permitido." -#, elixir-format #: lib/graphql/resolvers/group.ex:164 +#, elixir-format msgid "Profile is not administrator for the group" msgstr "O perfil non é administrador do grupo" -#, elixir-format #: lib/graphql/resolvers/event.ex:239 +#, elixir-format msgid "You can't edit this event." msgstr "Non podes editar este evento." -#, elixir-format #: lib/graphql/resolvers/event.ex:242 +#, elixir-format msgid "You can't attribute this event to this profile." msgstr "Non podes atribuír este evento a este perfil." -#, elixir-format #: lib/graphql/resolvers/member.ex:137 +#, elixir-format msgid "This invitation doesn't exist." msgstr "O convite non existe." -#, elixir-format #: lib/graphql/resolvers/member.ex:179 +#, elixir-format msgid "This member already has been rejected." msgstr "Este membro xa foi rexeitado." -#, elixir-format #: lib/graphql/resolvers/member.ex:186 +#, elixir-format msgid "You don't have the right to remove this member." msgstr "Non tes permiso para eliminar este membro." -#, elixir-format #: lib/mobilizon/actors/actor.ex:351 +#, elixir-format msgid "This username is already taken." msgstr "Este nome de usuaria xa está pillado." -#, elixir-format #: lib/graphql/resolvers/discussion.ex:73 +#, elixir-format msgid "You must provide either an ID or a slug to access a discussion" msgstr "Debes proporcionar ou ben un ID ou nome para acceder á conversa" -#, elixir-format #: lib/graphql/resolvers/event.ex:200 +#, elixir-format msgid "Organizer profile is not owned by the user" msgstr "O perfil da organización non pertence á usuaria" -#, elixir-format #: lib/graphql/resolvers/participant.ex:89 +#, elixir-format msgid "Profile ID provided is not the anonymous profile one" msgstr "O ID do perfil proporcionado non é o perfil anónimo" -#, elixir-format #: lib/graphql/resolvers/person.ex:128 lib/graphql/resolvers/person.ex:155 #: lib/graphql/resolvers/person.ex:246 +#, elixir-format msgid "The provided picture is too heavy" -msgstr "" +msgstr "A imaxe proporcionada é demasiado grande (mb)" From 32b9f75fcedd3492868cd09cf1fdc1f27f1ceb80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20Trob=C3=A4ck?= Date: Fri, 22 Jan 2021 00:09:11 +0000 Subject: [PATCH 081/114] Translated using Weblate (Swedish) Currently translated at 37.7% (314 of 831 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sv/ --- js/src/i18n/sv.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/js/src/i18n/sv.json b/js/src/i18n/sv.json index 1f0620d56..8fe7279cc 100644 --- a/js/src/i18n/sv.json +++ b/js/src/i18n/sv.json @@ -2,6 +2,7 @@ "Please do not use it in any real way.": "Använd gärna inte det på riktigt.", "A user-friendly, emancipatory and ethical tool for gathering, organising, and mobilising.": "Ett användarvänligt, frigörande och etiskt verktyg för att samlas, organisera och mobilisera.", "A validation email was sent to {email}": "Ett valideringsmail skickades till {email}", + "Abandon editing": "Överge redigering", "Abandon edition": "Överge redigering", "About": "Om", "About Mobilizon": "Om Mobilizon", @@ -28,7 +29,9 @@ "Anonymous participants will be asked to confirm their participation through e-mail.": "Anonyma deltagare måste bekräfta sitt deltagande via e-post.", "Anonymous participations": "Anonyma deltagare", "Approve": "Godkänn", + "Are you really sure you want to delete your whole account? You'll lose everything. Identities, settings, events created, messages and participations will be gone forever.": "Är du verkligen säker på att du vill ta bort hela ditt konto? Du förlorar allt. Identiteter, inställningar, skapade händelser, meddelanden och deltagande försvinner för alltid.", "Are you sure you want to delete this comment? This action cannot be undone.": "Är du säker på att du vill radera den här kommentaren? Detta kan inte ångras.", + "Are you sure you want to delete this event? This action cannot be undone. You may want to engage the discussion with the event creator or edit its event instead.": "Är du säker på att du vill radera det här evenemanget? Denna åtgärd kan inte ångras. Du kanske vill delta i diskussionen med evenemangsskaparen eller redigera det istället.", "Are you sure you want to cancel the event creation? You'll lose all modifications.": "Är du säker på att du vill avbryta evenemangskapandet? Du kommer förlora alla ändringar.", "Are you sure you want to cancel the event edition? You'll lose all modifications.": "Är du säker på att du vill avbryta evenemangredigeringen? Du kommer förlora alla ändringar.", "Are you sure you want to cancel your participation at event \"{title}\"?": "Är du säker på att du vill avsluta ditt deltagande i evenemanget \"{title}\"?", @@ -118,13 +121,17 @@ "Eg: Stockholm, Dance, Chess…": "E.g.: Stockholm, Dans, Schack…", "Either on the {instance} instance or on another instance.": "Antingen på instansen {instance}, eller någon annan.", "Either the account is already validated, either the validation token is incorrect.": "Antingen är kontot redan validerat eller så är valideringstoken inkorrekt.", + "Either the email has already been changed, either the validation token is incorrect.": "Antingen så har emailadressen redan ändrats eller så är valideringstoken felaktigt.", + "Either the participation request has already been validated, either the validation token is incorrect.": "Antingen har begäran om deltagande redan validerats eller så är valideringstoken felaktig.", "Email": "E-post", "Ends on…": "Slutar…", "Enjoy discovering Mobilizon!": "Njut av att utforska Mobilizon!", "Enter the link URL": "Skriv in länken", + "Error while changing email": "Fel vid byte av e-post", "Error while communicating with the server.": "Fel vid kommunikation med servern.", "Error while saving report.": "Fel vid sparande av rapport.", "Error while validating account": "Fel vid validering av konto", + "Error while validating participation request": "Fel vid validering av deltagandeförfrågan", "Event": "Evenemang", "Event already passed": "Evenemanget är över", "Event cancelled": "Evenemanget är inställt", @@ -141,8 +148,10 @@ "Exclude": "Exkludera", "Explore": "Utforska", "Explore events": "Utforska evenemang", + "Failed to save admin settings": "Det gick inte att spara admininställningar", "Featured events": "Utvalda evenemang", "Features": "Utvalda", + "Federation": "Federation", "Find an address": "Hitta en adress", "Find an instance": "Hitta en instans", "Followers": "Följare", @@ -153,6 +162,7 @@ "From the {startDate} at {startTime} to the {endDate} at {endTime}": "Från {startDate} klockan {startTime} till {endDate} klockan {endTime}", "From the {startDate} to the {endDate}": "Från {startDate} till {endDate}", "Gather ⋅ Organize ⋅ Mobilize": "Samlas ⋅ Organisera ⋅ Mobilisera", + "General": "Allmänt", "General information": "Generell information", "Getting location": "Hämtar plats", "Going as {name}": "Går under namnet {name}", @@ -243,6 +253,7 @@ "Pick an identity": "Välj en identitet", "Please check your spam folder if you didn't receive the email.": "Kolla din spam-folder om du inte fått mailet.", "Please contact this instance's Mobilizon admin if you think this is a mistake.": "Vänligen kontakta den här instansens Mobilizon-administratör om du tror det här är ett misstag.", + "Please do not use it in any real way.": "Använd det inte på riktigt.", "Please make sure the address is correct and that the page hasn't been moved.": "Vänligen se till att adressen stämmer och att sidan inte flyttats.", "Please read the full rules": "Vänligen läs reglerna", "Please refresh the page and retry.": "Vänligen ladda om sidan och försök igen.", From 9c5b11bee53e4485f272a13b387a9fe12b2c8cf7 Mon Sep 17 00:00:00 2001 From: fadelkon Date: Thu, 21 Jan 2021 10:03:40 +0000 Subject: [PATCH 082/114] Translated using Weblate (Catalan) Currently translated at 81.3% (196 of 241 strings) Translation: Mobilizon/Backend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/ca/ --- priv/gettext/ca/LC_MESSAGES/default.po | 535 +++++++++++++------------ 1 file changed, 277 insertions(+), 258 deletions(-) diff --git a/priv/gettext/ca/LC_MESSAGES/default.po b/priv/gettext/ca/LC_MESSAGES/default.po index a8e7d02f6..9de2e512b 100644 --- a/priv/gettext/ca/LC_MESSAGES/default.po +++ b/priv/gettext/ca/LC_MESSAGES/default.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-17 11:48+0000\n" -"PO-Revision-Date: 2021-01-17 09:14+0000\n" +"PO-Revision-Date: 2021-01-22 10:14+0000\n" "Last-Translator: fadelkon \n" "Language-Team: Catalan \n" @@ -12,267 +12,267 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.4\n" +"X-Generator: Weblate 4.4.2\n" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:48 +#, elixir-format msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" "Si no ho has demanat tu, ignora aquest email. La teva contrasenya només " "canviarà si cliques l'enllaç de sota i n'escrius una altra." -#, elixir-format #: lib/web/templates/email/report.html.eex:74 +#, elixir-format msgid "%{title} by %{creator}" msgstr "%{title} de %{creator}" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:58 +#, elixir-format msgid "Activate my account" msgstr "Activa el meu compte" -#, elixir-format #: lib/web/templates/email/email.html.eex:117 #: lib/web/templates/email/email.text.eex:9 +#, elixir-format msgid "Ask the community on Framacolibri" msgstr "Pregunta a la comunitat a Framacolibri" -#, elixir-format #: lib/web/templates/email/report.text.eex:15 +#, elixir-format msgid "Comments" msgstr "Comentaris" -#, elixir-format #: lib/web/templates/email/report.html.eex:72 #: lib/web/templates/email/report.text.eex:11 +#, elixir-format msgid "Event" msgstr "Activitat" -#, elixir-format #: lib/web/email/user.ex:48 +#, elixir-format msgid "Instructions to reset your password on %{instance}" msgstr "Instruccions per canviar la contrasenya a %{instance}" -#, elixir-format #: lib/web/templates/email/report.text.eex:21 +#, elixir-format msgid "Reason" msgstr "Raó" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:61 +#, elixir-format msgid "Reset Password" msgstr "Canvia la contrasenya" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:41 +#, elixir-format msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." msgstr "" "Restablir la teva contrasenya és fàcil. Prem el botó de sota i segueix les " "instruccions. Acabarem de seguida." -#, elixir-format #: lib/web/email/user.ex:28 +#, elixir-format msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Instruccions per confirmar el teu compte de Mobilizon a %{instance}" -#, elixir-format #: lib/web/email/admin.ex:24 +#, elixir-format msgid "New report on Mobilizon instance %{instance}" msgstr "S'ha denunciat una activitat al servidor de Mobilizon %{instance}" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 +#, elixir-format msgid "Go to event page" msgstr "Ves a la pàgina de l'activitat" -#, elixir-format #: lib/web/templates/email/report.text.eex:1 +#, elixir-format msgid "New report from %{reporter} on %{instance}" msgstr "S'ha denunciat una activitat a %{instance}" -#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:1 +#, elixir-format msgid "Participation approved" msgstr "S'ha aprovat la participació" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:13 #: lib/web/templates/email/password_reset.text.eex:1 +#, elixir-format msgid "Password reset" msgstr "Reinicia la contrasenya" -#, elixir-format #: lib/web/templates/email/password_reset.text.eex:7 +#, elixir-format msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." msgstr "" "Restablir la contrasenya és fàcil. Segueix l'enllaç de sota i segueix les " "instruccions. Serà un no-res." -#, elixir-format #: lib/web/templates/email/registration_confirmation.text.eex:5 +#, elixir-format msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." msgstr "" "Has creat un compte a %{host} amb aquesta adreça de mail. Estàs a un clic d" "'activar-lo. Si no l'has creat tu, ignora aquest mail." -#, elixir-format #: lib/web/email/participation.ex:112 +#, elixir-format msgid "Your participation to event %{title} has been approved" msgstr "T'han aprovat la participació a %{title}" -#, elixir-format #: lib/web/email/participation.ex:70 +#, elixir-format msgid "Your participation to event %{title} has been rejected" msgstr "T'han denegat la participació a %{title}" -#, elixir-format #: lib/web/email/event.ex:37 +#, elixir-format msgid "Event %{title} has been updated" msgstr "S'ha actualitzat {%title}" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:15 +#, elixir-format msgid "New title: %{title}" msgstr "Nou títol: %{title}" -#, elixir-format #: lib/web/templates/email/password_reset.text.eex:5 +#, elixir-format msgid "You requested a new password for your account on %{instance}." msgstr "Algú ha soŀlicitat a %{instance} una contrasenya nova." -#, elixir-format #: lib/web/templates/email/email.html.eex:85 +#, elixir-format msgid "Warning" msgstr "Alerta" -#, elixir-format #: lib/web/email/participation.ex:135 +#, elixir-format msgid "Confirm your participation to event %{title}" msgstr "Confirma que participaràs a l'activitat %{title}" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:75 +#, elixir-format msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "Un identificador intern per la teva identitat actual" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:74 +#, elixir-format msgctxt "terms" msgid "An internal user ID" msgstr "Un identificador intern" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:37 +#, elixir-format msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "" "Qualsevol informació que recollim de tu la podrem fer servir d'aquestes " "maneres:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:9 +#, elixir-format msgctxt "terms" msgid "Basic account information" msgstr "Informació bàsica del compte" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:25 +#, elixir-format msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "No comparteixis informació perillosa a través de Mobilizon." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:90 +#, elixir-format msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "Revelem algun tipus d'informació a altri?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:68 +#, elixir-format msgctxt "terms" msgid "Do we use cookies?" msgstr "Fem servir cookies?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:51 +#, elixir-format msgctxt "terms" msgid "How do we protect your information?" msgstr "Com protegim la teva informació?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:29 +#, elixir-format msgctxt "terms" msgid "IPs and other metadata" msgstr "Adreces IP i altres metadades" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:17 +#, elixir-format msgctxt "terms" msgid "Published events and comments" msgstr "Activitats i comentaris publicats" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:64 +#, elixir-format msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "" "Mantingues les adreces IP associades a usuàries registrades no més de 12 " "mesos." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:76 +#, elixir-format msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Claus per autenticar-te" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:31 +#, elixir-format msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "" "També podem guardar registres del funcionament del servidor, que poden " "incloure l'adreça IP de cada petició que rep." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:70 +#, elixir-format msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "Desem aquesta informació al teu dispositiu quan et connectes:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:58 +#, elixir-format msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Ens esforçarem de bona fe per a:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:35 +#, elixir-format msgctxt "terms" msgid "What do we use your information for?" msgstr "Per a què fem servir la teva informació?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:57 +#, elixir-format msgctxt "terms" msgid "What is our data retention policy?" msgstr "Quina és la nostra política de retenció de dades?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:67 +#, elixir-format msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Pots esborrar el teu compte irreversiblement en qualsevol moment." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:115 +#, elixir-format msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Canvis a la nostra política de privacitat" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:106 +#, elixir-format msgctxt "terms" msgid "If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site." msgstr "" @@ -283,8 +283,8 @@ msgstr "" "wikipedia.org/wiki/Reglament_General_de_Protecci%C3%B3_de_Dades\">Reglament " "General de Protecció de Dades), si us plau, no facis servir aquest lloc." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:109 +#, elixir-format msgctxt "terms" msgid "If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site." msgstr "" @@ -295,30 +295,30 @@ msgstr "" "la privacitat online dels infants), si us plau, no facis servir aquest " "lloc." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:117 +#, elixir-format msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "" "Si decidim canviar la nostra política de privacitat publicarem els canvis en " "aquesta pàgina." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:112 +#, elixir-format msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "" "Els requisits legals poden diferir si aquest servidor cau dins d'una altra " "jurisdicció." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:103 +#, elixir-format msgctxt "terms" msgid "Site usage by children" msgstr "Ús del lloc per part d'infants" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:47 +#, elixir-format msgctxt "terms" msgid "The email address you provide may be used to send you information, updates and notifications about other people\n interacting with your content or sending you messages and to respond to inquiries, and/or other requests or\n questions." msgstr "" @@ -328,8 +328,8 @@ msgstr "" "contingut, i per respondre a consultes o\n" " soŀlicituds o preguntes." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:45 +#, elixir-format msgctxt "terms" msgid "To aid moderation of the community, for example comparing your IP address with other known ones to determine ban\n evasion or other violations." msgstr "" @@ -337,8 +337,8 @@ msgstr "" "amb d'altres conegudes per determinar\n" " evasió d'un bloqueig o altres violacions de les condicions." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:43 +#, elixir-format msgctxt "terms" msgid "To provide the core functionality of Mobilizon. Depending on this instance's policy you may only be able to\n interact with other people's content and post your own content if you are logged in." msgstr "" @@ -347,89 +347,89 @@ msgstr "" " poguessis interaccionar amb continguts i publicacions teus i d'altres, " "amb una sessió iniciada." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:6 +#, elixir-format msgctxt "terms" msgid "What information do we collect?" msgstr "Quina informació recollim?" -#, elixir-format #: lib/web/email/user.ex:176 +#, elixir-format msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon a %{instance}: confirma la teva adreça de correu" -#, elixir-format #: lib/web/email/user.ex:152 +#, elixir-format msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon a %{instance}: s'ha canviat l'adreça de correu" -#, elixir-format #: lib/web/email/notification.ex:47 +#, elixir-format msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Una activitat planificada per avui" msgstr[1] "%{nb_events} activitats planificades avui" -#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:38 #: lib/web/templates/email/on_day_notification.text.eex:4 +#, elixir-format msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Tens una activitat avui:" msgstr[1] "Tens %{total} activitats avui:" -#, elixir-format #: lib/web/templates/email/group_invite.text.eex:3 +#, elixir-format msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} t'acaba de convidar al seu grup %{group}" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:13 #: lib/web/templates/email/group_invite.text.eex:1 +#, elixir-format msgid "Come along!" msgstr "Vine!" -#, elixir-format #: lib/web/email/notification.ex:24 +#, elixir-format msgid "Don't forget to go to %{title}" msgstr "No t'oblidis d'anar a %{title}" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 +#, elixir-format msgid "Get ready for %{title}" msgstr "Prepara't per %{title}" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:59 +#, elixir-format msgid "See my groups" msgstr "Mostra els meus grups" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:45 #: lib/web/templates/email/group_invite.text.eex:5 +#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Per acceptar la invitació, ves als teus grups." -#, elixir-format #: lib/web/templates/email/before_event_notification.text.eex:5 +#, elixir-format msgid "View the event on: %{link}" msgstr "Vés a l'activitat actualitzada a %{link}" -#, elixir-format #: lib/web/email/group.ex:33 +#, elixir-format msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} t'ha convidat al grup %{group}" -#, elixir-format #: lib/web/email/notification.ex:71 +#, elixir-format msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Una activitat planificada per aquesta setmana" msgstr[1] "%{nb_events} planificades per aquesta setmana" -#, elixir-format #: lib/web/email/notification.ex:93 +#, elixir-format msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Hi ha una soŀlicitud de participar a %{title} pendent de resoldre" @@ -437,21 +437,21 @@ msgstr[1] "" "Hi ha %{number_participation_requests} soŀlicituds de participar a %{title} " "pendents de resoldre" -#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 +#, elixir-format msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Tens una activitat aquesta setmana:" msgstr[1] "Tens %{total} activitats aquesta setmana:" -#, elixir-format #: lib/service/metadata/utils.ex:52 +#, elixir-format msgid "The event organizer didn't add any description." msgstr "L'organitzadora no hi ha posat cap descripció." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:54 +#, elixir-format msgctxt "terms" msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." msgstr "" @@ -461,8 +461,8 @@ msgstr "" "aplicacions client i l'API del servidor, i desem les contrasenyes " "transformades amb una funció de hash forta, unidireccional." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:94 +#, elixir-format msgctxt "terms" msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." msgstr "" @@ -474,20 +474,20 @@ msgstr "" "fer-ho per complir amb la llei, per fer complir la política del lloc, per " "protegir el nostres drets o d'altres, la propietat, o la seguretat." -#, elixir-format #: lib/web/templates/api/terms.html.eex:23 +#, elixir-format msgctxt "terms" msgid "Accepting these Terms" msgstr "Acceptar aquestes condicions" -#, elixir-format #: lib/web/templates/api/terms.html.eex:27 +#, elixir-format msgctxt "terms" msgid "Changes to these Terms" msgstr "Canvis an aquestes condicions" -#, elixir-format #: lib/web/templates/api/terms.html.eex:85 +#, elixir-format msgctxt "terms" msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." msgstr "" @@ -498,16 +498,16 @@ msgstr "" "Assumeixes el risc i responsabilitat derivats de l'ús o confiança en " "qualsevol contingut." -#, elixir-format #: lib/web/templates/api/terms.html.eex:60 +#, elixir-format msgctxt "terms" msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" msgstr "" "També et compromets a no fer res del següent en relació amb el Servei o " "altres usuari/es:" -#, elixir-format #: lib/web/templates/api/terms.html.eex:65 +#, elixir-format msgctxt "terms" msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." msgstr "" @@ -515,22 +515,22 @@ msgstr "" "freqüència d'ús, o altres funcions dissenyades per protegir el Servei, " "usuàries del Servei, o d'altri." -#, elixir-format #: lib/web/templates/api/terms.html.eex:64 +#, elixir-format msgctxt "terms" msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" msgstr "" "Recopilar informació personal d'altres usuàries, intimidar, amenaçar, espiar " "o assetjar altres usuàries del Servei;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:55 +#, elixir-format msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "Continguts iŀlegals, que poguessin comportar responsabilitats;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:56 +#, elixir-format msgctxt "terms" msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" msgstr "" @@ -538,48 +538,48 @@ msgstr "" "secret comercial, drets d'autoria, dret a la privacitat, dret de publicitat " "o qualsevol altres drets inteŀlectuals o drets de qualsevol part;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:42 +#, elixir-format msgctxt "terms" msgid "Creating Accounts" msgstr "Creació dels comptes" -#, elixir-format #: lib/web/templates/api/terms.html.eex:89 +#, elixir-format msgctxt "terms" msgid "Entire Agreement" msgstr "Acord complet" -#, elixir-format #: lib/web/templates/api/terms.html.eex:92 +#, elixir-format msgctxt "terms" msgid "Feedback" msgstr "Valoracions" -#, elixir-format #: lib/web/templates/api/terms.html.eex:83 +#, elixir-format msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Enllaços i continguts de tercers" -#, elixir-format #: lib/web/templates/api/terms.html.eex:88 +#, elixir-format msgctxt "terms" msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." msgstr "" "Si incompleixes qualsevol d'aquestes condicions, ens reservem el dret de " "suspendre o desactivar el teu accés al Servei." -#, elixir-format #: lib/web/templates/api/terms.html.eex:63 +#, elixir-format msgctxt "terms" msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" msgstr "" "Suplantar la identitat o publicar en nom d'una persona o entitat, o " "tergiversar la teva afiliació amb una persona o entitat;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:48 +#, elixir-format msgctxt "terms" msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." msgstr "" @@ -587,26 +587,26 @@ msgstr "" "continguts a disposició del públic. Ets responsable del contingut que " "publiques al Servei, incloent-ne la legalitat, fiabilitat i adequació." -#, elixir-format #: lib/web/templates/api/terms.html.eex:39 +#, elixir-format msgctxt "terms" msgid "Privacy Policy" msgstr "Política de privacitat" -#, elixir-format #: lib/web/templates/api/terms.html.eex:95 +#, elixir-format msgctxt "terms" msgid "Questions & Contact Information" msgstr "Preguntes i informació de contacte" -#, elixir-format #: lib/web/templates/api/terms.html.eex:87 +#, elixir-format msgctxt "terms" msgid "Termination" msgstr "Finalització" -#, elixir-format #: lib/web/templates/api/terms.html.eex:62 +#, elixir-format msgctxt "terms" msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" msgstr "" @@ -615,14 +615,14 @@ msgstr "" "plenament del Servei, que pugui malmetre, deshabilitar, sobrecarregar o " "perjudicar el funcionament del Servei;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:47 +#, elixir-format msgctxt "terms" msgid "Your Content & Conduct" msgstr "El teu contingut i conducta" -#, elixir-format #: lib/web/templates/api/terms.html.eex:84 +#, elixir-format msgctxt "terms" msgid "%{instance_name} makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "" @@ -633,8 +633,8 @@ msgstr "" "externs no implica el suport per part de %{instance_name} per al lloc " "destí. L'ús de tals enllaços són responsabilitat de cada persona usuària." -#, elixir-format #: lib/web/templates/api/terms.html.eex:68 +#, elixir-format msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "" @@ -643,16 +643,16 @@ msgstr "" "conducta i normes de moderació. Trencar aquestes normes pot implicar la " "suspensió o retirada del vostre compte." -#, elixir-format #: lib/web/templates/api/terms.html.eex:81 +#, elixir-format msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "" "Vegeu detalls complets sobre el " "software Mobilizon." -#, elixir-format #: lib/web/templates/api/terms.html.eex:18 +#, elixir-format msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "" @@ -662,8 +662,8 @@ msgstr "" "condicions del servei, (\"Condicions del Servei\" o \"Condicions\"). Llegiu-" "les amb atenció." -#, elixir-format #: lib/web/templates/api/terms.html.eex:33 +#, elixir-format msgctxt "terms" msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." msgstr "" @@ -672,8 +672,8 @@ msgstr "" "pàgina. És la vostra responsabilitat comprovar el web regularment per " "assabentar-vos dels canvis de les Condicions." -#, elixir-format #: lib/web/templates/api/terms.html.eex:53 +#, elixir-format msgctxt "terms" msgid "In order to make %{instance_name} a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" msgstr "" @@ -681,16 +681,16 @@ msgstr "" "absteniu-vos de publicar, enllaçar, o fer disponible de qualsevol altra " "manera al Servei o a través d'ell:" -#, elixir-format #: lib/web/templates/api/terms.html.eex:57 +#, elixir-format msgctxt "terms" msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" msgstr "" "Informació privada d'altri (ex.: adreces postals o de correu, números de " "telèfon, números d'identitat o de targetes bancàries, etc.); ni" -#, elixir-format #: lib/web/templates/api/terms.html.eex:52 +#, elixir-format msgctxt "terms" msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." msgstr "" @@ -701,8 +701,8 @@ msgstr "" "qualsevol motiu alguna instància no respecta aquesta petició, no ens en " "podem fer responsables." -#, elixir-format #: lib/web/templates/api/terms.html.eex:90 +#, elixir-format msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "" @@ -710,8 +710,8 @@ msgstr "" "entre entre vós i %{instance_name}, i substitueix qualsevol altre " "acord previ." -#, elixir-format #: lib/web/templates/api/terms.html.eex:80 +#, elixir-format msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "" @@ -721,16 +721,16 @@ msgstr "" "teniu dret i se us anima a usar, consultar, modificar i distribuir-ne el " "codi font." -#, elixir-format #: lib/web/templates/api/terms.html.eex:58 +#, elixir-format msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "" "Virus, dades corrompudes o qualsevol altre tipus de malware o arxius " "destructius o nocius." -#, elixir-format #: lib/web/templates/api/terms.html.eex:51 +#, elixir-format msgctxt "terms" msgid "You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time. Web server access logs might also be stored for some time in the system." msgstr "" @@ -740,30 +740,30 @@ msgstr "" "de correu també son subjectes de ser conservats dins el sistema durant un " "temps." -#, elixir-format #: lib/web/templates/api/terms.html.eex:96 +#, elixir-format msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "" "Podeu dirigir-vos a %{contact} per qualsevol pregunta o comentari sobre el " "Servei" -#, elixir-format #: lib/web/templates/api/terms.html.eex:79 +#, elixir-format msgctxt "terms" msgid "Source code" msgstr "Codi font" -#, elixir-format #: lib/web/templates/api/terms.html.eex:93 +#, elixir-format msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "" "Ens encanten les valoracions i els comentaris. Feu-nos saber què en penseu " "del Servei, aquestes Condicions, i, en general, de %{instance_name}." -#, elixir-format #: lib/web/templates/api/terms.html.eex:74 +#, elixir-format msgctxt "terms" msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." msgstr "" @@ -777,14 +777,14 @@ msgstr "" "condicions, com també altres comportaments no descrits però que siguin " "considerats inapropiats, amenaçadors, ofensius o nocius." -#, elixir-format #: lib/web/templates/api/terms.html.eex:6 +#, elixir-format msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "%{instance_name} no fa profit de les vostres dades personals" -#, elixir-format #: lib/web/templates/api/terms.html.eex:44 +#, elixir-format msgctxt "terms" msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact its contributors directly." msgstr "" @@ -793,16 +793,16 @@ msgstr "" "i no de la instància, contacteu-ne la comunitat de contribuïdores directament." -#, elixir-format #: lib/web/templates/api/terms.html.eex:77 +#, elixir-format msgctxt "terms" msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." msgstr "" "Les persones administradores de la instància han d'assegurar-se que les " "comunitats allotjades són moderades segons les normes definides." -#, elixir-format #: lib/web/templates/api/terms.html.eex:98 +#, elixir-format msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "" @@ -811,8 +811,8 @@ msgstr "" "appdotnet/terms-of-service\">les de App.net llicenciades també amb CC BY-SA." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:119 +#, elixir-format msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "" @@ -821,22 +821,22 @@ msgstr "" "discourse/discourse\">les de Discourse, llicenciades també amb CC BY-SA." -#, elixir-format #: lib/web/templates/api/terms.html.eex:3 +#, elixir-format msgctxt "terms" msgid "Short version" msgstr "Versió curta" -#, elixir-format #: lib/web/templates/api/terms.html.eex:9 +#, elixir-format msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "" "El servei s'ofereix sense garanties i les condicions poden canviar en el " "futur" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:118 +#, elixir-format msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "" @@ -844,8 +844,8 @@ msgstr "" "licenses/by-sa/4.0/\">CC BY-SA. Va ser actualitzat per darrer cop del 18 " "de juny de 2020." -#, elixir-format #: lib/web/templates/api/terms.html.eex:97 +#, elixir-format msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "" @@ -853,82 +853,82 @@ msgstr "" "licenses/by-sa/4.0/\">CC BY-SA. Va ser actualitzat per darrer cop del 22 " "de juny de 2020." -#, elixir-format #: lib/web/templates/api/terms.html.eex:8 +#, elixir-format msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "" "Quan useu el servei heu de respectar les altres persones i les normes de " "%{instance_name}" -#, elixir-format #: lib/web/templates/api/terms.html.eex:7 +#, elixir-format msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "Quan feu servir %{instance_name} heu de respectar la llei" -#, elixir-format #: lib/web/templates/api/terms.html.eex:5 +#, elixir-format msgctxt "terms" msgid "Your content is yours" msgstr "El teu contingut et pertany" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 +#, elixir-format msgid "Confirm my e-mail address" msgstr "Confirma la meva adreça de correu" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 +#, elixir-format msgid "Confirm your e-mail" msgstr "Confirma l'adreça de correu" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 +#, elixir-format msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "Hola! Acabes d'apuntar-te a aquesta activitat: « %{title} ». Si us plau, " "confirma l'adreça de correu que has introduït:" -#, elixir-format #: lib/web/templates/email/email.html.eex:114 #: lib/web/templates/email/email.text.eex:8 +#, elixir-format msgid "Need help? Is something not working as expected?" msgstr "Necessites ajuda? Alguna cosa no funciona?" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:38 +#, elixir-format msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "" "Has creat un compte a %{host} amb aquest mail. Estàs a un clic d'activar-lo." -#, elixir-format #: lib/web/templates/email/report.html.eex:13 +#, elixir-format msgid "New report on %{instance}" msgstr "Nova denúncia a %{instance}" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:38 +#, elixir-format msgid "The email address for your account on %{host} is being changed to:" msgstr "L'adreça de correu pel teu compte a %{host} s'està canviant a:" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:38 +#, elixir-format msgid "You requested a new password for your account on %{instance}." msgstr "Algú ha soŀlicitat a %{instance} una contrasenya nova." -#, elixir-format #: lib/web/templates/email/email.text.eex:5 +#, elixir-format msgid "Please do not use it for real purposes." msgstr "No ho facis servir més que proves, sisplau" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 #: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 +#, elixir-format msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -938,9 +938,9 @@ msgstr[1] "" "Si has de canceŀlar la teva participació, accedeix a l'activitat per " "l'enllaç de dalt i clica al botó de participació." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:38 #: lib/web/templates/email/pending_participation_notification.text.eex:4 +#, elixir-format msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "Tens una soŀlicitud de participació pendent de resoldre:" @@ -948,67 +948,67 @@ msgstr[1] "" "Tens %{number_participation_requests} soŀlicituds de participació pendents " "de resoldre:" -#, elixir-format #: lib/web/templates/email/email.text.eex:11 +#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} és un servidor de Mobilizon." -#, elixir-format #: lib/web/templates/email/email.html.eex:142 +#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} és un servidor de Mobilizon." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 +#, elixir-format msgid "A request is pending!" msgstr "Una soŀlicitud pendent!" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 +#, elixir-format msgid "An event is upcoming!" msgstr "S'apropa una activitat!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 +#, elixir-format msgid "Confirm new email" msgstr "Confirma la nova adreça" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:84 +#, elixir-format msgid "End" msgstr "Final" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:21 +#, elixir-format msgid "End %{ends_on}" msgstr "Final %{ends_on}" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:13 #: lib/web/templates/email/event_updated.text.eex:1 +#, elixir-format msgid "Event update!" msgstr "S'ha actualitzat l'activitat!" -#, elixir-format #: lib/web/templates/email/report.html.eex:88 +#, elixir-format msgid "Flagged comments" msgstr "Comentaris denunciats" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 +#, elixir-format msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "" "Bones notícies: alguna de les organitzadores de l'activitat t'ha aprovat la " "soŀlicitud de participar-hi. Ja t'ho pots apuntar a l'agenda, estàs a la " "llista d'assistents!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:38 #: lib/web/templates/email/email_changed_new.text.eex:3 +#, elixir-format msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "Ei hola! Sembla que vols canviar l'adreça de correu vinculada al teu compte " @@ -1016,16 +1016,16 @@ msgstr "" "el canvi. Un cop fet, podràs iniciar sessió a %{instance} amb aquesta nova " "adreça." -#, elixir-format #: lib/web/templates/email/email_changed_old.text.eex:3 +#, elixir-format msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" msgstr "" "Ep! Només confirmar que ha canviat el correu vinculat al teu compte a %{host}" ". Ara és:" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:41 #: lib/web/templates/email/email_changed_old.html.eex:65 lib/web/templates/email/email_changed_old.text.eex:5 +#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "" "Si no has fet aquest canvi tu mateix/a, és possible que algú hagi aconseguit " @@ -1033,552 +1033,571 @@ msgstr "" "contrasenya de seguida. Si no pots entrar, contacta amb les admins de " "%{host}." -#, elixir-format #: lib/web/templates/email/password_reset.text.eex:12 +#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." msgstr "" "Si no has fet aquest canvi, pots ignorar aquest missatge. La teva " "contrasenya es mantindrà si no cliques l'enllaç de sobre." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 +#, elixir-format msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Si no has demanat això, sisplau ignora aquest correu." -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 +#, elixir-format msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "" "Si has de canceŀlar la teva participació, accedeix a l'activitat per " "l'enllaç de dalt i clica al botó de participació." -#, elixir-format #: lib/web/templates/email/email.html.eex:143 #: lib/web/templates/email/email.text.eex:11 +#, elixir-format msgid "Learn more about Mobilizon here!" msgstr "Per aprendre més de Mobilizon." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:94 +#, elixir-format msgid "Location" msgstr "Ubicació" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:104 +#, elixir-format msgid "Location address was removed" msgstr "L'adreça postal ha estat esborrada" -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:51 #: lib/web/templates/email/pending_participation_notification.text.eex:6 +#, elixir-format msgid "Manage pending requests" msgstr "Gestiona les soŀlicituds pendents" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 +#, elixir-format msgid "Nearly there!" msgstr "Hi ets a prop!" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 +#, elixir-format msgid "New email confirmation" msgstr "Nova confirmació de correu" -#, elixir-format #: lib/web/templates/email/report.html.eex:106 +#, elixir-format msgid "Reasons for report" msgstr "Motius de l'informe" -#, elixir-format #: lib/web/templates/email/report.html.eex:39 +#, elixir-format msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "Algú a %{instance} ha denunciat el contingut següent." -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 +#, elixir-format msgid "Sorry! You're not going." msgstr "Ho sentim! No hi podràs anar." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:74 +#, elixir-format msgid "Start" msgstr "Inici" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:18 +#, elixir-format msgid "Start %{begins_on}" msgstr "Inici %{starts_on}" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:3 +#, elixir-format msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Hi ha hagut canvis a %{title} i et volíem avisar." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:55 #: lib/web/templates/email/event_updated.text.eex:11 +#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Les organitzadores d'aquesta activitat l'han canceŀlada. Ho sentim!" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:51 #: lib/web/templates/email/event_updated.text.eex:7 +#, elixir-format msgid "This event has been confirmed" msgstr "S'ha confirmat l'activitat" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:53 #: lib/web/templates/email/event_updated.text.eex:9 +#, elixir-format msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "" "Aquesta activitat encara no està confirmada: l'organització t'ho farà saber " "si la confirmen." -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 +#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "Malauradament, les organitzadores han rebutjat la teva participació." -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:51 +#, elixir-format msgid "Verify your email address" msgstr "Verifica l'adreça de correu" -#, elixir-format #: lib/web/templates/email/report.html.eex:126 +#, elixir-format msgid "View report" msgstr "Mostra la denúncia" -#, elixir-format #: lib/web/templates/email/report.text.eex:24 +#, elixir-format msgid "View report:" msgstr "Mostra la denúncia" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:58 #: lib/web/templates/email/event_participation_confirmed.html.eex:58 +#, elixir-format msgid "Visit event page" msgstr "Vés a la pàgina d'activitat" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:121 +#, elixir-format msgid "Visit the updated event page" msgstr "Vés a la pàgina d'activitat actualitzada" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:23 +#, elixir-format msgid "Visit the updated event page: %{link}" msgstr "Vés a l'activitat actualitzada a %{link}" -#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 +#, elixir-format msgid "What's up this week?" msgstr "Què hi ha aquesta setmana?" -#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 +#, elixir-format msgid "What's up today?" msgstr "Què fan avui?" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 +#, elixir-format msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" "Si desitges actualitzar o canceŀlar la teva assistència , entra a la pàgina " "de l'activitat amb l'enllaç d'amunt i clica al botó de participació." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:64 #: lib/web/templates/email/pending_participation_notification.text.eex:8 +#, elixir-format msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" +"Has rebut aquest correu perquè tens configurat de rebre notificacions per a " +"les soŀlicituds de participació a les activitats que organitzes. Pots " +"deshabilitar o canviar la configuració de les notificacions en les opcions " +"del compte, a l'apartat «Notificacions»." -#, elixir-format #: lib/web/templates/email/event_participation_rejected.text.eex:5 -msgid "You issued a request to attend %{title}." -msgstr "" - #, elixir-format +msgid "You issued a request to attend %{title}." +msgstr "Has soŀlicitat participar a %{title}." + #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 +#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Has soŀlicitat participar a l'activitat %{title}." -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:13 #: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#, elixir-format msgid "You're going!" msgstr "T'han acceptat!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 +#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message." -msgstr "" +msgstr "Si no has fet tu aquest canvi, pots ignorar aquest missatge." -#, elixir-format #: lib/web/templates/email/email.html.eex:89 -msgid "Please do not use it for real purposes." -msgstr "No ho facis servir més que proves, sisplau" - #, elixir-format +msgid "Please do not use it for real purposes." +msgstr "No ho facis servir més que proves, sisplau." + #: lib/web/templates/email/group_member_removal.html.eex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 +#, elixir-format msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "" +"Si creus que es tracta d'un error, pots contactar l'equip d'administració " +"del grup per tal que et tornin a afegir." -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 +#, elixir-format msgid "So long, and thanks for the fish!" -msgstr "" +msgstr "Salut i canya al forçut!" -#, elixir-format #: lib/web/email/group.ex:63 -msgid "You have been removed from group %{group}" -msgstr "" - #, elixir-format +msgid "You have been removed from group %{group}" +msgstr "T'han tret del grup %{group}" + #: lib/web/templates/email/group_member_removal.text.eex:3 +#, elixir-format msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." msgstr "" +"T'han esborrat del grup %{group}. Ja no pots accedir al seu contingut privat." -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:38 +#, elixir-format msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "" +"%{inviter} t'acaba de convidar de ficar-te al seu grup " +"%{link_start}%{group}%{link_end}" -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:38 +#, elixir-format msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "" +"T'han esborrat del grup %{link_start}%{group}%{link_end}. Ja no pots " +"accedir al seu contingut privat." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:54 #: lib/web/templates/email/group_suspension.text.eex:7 +#, elixir-format msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "" +"Com que aquest grup estava ubicat en una altra instància, només queda suspès " +"en aquesta." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:46 #: lib/web/templates/email/group_suspension.text.eex:5 +#, elixir-format msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "" +"Com que aquest grup estava ubicat en aquesta instància, totes les seves " +"dades han estat esborrades irreversiblement." -#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:38 #: lib/web/templates/email/group_deletion.text.eex:3 +#, elixir-format msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "" +"L'administrador/a %{author} ha esborrat el grup %{group}, i amb ell, totes " +"les seves activitats, discussions, publicacions i tasques." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:13 #: lib/web/templates/email/group_suspension.text.eex:1 -msgid "The group %{group} has been suspended on %{instance}!" -msgstr "" - #, elixir-format +msgid "The group %{group} has been suspended on %{instance}!" +msgstr "El grup %{group} ha estat suspès a %{instance}!" + #: lib/web/templates/email/group_deletion.html.eex:13 #: lib/web/templates/email/group_deletion.text.eex:1 -msgid "The group %{group} was deleted on %{instance}!" -msgstr "" - #, elixir-format +msgid "The group %{group} was deleted on %{instance}!" +msgstr "El grup %{group} ha estat esborrat a %{instance}!" + #: lib/web/templates/email/group_suspension.html.eex:38 #: lib/web/templates/email/group_suspension.text.eex:3 +#, elixir-format msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" +"L'equip de moderació de la teva instància ha decidit suspendre el grup " +"%{group_name} (%{group_address}). Ja no formes part del grup." -#, elixir-format #: lib/web/email/group.ex:136 +#, elixir-format msgid "The group %{group} has been deleted on %{instance}" -msgstr "" +msgstr "El grup %{group} ha estat esborrat a %{instance}" -#, elixir-format #: lib/web/email/group.ex:97 -msgid "The group %{group} has been suspended on %{instance}" -msgstr "" - #, elixir-format +msgid "The group %{group} has been suspended on %{instance}" +msgstr "El grup %{group} ha estat suspès a %{instance}" + #: lib/web/templates/api/terms.html.eex:24 +#, elixir-format msgctxt "terms" msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." msgstr "" -#, elixir-format #: lib/web/templates/api/terms.html.eex:40 +#, elixir-format msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "" -#, elixir-format #: lib/web/templates/api/terms.html.eex:36 +#, elixir-format msgctxt "terms" msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." msgstr "" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:78 +#, elixir-format msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:80 +#, elixir-format msgctxt "terms" msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." msgstr "" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:87 +#, elixir-format msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "" -#, elixir-format #: lib/web/templates/api/terms.html.eex:71 +#, elixir-format msgctxt "terms" msgid "Our responsibility" msgstr "" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:61 +#, elixir-format msgctxt "terms" msgid "Retain server logs containing the IP address of all requests to this server, insofar as such logs are kept, no more than 90 days." msgstr "" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 +#, elixir-format msgctxt "terms" msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary to help you understand them better." msgstr "" -#, elixir-format #: lib/web/templates/api/terms.html.eex:45 +#, elixir-format msgctxt "terms" msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." msgstr "" -#, elixir-format #: lib/web/templates/api/terms.html.eex:50 +#, elixir-format msgctxt "terms" msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." msgstr "" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:10 +#, elixir-format msgctxt "terms" msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter an email address, a password (hashed) and at least an username. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" -#, elixir-format #: lib/web/templates/api/terms.html.eex:30 +#, elixir-format msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#, elixir-format #: lib/web/templates/api/terms.html.eex:20 +#, elixir-format msgctxt "terms" msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by Framasoft, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the \"About this instance\" page." msgstr "" -#, elixir-format #: lib/web/templates/api/terms.html.eex:43 +#, elixir-format msgctxt "terms" msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to %{instance_name}." msgstr "" -#, elixir-format #: lib/web/templates/api/terms.html.eex:49 +#, elixir-format msgctxt "terms" msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." msgstr "" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:19 +#, elixir-format msgctxt "terms" msgid "Your events and comments are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." msgstr "" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:99 +#, elixir-format msgctxt "terms" msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." msgstr "" -#, elixir-format #: lib/web/templates/email/event_participation_confirmed.text.eex:4 +#, elixir-format msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:38 #: lib/web/templates/email/event_participation_confirmed.html.eex:38 +#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Has soŀlicitat participar a l'activitat %{title}." -#, elixir-format #: lib/web/email/participation.ex:91 +#, elixir-format msgid "Your participation to event %{title} has been confirmed" msgstr "T'han aprovat la participació a %{title}" -#, elixir-format #: lib/web/templates/email/report.html.eex:41 +#, elixir-format msgid "%{reporter} reported the following content." msgstr "%{reporter_name} (%{reporter_username}) ha denunciat aquest contingut." -#, elixir-format #: lib/web/templates/email/report.text.eex:5 +#, elixir-format msgid "Group %{group} was reported" msgstr "" -#, elixir-format #: lib/web/templates/email/report.html.eex:51 +#, elixir-format msgid "Group reported" msgstr "" -#, elixir-format #: lib/web/templates/email/report.text.eex:7 +#, elixir-format msgid "Profile %{profile} was reported" msgstr "" -#, elixir-format #: lib/web/templates/email/report.html.eex:56 +#, elixir-format msgid "Profile reported" msgstr "" -#, elixir-format #: lib/web/templates/email/event_participation_confirmed.html.eex:45 +#, elixir-format msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" -#, elixir-format #: lib/mobilizon/posts/post.ex:94 +#, elixir-format msgid "A text is required for the post" msgstr "" -#, elixir-format #: lib/mobilizon/posts/post.ex:93 +#, elixir-format msgid "A title is required for the post" msgstr "" -#, elixir-format #: lib/web/templates/email/instance_follow.text.eex:3 +#, elixir-format msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "" -#, elixir-format #: lib/web/email/follow.ex:54 +#, elixir-format msgid "%{name} requests to follow your instance" msgstr "" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:38 +#, elixir-format msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "" -#, elixir-format #: lib/web/templates/email/instance_follow.text.eex:4 +#, elixir-format msgid "If you accept, this instance will receive all of your public events." msgstr "" -#, elixir-format #: lib/web/email/follow.ex:48 +#, elixir-format msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:66 +#, elixir-format msgid "See the federation settings" msgstr "" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:52 #: lib/web/templates/email/instance_follow.text.eex:6 +#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:13 #: lib/web/templates/email/instance_follow.text.eex:1 +#, elixir-format msgid "Want to connect?" msgstr "" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:45 #: lib/web/templates/email/instance_follow.text.eex:5 +#, elixir-format msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 +#, elixir-format msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:38 +#, elixir-format msgid "You issued a request to attend %{title}." msgstr "" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:64 +#, elixir-format msgid "Event title" msgstr "Activitat" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:38 +#, elixir-format msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "" -#, elixir-format #: lib/web/templates/error/500_page.html.eex:46 +#, elixir-format msgid "The Mobilizon server seems to be temporarily down." msgstr "" -#, elixir-format #: lib/web/templates/error/500_page.html.eex:7 +#, elixir-format msgid "This page is not correct" msgstr "" -#, elixir-format #: lib/web/templates/error/500_page.html.eex:45 +#, elixir-format msgid "We're sorry, but something went wrong on our end." msgstr "" -#, elixir-format #: lib/web/templates/email/email.html.eex:88 #: lib/web/templates/email/email.text.eex:4 +#, elixir-format msgid "This is a demonstration site to test Mobilizon." msgstr "Aquesta és una web de proves per provar la beta de Mobilizon." -#, elixir-format #: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 +#, elixir-format msgid "%{name}'s feed" msgstr "" -#, elixir-format #: lib/service/export/feed.ex:77 +#, elixir-format msgid "%{actor}'s private events feed on %{instance}" msgstr "" -#, elixir-format #: lib/service/export/feed.ex:72 +#, elixir-format msgid "%{actor}'s public events feed on %{instance}" msgstr "" -#, elixir-format #: lib/service/export/feed.ex:203 +#, elixir-format msgid "Feed for %{email} on %{instance}" msgstr "" From c2d5e76bfa64329253d870e0dca74cab8a24f116 Mon Sep 17 00:00:00 2001 From: Kristijan Tkalec Date: Thu, 21 Jan 2021 19:53:44 +0000 Subject: [PATCH 083/114] Translated using Weblate (Slovenian) Currently translated at 51.0% (424 of 831 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sl/ --- js/src/i18n/sl.json | 182 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 181 insertions(+), 1 deletion(-) diff --git a/js/src/i18n/sl.json b/js/src/i18n/sl.json index d47d55ea0..b22a29034 100644 --- a/js/src/i18n/sl.json +++ b/js/src/i18n/sl.json @@ -1,13 +1,18 @@ { + "@{group}": "@{group}", + "@{username} ({role})": "@{username} ({role})", "A user-friendly, emancipatory and ethical tool for gathering, organising, and mobilising.": "Uporabniku prijazno, emancipatorno in etično orodje za zbiranje, organiziranje in mobilizacijo.", "A validation email was sent to {email}": "E-pošta za potrditev je bla poslana na {email}", "Abandon editing": "Opusti urejanje", "About Mobilizon": "O Mobilizon-u", "About this event": "O tem dogodku", "About this instance": "O tem vozlišču", + "Accept": "Sprejmi", "Accepted": "Sprejet", "Account": "Račun", + "Actor": "Igralec", "Add": "Dodaj", + "Add a group": "Dodaj supino", "Add a note": "Dodaj opombo", "Add an address": "Dodaj naslov", "Add an instance": "Dodaj vozlišče", @@ -29,6 +34,7 @@ "Are you sure you want to cancel the event edition? You'll lose all modifications.": "", "Are you sure you want to cancel your participation at event \"{title}\"?": "Ali ste prepričani, da želite preklicati udeležbo na dogodku \"{title}\"?", "Are you sure you want to delete this event? This action cannot be reverted.": "Ali ste prepričani, da želite izbrisati ta dogodek? Tega dejanja ni mogoče razveljaviti.", + "Assigned to": "Dodeljeno", "Avatar": "Podoba", "Back to previous page": "Nazaj na prejšnjo stran", "Before you can login, you need to click on the link inside it to validate your account.": "Preden se lahko prijavite, morate klikniti na povezavo znotraj njega, da potrdite svoj račun.", @@ -56,6 +62,7 @@ "Confirm my participation": "Potrdi mojo udeležbo", "Confirm my particpation": "Potrdi mojo udeležbo", "Confirmed: Will happen": "Potrjeno: Zgodilo se bo", + "Contact": "Kontakt", "Continue editing": "Nadaljuj z urejanjem", "Country": "Država", "Create": "Ustvari", @@ -74,8 +81,10 @@ "Custom text": "Besedilo po meri", "Dashboard": "Nadzorna plošča", "Date": "Datum", + "Date and time": "Datum in čas", "Date and time settings": "Nastavitve datuma in ure", "Date parameters": "Parametri datuma", + "Decline": "Zavrni", "Default": "Privzeto", "Delete": "Izbriši", "Delete Comment": "Izbriši komentar", @@ -93,11 +102,13 @@ "Deleting my account will delete all of my identities.": "Če izbrišete račun, se izbrišejo vse moje identitete.", "Deleting your Mobilizon account": "Brisanje računa Mobilizon", "Description": "Opis", + "Discussions": "Razprave", "Display name": "Prikazno ime", "Display participation price": "Prikaži ceno udeležbe", "Domain": "Domena", "Draft": "Osnutek", "Drafts": "Osnutki", + "Due on": "Do", "Edit": "Uredi", "Eg: Stockholm, Dance, Chess…": "Npr.: Stockholm, ples, šah …", "Either on the {instance} instance or on another instance.": "Ali na vozlišču {instance}, ali na drugem.", @@ -172,6 +183,7 @@ "License": "Licenca", "Limited number of places": "Omejeno število mest", "Load more": "Naloži več", + "Location": "Lokacija", "Log in": "Vpiši se", "Log out": "Odjava", "Login": "Prijava", @@ -184,8 +196,10 @@ "Mobilizon is a federated network. You can interact with this event from a different server.": "Mobilizon je združeno omrežje. S tem dogodkom lahko komunicirate z drugega strežnika.", "Moderated comments (shown after approval)": "Moderirani komentarji (prikazani po odobritvi)", "Moderation log": "Dnevnik moderiranja", + "Move": "Premakni", "My account": "Moj račun", "My events": "Moji dogodki", + "My groups": "Moje skupine", "My identities": "Moje identitete", "Name": "Ime", "New email": "Nov e-poštni naslov", @@ -227,8 +241,11 @@ "Organized": "Organizirano", "Organized by {name}": "Organizira {name}", "Organizer": "Organizator", + "Organizers": "Organizatorji", "Other software may also support this.": "To lahko podpira tudi druga programska oprema.", + "Otherwise this identity will just be removed from the group administrators.": "V nasprotnem primeru bo ta identiteta odstranjena samo iz skupine skrbnikov.", "Page": "Stran", + "Page limited to my group (asks for auth)": "Stran je omejena na mojo skupino (prosi za avtorizacijo)", "Participant": "Udeleženec", "Participants": "Udeleženci", "Participate": "Udeleži se", @@ -241,8 +258,13 @@ "Password reset": "Ponastavitev gesla", "Past events": "Pretekli dogodki", "Pending": "Na čakanju", + "Pick a group": "Izberi skupino", "Pick an identity": "Izberi si identiteto", + "Please check your spam folder if you didn't receive the email.": "Če niste prejeli e-pošte, preverite mapo z vsiljeno pošto.", + "Please contact this instance's Mobilizon admin if you think this is a mistake.": "Če menite, da gre za napako, se obrnite na skrbnika tega Mobilizon vozlišča.", "Please do not use it in any real way.": "Prosim, ne uporabljajte ga na noben resen način.", + "Please enter your password to confirm this action.": "Vnesite svoje geslo, da potrdite to dejanje.", + "Please make sure the address is correct and that the page hasn't been moved.": "Prepričajte se, da je naslov pravilen in da stran ni bila premaknjena.", "Post a comment": "Objavi komentar", "Post a reply": "Objavi odgovor", "Postal Code": "Poštna številka", @@ -250,5 +272,163 @@ "Previous page": "Prejšnja stran", "Privacy Policy": "Pravilnik o zasebnosti", "Private event": "Zasebni dogodek", - "Profiles": "Profili" + "Private feeds": "Zasebni viri", + "Profiles": "Profili", + "Public RSS/Atom Feed": "Javni vir RSS/Atom", + "Public comment moderation": "Moderiranje javnih komentarjev", + "Public event": "Javni dogodek", + "Public feeds": "Javni viri", + "Public iCal Feed": "Javni vir iCal", + "Public page": "Javna stran", + "Publish": "Objavi", + "Published events with {comments} comments and {participations} confirmed participations": "Objavljeni dogodki s {comments} komentarji in {participations} potrjenimi udeležbami", + "RSS/Atom Feed": "Vir RSS/Atom", + "Region": "Regija", + "Registration is allowed, anyone can register.": "Registracija je dovoljena, prijavi se lahko vsak.", + "Registration is closed.": "Registracija je zaprta.", + "Registration is currently closed.": "Registracija je trenutno zaprta.", + "Rejected": "Zavrnjeno", + "Rename": "Preimenuj", + "Reopen": "Ponovno odprto", + "Reply": "Odgovori", + "Report": "Prijavi", + "Report this comment": "Prijavi ta komentar", + "Report this event": "Prijavi ta dogodek", + "Reported": "Prijavljeno", + "Reported by": "Prijavil", + "Reported by someone on {domain}": "Prijavil nekdo na {domain}", + "Reported by {reporter}": "Prijavil {reporter}", + "Reported identity": "Prijavljena identiteta", + "Reports": "Prijave", + "Reset my password": "Ponastavi geslo", + "Resolved": "Razrešeno", + "Resource provided is not an URL": "Navedeni vir ni URL", + "Resources": "Viri", + "Role": "Vloga", + "Save": "Shrani", + "Save draft": "Shrani osnutek", + "Search": "Poišči", + "Search events, groups, etc.": "Poišči dogodke, skupine itd.", + "Searching…": "Iskanje…", + "Send email": "Pošlji e-pošto", + "Send the report": "Pošlji prijavo", + "Set an URL to a page with your own terms.": "Nastavi URL na stran s svojimi pogoji.", + "Settings": "Nastavitve", + "Share this event": "Daj dogodek v skupno rabo", + "Show map": "Pokaži zemljevid", + "Show remaining number of places": "Prikaži preostalo število mest", + "Show the time when the event begins": "Prikaži uro, ko se dogodek začne", + "Show the time when the event ends": "Prikaži uro, ko se dogodek konča", + "Sign up": "Vpis", + "Starts on…": "Začne se…", + "Status": "Stanje", + "Street": "Ulica", + "Tentative: Will be confirmed later": "Okvirno: kasneje bo potrjeno", + "Terms": "Pogoji", + "Text": "Tekst", + "The account's email address was changed. Check your emails to verify it.": "E-poštni naslov računa je bil spremenjen. Poglejte e-pošto, da preverite naslov.", + "The actual number of participants may differ, as this event is hosted on another instance.": "Dejansko število udeležencev se lahko razlikuje, saj ta dogodek gosti drugo vozlišče.", + "The content came from another server. Transfer an anonymous copy of the report?": "Vsebina je prišla z drugega strežnika. Želite prenesti anonimno kopijo poročila?", + "The draft event has been updated": "Osnutek dogodka je posodobljen", + "The event has been created as a draft": "Dogodek je ustvarjen kot osnutek", + "The event has been published": "Dogodek je objavljen", + "The event has been updated": "Dogodek je posodobljen", + "The event has been updated and published": "Dogodek je posodobljen in objavljen", + "The event organiser has chosen to validate manually participations. Do you want to add a little note to explain why you want to participate to this event?": "Organizator dogodka se je odločil, da ročno potrdi udeležbe. Ali želite dodati kratko opombo, da razložite, zakaj želite sodelovati na tem dogodku?", + "The event organizer didn't add any description.": "Organizator dogodka ni dodal nobenega opisa.", + "The event organizer manually approves participations. Since you've chosen to participate without an account, please explain why you want to participate to this event.": "Organizator dogodka ročno odobri udeležbe. Ker ste se odločili za udeležbo brez računa, pojasnite, zakaj želite sodelovati na tem dogodku.", + "The event title will be ellipsed.": "Naslov dogodka bo zatemnjen.", + "The event will show the group as organizer.": "Na dogodku bo skupina prikazana kot organizator.", + "The page you're looking for doesn't exist.": "Stran, ki jo iščete, ne obstaja.", + "The password was successfully changed": "Geslo je bilo uspešno spremenjeno", + "The report will be sent to the moderators of your instance. You can explain why you report this content below.": "Poročilo bo poslano moderatorjem vašega vozlišča. Spodaj lahko razložite, zakaj prijavljate to vsebino.", + "The {default_terms} will be used. They will be translated in the user's language.": "Uporabljeni bodo {default_terms}. Prevedeni bodo v uporabnikov jezik.", + "There are {participants} participants.": "Sodeluje {participants} udeležencev.", + "There will be no way to recover your data.": "Vaših podatkov ne bo mogoče obnoviti.", + "These events may interest you": "Ti dogodki vas lahko zanimajo", + "This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "To Mobilizon vozlišče in organizator dogodkov omogočata anonimne udeležbe, vendar zahtevata potrditev po e-pošti.", + "This information is saved only on your computer. Click for details": "Ti podatki so shranjeni samo na vašem računalniku. Kliknite za podrobnosti", + "This instance isn't opened to registrations, but you can register on other instances.": "To vozlišče ni odprto za registracije, lahko pa se registrirate na drugih vozliščih.", + "This is a demonstration site to test Mobilizon.": "To je demonstracijska stran za preizkušanje Mobilizona.", + "This will delete / anonymize all content (events, comments, messages, participations…) created from this identity.": "S tem boste izbrisali / anonimizirali vso vsebino (dogodke, komentarje, sporočila, udeležbe ...), ustvarjeno iz te identitete.", + "Title": "Naslov", + "To confirm, type your event title \"{eventTitle}\"": "Za potrditev vnesite naslov dogodka \"{eventTitle}\"", + "To confirm, type your identity username \"{preferredUsername}\"": "Za potrditev vnesite svoje uporabniško ime \"{preferredUsername}\"", + "Transfer to {outsideDomain}": "Prenesi na {outsideDomain}", + "Type": "Tip", + "URL": "URL", + "Unfortunately, this instance isn't opened to registrations": "Na žalost tao vozlišče ni odprto za registracije", + "Unfortunately, your participation request was rejected by the organizers.": "Na žalost so organizatorji zavrnili vašo prošnjo za udeležbo.", + "Unknown": "Neznano", + "Unknown actor": "Neznani udeleženec", + "Unknown error.": "Neznana napaka.", + "Unsaved changes": "Neshranjene spremembe", + "Unset group": "Ponastavi skupino", + "Upcoming": "Prihajajoči", + "Upcoming events": "Prihajajoči dogodki", + "Update event {name}": "Posodobi dogodek {name}", + "Update my event": "Posodobi moj dogodek", + "Updated": "Posodobljeno", + "Use my location": "Uporabi mojo lokacijo", + "Username": "Uporabniško ime", + "Users": "Uporabniki", + "View a reply": "|Pokaži en odgovor|Pokaži {totalReplies} odgovorov", + "View event page": "Pokaži stran dogodka", + "View everything": "Pokaži vse", + "View page on {hostname} (in a new window)": "Pokaži stran na {hostname} (v novem oknu)", + "Visible everywhere on the web (public)": "Vidno povsod v spletu (javno)", + "Waiting for organization team approval.": "Čakanje na odobritev organizacijske ekipe.", + "Warning": "Opozorilo", + "We just sent an email to {email}": "Pravkar smo poslali e-pošto na naslov {email}", + "We will redirect you to your instance in order to interact with this event": "Za interakcijo s tem dogodkom vas bomo preusmerili na vaše vozlišče", + "Website": "Spletna stran", + "Website / URL": "URL spletne strani", + "Welcome back {username}!": "Dobrodošli nazaj {username}!", + "Welcome back!": "Dobrodošli nazaj!", + "Welcome to Mobilizon, {username}!": "Dobrodošli na Mobilizonu, {username}!", + "Who can view this event and participate": "Kdo si lahko ogleda ta dogodek in se ga udeleži", + "Write something…": "Napišite nekaj …", + "You are participating in this event anonymously": "Tega dogodka se udeležujete anonimno", + "You are participating in this event anonymously but didn't confirm participation": "Tega dogodka se udeležujete anonimno, vendar niste potrdili udeležbe", + "You can add tags by hitting the Enter key or by adding a comma": "Oznake lahko dodate tako, da pritisnete tipko Enter ali z vejico", + "You can try another search term or drag and drop the marker on the map": "Lahko poskusite z drugim iskalnim izrazom ali povlečete in spustite oznako na zemljevidu", + "You don't follow any instances yet.": "Še nobenega vozlišča ne spremljate.", + "You have been disconnected": "Oklopljeni ste", + "You have cancelled your participation": "Odpovedali ste udeležbo", + "You have one event in {days} days.": "V {days} dneh nimate dogodkov | V {days} dneh imate en dogodek | V {days} dneh imate {count} dogodkov", + "You have one event today.": "Danes nimate dogodkov | Danes imate en dogodek | Danes imate {count} dogodkov", + "You have one event tomorrow.": "Jutri nimate dogodkov | Jutri imate en dogodek | Jutri imate {count} dogodkov", + "You need to create the group before you create an event.": "Preden ustvarite dogodek, morate ustvariti skupino.", + "You need to login.": "Morate se prijaviti.", + "You will be redirected to the original instance": "Preusmerjeni boste na prvotno vozlišče", + "You wish to participate to the following event": "Želite se udeležiti naslednjega dogodka", + "You'll receive a confirmation email.": "Prejeli boste potrditveno e-pošto.", + "Your account has been successfully deleted": "Vaš račun je uspešno izbrisan", + "Your account has been validated": "Vaš račun je potrjen", + "Your account is being validated": "Vaš račun je v procesu potrjevanja", + "Your account is nearly ready, {username}": "Vaš račun je skoraj pripravljen, {username}", + "Your current email is {email}. You use it to log in.": "Vaš trenutni e-poštni naslov je {email}. Uporabljate ga za prijavo.", + "Your email has been changed": "Vaš e-poštni naslov je bil spremenjen", + "Your email is being changed": "Vaš e-poštni naslov je bil spremenjen", + "Your email will only be used to confirm that you're a real person and send you eventual updates for this event. It will NOT be transmitted to other instances or to the event organizer.": "Vaš e-poštni naslov bo uporabljen samo za potrditev, da ste resnična oseba, in za morebitne posodobitve za ta dogodek. NE bo posredovan drugim vozliščem ali organizatorju dogodka.", + "Your federated identity": "Vaša zvezna identiteta", + "Your participation has been confirmed": "Vaša udeležba je potrjena", + "Your participation has been rejected": "Vaša udeležba je bila zavrnjena", + "Your participation has been requested": "Zahtevana je vaša udeležba", + "Your participation request has been validated": "Vaša udeležba je potrjena", + "Your participation request is being validated": "Vaša udeležba je v procesu potrjevanja", + "Your participation status has been changed": "Vaše stanje udeležbe je bilo spremenjeno", + "[This comment has been deleted]": "[Ta komentar je bil izbrisan]", + "[deleted]": "[izbrisano]", + "as {identity}": "kot {identity}", + "default Mobilizon terms": "privzeti pogoji Mobilizona", + "e.g. 10 Rue Jangot": "npr. Kersnikova ulica 4", + "iCal Feed": "vir iCal", + "profile@instance": "profil@vozlišče", + "with another identity…": "z drugo identiteto…", + "{approved} / {total} seats": "{approved} / {total} mest", + "{count} participants": "Še ni udeležencev | En udeleženec | {count} udeležencev", + "{count} requests waiting": "{count} zahtev čaka", + "{title} ({count} todos)": "{title} ({count} todos)", + "© The OpenStreetMap Contributors": "© The OpenStreetMap Contributors" } From 4fbdc94e7c0299ff9b0793ddd6255ee9b805705d Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 20 Jan 2021 18:16:44 +0100 Subject: [PATCH 084/114] Fix following groups + Add interface to manage followers Signed-off-by: Thomas Citharel --- js/src/graphql/followers.ts | 49 ++++ js/src/graphql/group.ts | 4 + js/src/i18n/en_US.json | 9 +- js/src/i18n/fr_FR.json | 10 +- js/src/router/groups.ts | 8 + js/src/types/actor/group.model.ts | 3 + js/src/views/Group/GroupFollowers.vue | 261 +++++++++++++++++ js/src/views/Group/GroupSettings.vue | 9 + js/src/views/Group/Settings.vue | 4 + lib/federation/activity_pub/activity_pub.ex | 22 +- lib/federation/activity_pub/transmogrifier.ex | 11 +- lib/federation/activity_pub/types/actors.ex | 29 +- lib/graphql/resolvers/followers.ex | 64 ++++ lib/graphql/resolvers/group.ex | 9 +- lib/graphql/schema.ex | 1 + lib/graphql/schema/actor.ex | 2 - lib/graphql/schema/actors/application.ex | 2 - lib/graphql/schema/actors/follower.ex | 15 + lib/graphql/schema/actors/group.ex | 36 ++- lib/graphql/schema/actors/person.ex | 2 - lib/mobilizon/actors/actors.ex | 36 +++ .../transmogrifier/follow_test.exs | 94 +++++- .../activity_pub/transmogrifier_test.exs | 51 ---- test/graphql/resolvers/follower_test.exs | 275 ++++++++++++++++++ test/support/factory.ex | 6 +- 25 files changed, 929 insertions(+), 83 deletions(-) create mode 100644 js/src/graphql/followers.ts create mode 100644 js/src/views/Group/GroupFollowers.vue create mode 100644 lib/graphql/resolvers/followers.ex create mode 100644 test/graphql/resolvers/follower_test.exs diff --git a/js/src/graphql/followers.ts b/js/src/graphql/followers.ts new file mode 100644 index 000000000..660c2e7db --- /dev/null +++ b/js/src/graphql/followers.ts @@ -0,0 +1,49 @@ +import gql from "graphql-tag"; + +export const GROUP_FOLLOWERS = gql` + query( + $name: String! + $followersPage: Int + $followersLimit: Int + $approved: Boolean + ) { + group(preferredUsername: $name) { + id + preferredUsername + name + domain + followers( + page: $followersPage + limit: $followersLimit + approved: $approved + ) { + total + elements { + id + actor { + id + preferredUsername + name + domain + avatar { + id + url + } + } + approved + insertedAt + updatedAt + } + } + } + } +`; + +export const UPDATE_FOLLOWER = gql` + mutation UpdateFollower($id: ID!, $approved: Boolean) { + updateFollower(id: $id, approved: $approved) { + id + approved + } + } +`; diff --git a/js/src/graphql/group.ts b/js/src/graphql/group.ts index 89a14a716..84345a03c 100644 --- a/js/src/graphql/group.ts +++ b/js/src/graphql/group.ts @@ -64,6 +64,7 @@ export const GROUP_FIELDS_FRAGMENTS = gql` suspended visibility openness + manuallyApprovesFollowers physicalAddress { description street @@ -265,6 +266,7 @@ export const UPDATE_GROUP = gql` $visibility: GroupVisibility $openness: Openness $physicalAddress: AddressInput + $manuallyApprovesFollowers: Boolean ) { updateGroup( id: $id @@ -275,6 +277,7 @@ export const UPDATE_GROUP = gql` visibility: $visibility openness: $openness physicalAddress: $physicalAddress + manuallyApprovesFollowers: $manuallyApprovesFollowers ) { id preferredUsername @@ -282,6 +285,7 @@ export const UPDATE_GROUP = gql` summary visibility openness + manuallyApprovesFollowers avatar { id url diff --git a/js/src/i18n/en_US.json b/js/src/i18n/en_US.json index d1df88117..fe0b9e625 100644 --- a/js/src/i18n/en_US.json +++ b/js/src/i18n/en_US.json @@ -829,5 +829,12 @@ "It is possible that the content is not accessible on this instance, because this instance has blocked the profiles or groups behind this content.": "It is possible that the content is not accessible on this instance, because this instance has blocked the profiles or groups behind this content.", "Atom feed for events and posts": "Atom feed for events and posts", "ICS feed for events": "ICS feed for events", - "ICS/WebCal Feed": "ICS/WebCal Feed" + "ICS/WebCal Feed": "ICS/WebCal Feed", + "Group Followers": "Group Followers", + "Follower": "Follower", + "Reject": "Reject", + "No follower matches the filters": "No follower matches the filters", + "@{username}'s follow request was rejected": "@{username}'s follow request was rejected", + "Followers will receive new public events and posts.": "Followers will receive new public events and posts.", + "Manually approve new followers": "Manually approve new followers" } diff --git a/js/src/i18n/fr_FR.json b/js/src/i18n/fr_FR.json index 31d1c70f2..4433842b5 100644 --- a/js/src/i18n/fr_FR.json +++ b/js/src/i18n/fr_FR.json @@ -274,7 +274,7 @@ "Find an address": "Trouver une adresse", "Find an instance": "Trouver une instance", "Find another instance": "Trouver une autre instance", - "Followers": "Abonnés", + "Followers": "Abonné⋅es", "Followings": "Abonnements", "For instance: London": "Par exemple : Lyon", "For instance: London, Taekwondo, Architecture…": "Par exemple : Lyon, Taekwondo, Architecture…", @@ -925,5 +925,11 @@ "© The OpenStreetMap Contributors": "© Les Contributeur⋅ices OpenStreetMap", "Atom feed for events and posts": "Flux Atom pour les événements et les billets", "ICS feed for events": "Flux ICS pour les événements", - "ICS/WebCal Feed": "Flux ICS/WebCal" + "ICS/WebCal Feed": "Flux ICS/WebCal", + "Group Followers": "Abonné⋅es au groupe", + "Follower": "Abonné⋅es", + "No follower matches the filters": "Aucun⋅e abonné⋅e ne correspond aux filtres", + "@{username}'s follow request was rejected": "La demande de suivi de @{username} a été rejettée", + "Followers will receive new public events and posts.": "Les abonnée⋅s recevront les nouveaux événements et billets publics.", + "Manually approve new followers": "Approuver les nouvelles demandes de suivi manuellement" } diff --git a/js/src/router/groups.ts b/js/src/router/groups.ts index ae3a92055..75d16adae 100644 --- a/js/src/router/groups.ts +++ b/js/src/router/groups.ts @@ -8,6 +8,7 @@ export enum GroupsRouteName { GROUP_SETTINGS = "GROUP_SETTINGS", GROUP_PUBLIC_SETTINGS = "GROUP_PUBLIC_SETTINGS", GROUP_MEMBERS_SETTINGS = "GROUP_MEMBERS_SETTINGS", + GROUP_FOLLOWERS_SETTINGS = "GROUP_FOLLOWERS_SETTINGS", RESOURCES = "RESOURCES", RESOURCE_FOLDER_ROOT = "RESOURCE_FOLDER_ROOT", RESOURCE_FOLDER = "RESOURCE_FOLDER", @@ -85,6 +86,13 @@ export const groupsRoutes: RouteConfig[] = [ import("../views/Group/GroupMembers.vue"), props: true, }, + { + path: "followers", + name: GroupsRouteName.GROUP_FOLLOWERS_SETTINGS, + component: (): Promise => + import("../views/Group/GroupFollowers.vue"), + props: true, + }, ], }, { diff --git a/js/src/types/actor/group.model.ts b/js/src/types/actor/group.model.ts index f3966c122..c178f404f 100644 --- a/js/src/types/actor/group.model.ts +++ b/js/src/types/actor/group.model.ts @@ -19,6 +19,7 @@ export interface IGroup extends IActor { organizedEvents: Paginate; physicalAddress: IAddress; openness: Openness; + manuallyApprovesFollowers: boolean; } export class Group extends Actor implements IGroup { @@ -45,6 +46,8 @@ export class Group extends Actor implements IGroup { physicalAddress: IAddress = new Address(); + manuallyApprovesFollowers = true; + patch(hash: IGroup | Record): void { Object.assign(this, hash); } diff --git a/js/src/views/Group/GroupFollowers.vue b/js/src/views/Group/GroupFollowers.vue new file mode 100644 index 000000000..712a34fec --- /dev/null +++ b/js/src/views/Group/GroupFollowers.vue @@ -0,0 +1,261 @@ + + + diff --git a/js/src/views/Group/GroupSettings.vue b/js/src/views/Group/GroupSettings.vue index 54bfbb9ed..f4401059b 100644 --- a/js/src/views/Group/GroupSettings.vue +++ b/js/src/views/Group/GroupSettings.vue @@ -134,6 +134,15 @@ + + + {{ $t("Manually approve new followers") }} + + + + diff --git a/lib/federation/activity_pub/activity_pub.ex b/lib/federation/activity_pub/activity_pub.ex index b9208c700..3cf173441 100644 --- a/lib/federation/activity_pub/activity_pub.ex +++ b/lib/federation/activity_pub/activity_pub.ex @@ -50,7 +50,6 @@ defmodule Mobilizon.Federation.ActivityPub do alias Mobilizon.Web.Endpoint alias Mobilizon.Web.Email.{Admin, Group, Mailer} - alias Mobilizon.Web.Email.Follow, as: FollowMailer require Logger @@ -320,13 +319,22 @@ defmodule Mobilizon.Federation.ActivityPub do @doc """ Make an actor follow another """ - def follow(%Actor{} = follower, %Actor{} = followed, activity_id \\ nil, local \\ true) do + def follow( + %Actor{} = follower, + %Actor{} = followed, + activity_id \\ nil, + local \\ true, + additional \\ %{} + ) do with {:different_actors, true} <- {:different_actors, followed.id != follower.id}, - {:ok, %Follower{} = follower} <- - Actors.follow(followed, follower, activity_id, false), - :ok <- FollowMailer.send_notification_to_admins(follower), - follower_as_data <- Convertible.model_to_as(follower), - {:ok, activity} <- create_activity(follower_as_data, local), + {:ok, activity_data, %Follower{} = follower} <- + Types.Actors.follow( + follower, + followed, + local, + Map.merge(additional, %{"activity_id" => activity_id}) + ), + {:ok, activity} <- create_activity(activity_data, local), :ok <- maybe_federate(activity) do {:ok, activity, follower} else diff --git a/lib/federation/activity_pub/transmogrifier.ex b/lib/federation/activity_pub/transmogrifier.ex index ddeec0af1..620c2e747 100644 --- a/lib/federation/activity_pub/transmogrifier.ex +++ b/lib/federation/activity_pub/transmogrifier.ex @@ -302,6 +302,10 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do do_handle_incoming_accept_join(accepted_object, actor)} do {:ok, activity, object} else + {:object_not_found, {:error, "Follow already accepted"}} -> + Logger.info("Follow was already accepted. Ignoring.") + :error + {:object_not_found, nil} -> Logger.warn( "Unable to process Accept activity #{inspect(id)}. Object #{inspect(accepted_object)} wasn't found." @@ -761,6 +765,10 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do {:ok, activity, follow} else + {:follow, {:ok, %Follower{approved: true} = _follow}} -> + Logger.debug("Follow already accepted") + {:error, "Follow already accepted"} + {:follow, _} -> Logger.debug( "Tried to handle an Accept activity but it's not containing a Follow activity" @@ -770,9 +778,6 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do {:same_actor} -> {:error, "Actor who accepted the follow wasn't the target. Quite odd."} - - {:ok, %Follower{approved: true} = _follow} -> - {:error, "Follow already accepted"} end end diff --git a/lib/federation/activity_pub/types/actors.ex b/lib/federation/activity_pub/types/actors.ex index 7491d1684..1e0cdc673 100644 --- a/lib/federation/activity_pub/types/actors.ex +++ b/lib/federation/activity_pub/types/actors.ex @@ -1,7 +1,7 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Actors do @moduledoc false alias Mobilizon.Actors - alias Mobilizon.Actors.{Actor, Member} + alias Mobilizon.Actors.{Actor, Follower, Member} alias Mobilizon.Federation.ActivityPub alias Mobilizon.Federation.ActivityPub.Audience alias Mobilizon.Federation.ActivityPub.Types.Entity @@ -9,6 +9,7 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Actors do alias Mobilizon.GraphQL.API.Utils, as: APIUtils alias Mobilizon.Service.Formatter.HTML alias Mobilizon.Service.Notifications.Scheduler + alias Mobilizon.Web.Email.Follow, as: FollowMailer alias Mobilizon.Web.Endpoint import Mobilizon.Federation.ActivityPub.Utils, only: [make_create_data: 2, make_update_data: 2] @@ -130,6 +131,15 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Actors do end end + def follow(%Actor{} = follower_actor, %Actor{} = followed, _local, additional) do + with {:ok, %Follower{} = follower} <- + Mobilizon.Actors.follow(followed, follower_actor, additional["activity_id"], false), + :ok <- FollowMailer.send_notification_to_admins(follower), + follower_as_data <- Convertible.model_to_as(follower) do + approve_if_manually_approves_followers(follower, follower_as_data) + end + end + defp prepare_args_for_actor(args) do args |> maybe_sanitize_username() @@ -189,4 +199,21 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Actors do {:ok, activity_data, member} end end + + defp approve_if_manually_approves_followers( + %Follower{} = follower, + follow_as_data + ) do + unless follower.target_actor.manually_approves_followers do + {:accept, + ActivityPub.accept( + :follow, + follower, + true, + %{"actor" => follower.actor.url} + )} + end + + {:ok, follow_as_data, follower} + end end diff --git a/lib/graphql/resolvers/followers.ex b/lib/graphql/resolvers/followers.ex new file mode 100644 index 000000000..950115a5a --- /dev/null +++ b/lib/graphql/resolvers/followers.ex @@ -0,0 +1,64 @@ +defmodule Mobilizon.GraphQL.Resolvers.Followers do + @moduledoc """ + Handles the followers-related GraphQL calls. + """ + + import Mobilizon.Users.Guards + alias Mobilizon.{Actors, Users} + alias Mobilizon.Actors.{Actor, Follower} + alias Mobilizon.Federation.ActivityPub + alias Mobilizon.Storage.Page + alias Mobilizon.Users.User + + @spec find_followers_for_group(Actor.t(), map(), map()) :: {:ok, Page.t()} + def find_followers_for_group( + %Actor{id: group_id} = group, + %{page: page, limit: limit} = args, + %{ + context: %{ + current_user: %User{role: user_role} = user + } + } + ) do + with {:actor, %Actor{id: actor_id} = _actor} <- {:actor, Users.get_actor_for_user(user)}, + {:member, true} <- + {:member, Actors.is_moderator?(actor_id, group_id) or is_moderator(user_role)} do + {:ok, + Actors.list_paginated_followers_for_actor(group, Map.get(args, :approved), page, limit)} + else + _ -> {:error, :unauthorized} + end + end + + def find_followers_for_group(_, _, _), do: {:error, :unauthenticated} + + @spec update_follower(any(), map(), map()) :: {:ok, Follower.t()} | {:error, any()} + def update_follower(_, %{id: follower_id, approved: approved}, %{ + context: %{ + current_user: %User{} = user + } + }) do + with {:actor, %Actor{id: actor_id} = _actor} <- {:actor, Users.get_actor_for_user(user)}, + %Follower{target_actor: %Actor{type: :Group, id: group_id}} = follower <- + Actors.get_follower(follower_id), + {:member, true} <- + {:member, Actors.is_moderator?(actor_id, group_id)}, + {:ok, _activity, %Follower{} = follower} <- + (if approved do + ActivityPub.accept(:follow, follower) + else + ActivityPub.reject(:follow, follower) + end) do + {:ok, follower} + else + {:member, _} -> + {:error, :unauthorized} + + _ -> + {:error, + if(approved, do: "Unable to approve follower", else: "Unable to reject follower")} + end + end + + def update_follower(_, _, _), do: {:error, :unauthenticated} +end diff --git a/lib/graphql/resolvers/group.ex b/lib/graphql/resolvers/group.ex index 67e236a74..6c5ffe5cb 100644 --- a/lib/graphql/resolvers/group.ex +++ b/lib/graphql/resolvers/group.ex @@ -26,8 +26,8 @@ defmodule Mobilizon.GraphQL.Resolvers.Group do } } ) do - with {:ok, %Actor{id: group_id} = group} <- - ActivityPub.find_or_make_group_from_nickname(name), + with {:group, {:ok, %Actor{id: group_id} = group}} <- + {:group, ActivityPub.find_or_make_group_from_nickname(name)}, {:actor, %Actor{id: actor_id} = _actor} <- {:actor, Users.get_actor_for_user(user)}, {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)} do {:ok, group} @@ -35,8 +35,11 @@ defmodule Mobilizon.GraphQL.Resolvers.Group do {:member, false} -> find_group(parent, args, nil) - _ -> + {:group, _} -> {:error, :group_not_found} + + _ -> + {:error, :unknown} end end diff --git a/lib/graphql/schema.ex b/lib/graphql/schema.ex index f22c886d8..ceca7131b 100644 --- a/lib/graphql/schema.ex +++ b/lib/graphql/schema.ex @@ -177,6 +177,7 @@ defmodule Mobilizon.GraphQL.Schema do import_fields(:resource_mutations) import_fields(:post_mutations) import_fields(:actor_mutations) + import_fields(:follower_mutations) end @desc """ diff --git a/lib/graphql/schema/actor.ex b/lib/graphql/schema/actor.ex index 1acad9f0d..c2fd097bb 100644 --- a/lib/graphql/schema/actor.ex +++ b/lib/graphql/schema/actor.ex @@ -32,8 +32,6 @@ defmodule Mobilizon.GraphQL.Schema.ActorInterface do field(:banner, :media, description: "The actor's banner media") # These one should have a privacy setting - field(:following, list_of(:follower), description: "List of followings") - field(:followers, list_of(:follower), description: "List of followers") field(:followersCount, :integer, description: "Number of followers for this actor") field(:followingCount, :integer, description: "Number of actors following this actor") diff --git a/lib/graphql/schema/actors/application.ex b/lib/graphql/schema/actors/application.ex index 9b89854b3..4a8d98bae 100644 --- a/lib/graphql/schema/actors/application.ex +++ b/lib/graphql/schema/actors/application.ex @@ -31,8 +31,6 @@ defmodule Mobilizon.GraphQL.Schema.Actors.ApplicationType do field(:banner, :media, description: "The actor's banner media") # These one should have a privacy setting - field(:following, list_of(:follower), description: "List of followings") - field(:followers, list_of(:follower), description: "List of followers") field(:followersCount, :integer, description: "Number of followers for this actor") field(:followingCount, :integer, description: "Number of actors following this actor") diff --git a/lib/graphql/schema/actors/follower.ex b/lib/graphql/schema/actors/follower.ex index 99d708926..94da4335c 100644 --- a/lib/graphql/schema/actors/follower.ex +++ b/lib/graphql/schema/actors/follower.ex @@ -3,11 +3,13 @@ defmodule Mobilizon.GraphQL.Schema.Actors.FollowerType do Schema representation for Follower """ use Absinthe.Schema.Notation + alias Mobilizon.GraphQL.Resolvers.Followers @desc """ Represents an actor's follower """ object :follower do + field(:id, :id, description: "The follow ID") field(:target_actor, :actor, description: "What or who the profile follows") field(:actor, :actor, description: "Which profile follows") @@ -26,4 +28,17 @@ defmodule Mobilizon.GraphQL.Schema.Actors.FollowerType do field(:elements, list_of(:follower), description: "A list of followers") field(:total, :integer, description: "The total number of elements in the list") end + + object :follower_mutations do + @desc "Update follower" + field :update_follower, :follower do + arg(:id, non_null(:id), description: "The follower ID") + + arg(:approved, non_null(:boolean), + description: "Whether the follower has been approved by the target actor or not" + ) + + resolve(&Followers.update_follower/3) + end + end end diff --git a/lib/graphql/schema/actors/group.ex b/lib/graphql/schema/actors/group.ex index ad1fc9de9..90588e996 100644 --- a/lib/graphql/schema/actors/group.ex +++ b/lib/graphql/schema/actors/group.ex @@ -8,7 +8,18 @@ defmodule Mobilizon.GraphQL.Schema.Actors.GroupType do import Absinthe.Resolution.Helpers, only: [dataloader: 1] alias Mobilizon.Addresses - alias Mobilizon.GraphQL.Resolvers.{Discussion, Group, Media, Member, Post, Resource, Todos} + + alias Mobilizon.GraphQL.Resolvers.{ + Discussion, + Followers, + Group, + Media, + Member, + Post, + Resource, + Todos + } + alias Mobilizon.GraphQL.Schema import_types(Schema.Actors.MemberType) @@ -47,8 +58,6 @@ defmodule Mobilizon.GraphQL.Schema.Actors.GroupType do ) # These one should have a privacy setting - field(:following, list_of(:follower), description: "List of followings") - field(:followers, list_of(:follower), description: "List of followers") field(:followersCount, :integer, description: "Number of followers for this actor") field(:followingCount, :integer, description: "Number of actors following this actor") @@ -116,6 +125,23 @@ defmodule Mobilizon.GraphQL.Schema.Actors.GroupType do resolve(&Todos.find_todo_lists_for_group/3) description("A paginated list of the todo lists this group has") end + + field :followers, :paginated_follower_list do + arg(:page, :integer, + default_value: 1, + description: "The page in the paginated followers list" + ) + + arg(:limit, :integer, default_value: 10, description: "The limit of followers per page") + + arg(:approved, :boolean, + default_value: nil, + description: "Used to filter the followers list by approved status" + ) + + resolve(&Followers.find_followers_for_group/3) + description("A paginated list of the followers this group has") + end end @desc """ @@ -232,6 +258,10 @@ defmodule Mobilizon.GraphQL.Schema.Actors.GroupType do description: "Whether the group can be join freely, with approval or is invite-only." ) + arg(:manually_approves_followers, :boolean, + description: "Whether this group approves new followers manually" + ) + arg(:avatar, :media_input, description: "The avatar for the group, either as an object or directly the ID of an existing media" diff --git a/lib/graphql/schema/actors/person.ex b/lib/graphql/schema/actors/person.ex index bf6327a1a..1ed2ce262 100644 --- a/lib/graphql/schema/actors/person.ex +++ b/lib/graphql/schema/actors/person.ex @@ -44,8 +44,6 @@ defmodule Mobilizon.GraphQL.Schema.Actors.PersonType do field(:banner, :media, description: "The actor's banner media") # These one should have a privacy setting - field(:following, list_of(:follower), description: "List of followings") - field(:followers, list_of(:follower), description: "List of followers") field(:followersCount, :integer, description: "Number of followers for this actor") field(:followingCount, :integer, description: "Number of actors following this actor") diff --git a/lib/mobilizon/actors/actors.ex b/lib/mobilizon/actors/actors.ex index d5e88d4df..763d2abb5 100644 --- a/lib/mobilizon/actors/actors.ex +++ b/lib/mobilizon/actors/actors.ex @@ -1022,6 +1022,16 @@ defmodule Mobilizon.Actors do @spec list_bots :: [Bot.t()] def list_bots, do: Repo.all(Bot) + @doc """ + Gets a single follower. + """ + @spec get_follower(integer | String.t()) :: Follower.t() | nil + def get_follower(id) do + Follower + |> Repo.get(id) + |> Repo.preload([:actor, :target_actor]) + end + @doc """ Gets a single follower. Raises `Ecto.NoResultsError` if the follower does not exist. @@ -1149,6 +1159,25 @@ defmodule Mobilizon.Actors do |> Repo.aggregate(:count) end + @doc """ + Returns a paginated list of followers for an actor. + """ + @spec list_paginated_followers_for_actor(Actor.t(), boolean | nil, integer | nil, integer | nil) :: + Page.t() + def list_paginated_followers_for_actor( + %Actor{id: actor_id}, + approved \\ nil, + page \\ nil, + limit \\ nil + ) do + actor_id + |> follower_for_actor_query() + |> filter_followed_by_approved_status(approved) + |> order_by(desc: :updated_at) + |> preload([:actor, :target_actor]) + |> Page.build_page(page, limit) + end + @doc """ Returns the list of followings for an actor. If actor A follows actor B and C, actor A's followings are B and C. @@ -1688,6 +1717,13 @@ defmodule Mobilizon.Actors do from(a in query, where: a.preferred_username == ^name and a.domain == ^domain) end + @spec filter_by_name(Ecto.Query.t(), boolean | nil) :: Ecto.Query.t() + defp filter_followed_by_approved_status(query, nil), do: query + + defp filter_followed_by_approved_status(query, approved) do + from(f in query, where: f.approved == ^approved) + end + @spec preload_followers(Actor.t(), boolean) :: Actor.t() defp preload_followers(actor, true), do: Repo.preload(actor, [:followers]) defp preload_followers(actor, false), do: actor diff --git a/test/federation/activity_pub/transmogrifier/follow_test.exs b/test/federation/activity_pub/transmogrifier/follow_test.exs index 5c15bd14c..db99d54ab 100644 --- a/test/federation/activity_pub/transmogrifier/follow_test.exs +++ b/test/federation/activity_pub/transmogrifier/follow_test.exs @@ -3,19 +3,73 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do import Mobilizon.Factory alias Mobilizon.Actors + alias Mobilizon.Actors.Follower alias Mobilizon.Federation.ActivityPub alias Mobilizon.Federation.ActivityPub.{Activity, Transmogrifier} + describe "handle incoming follow requests" do + test "it works for incoming follow requests" do + actor = insert(:actor) + + data = + File.read!("test/fixtures/mastodon-follow-activity.json") + |> Jason.decode!() + |> Map.put("object", actor.url) + + {:ok, %Activity{data: data, local: false}, _} = Transmogrifier.handle_incoming(data) + + assert data["actor"] == "https://social.tcit.fr/users/tcit" + assert data["type"] == "Follow" + assert data["id"] == "https://social.tcit.fr/users/tcit#follows/2" + + actor = Actors.get_actor_with_preload(actor.id) + assert Actors.is_following(Actors.get_actor_by_url!(data["actor"], true), actor) + end + + test "it rejects activities without a valid ID" do + actor = insert(:actor) + + data = + File.read!("test/fixtures/mastodon-follow-activity.json") + |> Jason.decode!() + |> Map.put("object", actor.url) + |> Map.put("id", "") + + :error = Transmogrifier.handle_incoming(data) + end + + # test "it works for incoming follow requests from hubzilla" do + # user = insert(:user) + + # data = + # File.read!("test/fixtures/hubzilla-follow-activity.json") + # |> Jason.decode!() + # |> Map.put("object", user.ap_id) + # |> Utils.normalize_params() + + # {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + + # assert data["actor"] == "https://hubzilla.example.org/channel/kaniini" + # assert data["type"] == "Follow" + # assert data["id"] == "https://hubzilla.example.org/channel/kaniini#follows/2" + # assert User.is_following(User.get_by_ap_id(data["actor"]), user) + # end + end + describe "handle incoming follow accept activities" do - test "it works for incoming accepts which were pre-accepted" do + test "it works for incoming accepts" do follower = insert(:actor) - followed = insert(:actor) + followed = insert(:actor, manually_approves_followers: false) refute Actors.is_following(follower, followed) {:ok, follow_activity, _} = ActivityPub.follow(follower, followed) assert Actors.is_following(follower, followed) + follow_object_id = follow_activity.data["id"] + + assert %Follower{} = Actors.get_follower_by_url(follow_object_id) + accept_data = File.read!("test/fixtures/mastodon-accept-activity.json") |> Jason.decode!() @@ -24,7 +78,39 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do object = accept_data["object"] |> Map.put("actor", follower.url) - |> Map.put("id", follow_activity.data["id"]) + |> Map.put("id", follow_object_id) + + accept_data = Map.put(accept_data, "object", object) + + :error = Transmogrifier.handle_incoming(accept_data) + + {:ok, follower} = Actors.get_actor_by_url(follower.url) + + assert Actors.is_following(follower, followed) + end + + test "it works for incoming accepts which were pre-accepted" do + follower = insert(:actor) + followed = insert(:actor, manually_approves_followers: true) + + refute Actors.is_following(follower, followed) + + {:ok, follow_activity, _} = ActivityPub.follow(follower, followed) + assert Actors.is_following(follower, followed) + + follow_object_id = follow_activity.data["id"] + + assert %Follower{} = Actors.get_follower_by_url(follow_object_id) + + accept_data = + File.read!("test/fixtures/mastodon-accept-activity.json") + |> Jason.decode!() + |> Map.put("actor", followed.url) + + object = + accept_data["object"] + |> Map.put("actor", follower.url) + |> Map.put("id", follow_object_id) accept_data = Map.put(accept_data, "object", object) @@ -40,7 +126,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do test "it works for incoming accepts which are referenced by IRI only" do follower = insert(:actor) - followed = insert(:actor) + followed = insert(:actor, manually_approves_followers: true) {:ok, follow_activity, _} = ActivityPub.follow(follower, followed) diff --git a/test/federation/activity_pub/transmogrifier_test.exs b/test/federation/activity_pub/transmogrifier_test.exs index 5b176249f..f04ad5a77 100644 --- a/test/federation/activity_pub/transmogrifier_test.exs +++ b/test/federation/activity_pub/transmogrifier_test.exs @@ -556,57 +556,6 @@ defmodule Mobilizon.Federation.ActivityPub.TransmogrifierTest do end end - describe "handle incoming follow requests" do - test "it works for incoming follow requests" do - use_cassette "activity_pub/mastodon_follow_activity" do - actor = insert(:actor) - - data = - File.read!("test/fixtures/mastodon-follow-activity.json") - |> Jason.decode!() - |> Map.put("object", actor.url) - - {:ok, %Activity{data: data, local: false}, _} = Transmogrifier.handle_incoming(data) - - assert data["actor"] == "https://social.tcit.fr/users/tcit" - assert data["type"] == "Follow" - assert data["id"] == "https://social.tcit.fr/users/tcit#follows/2" - - actor = Actors.get_actor_with_preload(actor.id) - assert Actors.is_following(Actors.get_actor_by_url!(data["actor"], true), actor) - end - end - - test "it rejects activities without a valid ID" do - actor = insert(:actor) - - data = - File.read!("test/fixtures/mastodon-follow-activity.json") - |> Jason.decode!() - |> Map.put("object", actor.url) - |> Map.put("id", "") - - :error = Transmogrifier.handle_incoming(data) - end - - # test "it works for incoming follow requests from hubzilla" do - # user = insert(:user) - - # data = - # File.read!("test/fixtures/hubzilla-follow-activity.json") - # |> Jason.decode!() - # |> Map.put("object", user.ap_id) - # |> Utils.normalize_params() - - # {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) - - # assert data["actor"] == "https://hubzilla.example.org/channel/kaniini" - # assert data["type"] == "Follow" - # assert data["id"] == "https://hubzilla.example.org/channel/kaniini#follows/2" - # assert User.is_following(User.get_by_ap_id(data["actor"]), user) - # end - end - # test "it works for incoming likes" do # %Comment{url: url} = insert(:comment) diff --git a/test/graphql/resolvers/follower_test.exs b/test/graphql/resolvers/follower_test.exs new file mode 100644 index 000000000..682ef9dd2 --- /dev/null +++ b/test/graphql/resolvers/follower_test.exs @@ -0,0 +1,275 @@ +defmodule Mobilizon.Web.Resolvers.FollowerTest do + use Mobilizon.Web.ConnCase + use Oban.Testing, repo: Mobilizon.Storage.Repo + + alias Mobilizon.Actors + alias Mobilizon.Actors.{Actor, Follower} + + import Mobilizon.Factory + + alias Mobilizon.GraphQL.AbsintheHelpers + + setup %{conn: conn} do + user = insert(:user) + actor = insert(:actor, user: user) + group = insert(:group) + insert(:member, parent: group, actor: actor, role: :moderator) + follower = insert(:follower, target_actor: group) + + {:ok, conn: conn, actor: actor, user: user, group: group, follower: follower} + end + + @group_followers_query """ + query( + $name: String! + $followersPage: Int + $followersLimit: Int + $approved: Boolean + ) { + group(preferredUsername: $name) { + id + preferredUsername + name + domain + followers( + page: $followersPage + limit: $followersLimit + approved: $approved + ) { + total + elements { + id + actor { + id + preferredUsername + name + domain + avatar { + id + url + } + } + approved + insertedAt + updatedAt + } + } + } + } + """ + + describe "list group followers find_followers_for_group/3" do + test "without being logged-in", %{ + conn: conn, + group: %Actor{preferred_username: preferred_username} + } do + res = + conn + |> AbsintheHelpers.graphql_query( + query: @group_followers_query, + variables: %{name: preferred_username} + ) + + assert hd(res["errors"])["message"] == "unauthenticated" + end + + test "without being a member", %{ + conn: conn, + group: %Actor{preferred_username: preferred_username} + } do + user = insert(:user) + insert(:actor, user: user) + + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @group_followers_query, + variables: %{name: preferred_username} + ) + + assert hd(res["errors"])["message"] == "unauthorized" + end + + test "without being a moderator", %{ + conn: conn, + group: %Actor{preferred_username: preferred_username} = group + } do + user = insert(:user) + actor = insert(:actor, user: user) + insert(:member, parent: group, actor: actor, role: :member) + + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @group_followers_query, + variables: %{name: preferred_username} + ) + + assert hd(res["errors"])["message"] == "unauthorized" + end + + test "while being a moderator", %{ + conn: conn, + user: user, + group: %Actor{preferred_username: preferred_username, id: group_id} = group, + follower: %Follower{id: follower_id} + } do + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @group_followers_query, + variables: %{name: preferred_username} + ) + + assert res["errors"] == nil + assert res["data"]["group"]["id"] == to_string(group_id) + assert res["data"]["group"]["followers"]["total"] == 1 + assert hd(res["data"]["group"]["followers"]["elements"])["id"] == to_string(follower_id) + + Process.sleep(1000) + insert(:follower, target_actor: group) + Process.sleep(1000) + follower3 = insert(:follower, target_actor: group) + + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @group_followers_query, + variables: %{ + name: preferred_username, + followersLimit: 2, + followersPage: 1 + } + ) + + assert res["errors"] == nil + assert res["data"]["group"]["id"] == to_string(group_id) + assert res["data"]["group"]["followers"]["total"] == 3 + assert hd(res["data"]["group"]["followers"]["elements"])["id"] == to_string(follower3.id) + + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @group_followers_query, + variables: %{ + name: preferred_username, + followersLimit: 2, + followersPage: 2 + } + ) + + assert res["errors"] == nil + assert res["data"]["group"]["id"] == to_string(group_id) + assert res["data"]["group"]["followers"]["total"] == 3 + assert hd(res["data"]["group"]["followers"]["elements"])["id"] == to_string(follower_id) + end + end + + @update_follower_mutation """ + mutation UpdateFollower($id: ID!, $approved: Boolean) { + updateFollower(id: $id, approved: $approved) { + id + approved + } + } + """ + describe "update a follower update_follower/3" do + test "without being logged-in", %{ + conn: conn, + group: %Actor{} = group + } do + %Follower{id: follower_id} = insert(:follower, target_actor: group) + + res = + conn + |> AbsintheHelpers.graphql_query( + query: @update_follower_mutation, + variables: %{id: follower_id, approved: true} + ) + + assert hd(res["errors"])["message"] == "You need to be logged in" + end + + test "without being a member", %{ + conn: conn, + group: %Actor{} = group + } do + user = insert(:user) + insert(:actor, user: user) + %Follower{id: follower_id} = insert(:follower, target_actor: group) + + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @update_follower_mutation, + variables: %{id: follower_id, approved: true} + ) + + assert hd(res["errors"])["message"] == "You don't have permission to do this" + end + + test "without being a moderator", %{ + conn: conn, + group: %Actor{} = group + } do + user = insert(:user) + actor = insert(:actor, user: user) + insert(:member, parent: group, actor: actor, role: :member) + %Follower{id: follower_id} = insert(:follower, target_actor: group) + + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @update_follower_mutation, + variables: %{id: follower_id, approved: true} + ) + + assert hd(res["errors"])["message"] == "You don't have permission to do this" + end + + test "while being a moderator", %{ + conn: conn, + user: user, + follower: %Follower{id: follower_id, approved: false} + } do + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @update_follower_mutation, + variables: %{id: follower_id, approved: true} + ) + + assert res["errors"] == nil + assert res["data"]["updateFollower"]["id"] == to_string(follower_id) + + assert %Follower{approved: true} = Actors.get_follower(follower_id) + end + + test "reject deletes the follower", %{ + conn: conn, + user: user, + follower: %Follower{id: follower_id, approved: false} + } do + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @update_follower_mutation, + variables: %{id: follower_id, approved: false} + ) + + assert res["errors"] == nil + assert res["data"]["updateFollower"]["id"] == to_string(follower_id) + + assert is_nil(Actors.get_follower(follower_id)) + end + end +end diff --git a/test/support/factory.ex b/test/support/factory.ex index 82b8205b9..09a2f6826 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -55,7 +55,8 @@ defmodule Mobilizon.Factory do shared_inbox_url: "#{Endpoint.url()}/inbox", last_refreshed_at: DateTime.utc_now(), user: build(:user), - visibility: :public + visibility: :public, + manually_approves_followers: false } end @@ -108,7 +109,8 @@ defmodule Mobilizon.Factory do target_actor: build(:actor), actor: build(:actor), id: uuid, - url: "#{Endpoint.url()}/follows/#{uuid}" + url: "#{Endpoint.url()}/follows/#{uuid}", + approved: false } end From 13609751ec8d70bc4263e26f000c5591564324e1 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 20 Jan 2021 10:48:47 +0100 Subject: [PATCH 085/114] Upgrade deps Signed-off-by: Thomas Citharel --- js/package.json | 16 +- js/yarn.lock | 628 +++++++++++++++++++++++++++--------------------- mix.exs | 8 +- mix.lock | 16 +- 4 files changed, 379 insertions(+), 289 deletions(-) diff --git a/js/package.json b/js/package.json index 047c40726..be5c81497 100644 --- a/js/package.json +++ b/js/package.json @@ -39,10 +39,10 @@ "phoenix": "^1.4.11", "register-service-worker": "^1.7.1", "tippy.js": "^6.2.3", - "tiptap": "^1.26.0", - "tiptap-extensions": "^1.29.1", + "tiptap": "^1.31.0", + "tiptap-extensions": "^1.34.0", "unfetch": "^4.2.0", - "v-tooltip": "2.0.2", + "v-tooltip": "^2.1.2", "vue": "^2.6.11", "vue-apollo": "^3.0.3", "vue-class-component": "^7.2.3", @@ -52,7 +52,7 @@ "vue-router": "^3.1.6", "vue-scrollto": "^2.17.1", "vue2-leaflet": "^2.0.3", - "vuedraggable": "2.23.2" + "vuedraggable": "^2.24.3" }, "devDependencies": { "@types/jest": "^26.0.18", @@ -65,8 +65,8 @@ "@types/prosemirror-state": "^1.2.4", "@types/prosemirror-view": "^1.11.4", "@types/vuedraggable": "^2.23.0", - "@typescript-eslint/eslint-plugin": "^4.0.1", - "@typescript-eslint/parser": "^4.0.1", + "@typescript-eslint/eslint-plugin": "4.13.0", + "@typescript-eslint/parser": "4.13.0", "@vue/cli-plugin-babel": "~4.5.10", "@vue/cli-plugin-e2e-cypress": "~4.5.10", "@vue/cli-plugin-eslint": "~4.5.10", @@ -83,7 +83,7 @@ "eslint-plugin-prettier": "^3.1.3", "eslint-plugin-vue": "^7.0.0", "jest-junit": "^12.0.0", - "mock-apollo-client": "^0.4", + "mock-apollo-client": "^0.5", "prettier": "2.2.1", "prettier-eslint": "^12.0.0", "sass": "^1.29.0", @@ -95,8 +95,6 @@ "webpack-cli": "^3.3" }, "resolutions": { - "prosemirror-model": "1.9.1", - "prosemirror-state": "1.3.3", "workbox-webpack-plugin": "5.1.3" } } diff --git a/js/yarn.lock b/js/yarn.lock index 9de09df89..9e8c2e2e6 100644 --- a/js/yarn.lock +++ b/js/yarn.lock @@ -27,6 +27,25 @@ core-js "2.6.0" zen-observable "0.8.11" +"@apollo/client@^3.0.0": + version "3.3.7" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.3.7.tgz#f15bf961dc0c2bee37a47bf86b8881fdc6183810" + integrity sha512-Cb0OqqvlehlRHtHIXRIS/Pe5WYU4hHl1FznXTRSxBAN42WmBUM3zy/Unvw183RdWMyV6Kc2pFKOEuaG1K7JTAQ== + dependencies: + "@graphql-typed-document-node/core" "^3.0.0" + "@types/zen-observable" "^0.8.0" + "@wry/context" "^0.5.2" + "@wry/equality" "^0.3.0" + fast-json-stable-stringify "^2.0.0" + graphql-tag "^2.11.0" + hoist-non-react-statics "^3.3.2" + optimism "^0.14.0" + prop-types "^15.7.2" + symbol-observable "^2.0.0" + ts-invariant "^0.6.0" + tslib "^1.10.0" + zen-observable "^0.8.14" + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" @@ -904,10 +923,10 @@ debug "^3.1.0" lodash.once "^4.1.1" -"@eslint/eslintrc@^0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.2.tgz#d01fc791e2fc33e88a29d6f3dc7e93d0cd784b76" - integrity sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ== +"@eslint/eslintrc@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318" + integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg== dependencies: ajv "^6.12.4" debug "^4.1.1" @@ -916,10 +935,15 @@ ignore "^4.0.6" import-fresh "^3.2.1" js-yaml "^3.13.1" - lodash "^4.17.19" + lodash "^4.17.20" minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@graphql-typed-document-node/core@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.0.tgz#0eee6373e11418bfe0b5638f654df7a4ca6a3950" + integrity sha512-wYn6r8zVZyQJ6rQaALBEln5B1pzxb9shV5Ef97kTvn6yVGrqyXVnDqnU24MXnFubR+rZjBY9NWuxX3FB2sTsjg== + "@hapi/address@2.x.x": version "2.1.4" resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" @@ -1150,9 +1174,9 @@ graphql "14.0.2" "@mdi/font@^5.0.45": - version "5.8.55" - resolved "https://registry.yarnpkg.com/@mdi/font/-/font-5.8.55.tgz#1464155bcbc8a6e4af6dffd611fe8e38e09af285" - integrity sha512-8mrwfFBsmj+D67ZiGQSe5TU/lcWCtDyli2eshQ2fvLCZGRPqFMM23YQp4+JMOTpk5yMZKTeAwNWIYfITy76OHA== + version "5.9.55" + resolved "https://registry.yarnpkg.com/@mdi/font/-/font-5.9.55.tgz#41acd50b88073ded7095fc3029d8712b6e12f38e" + integrity sha512-jswRF6q3eq8NWpWiqct6q+6Fg/I7nUhrxYJfiEM8JJpap0wVJLQdbKtyS65GdlK7S7Ytnx3TTi/bmw+tBhkGmg== "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" @@ -1311,31 +1335,31 @@ integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== "@types/estree@*": - version "0.0.45" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" - integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== + version "0.0.46" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" + integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== -"@types/express-serve-static-core@*": - version "4.17.17" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.17.tgz#6ba02465165b6c9c3d8db3a28def6b16fc9b70f5" - integrity sha512-YYlVaCni5dnHc+bLZfY908IG1+x5xuibKZMGv8srKkvtul3wUuanYvpIj9GXXoWkQbaAdR+kgX46IETKUALWNQ== +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": + version "4.17.18" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.18.tgz#8371e260f40e0e1ca0c116a9afcd9426fa094c40" + integrity sha512-m4JTwx5RUBNZvky/JJ8swEJPKFd8si08pPF2PfizYjGZOKr/svUWPcoUmLow6MmPzhasphB7gSTINY67xn3JNA== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" "@types/express@*": - version "4.17.9" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.9.tgz#f5f2df6add703ff28428add52bdec8a1091b0a78" - integrity sha512-SDzEIZInC4sivGIFY4Sz1GG6J9UObPwCInYJjko2jzOf/Imx/dlpume6Xxwj1ORL82tBbmN4cPDIDkLbWHk9hw== + version "4.17.11" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.11.tgz#debe3caa6f8e5fcda96b47bd54e2f40c4ee59545" + integrity sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg== dependencies: "@types/body-parser" "*" - "@types/express-serve-static-core" "*" + "@types/express-serve-static-core" "^4.17.18" "@types/qs" "*" "@types/serve-static" "*" @@ -1362,9 +1386,9 @@ "@types/node" "*" "@types/http-proxy@*": - version "1.17.4" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.4.tgz#e7c92e3dbe3e13aa799440ff42e6d3a17a9d045b" - integrity sha512-IrSHl2u6AWXduUaDLqYpt45tLVCtYv7o4Z0s1KghBCDgIIS9oW5K1H8mZG/A2CfeLdEa7rTd1ACOiHBc1EMT2Q== + version "1.17.5" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.5.tgz#c203c5e6e9dc6820d27a40eb1e511c70a220423d" + integrity sha512-GNkDE7bTv6Sf8JbV2GksknKOsk7OznNYHSdrtvPJXO0qJ9odZig6IZKUi5RFGi6d1bf6dgIAe4uXi3DBc7069Q== dependencies: "@types/node" "*" @@ -1411,9 +1435,9 @@ pretty-format "^26.0.0" "@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" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" - integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" + integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== "@types/leaflet.locatecontrol@^0.60.7": version "0.60.7" @@ -1423,21 +1447,21 @@ "@types/leaflet" "*" "@types/leaflet@*", "@types/leaflet@^1.5.2": - version "1.5.19" - resolved "https://registry.yarnpkg.com/@types/leaflet/-/leaflet-1.5.19.tgz#f290e21fe7a4744d68bb4b0709e99ce490120e6e" - integrity sha512-ZAKqfvdU/+KFoCpf8aUba09F8mfSc8R2esq++Cha3E2DgwS5K/I/4eJ+0JylrVHZivgY7PSAeXFv/izP+81/MQ== + version "1.5.21" + resolved "https://registry.yarnpkg.com/@types/leaflet/-/leaflet-1.5.21.tgz#994c44f2bfc45744120f01924c8973c5e960e051" + integrity sha512-b+BOkwJDq6DK4m+jFUOHNCFinIkO4CF1MjnOwYgZFX+oElpYpXCCIsxZ3+zQWIRSLVUbRXvaQq2K935jGIyp7A== dependencies: "@types/geojson" "*" "@types/lodash@^4.14.141": - version "4.14.167" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.167.tgz#ce7d78553e3c886d4ea643c37ec7edc20f16765e" - integrity sha512-w7tQPjARrvdeBkX/Rwg95S592JwxqOjmms3zWQ0XZgSyxSLdzWaYH3vErBhdVS/lRBX7F8aBYcYJYTr5TMGOzw== + version "4.14.168" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008" + integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q== -"@types/mime@*": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.3.tgz#c893b73721db73699943bfc3653b1deb7faa4a3a" - integrity sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q== +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== "@types/minimatch@*": version "3.0.3" @@ -1455,9 +1479,9 @@ integrity sha512-6nlq2eEh75JegDGUXis9wGTYIJpUvbori4qx++PRKQsV3YRkaqUNPNykzphniqPSZADXCouBuAnyptjUkMkhvw== "@types/node@*", "@types/node@>=6": - version "14.14.20" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.20.tgz#f7974863edd21d1f8a494a73e8e2b3658615c340" - integrity sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A== + version "14.14.22" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18" + integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -1475,40 +1499,40 @@ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/prosemirror-inputrules@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/prosemirror-inputrules/-/prosemirror-inputrules-1.0.3.tgz#3f8f07921f692b6c7e4781fa426aee3e76b9018c" - integrity sha512-cxMkCcu/di8//68jWc/NrRpvpCbizgq9vqv4rCRsAiuSiJ8L5hf4aFlCBUYCffuQnrY98uOfJ8YAUY3dbtaF9A== + version "1.0.4" + resolved "https://registry.yarnpkg.com/@types/prosemirror-inputrules/-/prosemirror-inputrules-1.0.4.tgz#4cb75054d954aa0f6f42099be05eb6c0e6958bae" + integrity sha512-lJIMpOjO47SYozQybUkpV6QmfuQt7GZKHtVrvS+mR5UekA8NMC5HRIVMyaIauJLWhKU6oaNjpVaXdw41kh165g== dependencies: "@types/prosemirror-model" "*" "@types/prosemirror-state" "*" "@types/prosemirror-model@*", "@types/prosemirror-model@^1.7.2": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@types/prosemirror-model/-/prosemirror-model-1.11.1.tgz#f1258bfe8d6f2fb68a2f95b3af57e18e5868cbab" - integrity sha512-sAue1p9V/JjATX1JzQDFzW2ON8QEGUz3eMSpJX94oCr0CoAQgK4/kSM2funtQKy1GHd+xr7wZ509ykt49b+T1Q== + version "1.11.2" + resolved "https://registry.yarnpkg.com/@types/prosemirror-model/-/prosemirror-model-1.11.2.tgz#af7a9571a8d43ad433f0580099628627962cc11b" + integrity sha512-mohs15V+gxj10QWJGVooErzSE9ryTo1Wy92lULiQ0BSN5Po9K4vngPzfKmLft0+gAPbEghovTX+I2zQW3bZo1w== dependencies: "@types/orderedmap" "*" "@types/prosemirror-state@*", "@types/prosemirror-state@^1.2.4": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@types/prosemirror-state/-/prosemirror-state-1.2.5.tgz#a91304e9aab6e71f868e23b3a1ae514a75033f8f" - integrity sha512-a5DxAifiF6vmdSJ5jsDMkpykUgUJUy+T5Q5hCjFOKJ4cfd3m3q1lsFKr7Bc4r91Qb7rfqyiKCMDnASS8LIHrKw== + version "1.2.6" + resolved "https://registry.yarnpkg.com/@types/prosemirror-state/-/prosemirror-state-1.2.6.tgz#bb0169084239a8393b354c6fda5420fc347d6bab" + integrity sha512-tJo0wC+/cQvbrPDVx01Fnng9Fs41bAMVxgJY1KLOyIsUPN0otUN1KdoQurLMmHNHTvIna9ZXxjZD//xJKLYfJw== dependencies: "@types/prosemirror-model" "*" "@types/prosemirror-transform" "*" "@types/prosemirror-view" "*" "@types/prosemirror-transform@*": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/prosemirror-transform/-/prosemirror-transform-1.1.1.tgz#5a0de16e8e0123b4c3d9559235e19f39cee85e5c" - integrity sha512-yYCYSoiRH+Wcbl8GJc0PFCzeyMzNQ1vL2xrHHSXZuNcIlH75VoiKrZFeZ6BS9cl8mYXjZrlmdBe8YOxYvyKM6A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/prosemirror-transform/-/prosemirror-transform-1.1.2.tgz#fe883c19a5a9f1882346a294efd09d55c6764c7a" + integrity sha512-Ozyvs5Dquc49gaFysmC4gNhv6E65r569HSzw4RXdZgIljZ5Y9K4kHFlDvsWBBDH19+1178X9LMmM9J620O6Bug== dependencies: "@types/prosemirror-model" "*" "@types/prosemirror-view@*", "@types/prosemirror-view@^1.11.4": - version "1.17.0" - resolved "https://registry.yarnpkg.com/@types/prosemirror-view/-/prosemirror-view-1.17.0.tgz#7e283038730a67c35521c8dbc932765a70291edd" - integrity sha512-1OALGaiRmq3c+Y35QVrqqlEykWEszYYx08jAPBhYe6M+YbC6Y2LnmCDXjEOTI1oToJwoADHFPGHl4W59L3fgGg== + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/prosemirror-view/-/prosemirror-view-1.17.1.tgz#0895df5a57ae6e68d4f3f8020d9be4ef52192980" + integrity sha512-PNiGGc6BffxHQzMR09UUilsBR8xFPDsKiPIXb4K/g56voPIvqq1pqySnWFfSR50Vo4ZL0tss3VBLWiiiKzVahQ== dependencies: "@types/prosemirror-model" "*" "@types/prosemirror-state" "*" @@ -1537,11 +1561,11 @@ "@types/node" "*" "@types/serve-static@*": - version "1.13.8" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.8.tgz#851129d434433c7082148574ffec263d58309c46" - integrity sha512-MoJhSQreaVoL+/hurAZzIm8wafFR6ajiTM1m4A0kv6AGeVBl4r4pOV8bGFrjjq1sGxDTnCoF8i22o0/aE5XCyA== + version "1.13.9" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e" + integrity sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA== dependencies: - "@types/mime" "*" + "@types/mime" "^1" "@types/node" "*" "@types/sizzle@2.3.2": @@ -1581,6 +1605,11 @@ dependencies: source-map "^0.6.1" +"@types/ungap__global-this@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@types/ungap__global-this/-/ungap__global-this-0.3.1.tgz#18ce9f657da556037a29d50604335614ce703f4c" + integrity sha512-+/DsiV4CxXl6ZWefwHZDXSe1Slitz21tom38qPCaG0DYCS1NnDPIQDTKcmQ/tvK/edJUKkmuIDBJbmKDiB0r/g== + "@types/vuedraggable@^2.23.0": version "2.23.2" resolved "https://registry.yarnpkg.com/@types/vuedraggable/-/vuedraggable-2.23.2.tgz#643a10bc07a06760cbf5994aeb2f6b66f64af7da" @@ -1614,9 +1643,9 @@ source-map "^0.7.3" "@types/webpack@*", "@types/webpack@^4.0.0": - version "4.41.25" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.25.tgz#4d3b5aecc4e44117b376280fbfd2dc36697968c4" - integrity sha512-cr6kZ+4m9lp86ytQc1jPOJXgINQyz3kLLunZ57jznW+WIAL0JqZbGubQk4GlD42MuQL5JGOABrxdpqqWeovlVQ== + version "4.41.26" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.26.tgz#27a30d7d531e16489f9c7607c747be6bc1a459ef" + integrity sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA== dependencies: "@types/anymatch" "*" "@types/node" "*" @@ -1649,15 +1678,16 @@ resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.2.tgz#808c9fa7e4517274ed555fa158f2de4b4f468e71" integrity sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg== -"@typescript-eslint/eslint-plugin@^4.0.1": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.12.0.tgz#00d1b23b40b58031e6d7c04a5bc6c1a30a2e834a" - integrity sha512-wHKj6q8s70sO5i39H2g1gtpCXCvjVszzj6FFygneNFyIAxRvNSVz9GML7XpqrB9t7hNutXw+MHnLN/Ih6uyB8Q== +"@typescript-eslint/eslint-plugin@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.13.0.tgz#5f580ea520fa46442deb82c038460c3dd3524bb6" + integrity sha512-ygqDUm+BUPvrr0jrXqoteMqmIaZ/bixYOc3A4BRwzEPTZPi6E+n44rzNZWaB0YvtukgP+aoj0i/fyx7FkM2p1w== dependencies: - "@typescript-eslint/experimental-utils" "4.12.0" - "@typescript-eslint/scope-manager" "4.12.0" + "@typescript-eslint/experimental-utils" "4.13.0" + "@typescript-eslint/scope-manager" "4.13.0" debug "^4.1.1" functional-red-black-tree "^1.0.1" + lodash "^4.17.15" regexpp "^3.0.0" semver "^7.3.2" tsutils "^3.17.1" @@ -1673,18 +1703,28 @@ eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/experimental-utils@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.12.0.tgz#372838e76db76c9a56959217b768a19f7129546b" - integrity sha512-MpXZXUAvHt99c9ScXijx7i061o5HEjXltO+sbYfZAAHxv3XankQkPaNi5myy0Yh0Tyea3Hdq1pi7Vsh0GJb0fA== +"@typescript-eslint/experimental-utils@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.13.0.tgz#9dc9ab375d65603b43d938a0786190a0c72be44e" + integrity sha512-/ZsuWmqagOzNkx30VWYV3MNB/Re/CGv/7EzlqZo5RegBN8tMuPaBgNK6vPBCQA8tcYrbsrTdbx3ixMRRKEEGVw== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.12.0" - "@typescript-eslint/types" "4.12.0" - "@typescript-eslint/typescript-estree" "4.12.0" + "@typescript-eslint/scope-manager" "4.13.0" + "@typescript-eslint/types" "4.13.0" + "@typescript-eslint/typescript-estree" "4.13.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" +"@typescript-eslint/parser@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.13.0.tgz#c413d640ea66120cfcc37f891e8cb3fd1c9d247d" + integrity sha512-KO0J5SRF08pMXzq9+abyHnaGQgUJZ3Z3ax+pmqz9vl81JxmTTOUfQmq7/4awVfq09b6C4owNlOgOwp61pYRBSg== + dependencies: + "@typescript-eslint/scope-manager" "4.13.0" + "@typescript-eslint/types" "4.13.0" + "@typescript-eslint/typescript-estree" "4.13.0" + debug "^4.1.1" + "@typescript-eslint/parser@^3.0.0": version "3.10.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.10.1.tgz#1883858e83e8b442627e1ac6f408925211155467" @@ -1696,33 +1736,23 @@ "@typescript-eslint/typescript-estree" "3.10.1" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/parser@^4.0.1": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.12.0.tgz#e1cf30436e4f916c31fcc962158917bd9e9d460a" - integrity sha512-9XxVADAo9vlfjfoxnjboBTxYOiNY93/QuvcPgsiKvHxW6tOZx1W4TvkIQ2jB3k5M0pbFP5FlXihLK49TjZXhuQ== +"@typescript-eslint/scope-manager@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.13.0.tgz#5b45912a9aa26b29603d8fa28f5e09088b947141" + integrity sha512-UpK7YLG2JlTp/9G4CHe7GxOwd93RBf3aHO5L+pfjIrhtBvZjHKbMhBXTIQNkbz7HZ9XOe++yKrXutYm5KmjWgQ== dependencies: - "@typescript-eslint/scope-manager" "4.12.0" - "@typescript-eslint/types" "4.12.0" - "@typescript-eslint/typescript-estree" "4.12.0" - debug "^4.1.1" - -"@typescript-eslint/scope-manager@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.12.0.tgz#beeb8beca895a07b10c593185a5612f1085ef279" - integrity sha512-QVf9oCSVLte/8jvOsxmgBdOaoe2J0wtEmBr13Yz0rkBNkl5D8bfnf6G4Vhox9qqMIoG7QQoVwd2eG9DM/ge4Qg== - dependencies: - "@typescript-eslint/types" "4.12.0" - "@typescript-eslint/visitor-keys" "4.12.0" + "@typescript-eslint/types" "4.13.0" + "@typescript-eslint/visitor-keys" "4.13.0" "@typescript-eslint/types@3.10.1": version "3.10.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== -"@typescript-eslint/types@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.12.0.tgz#fb891fe7ccc9ea8b2bbd2780e36da45d0dc055e5" - integrity sha512-N2RhGeheVLGtyy+CxRmxdsniB7sMSCfsnbh8K/+RUIXYYq3Ub5+sukRCjVE80QerrUBvuEvs4fDhz5AW/pcL6g== +"@typescript-eslint/types@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.13.0.tgz#6a7c6015a59a08fbd70daa8c83dfff86250502f8" + integrity sha512-/+aPaq163oX+ObOG00M0t9tKkOgdv9lq0IQv/y4SqGkAXmhFmCfgsELV7kOCTb2vVU5VOmVwXBXJTDr353C1rQ== "@typescript-eslint/typescript-estree@3.10.1": version "3.10.1" @@ -1738,13 +1768,13 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/typescript-estree@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.12.0.tgz#3963418c850f564bdab3882ae23795d115d6d32e" - integrity sha512-gZkFcmmp/CnzqD2RKMich2/FjBTsYopjiwJCroxqHZIY11IIoN0l5lKqcgoAPKHt33H2mAkSfvzj8i44Jm7F4w== +"@typescript-eslint/typescript-estree@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.13.0.tgz#cf6e2207c7d760f5dfd8d18051428fadfc37b45e" + integrity sha512-9A0/DFZZLlGXn5XA349dWQFwPZxcyYyCFX5X88nWs2uachRDwGeyPz46oTsm9ZJE66EALvEns1lvBwa4d9QxMg== dependencies: - "@typescript-eslint/types" "4.12.0" - "@typescript-eslint/visitor-keys" "4.12.0" + "@typescript-eslint/types" "4.13.0" + "@typescript-eslint/visitor-keys" "4.13.0" debug "^4.1.1" globby "^11.0.1" is-glob "^4.0.1" @@ -1759,35 +1789,40 @@ dependencies: eslint-visitor-keys "^1.1.0" -"@typescript-eslint/visitor-keys@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.12.0.tgz#a470a79be6958075fa91c725371a83baf428a67a" - integrity sha512-hVpsLARbDh4B9TKYz5cLbcdMIOAoBYgFPCSP9FFS/liSF+b33gVNq8JHY3QGhHNVz85hObvL7BEYLlgx553WCw== +"@typescript-eslint/visitor-keys@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.13.0.tgz#9acb1772d3b3183182b6540d3734143dce9476fe" + integrity sha512-6RoxWK05PAibukE7jElqAtNMq+RWZyqJ6Q/GdIxaiUj2Ept8jh8+FUVlbq9WxMYxkmEOPvCE5cRSyupMpwW31g== dependencies: - "@typescript-eslint/types" "4.12.0" + "@typescript-eslint/types" "4.13.0" eslint-visitor-keys "^2.0.0" +"@ungap/global-this@^0.4.2": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@ungap/global-this/-/global-this-0.4.4.tgz#8a1b2cfcd3e26e079a847daba879308c924dd695" + integrity sha512-mHkm6FvepJECMNthFuIgpAEFmPOk71UyXuIxYfjytvFTnSDBIz7jmViO+LfHI/AjrazWije0PnSP3+/NlwzqtA== + "@vue/babel-helper-vue-jsx-merge-props@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz#31624a7a505fb14da1d58023725a4c5f270e6a81" integrity sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA== -"@vue/babel-helper-vue-transform-on@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.0.tgz#8cbec6bbcae53626ad70139061be5e73403c9a62" - integrity sha512-svFuKPoXP92TJ76ztENOglOsLjcMGUXkdeQhYDxl6KBnZCpqFjqx6RodUPWFg1bj4zsUVsfoIh1RibLO86fUUQ== +"@vue/babel-helper-vue-transform-on@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz#9b9c691cd06fc855221a2475c3cc831d774bc7dc" + integrity sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA== "@vue/babel-plugin-jsx@^1.0.0-0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.0.1.tgz#8ece4e521888fabe2c96adca428606e5cea55f54" - integrity sha512-pE1YlINZBzqaLeSNfrvo0nNvYjtWTBU+sXUrx65sLW7DL+nDCZcAVeVkMFDcpT1jIahx4hI3EzOcGZE6oLPLoA== + version "1.0.2" + resolved "https://registry.yarnpkg.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.0.2.tgz#6bfd8e39c48e53391a56705649f81a35fe20b6a1" + integrity sha512-1uZlQCLCeuqJgDYLCmg3qfsvTVtOQiXh278ES4bvPTYYbv2Bi/rElLETK6AdjI9xxzyTUf5n1QEiH8Xxz0eZrg== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.0.0" "@babel/template" "^7.0.0" "@babel/traverse" "^7.0.0" "@babel/types" "^7.0.0" - "@vue/babel-helper-vue-transform-on" "^1.0.0" + "@vue/babel-helper-vue-transform-on" "^1.0.2" camelcase "^6.0.0" html-tags "^3.1.0" svg-tags "^1.0.0" @@ -2271,6 +2306,13 @@ "@types/node" ">=6" tslib "^1.9.3" +"@wry/context@^0.5.2": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.5.3.tgz#537db8a5b51f98507dc38f869b3a48c672f48942" + integrity sha512-n0uKHiWpf2ArHhmcHcUsKA+Dj0gtye/h56VmsDcoMRuK/ZPFeHKi8ck5L/ftqtF12ZbQR9l8xMPV7y+xybaRDA== + dependencies: + tslib "^1.14.1" + "@wry/equality@^0.1.2": version "0.1.11" resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.1.11.tgz#35cb156e4a96695aa81a9ecc4d03787bc17f1790" @@ -2278,6 +2320,20 @@ dependencies: tslib "^1.9.3" +"@wry/equality@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.3.1.tgz#81080cdc2e0d8265cd303faa0c64b38a77884e06" + integrity sha512-8/Ftr3jUZ4EXhACfSwPIfNsE8V6WKesdjp+Dxi78Bej6qlasAxiz0/F8j0miACRj9CL4vC5Y5FsfwwEYAuhWbg== + dependencies: + tslib "^1.14.1" + +"@wry/trie@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.2.1.tgz#4191e1d4a85dd77dfede383d65563138ed82fc47" + integrity sha512-sYkuXZqArky2MLQCv4tLW6hX3N8AfTZ5ZMBc8jC6Yy35WYr82UYLLtjS7k/uRGHOA0yTSjuNadG6QQ6a5CS5hQ== + dependencies: + tslib "^1.14.1" + "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -2485,15 +2541,12 @@ anymatch@~3.1.1: picomatch "^2.0.4" apollo-absinthe-upload-link@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/apollo-absinthe-upload-link/-/apollo-absinthe-upload-link-1.6.0.tgz#f5ef9f4959947abdc1b1f76c5e4a4fae2fdd2866" - integrity sha512-nzxgVbP72btvC1bFpVDuYXPkLNsZa6z3GJvwOLzvBNm42AWhE9usupbdw99yGC37FIDOPza6mAFBg0qiDaEFQA== + version "1.7.0" + resolved "https://registry.yarnpkg.com/apollo-absinthe-upload-link/-/apollo-absinthe-upload-link-1.7.0.tgz#74e76ef510cd6bbf24809f764220280c9e5179e9" + integrity sha512-Dt5R6OkN2xigCaN1WHjpgyf5M5Tx5wFJMF4zA4J72Bjd990ImXhoCT/Gs2Cl8S0lXchpP2BndJSJN7MrSJz2CA== dependencies: - apollo-client "^2.0.4" - apollo-link "^1.0.7" - apollo-link-http "^1.3.2" - apollo-link-http-common "^0.2.4" - graphql "0.11.3" + "@apollo/client" "^3.0.0" + graphql "^15.0.0" rxjs "~6.2.2" apollo-cache-inmemory@^1.6.6: @@ -2515,7 +2568,7 @@ apollo-cache@1.3.5, apollo-cache@^1.3.5: apollo-utilities "^1.3.4" tslib "^1.10.0" -apollo-client@^2.0.4, apollo-client@^2.6.10: +apollo-client@^2.6.10: version "2.6.10" resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.6.10.tgz#86637047b51d940c8eaa771a4ce1b02df16bea6a" integrity sha512-jiPlMTN6/5CjZpJOkGeUV0mb4zxx33uXWdj/xQCfAMkuNAC3HN7CvYDyMHHEzmcQ5GV12LszWoQ/VlxET24CtA== @@ -2538,7 +2591,7 @@ apollo-link-error@^1.1.13: apollo-link-http-common "^0.2.16" tslib "^1.9.3" -apollo-link-http-common@^0.2.16, apollo-link-http-common@^0.2.4: +apollo-link-http-common@^0.2.16: version "0.2.16" resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz#756749dafc732792c8ca0923f9a40564b7c59ecc" integrity sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg== @@ -2547,7 +2600,7 @@ apollo-link-http-common@^0.2.16, apollo-link-http-common@^0.2.4: ts-invariant "^0.4.0" tslib "^1.9.3" -apollo-link-http@^1.3.2, apollo-link-http@^1.5.17: +apollo-link-http@^1.5.17: version "1.5.17" resolved "https://registry.yarnpkg.com/apollo-link-http/-/apollo-link-http-1.5.17.tgz#499e9f1711bf694497f02c51af12d82de5d8d8ba" integrity sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg== @@ -2572,7 +2625,7 @@ apollo-link@1.2.5: apollo-utilities "^1.0.0" zen-observable-ts "^0.8.12" -apollo-link@^1.0.0, apollo-link@^1.0.7, apollo-link@^1.2.14: +apollo-link@^1.0.0, apollo-link@^1.2.14: version "1.2.14" resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.14.tgz#3feda4b47f9ebba7f4160bef8b977ba725b684d9" integrity sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg== @@ -3184,7 +3237,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.0: +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.1: version "4.16.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766" integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA== @@ -3364,10 +3417,10 @@ cachedir@1.3.0: dependencies: os-homedir "^1.0.1" -call-bind@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.1.tgz#29aca9151f8ddcfd5b9b786898f005f425e88567" - integrity sha512-tvAvUwNcRikl3RVF20X9lsYmmepsovzTWeJiXjO0PkJp15uy/6xKFZOQtuiSULwYW+6ToZBprphCgWXC2dSgcQ== +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: function-bind "^1.1.1" get-intrinsic "^1.0.2" @@ -3435,9 +3488,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001173: - version "1.0.30001174" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001174.tgz#0f2aca2153fd88ceb07a2bb982fc2acb787623c4" - integrity sha512-tqClL/4ThQq6cfFXH3oJL4rifFBeM6gTkphjao5kgwMaW9yn0tKgQLAEfKzDwj6HQWCB/aWo8kTFlSvIN8geEA== + version "1.0.30001178" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001178.tgz#3ad813b2b2c7d585b0be0a2440e1e233c6eabdbc" + integrity sha512-VtdZLC0vsXykKni8Uztx45xynytOi71Ufx9T8kHptSw9AL4dpqailUJJHavttuzUe1KYuBYtChiWv+BAb7mPmQ== capture-exit@^2.0.0: version "2.0.0" @@ -3500,9 +3553,9 @@ check-types@^8.0.3: integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== "chokidar@>=2.0.0 <4.0.0", chokidar@^3.3.0, chokidar@^3.4.1: - version "3.5.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.0.tgz#458a4816a415e9d3b3caa4faec2b96a6935a9e65" - integrity sha512-JgQM9JS92ZbFR4P90EvmzNpSGhpPBGBSj10PILeDyYFwp4h2/D9OM03wsJ4zW1fEp4ka2DGrnUeD7FuvQ2aZ2Q== + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== dependencies: anymatch "~3.1.1" braces "~3.0.2" @@ -3950,11 +4003,11 @@ copy-webpack-plugin@^5.1.1: webpack-log "^2.0.0" core-js-compat@^3.6.5, core-js-compat@^3.8.0: - version "3.8.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.2.tgz#3717f51f6c3d2ebba8cbf27619b57160029d1d4c" - integrity sha512-LO8uL9lOIyRRrQmZxHZFl1RV+ZbcsAkFWTktn5SmH40WgLtSNYN4m4W2v9ONT147PxBY/XrRhrWq8TlvObyUjQ== + version "3.8.3" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.3.tgz#9123fb6b9cad30f0651332dc77deba48ef9b0b3f" + integrity sha512-1sCb0wBXnBIL16pfFG1Gkvei6UzvKyTNYpiC41yrdjEv0UoJoq9E/abTMzyYJ6JpTkAj15dLjbqifIzEBDVvog== dependencies: - browserslist "^4.16.0" + browserslist "^4.16.1" semver "7.0.0" core-js@2.6.0: @@ -3968,9 +4021,9 @@ core-js@^2.4.0, core-js@^2.5.0: integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.6.4, core-js@^3.6.5: - version "3.8.2" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.2.tgz#0a1fd6709246da9ca8eff5bb0cbd15fba9ac7044" - integrity sha512-FfApuSRgrR6G5s58casCBd9M2k+4ikuu4wbW6pJyYU7bd9zvFc9qf7vr5xmrZOhT9nn+8uwlH1oRR9jTnFoA3A== + version "3.8.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.3.tgz#c21906e1f14f3689f93abcc6e26883550dd92dd0" + integrity sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -4723,9 +4776,9 @@ ejs@^2.6.1: integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== electron-to-chromium@^1.3.634: - version "1.3.635" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.635.tgz#8d1591eeca6b257d380061a2c04f0b3cc6c9e33b" - integrity sha512-RRriZOLs9CpW6KTLmgBqyUdnY0QNqqWs0HOtuQGGEMizOTNNn1P7sGRBxARnUeLejOsgwjDyRqT3E/CSst02ZQ== + version "1.3.642" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.642.tgz#8b884f50296c2ae2a9997f024d0e3e57facc2b94" + integrity sha512-cev+jOrz/Zm1i+Yh334Hed6lQVOkkemk2wRozfMF4MtTR7pxf3r3L5Rbd7uX1zMcEqVJ7alJBnJL7+JffkC6FQ== elegant-spinner@^1.0.1: version "1.0.1" @@ -4777,10 +4830,10 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.1, enhanced-resolve@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" - integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== +enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== dependencies: graceful-fs "^4.1.2" memory-fs "^0.5.0" @@ -4824,7 +4877,7 @@ error-stack-parser@^2.0.2: dependencies: stackframe "^1.1.1" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: +es-abstract@^1.17.2: version "1.17.7" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== @@ -4842,22 +4895,24 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: string.prototype.trimstart "^1.0.1" es-abstract@^1.18.0-next.1: - version "1.18.0-next.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" - integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== + version "1.18.0-next.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" + integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== dependencies: + call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" + get-intrinsic "^1.0.2" has "^1.0.3" has-symbols "^1.0.1" is-callable "^1.2.2" - is-negative-zero "^2.0.0" + is-negative-zero "^2.0.1" is-regex "^1.1.1" - object-inspect "^1.8.0" + object-inspect "^1.9.0" object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.3" + string.prototype.trimstart "^1.0.3" es-to-primitive@^1.2.1: version "1.2.1" @@ -4908,9 +4963,9 @@ eslint-config-prettier@^6.0.0: get-stdin "^6.0.0" eslint-config-prettier@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz#5402eb559aa94b894effd6bddfa0b1ca051c858f" - integrity sha512-9sm5/PxaFG7qNJvJzTROMM1Bk1ozXVTKI0buKOyb0Bsr1hrwi0H/TzxF/COtf1uxikIK8SwhX7K6zg78jAzbeA== + version "7.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz#f4a4bd2832e810e8cc7c1411ec85b3e85c0c53f9" + integrity sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg== eslint-loader@^2.2.1: version "2.2.1" @@ -4981,12 +5036,12 @@ eslint-visitor-keys@^2.0.0: integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== eslint@^7.7.0, eslint@^7.9.0: - version "7.17.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.17.0.tgz#4ccda5bf12572ad3bf760e6f195886f50569adb0" - integrity sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ== + version "7.18.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.18.0.tgz#7fdcd2f3715a41fe6295a16234bd69aed2c75e67" + integrity sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ== dependencies: "@babel/code-frame" "^7.0.0" - "@eslint/eslintrc" "^0.2.2" + "@eslint/eslintrc" "^0.3.0" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -5010,7 +5065,7 @@ eslint@^7.7.0, eslint@^7.9.0: js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" - lodash "^4.17.19" + lodash "^4.17.20" minimatch "^3.0.4" natural-compare "^1.4.0" optionator "^0.9.1" @@ -5368,9 +5423,9 @@ fast-glob@^2.2.6: micromatch "^3.1.10" fast-glob@^3.1.1: - version "3.2.4" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" - integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== + version "3.2.5" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" + integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -5583,9 +5638,9 @@ flat-cache@^3.0.4: rimraf "^3.0.2" flatted@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067" - integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA== + version "3.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== flow-static-land@0.2.7: version "0.2.7" @@ -5725,14 +5780,14 @@ fs-extra@^8.1.0: universalify "^0.1.0" fs-extra@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^1.0.0" + universalify "^2.0.0" fs-minipass@^2.0.0: version "2.1.0" @@ -5997,18 +6052,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== -graphql-tag@^2.10.3: +graphql-tag@^2.10.3, graphql-tag@^2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.11.0.tgz#1deb53a01c46a7eb401d6cb59dec86fa1cccbffd" integrity sha512-VmsD5pJqWJnQZMUeRwrDhfgoyqcfwEkvtpANqcoUG8/tOLkwNgU9mzub/Mc78OJMhHjx7gfAMTxzdG43VGg3bA== -graphql@0.11.3: - version "0.11.3" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.11.3.tgz#9934e2df28f17d397a85f83cb39d1d179bffef47" - integrity sha512-/WGU673BlQaCw3gDECmqL5+l8kg4Sm3XHvuzPtZLiI/y8Xm7fKq+C0mtJmAImuHJvTBsMtCuX/R9BUQqPm4tzw== - dependencies: - iterall "^1.1.0" - graphql@14.0.2: version "14.0.2" resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.0.2.tgz#7dded337a4c3fd2d075692323384034b357f5650" @@ -6168,6 +6216,13 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + homedir-polyfill@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" @@ -6772,7 +6827,7 @@ is-module@^1.0.0: resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= -is-negative-zero@^2.0.0: +is-negative-zero@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== @@ -6987,7 +7042,7 @@ istanbul-reports@^2.2.6: dependencies: html-escaper "^2.0.0" -iterall@^1.1.0, iterall@^1.2.2: +iterall@^1.2.2: version "1.3.0" resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== @@ -7427,9 +7482,9 @@ js-base64@^2.1.9: integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== js-beautify@^1.6.12, js-beautify@^1.6.14: - version "1.13.1" - resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.13.1.tgz#5b9879672beaaa26d0dc25b8fd9a52944e2985e8" - integrity sha512-RGc3cSmQR3xPzTtIFAMwHK0R84MwDNpxpZgoQGySGdzShfNjBjHXqz99kMFwXDGlMSFVJVlsUXBFfqKUzJbzUg== + version "1.13.4" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.13.4.tgz#1cad80b9e89cfc455b3a14f0eaf4dc10b6ae1206" + integrity sha512-M5yEWwonlEO3kPcCZ3K3KBSpFRZAEO3FAWC6wtbIGeyg7dusStxvF0WG+HRLBoMZqREXSRSxkkqClDE865x1sg== dependencies: config-chain "^1.1.12" editorconfig "^0.15.3" @@ -7958,7 +8013,7 @@ loglevel@^1.4.1, loglevel@^1.6.8: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== -loose-envify@^1.0.0: +loose-envify@^1.0.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -8204,9 +8259,9 @@ mime@1.6.0: integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.4.4: - version "2.4.7" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.7.tgz#962aed9be0ed19c91fd7dc2ece5d7f4e89a90d74" - integrity sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA== + version "2.5.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.0.tgz#2b4af934401779806ee98026bb42e8c1ae1876b1" + integrity sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag== mimic-fn@^1.0.0: version "1.2.0" @@ -8336,10 +8391,10 @@ mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mock-apollo-client@^0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/mock-apollo-client/-/mock-apollo-client-0.4.0.tgz#556a6090b1816dbf07e51093b652aca84aee979e" - integrity sha512-cHznpkX8uUClkWWJMpgdDWzEgjacM85xt69S9gPLrssM8Vahas0QmEJkFUycrRQyBkaqxvRe58Bg3a5pOvj2zA== +mock-apollo-client@^0.5: + version "0.5.0" + resolved "https://registry.yarnpkg.com/mock-apollo-client/-/mock-apollo-client-0.5.0.tgz#8f0d6a1ba0d349ebde87a1dcd85c7fd353076922" + integrity sha512-qdMUt1NhmNXLjHd/IaHbvbX5LaEE91WZB4glfj7AfUUs413/z148kBuXKg6XpMZqvJr+XdR/9i1V+YGY7UnCKA== moment@2.24.0: version "2.24.0" @@ -8537,9 +8592,9 @@ node-notifier@^5.4.2: which "^1.3.0" node-releases@^1.1.69: - version "1.1.69" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.69.tgz#3149dbde53b781610cd8b486d62d86e26c3725f6" - integrity sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA== + version "1.1.70" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08" + integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw== nopt@^5.0.0: version "5.0.0" @@ -8655,7 +8710,7 @@ object-hash@^1.1.4: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== -object-inspect@^1.8.0: +object-inspect@^1.8.0, object-inspect@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== @@ -8680,7 +8735,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0, object.assign@^4.1.1: +object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== @@ -8785,6 +8840,14 @@ optimism@^0.10.0: dependencies: "@wry/context" "^0.4.0" +optimism@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.14.0.tgz#256fb079a3428585b40a3a8462f907e0abd2fc49" + integrity sha512-ygbNt8n4DOCVpkwiLF+IrKKeNHOjtr9aXLWGP9HNJGoblSGsnVbJLstcH6/nE9Xy5ZQtlkSioFQNnthmENW6FQ== + dependencies: + "@wry/context" "^0.5.2" + "@wry/trie" "^0.2.1" + optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -8978,9 +9041,9 @@ parse-json@^4.0.0: json-parse-better-errors "^1.0.1" parse-json@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" - integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" error-ex "^1.3.1" @@ -9196,7 +9259,7 @@ pnp-webpack-plugin@^1.6.4: dependencies: ts-pnp "^1.1.6" -popper.js@^1.15.0: +popper.js@^1.16.0: version "1.16.1" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== @@ -9734,6 +9797,15 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" +prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + prosemirror-collab@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/prosemirror-collab/-/prosemirror-collab-1.2.2.tgz#8d2c0e82779cfef5d051154bd0836428bd6d9c4a" @@ -9741,7 +9813,7 @@ prosemirror-collab@^1.2.2: dependencies: prosemirror-state "^1.0.0" -prosemirror-commands@1.1.4, prosemirror-commands@^1.1.4: +prosemirror-commands@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.1.4.tgz#991563e67623acab4f8c510fad1570f8b4693780" integrity sha512-kj4Qi+8h3EpJtZuuEDwZ9h2/QNGWDsIX/CzjmClxi9GhxWyBUMVUvIFk0mgdqHyX20lLeGmOpc0TLA5aPzgpWg== @@ -9750,6 +9822,15 @@ prosemirror-commands@1.1.4, prosemirror-commands@^1.1.4: prosemirror-state "^1.0.0" prosemirror-transform "^1.0.0" +prosemirror-commands@^1.1.4: + version "1.1.5" + resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.1.5.tgz#3f07a5b13e424ad8728168b6b45e1b17e47c2b81" + integrity sha512-4CKAnDxLTtUHpjRZZVEF/LLMUYh7NbS3Ze3mP5UEAgar4WRWQYg3Js01wnp/GMqaZueNHhsp9UVvOrAK+7DWbQ== + dependencies: + prosemirror-model "^1.0.0" + prosemirror-state "^1.0.0" + prosemirror-transform "^1.0.0" + prosemirror-dropcursor@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.3.2.tgz#28738c4ed7102e814d7a8a26d70018523fc7cd6d" @@ -9794,10 +9875,10 @@ prosemirror-keymap@1.1.4, prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2: prosemirror-state "^1.0.0" w3c-keyname "^2.2.0" -prosemirror-model@1.13.1, prosemirror-model@1.9.1, prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.13.1, prosemirror-model@^1.8.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.9.1.tgz#8c08cf556f593c5f015548d2c1a6825661df087f" - integrity sha512-Qblh8pm1c7Ll64sYLauwwzjimo/tFg1zW3Q3IWhKRhvfOEgRKqa6dC5pRrAa+XHOIjBFEYrqbi52J5bqA2dV8Q== +prosemirror-model@1.13.1, prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.13.1, prosemirror-model@^1.8.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.13.1.tgz#fa3dc888cf6928bd3968620588ffe6458d201f9f" + integrity sha512-PNH+b5bilAJi1B5yJ8QzoNY3ZV+nlD0jKG3XCBk7PmE/YUTJomBkFBS005vfU+3M9yeVR8/6spAEDsfVFUhNeQ== dependencies: orderedmap "^1.1.0" @@ -9829,9 +9910,9 @@ prosemirror-tables@^1.1.1: prosemirror-view "^1.13.3" prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.2.1, prosemirror-transform@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.2.8.tgz#4b86544fa43637fe381549fb7b019f4fb71fe65c" - integrity sha512-hKqceqv9ZmMQXNQkhFjr0KFGPvkhygaWND+uIM0GxRpALrKfxP97SsgHTBs3OpJhDmh5N+mB4D/CksB291Eavg== + version "1.2.9" + resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.2.9.tgz#dfa048102c12a457deaf4c60ae633ac3eaacc7c9" + integrity sha512-oiocfgn7J7Fulvl7luBsyxdAf0CJp96+0FIcqhHSvYVr/R4KqZNxXcU9xESaI9Xw+tTvDUiiS3gedVk3AOic4w== dependencies: prosemirror-model "^1.0.0" @@ -9850,9 +9931,9 @@ prosemirror-view@1.16.5: prosemirror-transform "^1.1.0" prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.16.5: - version "1.17.1" - resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.17.1.tgz#468616c889d33bc268a9b57451a49acbfebe942f" - integrity sha512-n56IjZoJKEQYTh43KVmXMwJPQ+q4jEoPK7vhrb86Q//NxvNdzXWBPM0O8RhMD0wZBZS87WA+TQbftLq4p9WGrg== + version "1.17.2" + resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.17.2.tgz#666c865ae79e129a8933112bdcdf218a42c5a3b5" + integrity sha512-8jHmdl1q/Mvjfv185I5FldBitkkVpNOIK0Z/jIuan4cZIqXRpKu7DxxeLrTouJDzgrf1kWvfG/szEb6Bg9/4dA== dependencies: prosemirror-model "^1.1.0" prosemirror-state "^1.0.0" @@ -10011,7 +10092,7 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -react-is@^16.8.4: +react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -10141,12 +10222,12 @@ regex-not@^1.0.0, regex-not@^1.0.2: safe-regex "^1.1.0" regexp.prototype.flags@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" regexpp@^3.0.0, regexpp@^3.1.0: version "3.1.0" @@ -10555,9 +10636,9 @@ sane@^4.0.3: walker "~1.0.5" sass-loader@^10.0.1: - version "10.1.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.1.0.tgz#1727fcc0c32ab3eb197cda61d78adf4e9174a4b3" - integrity sha512-ZCKAlczLBbFd3aGAhowpYEy69Te3Z68cg8bnHHl6WnSCvnKpbM6pQrz957HWMa8LKVuhnD9uMplmMAHwGQtHeg== + version "10.1.1" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.1.1.tgz#4ddd5a3d7638e7949065dd6e9c7c04037f7e663d" + integrity sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw== dependencies: klona "^2.0.4" loader-utils "^2.0.0" @@ -10566,9 +10647,9 @@ sass-loader@^10.0.1: semver "^7.3.2" sass@^1.29.0: - version "1.32.2" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.2.tgz#66dc0250bc86c15d19ddee7135e93d0cf3d3257b" - integrity sha512-u1pUuzqwz3SAgvHSWp1k0mRhX82b2DdlVnP6UIetQPZtYbuJUDaPQhZE12jyjB7vYeOScfz9WPsZJB6Rpk7heA== + version "1.32.5" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.5.tgz#2882d22ad5748c05fa9bff6c3b0ffbc4f4b9e1dc" + integrity sha512-kU1yJ5zUAmPxr7f3q0YXTAd1oZjSR1g3tYyv+xu0HZSl5JiNOaE987eiz7wCUvbm4I9fGWGU2TgApTtcP4GMNQ== dependencies: chokidar ">=2.0.0 <4.0.0" @@ -10884,10 +10965,10 @@ sort-keys@^1.0.0: dependencies: is-plain-obj "^1.0.0" -sortablejs@^1.10.1: - version "1.13.0" - resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.13.0.tgz#3ab2473f8c69ca63569e80b1cd1b5669b51269e9" - integrity sha512-RBJirPY0spWCrU5yCmWM1eFs/XgX2J5c6b275/YyxFRgnzPhKl/TDeU2hNR8Dt7ITq66NRPM4UlOt+e5O4CFHg== +sortablejs@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.10.2.tgz#6e40364d913f98b85a14f6678f92b5c1221f5290" + integrity sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A== source-list-map@^2.0.0: version "2.0.1" @@ -11157,7 +11238,7 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.trimend@^1.0.1: +string.prototype.trimend@^1.0.1, string.prototype.trimend@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== @@ -11165,7 +11246,7 @@ string.prototype.trimend@^1.0.1: call-bind "^1.0.0" define-properties "^1.1.3" -string.prototype.trimstart@^1.0.1: +string.prototype.trimstart@^1.0.1, string.prototype.trimstart@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== @@ -11388,6 +11469,11 @@ symbol-observable@^1.0.2: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== +symbol-observable@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" + integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA== + symbol-tree@^3.2.2: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -11565,7 +11651,7 @@ tiptap-commands@^1.16.0: prosemirror-utils "^0.9.6" tiptap-utils "^1.12.0" -tiptap-extensions@^1.29.1: +tiptap-extensions@^1.34.0: version "1.34.0" resolved "https://registry.yarnpkg.com/tiptap-extensions/-/tiptap-extensions-1.34.0.tgz#59889315ebb843c2b7a7326090a0f5ec13873bd0" integrity sha512-aKTGGPW6dWdVQfyXnuG4KLF+wWE5h7RZYCY72VkaybE1xft2lVcMvWl5G1wi4mvo9RVZYR8SJSGFzLsWLetOkg== @@ -11593,7 +11679,7 @@ tiptap-utils@^1.12.0: prosemirror-tables "^1.1.1" prosemirror-utils "^0.9.6" -tiptap@^1.26.0, tiptap@^1.31.0: +tiptap@^1.31.0: version "1.31.0" resolved "https://registry.yarnpkg.com/tiptap/-/tiptap-1.31.0.tgz#298775603b5e16afe36448c486a2bd1e63ffa690" integrity sha512-FY0juyY7yQwASvGKzle9ndCXlqMzBHZxUQDx2ybI8ghWVNavkMWUUDa+QGbscITYlQc2y43G0QEOqhzzZGLZ7g== @@ -11734,6 +11820,15 @@ ts-invariant@^0.4.0: dependencies: tslib "^1.9.3" +ts-invariant@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.6.0.tgz#44066ecfeb7a806ff1c3b0b283408a337a885412" + integrity sha512-caoafsfgb8QxdrKzFfjKt627m4i8KTtfAiji0DYJfWI4A/S9ORNNpzYuD9br64kyKFgxn9UNaLLbSupam84mCA== + dependencies: + "@types/ungap__global-this" "^0.3.1" + "@ungap/global-this" "^0.4.2" + tslib "^1.9.3" + ts-jest@^24.2.0: version "24.3.0" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.3.0.tgz#b97814e3eab359ea840a1ac112deae68aa440869" @@ -11776,7 +11871,7 @@ tsconfig@^7.0.0: strip-bom "^3.0.0" strip-json-comments "^2.0.0" -tslib@^1.10.0, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: +tslib@^1.10.0, tslib@^1.14.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -11975,11 +12070,6 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -universalify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" - integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== - universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" @@ -12130,14 +12220,14 @@ uuid@^3.3.2, uuid@^3.3.3, uuid@^3.4.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -v-tooltip@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/v-tooltip/-/v-tooltip-2.0.2.tgz#8610d9eece2cc44fd66c12ef2f12eec6435cab9b" - integrity sha512-xQ+qzOFfywkLdjHknRPgMMupQNS8yJtf9Utd5Dxiu/0n4HtrxqsgDtN2MLZ0LKbburtSAQgyypuE/snM8bBZhw== +v-tooltip@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/v-tooltip/-/v-tooltip-2.1.2.tgz#5d3cd0c13eecdd365a0ad734b2f6c938bc8f7885" + integrity sha512-6c4NotnvDvinmZnBiqW50Rn6Q3MMk+pUV9Nla+JHkgJulgXh5snrU3RYbIZVf9p2ZlFoaZL/3QhTNgcQIc2GFQ== dependencies: - lodash "^4.17.11" - popper.js "^1.15.0" - vue-resize "^0.4.5" + lodash "^4.17.15" + popper.js "^1.16.0" + vue-resize "^1.0.0" v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: version "2.2.0" @@ -12242,9 +12332,9 @@ vue-i18n-extract@^1.0.2: js-yaml "^3.14.0" vue-i18n@^8.14.0: - version "8.22.3" - resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.22.3.tgz#4ac0fdc3e71d4fe188938c40a9ffca32cde60732" - integrity sha512-Vhyx7sZEmmW/aZLkzSlXei08Rv3hTondx4J9wbOjnThocTIK1QiXV6QRdT4BTnhT24JixDSf6kGkxqCXSaJ3Jw== + version "8.22.4" + resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.22.4.tgz#255cbdab4ffa7337c5819b82dd171208af74e385" + integrity sha512-XLI5s0AdqMP2Lf4I4CmdmOq8kjb5DDFGR77wAuxCfpEuYSfhTRyyx6MetgZMiL6Lxa0DasjBOiOcciU3NkL3/Q== vue-jest@^3.0.5: version "3.0.7" @@ -12295,10 +12385,10 @@ vue-property-decorator@^9.0.0: resolved "https://registry.yarnpkg.com/vue-property-decorator/-/vue-property-decorator-9.1.2.tgz#266a2eac61ba6527e2e68a6933cfb98fddab5457" integrity sha512-xYA8MkZynPBGd/w5QFJ2d/NM0z/YeegMqYTphy7NJQXbZcuU6FC6AOdUAcy4SXP+YnkerC6AfH+ldg7PDk9ESQ== -vue-resize@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/vue-resize/-/vue-resize-0.4.5.tgz#4777a23042e3c05620d9cbda01c0b3cc5e32dcea" - integrity sha512-bhP7MlgJQ8TIkZJXAfDf78uJO+mEI3CaLABLjv0WNzr4CcGRGPIAItyWYnP6LsPA4Oq0WE+suidNs6dgpO4RHg== +vue-resize@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/vue-resize/-/vue-resize-1.0.0.tgz#380565b36e411190d85f8fbd3aa230a4cc22f1a5" + integrity sha512-SkIi19neeJClapYavfmHiewFZkkTfITVWskg/dIL8b1Eb+RlvnCb8fjGUwLjQJmsw2qsRiiAo4o7BAJVM4pcOA== vue-router@^3.1.6: version "3.4.9" @@ -12351,12 +12441,12 @@ vue@^2.0.0, vue@^2.6.11: resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.12.tgz#f5ebd4fa6bd2869403e29a896aed4904456c9123" integrity sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg== -vuedraggable@2.23.2: - version "2.23.2" - resolved "https://registry.yarnpkg.com/vuedraggable/-/vuedraggable-2.23.2.tgz#0d95d7fdf4f02f56755a26b3c9dca5c7ca9cfa72" - integrity sha512-PgHCjUpxEAEZJq36ys49HfQmXglattf/7ofOzUrW2/rRdG7tu6fK84ir14t1jYv4kdXewTEa2ieKEAhhEMdwkQ== +vuedraggable@^2.24.3: + version "2.24.3" + resolved "https://registry.yarnpkg.com/vuedraggable/-/vuedraggable-2.24.3.tgz#43c93849b746a24ce503e123d5b259c701ba0d19" + integrity sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g== dependencies: - sortablejs "^1.10.1" + sortablejs "1.10.2" w3c-hr-time@^1.0.1: version "1.0.2" @@ -12479,9 +12569,9 @@ webpack-dev-middleware@^3.7.2: webpack-log "^2.0.0" webpack-dev-server@^3.11.0: - version "3.11.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz#c74028bf5ba8885aaf230e48a20e8936ab8511f0" - integrity sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ== + version "3.11.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz#695ebced76a4929f0d5de7fd73fafe185fe33708" + integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -12541,9 +12631,9 @@ webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack- source-map "~0.6.1" webpack@^4.0.0: - version "4.45.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.45.0.tgz#bcdc1ddb43959adb47f8974e60d944027267c1be" - integrity sha512-JhDaVi4CbRcwLLAoqC7eugMSMJnZbIfE2AyjaZ19pnOIh/R2O/lXOiXA2tQFN0iXEcxgpPJsPJHW2wOWqiTLcw== + version "4.46.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" + integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-module-context" "1.9.0" @@ -12553,7 +12643,7 @@ webpack@^4.0.0: ajv "^6.10.2" ajv-keywords "^3.4.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.3.0" + enhanced-resolve "^4.5.0" eslint-scope "^4.0.3" json-parse-better-errors "^1.0.2" loader-runner "^2.4.0" @@ -13001,7 +13091,7 @@ zen-observable@0.8.11: resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.11.tgz#d3415885eeeb42ee5abb9821c95bb518fcd6d199" integrity sha512-N3xXQVr4L61rZvGMpWe8XoCGX8vhU35dPyQ4fm5CY/KDlG0F75un14hjbckPXTDuKUY6V0dqR2giT6xN8Y4GEQ== -zen-observable@^0.8.0: +zen-observable@^0.8.0, zen-observable@^0.8.14: version "0.8.15" resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== diff --git a/mix.exs b/mix.exs index c2d3e0129..eca4fb3f1 100644 --- a/mix.exs +++ b/mix.exs @@ -104,11 +104,13 @@ defmodule Mobilizon.Mixfile do {:geolix, "~> 2.0"}, {:geolix_adapter_mmdb2, "~> 0.6.0"}, {:absinthe, "~> 1.6"}, - {:absinthe_phoenix, github: "tcitworld/absinthe_phoenix", branch: "patch-1"}, + {:absinthe_phoenix, + github: "absinthe-graphql/absinthe_phoenix", + ref: "67dc53db5b826ea12f37860bcce4334d4aaad028"}, {:absinthe_plug, "~> 1.5.0"}, {:dataloader, "~> 1.0.6"}, {:plug_cowboy, "~> 2.0"}, - {:atomex, "0.3.0"}, + {:atomex, github: "Betree/atomex"}, {:cachex, "~> 3.1"}, {:geohax, "~> 0.4.0"}, {:mogrify, "~> 0.8.0"}, @@ -135,7 +137,7 @@ defmodule Mobilizon.Mixfile do {:ecto_shortuuid, "~> 0.1"}, {:tesla, "~> 1.4.0"}, {:sitemapper, "~> 0.5.0"}, - {:xml_builder, "~> 2.1.1", override: true}, + {:xml_builder, "~> 2.1.1"}, {:remote_ip, "~> 0.2.0"}, {:ex_cldr_languages, "~> 0.2.1"}, {:slugger, "~> 0.3"}, diff --git a/mix.lock b/mix.lock index 57ebf8f3e..5ac34e9fc 100644 --- a/mix.lock +++ b/mix.lock @@ -1,10 +1,10 @@ %{ "absinthe": {:hex, :absinthe, "1.6.0", "7cb42eebbb9cbf5077541d73c189e205ebe12caf1c78372fc5b9e706fc8ac298", [:mix], [{:dataloader, "~> 1.0.0", [hex: :dataloader, repo: "hexpm", optional: true]}, {:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "99915841495522332b3af8ff10c9cbb51e256b28d9b19c0dfaac5f044b6bfb66"}, "absinthe_ecto": {:hex, :absinthe_ecto, "0.1.3", "420b68129e79fe4571a4838904ba03e282330d335da47729ad52ffd7b8c5fcb1", [:mix], [{:absinthe, "~> 1.3.0 or ~> 1.4.0", [hex: :absinthe, repo: "hexpm", optional: false]}, {:ecto, ">= 0.0.0", [hex: :ecto, repo: "hexpm", optional: false]}], "hexpm", "355b9db34abfab96ae1e025434b66e11002babcf4fe6b7144d26ff7548985f52"}, - "absinthe_phoenix": {:git, "https://github.com/tcitworld/absinthe_phoenix.git", "4759d4141fb6254f5e7726ad6a00d7618116fb9e", [branch: "patch-1"]}, + "absinthe_phoenix": {:git, "https://github.com/absinthe-graphql/absinthe_phoenix.git", "67dc53db5b826ea12f37860bcce4334d4aaad028", [ref: "67dc53db5b826ea12f37860bcce4334d4aaad028"]}, "absinthe_plug": {:hex, :absinthe_plug, "1.5.3", "40b62edddc7db94098ab2f4a3011c17189862a3dbc50580fc92e3cb7953e9b36", [:mix], [{:absinthe, "~> 1.5", [hex: :absinthe, repo: "hexpm", optional: false]}, {:plug, "~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "8378204b9b0c1f37bd7a52ecde8fa627e553a8bf04610d20e1bce2dbde71fdb2"}, "argon2_elixir": {:hex, :argon2_elixir, "2.4.0", "2a22ea06e979f524c53b42b598fc6ba38cdcbc977a155e33e057732cfb1fb311", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "4ea82e183cf8e7f66dab1f767fedcfe6a195e140357ef2b0423146b72e0a551d"}, - "atomex": {:hex, :atomex, "0.3.0", "19b5d1a2aef8706dbd307385f7d5d9f6f273869226d317492c396c7bacf26402", [:mix], [{:xml_builder, "~> 2.0.0", [hex: :xml_builder, repo: "hexpm", optional: false]}], "hexpm", "025dbc3a3e99380894791a093019f535d0ef6cf1916f6ec1b778ac107fcfc3e4"}, + "atomex": {:git, "https://github.com/Betree/atomex.git", "d1cc0988fe9d2c5f4d1feb8c6a89b1ea2266199c", []}, "auto_linker": {:git, "https://git.pleroma.social/pleroma/auto_linker.git", "95e8188490e97505c56636c1379ffdf036c1fdde", [ref: "95e8188490e97505c56636c1379ffdf036c1fdde"]}, "bamboo": {:hex, :bamboo, "1.6.0", "adfb583bef028923aae6f22deaea6667290561da1246058556ecaeb0fec5a175", [:mix], [{:hackney, ">= 1.13.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "454e67feacbc9b6e00553ce1d2fba003c861e0035600d59b09d6159985b17f9b"}, "bamboo_smtp": {:hex, :bamboo_smtp, "3.0.0", "b7f0c371af96a1cb7131908918b02abb228f9db234910bf10cf4fb177c083259", [:mix], [{:bamboo, "~> 1.2", [hex: :bamboo, repo: "hexpm", optional: false]}, {:gen_smtp, "~> 0.15.0", [hex: :gen_smtp, repo: "hexpm", optional: false]}], "hexpm", "77cb1fa3076b24109e54df622161fe1e5619376b4ecf86d8b99b46f327acc49f"}, @@ -13,7 +13,7 @@ "certifi": {:hex, :certifi, "2.5.3", "70bdd7e7188c804f3a30ee0e7c99655bc35d8ac41c23e12325f36ab449b70651", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "ed516acb3929b101208a9d700062d520f3953da3b6b918d866106ffa980e1c10"}, "cldr_utils": {:hex, :cldr_utils, "2.14.0", "edcef8dd2654b93d84a90087f3536ffabf9c9d82b34ff82bc9ca54c0668b3a4a", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "6903356ff6988342a29b90637eece4ca98a4ed2b9759c22233d3474ade57645a"}, "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"}, - "comeonin": {:hex, :comeonin, "5.3.1", "7fe612b739c78c9c1a75186ef2d322ce4d25032d119823269d0aa1e2f1e20025", [:mix], [], "hexpm", "d6222483060c17f0977fad1b7401ef0c5863c985a64352755f366aee3799c245"}, + "comeonin": {:hex, :comeonin, "5.3.2", "5c2f893d05c56ae3f5e24c1b983c2d5dfb88c6d979c9287a76a7feb1e1d8d646", [:mix], [], "hexpm", "d0993402844c49539aeadb3fe46a3c9bd190f1ecf86b6f9ebd71957534c95f04"}, "connection": {:hex, :connection, "1.1.0", "ff2a49c4b75b6fb3e674bfc5536451607270aac754ffd1bdfe175abe4a6d7a68", [:mix], [], "hexpm", "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c"}, "cors_plug": {:hex, :cors_plug, "2.0.2", "2b46083af45e4bc79632bd951550509395935d3e7973275b2b743bd63cc942ce", [:mix], [{:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "f0d0e13f71c51fd4ef8b2c7e051388e4dfb267522a83a22392c856de7e46465f"}, "cowboy": {:hex, :cowboy, "2.8.0", "f3dc62e35797ecd9ac1b50db74611193c29815401e53bac9a5c0577bd7bc667d", [:rebar3], [{:cowlib, "~> 2.9.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.7.1", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "4643e4fba74ac96d4d152c75803de6fad0b3fa5df354c71afdd6cbeeb15fac8a"}, @@ -22,7 +22,7 @@ "credo": {:hex, :credo, "1.5.4", "9914180105b438e378e94a844ec3a5088ae5875626fc945b7c1462b41afc3198", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "cf51af45eadc0a3f39ba13b56fdac415c91b34f7b7533a13dc13550277141bc4"}, "dataloader": {:hex, :dataloader, "1.0.8", "114294362db98a613f231589246aa5b0ce847412e8e75c4c94f31f204d272cbf", [:mix], [{:ecto, ">= 3.4.3 and < 4.0.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "eaf3c2aa2bc9dbd2f1e960561d616b7f593396c4754185b75904f6d66c82a667"}, "db_connection": {:hex, :db_connection, "2.3.1", "4c9f3ed1ef37471cbdd2762d6655be11e38193904d9c5c1c9389f1b891a3088e", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}], "hexpm", "abaab61780dde30301d840417890bd9f74131041afd02174cf4e10635b3a63f5"}, - "decimal": {:hex, :decimal, "1.9.0", "83e8daf59631d632b171faabafb4a9f4242c514b0a06ba3df493951c08f64d07", [:mix], [], "hexpm", "b1f2343568eed6928f3e751cf2dffde95bfaa19dd95d09e8a9ea92ccfd6f7d85"}, + "decimal": {:hex, :decimal, "2.0.0", "a78296e617b0f5dd4c6caf57c714431347912ffb1d0842e998e9792b5642d697", [:mix], [], "hexpm", "34666e9c55dea81013e77d9d87370fe6cb6291d1ef32f46a1600230b1d44f577"}, "dialyxir": {:hex, :dialyxir, "1.0.0", "6a1fa629f7881a9f5aaf3a78f094b2a51a0357c843871b8bc98824e7342d00a5", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "aeb06588145fac14ca08d8061a142d52753dbc2cf7f0d00fc1013f53f8654654"}, "earmark": {:hex, :earmark, "1.4.13", "2c6ce9768fc9fdbf4046f457e207df6360ee6c91ee1ecb8e9a139f96a4289d91", [:mix], [{:earmark_parser, ">= 1.4.12", [hex: :earmark_parser, repo: "hexpm", optional: false]}], "hexpm", "a0cf3ed88ef2b1964df408889b5ecb886d1a048edde53497fc935ccd15af3403"}, "earmark_parser": {:hex, :earmark_parser, "1.4.12", "b245e875ec0a311a342320da0551da407d9d2b65d98f7a9597ae078615af3449", [:mix], [], "hexpm", "711e2cc4d64abb7d566d43f54b78f7dc129308a63bc103fbd88550d2174b3160"}, @@ -35,7 +35,7 @@ "elixir_make": {:hex, :elixir_make, "0.6.2", "7dffacd77dec4c37b39af867cedaabb0b59f6a871f89722c25b28fcd4bd70530", [:mix], [], "hexpm", "03e49eadda22526a7e5279d53321d1cced6552f344ba4e03e619063de75348d9"}, "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, "esaml": {:git, "git://github.com/wrren/esaml.git", "2cace5778e4323216bcff2085ca9739e42a68a42", [branch: "ueberauth_saml"]}, - "eternal": {:hex, :eternal, "1.2.1", "d5b6b2499ba876c57be2581b5b999ee9bdf861c647401066d3eeed111d096bc4", [:mix], [], "hexpm", "b14f1dc204321429479c569cfbe8fb287541184ed040956c8862cb7a677b8406"}, + "eternal": {:hex, :eternal, "1.2.2", "d1641c86368de99375b98d183042dd6c2b234262b8d08dfd72b9eeaafc2a1abd", [:mix], [], "hexpm", "2c9fe32b9c3726703ba5e1d43a1d255a4f3f2d8f8f9bc19f094c7cb1a7a9e782"}, "ex_cldr": {:hex, :ex_cldr, "2.18.2", "c0557145c234a4d31ff450a0438c5a70e786ccba9449a9f9f895809be20bed7d", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:cldr_utils, "~> 2.12", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:gettext, "~> 0.13", [hex: :gettext, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "ac28055ae6df438b72f98703c842c2c0d969af6bd68662a8f586862a9a0ddc79"}, "ex_cldr_calendars": {:hex, :ex_cldr_calendars, "1.12.0", "0cf7c804937a93baa9c3b471667ad05c478942865cc457e8397b5d83fc6f2c7a", [:mix], [{:calendar_interval, "~> 0.2", [hex: :calendar_interval, repo: "hexpm", optional: true]}, {:earmark, "~> 1.0", [hex: :earmark, repo: "hexpm", optional: false]}, {:ex_cldr_numbers, "~> 2.16", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:ex_cldr_units, "~> 3.3", [hex: :ex_cldr_units, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "edcb91ec52ee4e24a928e2bcf6d3354da465eced42887fbdb3f878a7a329963f"}, "ex_cldr_currencies": {:hex, :ex_cldr_currencies, "2.8.0", "b2ecc94e9fa4b8ec07614830f4d6e811e5df5e7679c6d2be92f4fe4f31184913", [:mix], [{:ex_cldr, "~> 2.18", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "a39780667b73bfd3d2bd08e61981bca23a97912b86f3236042850ecb062f48eb"}, @@ -76,7 +76,7 @@ "html_sanitize_ex": {:hex, :html_sanitize_ex, "1.4.0", "0310d27d7bafb662f30bff22ec732a72414799c83eaf44239781fd23b96216c0", [:mix], [{:mochiweb, "~> 2.15", [hex: :mochiweb, repo: "hexpm", optional: false]}], "hexpm", "c5d79626be0b6e50c19ecdfb783ee26e85bd3a77436b488379ce6dc104ec4593"}, "http_sign": {:hex, :http_sign, "0.1.1", "b16edb83aa282892f3271f9a048c155e772bf36e15700ab93901484c55f8dd10", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "2d4b1c2579d85534035f12c9e1260abdf6d03a9ad4f515b2ee53b50e68c8b787"}, "http_signatures": {:hex, :http_signatures, "0.1.0", "4e4b501a936dbf4cb5222597038a89ea10781776770d2e185849fa829686b34c", [:mix], [], "hexpm", "f8a7b3731e3fd17d38fa6e343fcad7b03d6874a3b0a108c8568a71ed9c2cf824"}, - "httpoison": {:hex, :httpoison, "1.7.0", "abba7d086233c2d8574726227b6c2c4f6e53c4deae7fe5f6de531162ce9929a0", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "975cc87c845a103d3d1ea1ccfd68a2700c211a434d8428b10c323dc95dc5b980"}, + "httpoison": {:hex, :httpoison, "1.8.0", "6b85dea15820b7804ef607ff78406ab449dd78bed923a49c7160e1886e987a3d", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "28089eaa98cf90c66265b6b5ad87c59a3729bea2e74e9d08f9b51eb9729b3c3a"}, "icalendar": {:git, "https://github.com/tcitworld/icalendar.git", "e16a3a0b74e07ba79044361fbf5014bed344f2da", []}, "idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"}, "inet_cidr": {:hex, :inet_cidr, "1.0.4", "a05744ab7c221ca8e395c926c3919a821eb512e8f36547c062f62c4ca0cf3d6e", [:mix], [], "hexpm", "64a2d30189704ae41ca7dbdd587f5291db5d1dda1414e0774c29ffc81088c1bc"}, @@ -118,8 +118,8 @@ "plug_crypto": {:hex, :plug_crypto, "1.2.0", "1cb20793aa63a6c619dd18bb33d7a3aa94818e5fd39ad357051a67f26dfa2df6", [:mix], [], "hexpm", "a48b538ae8bf381ffac344520755f3007cc10bd8e90b240af98ea29b69683fc2"}, "poison": {:hex, :poison, "4.0.1", "bcb755a16fac91cad79bfe9fc3585bb07b9331e50cfe3420a24bcc2d735709ae", [:mix], [], "hexpm", "ba8836feea4b394bb718a161fc59a288fe0109b5006d6bdf97b6badfcf6f0f25"}, "poolboy": {:hex, :poolboy, "1.5.2", "392b007a1693a64540cead79830443abf5762f5d30cf50bc95cb2c1aaafa006b", [:rebar3], [], "hexpm", "dad79704ce5440f3d5a3681c8590b9dc25d1a561e8f5a9c995281012860901e3"}, - "postgrex": {:hex, :postgrex, "0.15.7", "724410acd48abac529d0faa6c2a379fb8ae2088e31247687b16cacc0e0883372", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "88310c010ff047cecd73d5ceca1d99205e4b1ab1b9abfdab7e00f5c9d20ef8f9"}, - "progress_bar": {:hex, :progress_bar, "2.0.0", "447285f533b4b8717881fdb7160c7360c2f2ab57276f8904ce6d40482857e573", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "9d8b879f322fd5563e8e7ec39f1d02a9da3ffc36019f05287788744e88260fde"}, + "postgrex": {:hex, :postgrex, "0.15.8", "f5e782bbe5e8fa178d5e3cd1999c857dc48eda95f0a4d7f7bd92a50e84a0d491", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "698fbfacea34c4cf22c8281abeb5cf68d99628d541874f085520ab3b53d356fe"}, + "progress_bar": {:hex, :progress_bar, "2.0.1", "7b40200112ae533d5adceb80ff75fbe66dc753bca5f6c55c073bfc122d71896d", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "2519eb58a2f149a3a094e729378256d8cb6d96a259ec94841bd69fdc71f18f87"}, "ranch": {:hex, :ranch, "1.7.1", "6b1fab51b49196860b733a49c07604465a47bdb78aa10c1c16a3d199f7f8c881", [:rebar3], [], "hexpm", "451d8527787df716d99dc36162fca05934915db0b6141bbdac2ea8d3c7afc7d7"}, "remote_ip": {:hex, :remote_ip, "0.2.1", "cd27cd8ea54ecaaf3532776ff4c5e353b3804e710302e88c01eadeaaf42e7e24", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:inet_cidr, "~> 1.0", [hex: :inet_cidr, repo: "hexpm", optional: false]}, {:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "2e7ab1a461cc3cd5719f37e116a08f45c8b8493923063631b164315d6b7ee8e0"}, "rsa_ex": {:hex, :rsa_ex, "0.4.0", "e28dd7dc5236e156df434af0e4aa822384c8866c928e17b785d4edb7c253b558", [:mix], [], "hexpm", "40e1f08e8401da4be59a6dd0f4da30c42d5bb01703161f0208d839d97db27f4e"}, From e22e9f557502cffa0ef80258185345a949dd8849 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 20 Jan 2021 11:32:46 +0100 Subject: [PATCH 086/114] Enable new languages Signed-off-by: Thomas Citharel --- js/src/i18n/langs.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/js/src/i18n/langs.json b/js/src/i18n/langs.json index 2cda8d150..072a8e82e 100644 --- a/js/src/i18n/langs.json +++ b/js/src/i18n/langs.json @@ -1,6 +1,7 @@ { "ar": "العربية", "be": "Беларуская мова", + "bn": "বাংলা", "ca": "Català", "cs": "čeština", "de": "Deutsch", @@ -22,5 +23,6 @@ "pt": "Português", "pt_BR": "Português brasileiro", "ru": "Русский", + "sl": "Slovenščina", "sv": "Svenska" } From 208886fbeae073e2ca7befed24f18d48fb2ee5a6 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 20 Jan 2021 11:38:18 +0100 Subject: [PATCH 087/114] Bump to 1.0.4 Signed-off-by: Thomas Citharel --- CHANGELOG.md | 42 ++++++++++++++++++++++++++++++++++++++++++ js/package.json | 2 +- mix.exs | 2 +- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0acd887f4..9c153abc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,48 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 1.0.4 - 20-01-2020 + +### Added + +- Added interface to approve/reject group follow requests +- Added UI for group public Atom/ICS feeds +- Attach ICS files representing the event to notifications and participations emails +- Add initial support to build Elixir releases + +### Changed + +- Added `
` to allowed HTML tags +- Events are now correctly ordered by their beginning date on search and group page + +### Fixed + +- Upgrade PWA support library to avoid a call to Google CDN +- Fixed group avatar & banner upload +- Fixed some events not showing on homepage +- Fixed the `next` and `prev` attribute not being present in `CollectionPage` ActivityPub Collections +- Added a text to explain that group discussions are restricted to members on discussion list page +- Fixed ICS export timezone issues +- Fixed remote interactions when the content was not local to the instance +- Fixed a federation issue with group member removal +- Fixed group remote subscription + +### Translations + +- Bengali (New!) +- Catalan +- Finnish +- French +- Galician +- German +- Italian +- Norwegian +- Polish +- Portuguese (New!) +- Slovenian (New!) +- Spanish +- Swedish + ## 1.0.3 - 18-12-2020 **This release adds new migrations, be sure to run them before restarting Mobilizon** diff --git a/js/package.json b/js/package.json index be5c81497..576506f69 100644 --- a/js/package.json +++ b/js/package.json @@ -1,6 +1,6 @@ { "name": "mobilizon", - "version": "1.0.3", + "version": "1.0.4", "private": true, "scripts": { "serve": "vue-cli-service serve", diff --git a/mix.exs b/mix.exs index eca4fb3f1..db83b30e8 100644 --- a/mix.exs +++ b/mix.exs @@ -1,7 +1,7 @@ defmodule Mobilizon.Mixfile do use Mix.Project - @version "1.0.3" + @version "1.0.4" def project do [ From 010d1dce60c678b8ef83221348f6e061fb5d3d1f Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 22 Jan 2021 14:02:28 +0100 Subject: [PATCH 088/114] Update atomex dependency Signed-off-by: Thomas Citharel --- mix.exs | 2 +- mix.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mix.exs b/mix.exs index db83b30e8..6c05cedda 100644 --- a/mix.exs +++ b/mix.exs @@ -110,7 +110,7 @@ defmodule Mobilizon.Mixfile do {:absinthe_plug, "~> 1.5.0"}, {:dataloader, "~> 1.0.6"}, {:plug_cowboy, "~> 2.0"}, - {:atomex, github: "Betree/atomex"}, + {:atomex, "~> 0.4"}, {:cachex, "~> 3.1"}, {:geohax, "~> 0.4.0"}, {:mogrify, "~> 0.8.0"}, diff --git a/mix.lock b/mix.lock index 5ac34e9fc..abdab8b97 100644 --- a/mix.lock +++ b/mix.lock @@ -4,7 +4,7 @@ "absinthe_phoenix": {:git, "https://github.com/absinthe-graphql/absinthe_phoenix.git", "67dc53db5b826ea12f37860bcce4334d4aaad028", [ref: "67dc53db5b826ea12f37860bcce4334d4aaad028"]}, "absinthe_plug": {:hex, :absinthe_plug, "1.5.3", "40b62edddc7db94098ab2f4a3011c17189862a3dbc50580fc92e3cb7953e9b36", [:mix], [{:absinthe, "~> 1.5", [hex: :absinthe, repo: "hexpm", optional: false]}, {:plug, "~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "8378204b9b0c1f37bd7a52ecde8fa627e553a8bf04610d20e1bce2dbde71fdb2"}, "argon2_elixir": {:hex, :argon2_elixir, "2.4.0", "2a22ea06e979f524c53b42b598fc6ba38cdcbc977a155e33e057732cfb1fb311", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "4ea82e183cf8e7f66dab1f767fedcfe6a195e140357ef2b0423146b72e0a551d"}, - "atomex": {:git, "https://github.com/Betree/atomex.git", "d1cc0988fe9d2c5f4d1feb8c6a89b1ea2266199c", []}, + "atomex": {:hex, :atomex, "0.4.1", "7d3910ff7795db91b9af9f8d3e65af7ac69f235adf03484995fc667a36f3edc5", [:mix], [{:xml_builder, "~> 2.1", [hex: :xml_builder, repo: "hexpm", optional: false]}], "hexpm", "f3ac737f7493d42cfddf917f3ac49d60e0a0cf1a35c0712851b07fe8c0a05c7a"}, "auto_linker": {:git, "https://git.pleroma.social/pleroma/auto_linker.git", "95e8188490e97505c56636c1379ffdf036c1fdde", [ref: "95e8188490e97505c56636c1379ffdf036c1fdde"]}, "bamboo": {:hex, :bamboo, "1.6.0", "adfb583bef028923aae6f22deaea6667290561da1246058556ecaeb0fec5a175", [:mix], [{:hackney, ">= 1.13.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "454e67feacbc9b6e00553ce1d2fba003c861e0035600d59b09d6159985b17f9b"}, "bamboo_smtp": {:hex, :bamboo_smtp, "3.0.0", "b7f0c371af96a1cb7131908918b02abb228f9db234910bf10cf4fb177c083259", [:mix], [{:bamboo, "~> 1.2", [hex: :bamboo, repo: "hexpm", optional: false]}, {:gen_smtp, "~> 0.15.0", [hex: :gen_smtp, repo: "hexpm", optional: false]}], "hexpm", "77cb1fa3076b24109e54df622161fe1e5619376b4ecf86d8b99b46f327acc49f"}, From f886225155458587aebaad5420182a401bce932f Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 22 Jan 2021 14:07:13 +0100 Subject: [PATCH 089/114] Update deps Signed-off-by: Thomas Citharel --- mix.lock | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/mix.lock b/mix.lock index abdab8b97..9e4bb8ffb 100644 --- a/mix.lock +++ b/mix.lock @@ -1,11 +1,9 @@ %{ "absinthe": {:hex, :absinthe, "1.6.0", "7cb42eebbb9cbf5077541d73c189e205ebe12caf1c78372fc5b9e706fc8ac298", [:mix], [{:dataloader, "~> 1.0.0", [hex: :dataloader, repo: "hexpm", optional: true]}, {:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "99915841495522332b3af8ff10c9cbb51e256b28d9b19c0dfaac5f044b6bfb66"}, - "absinthe_ecto": {:hex, :absinthe_ecto, "0.1.3", "420b68129e79fe4571a4838904ba03e282330d335da47729ad52ffd7b8c5fcb1", [:mix], [{:absinthe, "~> 1.3.0 or ~> 1.4.0", [hex: :absinthe, repo: "hexpm", optional: false]}, {:ecto, ">= 0.0.0", [hex: :ecto, repo: "hexpm", optional: false]}], "hexpm", "355b9db34abfab96ae1e025434b66e11002babcf4fe6b7144d26ff7548985f52"}, "absinthe_phoenix": {:git, "https://github.com/absinthe-graphql/absinthe_phoenix.git", "67dc53db5b826ea12f37860bcce4334d4aaad028", [ref: "67dc53db5b826ea12f37860bcce4334d4aaad028"]}, - "absinthe_plug": {:hex, :absinthe_plug, "1.5.3", "40b62edddc7db94098ab2f4a3011c17189862a3dbc50580fc92e3cb7953e9b36", [:mix], [{:absinthe, "~> 1.5", [hex: :absinthe, repo: "hexpm", optional: false]}, {:plug, "~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "8378204b9b0c1f37bd7a52ecde8fa627e553a8bf04610d20e1bce2dbde71fdb2"}, + "absinthe_plug": {:hex, :absinthe_plug, "1.5.4", "daff02d04be7c06d0114ef5b4361865a4dacbe8ddb325ce709b103253d4a014b", [:mix], [{:absinthe, "~> 1.5", [hex: :absinthe, repo: "hexpm", optional: false]}, {:plug, "~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "80360cd8ad541d87c75336f3abc59b894d474458f6a7f8e563781c01148860de"}, "argon2_elixir": {:hex, :argon2_elixir, "2.4.0", "2a22ea06e979f524c53b42b598fc6ba38cdcbc977a155e33e057732cfb1fb311", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "4ea82e183cf8e7f66dab1f767fedcfe6a195e140357ef2b0423146b72e0a551d"}, "atomex": {:hex, :atomex, "0.4.1", "7d3910ff7795db91b9af9f8d3e65af7ac69f235adf03484995fc667a36f3edc5", [:mix], [{:xml_builder, "~> 2.1", [hex: :xml_builder, repo: "hexpm", optional: false]}], "hexpm", "f3ac737f7493d42cfddf917f3ac49d60e0a0cf1a35c0712851b07fe8c0a05c7a"}, - "auto_linker": {:git, "https://git.pleroma.social/pleroma/auto_linker.git", "95e8188490e97505c56636c1379ffdf036c1fdde", [ref: "95e8188490e97505c56636c1379ffdf036c1fdde"]}, "bamboo": {:hex, :bamboo, "1.6.0", "adfb583bef028923aae6f22deaea6667290561da1246058556ecaeb0fec5a175", [:mix], [{:hackney, ">= 1.13.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "454e67feacbc9b6e00553ce1d2fba003c861e0035600d59b09d6159985b17f9b"}, "bamboo_smtp": {:hex, :bamboo_smtp, "3.0.0", "b7f0c371af96a1cb7131908918b02abb228f9db234910bf10cf4fb177c083259", [:mix], [{:bamboo, "~> 1.2", [hex: :bamboo, repo: "hexpm", optional: false]}, {:gen_smtp, "~> 0.15.0", [hex: :gen_smtp, repo: "hexpm", optional: false]}], "hexpm", "77cb1fa3076b24109e54df622161fe1e5619376b4ecf86d8b99b46f327acc49f"}, "bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm", "7af5c7e09fe1d40f76c8e4f9dd2be7cebd83909f31fee7cd0e9eadc567da8353"}, @@ -26,15 +24,14 @@ "dialyxir": {:hex, :dialyxir, "1.0.0", "6a1fa629f7881a9f5aaf3a78f094b2a51a0357c843871b8bc98824e7342d00a5", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "aeb06588145fac14ca08d8061a142d52753dbc2cf7f0d00fc1013f53f8654654"}, "earmark": {:hex, :earmark, "1.4.13", "2c6ce9768fc9fdbf4046f457e207df6360ee6c91ee1ecb8e9a139f96a4289d91", [:mix], [{:earmark_parser, ">= 1.4.12", [hex: :earmark_parser, repo: "hexpm", optional: false]}], "hexpm", "a0cf3ed88ef2b1964df408889b5ecb886d1a048edde53497fc935ccd15af3403"}, "earmark_parser": {:hex, :earmark_parser, "1.4.12", "b245e875ec0a311a342320da0551da407d9d2b65d98f7a9597ae078615af3449", [:mix], [], "hexpm", "711e2cc4d64abb7d566d43f54b78f7dc129308a63bc103fbd88550d2174b3160"}, - "ecto": {:hex, :ecto, "3.5.5", "48219a991bb86daba6e38a1e64f8cea540cded58950ff38fbc8163e062281a07", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "98dd0e5e1de7f45beca6130d13116eae675db59adfa055fb79612406acf6f6f1"}, + "ecto": {:hex, :ecto, "3.5.6", "29c77e999e471921c7ce7347732bab7bfa3e24c587640a36f17e0744d1474b8e", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "3ae1f3eaecc3e72eeb65ed43239b292bb1eaf335c7e6cea3a7fc27aadb6e93e7"}, "ecto_autoslug_field": {:hex, :ecto_autoslug_field, "2.0.1", "2177c1c253f6dd3efd4b56d1cb76104d0a6ef044c6b9a7a0ad6d32665c4111e5", [:mix], [{:ecto, ">= 2.1.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:slugger, ">= 0.2.0", [hex: :slugger, repo: "hexpm", optional: false]}], "hexpm", "a3cc73211f2e75b89a03332183812ebe1ac08be2e25a1df5aa3d1422f92c45c3"}, "ecto_enum": {:hex, :ecto_enum, "1.4.0", "d14b00e04b974afc69c251632d1e49594d899067ee2b376277efd8233027aec8", [:mix], [{:ecto, ">= 3.0.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "> 3.0.0", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:mariaex, ">= 0.0.0", [hex: :mariaex, repo: "hexpm", optional: true]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "8fb55c087181c2b15eee406519dc22578fa60dd82c088be376d0010172764ee4"}, "ecto_shortuuid": {:hex, :ecto_shortuuid, "0.1.3", "d36aede64edf256e4b769be2ad15a8ad5d9d1ff8ad46befe39e8cb4489abcd05", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:shortuuid, "~> 2.1.1", [hex: :shortuuid, repo: "hexpm", optional: false]}], "hexpm", "d215c8ced7125265de94d55abc696125942caef33439cf281fafded9744a4294"}, - "ecto_sql": {:hex, :ecto_sql, "3.5.3", "1964df0305538364b97cc4661a2bd2b6c89d803e66e5655e4e55ff1571943efd", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.5.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.3.0 or ~> 0.4.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d2f53592432ce17d3978feb8f43e8dc0705e288b0890caf06d449785f018061c"}, + "ecto_sql": {:hex, :ecto_sql, "3.5.4", "a9e292c40bd79fff88885f95f1ecd7b2516e09aa99c7dd0201aa84c54d2358e4", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.5.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.3.0 or ~> 0.4.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "1fff1a28a898d7bbef263f1f3ea425b04ba9f33816d843238c84eff883347343"}, "elixir_feed_parser": {:hex, :elixir_feed_parser, "2.1.0", "bb96fb6422158dc7ad59de62ef211cc69d264acbbe63941a64a5dce97bbbc2e6", [:mix], [{:timex, "~> 3.4", [hex: :timex, repo: "hexpm", optional: false]}], "hexpm", "2d3c62fe7b396ee3b73d7160bc8fadbd78bfe9597c98c7d79b3f1038d9cba28f"}, "elixir_make": {:hex, :elixir_make, "0.6.2", "7dffacd77dec4c37b39af867cedaabb0b59f6a871f89722c25b28fcd4bd70530", [:mix], [], "hexpm", "03e49eadda22526a7e5279d53321d1cced6552f344ba4e03e619063de75348d9"}, "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, - "esaml": {:git, "git://github.com/wrren/esaml.git", "2cace5778e4323216bcff2085ca9739e42a68a42", [branch: "ueberauth_saml"]}, "eternal": {:hex, :eternal, "1.2.2", "d1641c86368de99375b98d183042dd6c2b234262b8d08dfd72b9eeaafc2a1abd", [:mix], [], "hexpm", "2c9fe32b9c3726703ba5e1d43a1d255a4f3f2d8f8f9bc19f094c7cb1a7a9e782"}, "ex_cldr": {:hex, :ex_cldr, "2.18.2", "c0557145c234a4d31ff450a0438c5a70e786ccba9449a9f9f895809be20bed7d", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:cldr_utils, "~> 2.12", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:gettext, "~> 0.13", [hex: :gettext, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "ac28055ae6df438b72f98703c842c2c0d969af6bd68662a8f586862a9a0ddc79"}, "ex_cldr_calendars": {:hex, :ex_cldr_calendars, "1.12.0", "0cf7c804937a93baa9c3b471667ad05c478942865cc457e8397b5d83fc6f2c7a", [:mix], [{:calendar_interval, "~> 0.2", [hex: :calendar_interval, repo: "hexpm", optional: true]}, {:earmark, "~> 1.0", [hex: :earmark, repo: "hexpm", optional: false]}, {:ex_cldr_numbers, "~> 2.16", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:ex_cldr_units, "~> 3.3", [hex: :ex_cldr_units, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "edcb91ec52ee4e24a928e2bcf6d3354da465eced42887fbdb3f878a7a329963f"}, @@ -65,15 +62,11 @@ "geolix": {:hex, :geolix, "2.0.0", "7e65764bedfc98d08a3ddb24c417657c9d438eff163280b45fbb7de289626acd", [:mix], [], "hexpm", "8742bf588ed0bb7def2c443204d09d355990846c6efdff96ded66aac24c301df"}, "geolix_adapter_mmdb2": {:hex, :geolix_adapter_mmdb2, "0.6.0", "6ab9dbf6ea395817aa1fd2597be25d0dda1853c7f664e62716e47728d18bc4f9", [:mix], [{:geolix, "~> 2.0", [hex: :geolix, repo: "hexpm", optional: false]}, {:mmdb2_decoder, "~> 3.0", [hex: :mmdb2_decoder, repo: "hexpm", optional: false]}], "hexpm", "06ff962feae8a310cffdf86b74bfcda6e2d0dccb439bb1f62df2b657b1c0269b"}, "gettext": {:hex, :gettext, "0.18.2", "7df3ea191bb56c0309c00a783334b288d08a879f53a7014341284635850a6e55", [:mix], [], "hexpm", "f9f537b13d4fdd30f3039d33cb80144c3aa1f8d9698e47d7bcbcc8df93b1f5c5"}, - "git_status": {:hex, :git_status, "0.1.0", "228b5d2e62c60a157314ff7398a92ab9a108005f4e532d4ecb07bc62fdd67e85", [:mix], [], "hexpm", "2393ee163f71ff75d5374bf20ceab6ea200249ed1beee5a4a31a8e599710de19"}, "guardian": {:hex, :guardian, "2.1.1", "1f02b349f6ba765647cc834036a8d76fa4bd65605342fe3a031df3c99d0d411a", [:mix], [{:jose, "~> 1.8", [hex: :jose, repo: "hexpm", optional: false]}, {:plug, "~> 1.3.3 or ~> 1.4", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "189b87ba7ce6b40d6ba029138098b96ffc4ae78f229f5b39539b9141af8bf0f8"}, "guardian_db": {:hex, :guardian_db, "2.1.0", "ec95a9d99cdd1e550555d09a7bb4a340d8887aad0697f594590c2fd74be02426", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.1", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:guardian, "~> 1.0 or ~> 2.0", [hex: :guardian, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.13", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "f8e7d543ac92c395f3a7fd5acbe6829faeade57d688f7562e2f0fca8f94a0d70"}, "guardian_phoenix": {:hex, :guardian_phoenix, "2.0.1", "89a817265af09a6ddf7cb1e77f17ffca90cea2db10ff888375ef34502b2731b1", [:mix], [{:guardian, "~> 2.0", [hex: :guardian, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.3", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "21f439246715192b231f228680465d1ed5fbdf01555a4a3b17165532f5f9a08c"}, "hackney": {:hex, :hackney, "1.17.0", "717ea195fd2f898d9fe9f1ce0afcc2621a41ecfe137fae57e7fe6e9484b9aa99", [:rebar3], [{:certifi, "~>2.5", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "64c22225f1ea8855f584720c0e5b3cd14095703af1c9fbc845ba042811dc671c"}, - "hammox": {:hex, :hammox, "0.2.5", "55436c392c242ae893ebddda8ad20bafb3a5fd6d9899dd44dbf29b84420cf316", [:mix], [{:mox, "~> 0.5", [hex: :mox, repo: "hexpm", optional: false]}, {:ordinal, "~> 0.1", [hex: :ordinal, repo: "hexpm", optional: false]}], "hexpm", "c4862a86eeec8531f14795b584677870c58a4c8de5eab5730904db3a27b836f2"}, - "hashids": {:hex, :hashids, "2.0.4", "ea47a2c2018b7ffb4f5ac9b0f8ea0af6d6159b9e190c5ed09f0ea83276968e0f", [:mix], [], "hexpm", "812e2c7ae763609a47acdd4c64d58c72f63bcfd741e6c605127e43af1507e019"}, "html_entities": {:hex, :html_entities, "0.5.1", "1c9715058b42c35a2ab65edc5b36d0ea66dd083767bef6e3edb57870ef556549", [:mix], [], "hexpm", "30efab070904eb897ff05cd52fa61c1025d7f8ef3a9ca250bc4e6513d16c32de"}, - "html_sanitize_ex": {:hex, :html_sanitize_ex, "1.4.0", "0310d27d7bafb662f30bff22ec732a72414799c83eaf44239781fd23b96216c0", [:mix], [{:mochiweb, "~> 2.15", [hex: :mochiweb, repo: "hexpm", optional: false]}], "hexpm", "c5d79626be0b6e50c19ecdfb783ee26e85bd3a77436b488379ce6dc104ec4593"}, "http_sign": {:hex, :http_sign, "0.1.1", "b16edb83aa282892f3271f9a048c155e772bf36e15700ab93901484c55f8dd10", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "2d4b1c2579d85534035f12c9e1260abdf6d03a9ad4f515b2ee53b50e68c8b787"}, "http_signatures": {:hex, :http_signatures, "0.1.0", "4e4b501a936dbf4cb5222597038a89ea10781776770d2e185849fa829686b34c", [:mix], [], "hexpm", "f8a7b3731e3fd17d38fa6e343fcad7b03d6874a3b0a108c8568a71ed9c2cf824"}, "httpoison": {:hex, :httpoison, "1.8.0", "6b85dea15820b7804ef607ff78406ab449dd78bed923a49c7160e1886e987a3d", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "28089eaa98cf90c66265b6b5ad87c59a3729bea2e74e9d08f9b51eb9729b3c3a"}, @@ -96,7 +89,6 @@ "mimetype_parser": {:hex, :mimetype_parser, "0.1.3", "628ac9fe56aa7edcedb534d68397dd66674ab82493c8ebe39acb9a19b666099d", [:mix], [], "hexpm", "7d8f80c567807ce78cd93c938e7f4b0a20b1aaaaab914bf286f68457d9f7a852"}, "mix_test_watch": {:hex, :mix_test_watch, "1.0.2", "34900184cbbbc6b6ed616ed3a8ea9b791f9fd2088419352a6d3200525637f785", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm", "47ac558d8b06f684773972c6d04fcc15590abdb97aeb7666da19fcbfdc441a07"}, "mmdb2_decoder": {:hex, :mmdb2_decoder, "3.0.0", "54828676a36e75e9a25bc9a0bb0598d4c7fcc767bf0b40674850b22e05b7b6cc", [:mix], [], "hexpm", "359dc9242915538d1dceb9f6d96c72201dca76ce62e49d22e2ed1e86f20bea8e"}, - "mochiweb": {:hex, :mochiweb, "2.20.1", "e4dbd0ed716f076366ecf62ada5755a844e1d95c781e8c77df1d4114be868cdf", [:rebar3], [], "hexpm", "d1aeee7870470d2fa9eae0b3d5ab6c33801aa2d82b10e9dade885c5c921b36aa"}, "mock": {:hex, :mock, "0.3.6", "e810a91fabc7adf63ab5fdbec5d9d3b492413b8cda5131a2a8aa34b4185eb9b4", [:mix], [{:meck, "~> 0.8.13", [hex: :meck, repo: "hexpm", optional: false]}], "hexpm", "bcf1d0a6826fb5aee01bae3d74474669a3fa8b2df274d094af54a25266a1ebd2"}, "mogrify": {:hex, :mogrify, "0.8.0", "3506f3ca3f7b95a155f3b4ef803b5db176f5a0633723e3fe85e0d6399e3b11c8", [:mix], [], "hexpm", "2278d245f07056ea3b586e98801e933695147066fa4cf563f552c1b4f0ff8ad9"}, "mox": {:hex, :mox, "1.0.0", "4b3c7005173f47ff30641ba044eb0fe67287743eec9bd9545e37f3002b0a9f8b", [:mix], [], "hexpm", "201b0a20b7abdaaab083e9cf97884950f8a30a1350a1da403b3145e213c6f4df"}, @@ -105,8 +97,6 @@ "oauth2": {:hex, :oauth2, "2.0.0", "338382079fe16c514420fa218b0903f8ad2d4bfc0ad0c9f988867dfa246731b0", [:mix], [{:hackney, "~> 1.13", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "881b8364ac7385f9fddc7949379cbe3f7081da37233a1aa7aab844670a91e7e7"}, "oauther": {:hex, :oauther, "1.1.1", "7d8b16167bb587ecbcddd3f8792beb9ec3e7b65c1f8ebd86b8dd25318d535752", [:mix], [], "hexpm", "9374f4302045321874cccdc57eb975893643bd69c3b22bf1312dab5f06e5788e"}, "oban": {:hex, :oban, "2.3.4", "ec7509b9af2524d55f529cb7aee93d36131ae0bf0f37706f65d2fe707f4d9fd8", [:mix], [{:ecto_sql, ">= 3.4.3", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.14", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c70ca0434758fd1805422ea4446af5e910ddc697c0c861549c8f0eb0cfbd2fdf"}, - "ordinal": {:hex, :ordinal, "0.1.0", "2f7a1a64ff4be44b8a674718bb00d1584188fe92fa2fa48b95b1e72096d74a34", [:mix], [], "hexpm", "9f3d0a50c285ac99faa9626376e11afa6fc83d42e95166768b37d176cff485a3"}, - "paddle": {:hex, :paddle, "0.1.4", "3697996d79e3d771d6f7560a23e4bad1ed7b7f7fd3e784f97bc39565963b2b13", [:mix], [], "hexpm", "fc719a9e7c86f319b9f4bf413d6f0f326b0c4930d5bc6630d074598ed38e2143"}, "parse_trans": {:hex, :parse_trans, "3.3.1", "16328ab840cc09919bd10dab29e431da3af9e9e7e7e6f0089dd5a2d2820011d8", [:rebar3], [], "hexpm", "07cd9577885f56362d414e8c4c4e6bdf10d43a8767abb92d24cbe8b24c54888b"}, "phoenix": {:hex, :phoenix, "1.5.7", "2923bb3af924f184459fe4fa4b100bd25fa6468e69b2803dfae82698269aa5e0", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 2.13", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.1.2 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "774cd64417c5a3788414fdbb2be2eb9bcd0c048d9e6ad11a0c1fd67b7c0d0978"}, "phoenix_ecto": {:hex, :phoenix_ecto, "4.2.1", "13f124cf0a3ce0f1948cf24654c7b9f2347169ff75c1123f44674afee6af3b03", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 2.15", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "478a1bae899cac0a6e02be1deec7e2944b7754c04e7d4107fc5a517f877743c0"}, @@ -117,7 +107,6 @@ "plug_cowboy": {:hex, :plug_cowboy, "2.4.1", "779ba386c0915027f22e14a48919a9545714f849505fa15af2631a0d298abf0f", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d72113b6dff7b37a7d9b2a5b68892808e3a9a752f2bf7e503240945385b70507"}, "plug_crypto": {:hex, :plug_crypto, "1.2.0", "1cb20793aa63a6c619dd18bb33d7a3aa94818e5fd39ad357051a67f26dfa2df6", [:mix], [], "hexpm", "a48b538ae8bf381ffac344520755f3007cc10bd8e90b240af98ea29b69683fc2"}, "poison": {:hex, :poison, "4.0.1", "bcb755a16fac91cad79bfe9fc3585bb07b9331e50cfe3420a24bcc2d735709ae", [:mix], [], "hexpm", "ba8836feea4b394bb718a161fc59a288fe0109b5006d6bdf97b6badfcf6f0f25"}, - "poolboy": {:hex, :poolboy, "1.5.2", "392b007a1693a64540cead79830443abf5762f5d30cf50bc95cb2c1aaafa006b", [:rebar3], [], "hexpm", "dad79704ce5440f3d5a3681c8590b9dc25d1a561e8f5a9c995281012860901e3"}, "postgrex": {:hex, :postgrex, "0.15.8", "f5e782bbe5e8fa178d5e3cd1999c857dc48eda95f0a4d7f7bd92a50e84a0d491", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "698fbfacea34c4cf22c8281abeb5cf68d99628d541874f085520ab3b53d356fe"}, "progress_bar": {:hex, :progress_bar, "2.0.1", "7b40200112ae533d5adceb80ff75fbe66dc753bca5f6c55c073bfc122d71896d", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "2519eb58a2f149a3a094e729378256d8cb6d96a259ec94841bd69fdc71f18f87"}, "ranch": {:hex, :ranch, "1.7.1", "6b1fab51b49196860b733a49c07604465a47bdb78aa10c1c16a3d199f7f8c881", [:rebar3], [], "hexpm", "451d8527787df716d99dc36162fca05934915db0b6141bbdac2ea8d3c7afc7d7"}, @@ -138,12 +127,9 @@ "ueberauth_github": {:hex, :ueberauth_github, "0.8.0", "2216c8cdacee0de6245b422fb397921b64a29416526985304e345dab6a799d17", [:mix], [{:oauth2, "~> 1.0 or ~> 2.0", [hex: :oauth2, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.6.0", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "b65ccc001a7b0719ba069452f3333d68891f4613ae787a340cce31e2a43307a3"}, "ueberauth_gitlab_strategy": {:git, "https://github.com/tcitworld/ueberauth_gitlab.git", "9fc5d30b5d87ff7cdef293a1c128f25777dcbe59", [branch: "upgrade-deps"]}, "ueberauth_google": {:hex, :ueberauth_google, "0.10.0", "ae00e7228207be977d5cdd0a562e39961851cea74f513aab6446cb51468f283c", [:mix], [{:oauth2, "~> 1.0 or ~> 2.0", [hex: :oauth2, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.6.3", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "148e2575fd24a29b8bcaa44f9d3d1a38550a74ceed645f5059d4516b93992650"}, - "ueberauth_keycloak": {:git, "https://github.com/tcitworld/ueberauth_keycloak.git", "02447d8a75bd36ba26c17c7b1b8bab3538bb2e7a", [branch: "upgrade-deps"]}, "ueberauth_keycloak_strategy": {:git, "https://github.com/tcitworld/ueberauth_keycloak.git", "d892f0f9daf9e0023319b69ac2f7c2c6edff2b14", [branch: "upgrade-deps"]}, - "ueberauth_saml": {:git, "https://github.com/wrren/ueberauth_saml.git", "dfcb4ae3f509afec0f442ce455c41feacac24511", []}, "ueberauth_twitter": {:hex, :ueberauth_twitter, "0.4.0", "4b98620341bc91bac90459093bba093c650823b6e2df35b70255c493c17e9227", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:oauther, "~> 1.1", [hex: :oauther, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.6", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "fb29c9047ca263038c0c61f5a0ec8597e8564aba3f2b4cb02704b60205fd4468"}, "unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"}, "unsafe": {:hex, :unsafe, "1.0.1", "a27e1874f72ee49312e0a9ec2e0b27924214a05e3ddac90e91727bc76f8613d8", [:mix], [], "hexpm", "6c7729a2d214806450d29766abc2afaa7a2cbecf415be64f36a6691afebb50e5"}, - "uuid": {:git, "git://github.com/botsunit/erlang-uuid", "1effbbbd200f9f5d9d5154e81b83fe8e4c3fe714", [branch: "master"]}, "xml_builder": {:hex, :xml_builder, "2.1.4", "e60e21c0a39b9dd8dec1db5a2525c713f7fe4e85ed247caedf22a9bcdd2d5069", [:mix], [], "hexpm", "48188a4df8b9168ceb8318d128299bce064d272e18967349b2592347c434e677"}, } From a6c2fb97a7c275dc47dc9ce84efac0adfcb86853 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 22 Jan 2021 17:06:00 +0100 Subject: [PATCH 090/114] Add sobelow Signed-off-by: Thomas Citharel --- .sobelow-conf | 12 ++++++++++++ mix.exs | 3 ++- mix.lock | 1 + 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .sobelow-conf diff --git a/.sobelow-conf b/.sobelow-conf new file mode 100644 index 000000000..207a0df18 --- /dev/null +++ b/.sobelow-conf @@ -0,0 +1,12 @@ +[ + verbose: true, + private: false, + skip: true, + router: "", + exit: "false", + format: "txt", + out: "", + threshold: "low", + ignore: ["Config.Secrets", "XSS", "Config.HTTPS"], + ignore_files: [""] +] diff --git a/mix.exs b/mix.exs index 6c05cedda..36427b793 100644 --- a/mix.exs +++ b/mix.exs @@ -154,7 +154,8 @@ defmodule Mobilizon.Mixfile do {:mock, "~> 0.3.4", only: :test}, {:elixir_feed_parser, "~> 2.1.0", only: :test}, {:mox, "~> 1.0", only: :test}, - {:junit_formatter, "~> 3.1", only: [:test]} + {:junit_formatter, "~> 3.1", only: [:test]}, + {:sobelow, "~> 0.8", only: [:dev, :test]} ] ++ oauth_deps() end diff --git a/mix.lock b/mix.lock index 9e4bb8ffb..3c2025d6b 100644 --- a/mix.lock +++ b/mix.lock @@ -116,6 +116,7 @@ "sitemapper": {:hex, :sitemapper, "0.5.0", "23b0bb7b3888f03d4e4e5bedb7034e6d2979e169366372d960d6f433112b9bdf", [:mix], [{:ex_aws_s3, "~> 2.0", [hex: :ex_aws_s3, repo: "hexpm", optional: true]}, {:xml_builder, "~> 2.1.1", [hex: :xml_builder, repo: "hexpm", optional: false]}], "hexpm", "be7acff8d0245aa7ca125b9c4d0751009bbbca26ef866d888fef4fdf98670e41"}, "sleeplocks": {:hex, :sleeplocks, "1.1.1", "3d462a0639a6ef36cc75d6038b7393ae537ab394641beb59830a1b8271faeed3", [:rebar3], [], "hexpm", "84ee37aeff4d0d92b290fff986d6a95ac5eedf9b383fadfd1d88e9b84a1c02e1"}, "slugger": {:hex, :slugger, "0.3.0", "efc667ab99eee19a48913ccf3d038b1fb9f165fa4fbf093be898b8099e61b6ed", [:mix], [], "hexpm", "20d0ded0e712605d1eae6c5b4889581c3460d92623a930ddda91e0e609b5afba"}, + "sobelow": {:hex, :sobelow, "0.11.0", "cdc17e3a9f1ea78dc55dbe0a03121cb6767fef737c6d9f1e62ee7e78730abccc", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "c57807bfe6f231338b657781f89ef0320b66a0dbe779aa911d6ed27cfa14ae6e"}, "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.6", "cf344f5692c82d2cd7554f5ec8fd961548d4fd09e7d22f5b62482e5aeaebd4b0", [:make, :mix, :rebar3], [], "hexpm", "bdb0d2471f453c88ff3908e7686f86f9be327d065cc1ec16fa4540197ea04680"}, "telemetry": {:hex, :telemetry, "0.4.2", "2808c992455e08d6177322f14d3bdb6b625fbcfd233a73505870d8738a2f4599", [:rebar3], [], "hexpm", "2d1419bd9dda6a206d7b5852179511722e2b18812310d304620c7bd92a13fcef"}, "tesla": {:hex, :tesla, "1.4.0", "1081bef0124b8bdec1c3d330bbe91956648fb008cf0d3950a369cda466a31a87", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:exjsx, ">= 3.0.0", [hex: :exjsx, repo: "hexpm", optional: true]}, {:finch, "~> 0.3", [hex: :finch, repo: "hexpm", optional: true]}, {:fuse, "~> 2.4", [hex: :fuse, repo: "hexpm", optional: true]}, {:gun, "~> 1.3", [hex: :gun, repo: "hexpm", optional: true]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: true]}, {:ibrowse, "~> 4.4.0", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.0", [hex: :mint, repo: "hexpm", optional: true]}, {:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "bf1374a5569f5fca8e641363b63f7347d680d91388880979a33bc12a6eb3e0aa"}, From f0141c97e8cbcd51e7a5664fe2d637014e3aee0c Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 22 Jan 2021 18:14:52 +0100 Subject: [PATCH 091/114] Refactor rich media parsers to restrict the allowed properties Signed-off-by: Thomas Citharel --- .../rich_media/parsers/meta_tags_parser.ex | 26 +++++++++--- .../rich_media/parsers/oembed_parser.ex | 23 +++++++++- lib/service/rich_media/parsers/ogp.ex | 32 ++++++++++++-- .../rich_media/parsers/twitter_card.ex | 42 +++++++++++++++---- 4 files changed, 103 insertions(+), 20 deletions(-) diff --git a/lib/service/rich_media/parsers/meta_tags_parser.ex b/lib/service/rich_media/parsers/meta_tags_parser.ex index 2ac44a787..bd383db71 100644 --- a/lib/service/rich_media/parsers/meta_tags_parser.ex +++ b/lib/service/rich_media/parsers/meta_tags_parser.ex @@ -7,12 +7,21 @@ defmodule Mobilizon.Service.RichMedia.Parsers.MetaTagsParser do @moduledoc """ Module to parse meta tags data in HTML pages """ - def parse(html, data, prefix, error_message, key_name, value_name \\ "content") do + + def parse( + html, + data, + prefix, + error_message, + key_name, + value_name \\ :content, + allowed_attributes \\ [] + ) do meta_data = html |> get_elements(key_name, prefix) |> Enum.reduce(data, fn el, acc -> - attributes = normalize_attributes(el, prefix, key_name, value_name) + attributes = normalize_attributes(el, prefix, key_name, value_name, allowed_attributes) Map.merge(acc, attributes) end) @@ -27,18 +36,23 @@ defmodule Mobilizon.Service.RichMedia.Parsers.MetaTagsParser do end defp get_elements(html, key_name, prefix) do - html |> Floki.find("meta[#{key_name}^='#{prefix}:']") + html |> Floki.find("meta[#{to_string(key_name)}^='#{prefix}:']") end - defp normalize_attributes(html_node, prefix, key_name, value_name) do + defp normalize_attributes(html_node, prefix, key_name, value_name, allowed_attributes) do {_tag, attributes, _children} = html_node data = - Enum.into(attributes, %{}, fn {name, value} -> + attributes + |> Enum.into(%{}, fn {name, value} -> {name, String.trim_leading(value, "#{prefix}:")} end) - %{String.to_atom(data[key_name]) => data[value_name]} + if data[to_string(key_name)] in Enum.map(allowed_attributes, &to_string/1) do + %{String.to_existing_atom(data[to_string(key_name)]) => data[to_string(value_name)]} + else + %{} + end end defp maybe_put_title(%{title: _} = meta, _), do: meta diff --git a/lib/service/rich_media/parsers/oembed_parser.ex b/lib/service/rich_media/parsers/oembed_parser.ex index dcc2d3e0b..ce450d0d9 100644 --- a/lib/service/rich_media/parsers/oembed_parser.ex +++ b/lib/service/rich_media/parsers/oembed_parser.ex @@ -41,10 +41,31 @@ defmodule Mobilizon.Service.RichMedia.Parsers.OEmbed do {:ok, Enum.into(attributes, %{})["href"]} end + @oembed_allowed_attributes [ + :type, + :version, + :html, + :width, + :height, + :title, + :author_name, + :author_url, + :provider_name, + :provider_url, + :cache_age, + :thumbnail_url, + :thumbnail_width, + :thumbnail_height, + :url + ] + defp get_oembed_data(url) do with {:ok, %{body: json}} <- Tesla.get(url, opts: @http_options), {:ok, data} <- Jason.decode(json), - data <- data |> Map.new(fn {k, v} -> {String.to_atom(k), v} end) do + data <- + data + |> Map.new(fn {k, v} -> {String.to_existing_atom(k), v} end) + |> Map.take(@oembed_allowed_attributes) do {:ok, data} end end diff --git a/lib/service/rich_media/parsers/ogp.ex b/lib/service/rich_media/parsers/ogp.ex index 7bfcf88ed..531f79bf4 100644 --- a/lib/service/rich_media/parsers/ogp.ex +++ b/lib/service/rich_media/parsers/ogp.ex @@ -10,6 +10,26 @@ defmodule Mobilizon.Service.RichMedia.Parsers.OGP do require Logger alias Mobilizon.Service.RichMedia.Parsers.MetaTagsParser + @opengraph_properties [ + :title, + :type, + :image, + :url, + :audio, + :description, + :determiner, + :locale, + :"locale:alternate", + :site_name, + :video, + :"image:url", + :"image.secure_url", + :"image:type", + :"image:width", + :"image:height", + :"image:alt" + ] + def parse(html, data) do Logger.debug("Using OpenGraph card parser") @@ -19,7 +39,9 @@ defmodule Mobilizon.Service.RichMedia.Parsers.OGP do data, "og", "No OGP metadata found", - "property" + :property, + :content, + @opengraph_properties ) do data = transform_tags(data) Logger.debug("Data found with OpenGraph card parser") @@ -29,9 +51,11 @@ defmodule Mobilizon.Service.RichMedia.Parsers.OGP do defp transform_tags(data) do data - |> Map.put(:image_remote_url, Map.get(data, :image)) - |> Map.put(:width, get_integer_value(data, :"image:width")) - |> Map.put(:height, get_integer_value(data, :"image:height")) + |> Enum.reject(fn {_, v} -> is_nil(v) end) + |> Map.new() + |> Map.update(:image_remote_url, Map.get(data, :image), & &1) + |> Map.update(:width, get_integer_value(data, :"image:width"), & &1) + |> Map.update(:height, get_integer_value(data, :"image:height"), & &1) end @spec get_integer_value(map(), atom()) :: integer() | nil diff --git a/lib/service/rich_media/parsers/twitter_card.ex b/lib/service/rich_media/parsers/twitter_card.ex index 2399d72aa..6d2d5297d 100644 --- a/lib/service/rich_media/parsers/twitter_card.ex +++ b/lib/service/rich_media/parsers/twitter_card.ex @@ -10,25 +10,49 @@ defmodule Mobilizon.Service.RichMedia.Parsers.TwitterCard do alias Mobilizon.Service.RichMedia.Parsers.MetaTagsParser require Logger + @twitter_card_properties [ + :card, + :site, + :creator, + :title, + :description, + :image, + :"image:alt" + ] + @spec parse(String.t(), map()) :: {:ok, map()} | {:error, String.t()} def parse(html, data) do Logger.debug("Using Twitter card parser") - res = + with {:ok, data} <- parse_name_attrs(data, html), + {:ok, data} <- parse_property_attrs(data, html), + data <- transform_tags(data) do + Logger.debug("Data found with Twitter card parser") + Logger.debug(inspect(data)) data - |> parse_name_attrs(html) - |> parse_property_attrs(html) - - Logger.debug("Data found with Twitter card parser") - Logger.debug(inspect(res)) - res + end end defp parse_name_attrs(data, html) do - MetaTagsParser.parse(html, data, "twitter", %{}, "name") + MetaTagsParser.parse(html, data, "twitter", %{}, :name, :content, [:"twitter:card"]) end defp parse_property_attrs({_, data}, html) do - MetaTagsParser.parse(html, data, "twitter", "No twitter card metadata found", "property") + MetaTagsParser.parse( + html, + data, + "twitter", + "No twitter card metadata found", + :property, + :content, + @twitter_card_properties + ) + end + + defp transform_tags(data) do + data + |> Enum.reject(fn {_, v} -> is_nil(v) end) + |> Map.new() + |> Map.update(:image_remote_url, Map.get(data, :image), & &1) end end From b7915a6467f2f1f009763c378a1d4200b44fd0ae Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 22 Jan 2021 18:15:21 +0100 Subject: [PATCH 092/114] Add some CSP headers Signed-off-by: Thomas Citharel --- lib/web/router.ex | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/web/router.ex b/lib/web/router.ex index 76bde3ceb..b8aa2690e 100644 --- a/lib/web/router.ex +++ b/lib/web/router.ex @@ -4,6 +4,12 @@ defmodule Mobilizon.Web.Router do """ use Mobilizon.Web, :router + @csp if Application.fetch_env!(:mobilizon, :env) != :dev, + do: "default-src 'self';", + else: + "default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline'" + @headers %{"content-security-policy" => @csp} + pipeline :graphql do # plug(:accepts, ["json"]) plug(Mobilizon.Web.Auth.Pipeline) @@ -30,6 +36,7 @@ defmodule Mobilizon.Web.Router do pipeline :activity_pub_and_html do plug(:accepts, ["html", "activity-json"]) + plug(:put_secure_browser_headers, @headers) plug(Cldr.Plug.AcceptLanguage, cldr_backend: Mobilizon.Cldr @@ -37,6 +44,7 @@ defmodule Mobilizon.Web.Router do end pipeline :atom_and_ical do + plug(:put_secure_browser_headers, @headers) plug(:accepts, ["atom", "ics", "html"]) end @@ -48,10 +56,7 @@ defmodule Mobilizon.Web.Router do ) plug(:accepts, ["html"]) - plug(:fetch_session) - plug(:fetch_flash) - plug(:protect_from_forgery) - plug(:put_secure_browser_headers) + plug(:put_secure_browser_headers, @headers) end pipeline :remote_media do @@ -158,6 +163,8 @@ defmodule Mobilizon.Web.Router do get("/interact", PageController, :interact) get("/auth/:provider", AuthController, :request) + # sobelow_skip ["Config.CSRFRoute"] + # Possibly related to https://github.com/ueberauth/ueberauth/issues/125 get("/auth/:provider/callback", AuthController, :callback) post("/auth/:provider/callback", AuthController, :callback) end From 21698f754d42e9537469ab8ba691020f7e9a239b Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 22 Jan 2021 18:16:00 +0100 Subject: [PATCH 093/114] Change some String.to_atom/1 to String.to_existing_atom/1 Signed-off-by: Thomas Citharel --- lib/graphql/resolvers/admin.ex | 8 ++++---- lib/mobilizon/actors/actors.ex | 12 ------------ 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/lib/graphql/resolvers/admin.ex b/lib/graphql/resolvers/admin.ex index 21698b06c..b8485d0ae 100644 --- a/lib/graphql/resolvers/admin.ex +++ b/lib/graphql/resolvers/admin.ex @@ -123,7 +123,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do # Changes are stored as %{"key" => "value"} so we need to convert them back as struct defp convert_changes_to_struct(struct, %{"report_id" => _report_id} = changes) do - with data <- for({key, val} <- changes, into: %{}, do: {String.to_atom(key), val}), + with data <- for({key, val} <- changes, into: %{}, do: {String.to_existing_atom(key), val}), data <- Map.put(data, :report, Mobilizon.Reports.get_report(data.report_id)) do struct(struct, data) end @@ -135,7 +135,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do for( {key, val} <- changes, into: %{}, - do: {String.to_atom(key), process_eventual_type(changeset, key, val)} + do: {String.to_existing_atom(key), process_eventual_type(changeset, key, val)} ) do struct(struct, data) end @@ -144,11 +144,11 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do # datetimes are not unserialized as DateTime/NaiveDateTime so we do it manually with changeset data defp process_eventual_type(changeset, key, val) do cond do - changeset[String.to_atom(key)] == :utc_datetime and not is_nil(val) -> + changeset[String.to_existing_atom(key)] == :utc_datetime and not is_nil(val) -> {:ok, datetime, _} = DateTime.from_iso8601(val) datetime - changeset[String.to_atom(key)] == :naive_datetime and not is_nil(val) -> + changeset[String.to_existing_atom(key)] == :naive_datetime and not is_nil(val) -> {:ok, datetime} = NaiveDateTime.from_iso8601(val) datetime diff --git a/lib/mobilizon/actors/actors.ex b/lib/mobilizon/actors/actors.ex index 763d2abb5..306ac56a2 100644 --- a/lib/mobilizon/actors/actors.ex +++ b/lib/mobilizon/actors/actors.ex @@ -296,18 +296,6 @@ defmodule Mobilizon.Actors do end end - # defp transform_media_file(nil), do: nil - - # defp transform_media_file(file) do - # file = for({key, val} <- file, into: %{}, do: {String.to_atom(key), val}) - - # if is_nil(file) do - # nil - # else - # struct(Mobilizon.Medias.File, file) - # end - # end - @delete_actor_default_options [reserve_username: true, suspension: false] def delete_actor(%Actor{} = actor, options \\ @delete_actor_default_options) do From 7b91367145ac4795c8bf0cfcb1684fb07028201b Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 22 Jan 2021 19:11:13 +0100 Subject: [PATCH 094/114] Some sobelow fixes Signed-off-by: Thomas Citharel --- .sobelow-conf | 10 +++++----- .sobelow-skips | 2 ++ lib/mobilizon.ex | 3 ++- lib/mobilizon/discussions/discussions.ex | 1 + lib/mobilizon/resources/resources.ex | 1 + lib/web/auth/error_handler.ex | 1 + lib/web/proxy/reverse_proxy.ex | 2 ++ lib/web/router.ex | 4 ++-- lib/web/views/utils.ex | 1 + 9 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 .sobelow-skips diff --git a/.sobelow-conf b/.sobelow-conf index 207a0df18..06cca8933 100644 --- a/.sobelow-conf +++ b/.sobelow-conf @@ -2,11 +2,11 @@ verbose: true, private: false, skip: true, - router: "", - exit: "false", + router: "lib/web/router.ex", + exit: "low", format: "txt", out: "", - threshold: "low", - ignore: ["Config.Secrets", "XSS", "Config.HTTPS"], - ignore_files: [""] + threshold: "medium", + ignore: ["Config.HTTPS"], + ignore_files: ["config/dev.1.secret.exs", "config/dev.2.secret.exs", "config/dev.3.secret.exs", "config/dev.secret.exs", "config/e2e.secret.exs", "config/prod.secret.exs", "config/test.secret.exs"] ] diff --git a/.sobelow-skips b/.sobelow-skips new file mode 100644 index 000000000..8a0f398e7 --- /dev/null +++ b/.sobelow-skips @@ -0,0 +1,2 @@ + +AACA51671C4B3C803ACBCA3FADE84CDE \ No newline at end of file diff --git a/lib/mobilizon.ex b/lib/mobilizon.ex index b4e581399..a1ca09962 100644 --- a/lib/mobilizon.ex +++ b/lib/mobilizon.ex @@ -76,10 +76,11 @@ defmodule Mobilizon do :ok end + # sobelow_skip ["DOS.StringToAtom"] @spec cachex_spec(atom, integer, integer, integer, function | nil) :: Supervisor.child_spec() defp cachex_spec(name, limit, default, interval, fallback \\ nil) do %{ - id: :"cache_#{name}", + id: String.to_atom("cache_#{to_string(name)}"), start: {Cachex, :start_link, [ diff --git a/lib/mobilizon/discussions/discussions.ex b/lib/mobilizon/discussions/discussions.ex index 9ecddffc0..35d3b47dd 100644 --- a/lib/mobilizon/discussions/discussions.ex +++ b/lib/mobilizon/discussions/discussions.ex @@ -58,6 +58,7 @@ defmodule Mobilizon.Discussions do @doc """ Callback for Absinthe Ecto Dataloader """ + # sobelow_skip ["SQL.Query"] @spec data :: Dataloader.Ecto.t() def data do Dataloader.Ecto.new(Repo, query: &query/2) diff --git a/lib/mobilizon/resources/resources.ex b/lib/mobilizon/resources/resources.ex index 23f15046c..b4cb43ae2 100644 --- a/lib/mobilizon/resources/resources.ex +++ b/lib/mobilizon/resources/resources.ex @@ -185,6 +185,7 @@ defmodule Mobilizon.Resources do end) end + # sobelow_skip ["SQL.Query"] @spec update_children(Multi.t(), Resource.t(), map()) :: Multi.t() defp update_children( %Multi{} = multi, diff --git a/lib/web/auth/error_handler.ex b/lib/web/auth/error_handler.ex index 6207477d6..edf760bb8 100644 --- a/lib/web/auth/error_handler.ex +++ b/lib/web/auth/error_handler.ex @@ -4,6 +4,7 @@ defmodule Mobilizon.Web.Auth.ErrorHandler do """ import Plug.Conn + # sobelow_skip ["XSS.SendResp"] def auth_error(conn, {type, _reason}, _opts) do body = Jason.encode!(%{message: to_string(type)}) send_resp(conn, 401, body) diff --git a/lib/web/proxy/reverse_proxy.ex b/lib/web/proxy/reverse_proxy.ex index 121e6a277..c3e5993f0 100644 --- a/lib/web/proxy/reverse_proxy.ex +++ b/lib/web/proxy/reverse_proxy.ex @@ -145,6 +145,7 @@ defmodule Mobilizon.Web.ReverseProxy do end end + # sobelow_skip ["XSS.SendResp"] def call(conn, _, _) do conn |> send_resp(400, Conn.Status.reason_phrase(400)) @@ -223,6 +224,7 @@ defmodule Mobilizon.Web.ReverseProxy do |> send_resp(code, "") end + # sobelow_skip ["XSS.SendResp"] defp error_or_redirect(conn, url, code, body, opts) do if Keyword.get(opts, :redirect_on_failure, false) do conn diff --git a/lib/web/router.ex b/lib/web/router.ex index b8aa2690e..75aaa638d 100644 --- a/lib/web/router.ex +++ b/lib/web/router.ex @@ -163,8 +163,8 @@ defmodule Mobilizon.Web.Router do get("/interact", PageController, :interact) get("/auth/:provider", AuthController, :request) - # sobelow_skip ["Config.CSRFRoute"] - # Possibly related to https://github.com/ueberauth/ueberauth/issues/125 + # Have a look at https://github.com/ueberauth/ueberauth/issues/125 some day + # Also possible CSRF issue get("/auth/:provider/callback", AuthController, :callback) post("/auth/:provider/callback", AuthController, :callback) end diff --git a/lib/web/views/utils.ex b/lib/web/views/utils.ex index 34eaa45c4..f1fba1796 100644 --- a/lib/web/views/utils.ex +++ b/lib/web/views/utils.ex @@ -5,6 +5,7 @@ defmodule Mobilizon.Web.Views.Utils do alias Mobilizon.Service.Metadata.Utils, as: MetadataUtils + # sobelow_skip ["Traversal.FileModule"] @spec inject_tags(Enum.t(), String.t()) :: {:safe, String.t()} def inject_tags(tags, locale \\ "en") do with {:ok, index_content} <- File.read(index_file_path()) do From e6da458b4943965d4c8e61befedd719081befdd3 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 22 Jan 2021 19:31:27 +0100 Subject: [PATCH 095/114] Add sobelow to CI Signed-off-by: Thomas Citharel --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1cbf2120c..d1d0156a0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -55,8 +55,9 @@ lint-elixir: - mix deps.get script: - export EXITVALUE=0 - - mix credo --strict -a || export EXITVALUE=1 - mix format --check-formatted --dry-run || export EXITVALUE=1 + - mix credo --strict -a || export EXITVALUE=1 + - mix sobelow --config --skip || export EXITVALUE=1 - exit $EXITVALUE lint-front: From a4545bcf672b04efa914cf72b6b3aa2c8b02f41a Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 22 Jan 2021 19:44:37 +0100 Subject: [PATCH 096/114] Exclude persons from being followed Signed-off-by: Thomas Citharel --- lib/federation/activity_pub/activity_pub.ex | 2 +- lib/federation/activity_pub/types/actors.ex | 5 ++- .../transmogrifier/follow_test.exs | 33 ++++++++++++++----- .../activity_pub/transmogrifier/undo_test.exs | 2 +- 4 files changed, 31 insertions(+), 11 deletions(-) diff --git a/lib/federation/activity_pub/activity_pub.ex b/lib/federation/activity_pub/activity_pub.ex index 3cf173441..cf7a9e54c 100644 --- a/lib/federation/activity_pub/activity_pub.ex +++ b/lib/federation/activity_pub/activity_pub.ex @@ -338,7 +338,7 @@ defmodule Mobilizon.Federation.ActivityPub do :ok <- maybe_federate(activity) do {:ok, activity, follower} else - {:error, err, msg} when err in [:already_following, :suspended] -> + {:error, err, msg} when err in [:already_following, :suspended, :no_person] -> {:error, msg} {:different_actors, _} -> diff --git a/lib/federation/activity_pub/types/actors.ex b/lib/federation/activity_pub/types/actors.ex index 1e0cdc673..66f7fd781 100644 --- a/lib/federation/activity_pub/types/actors.ex +++ b/lib/federation/activity_pub/types/actors.ex @@ -131,7 +131,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Actors do end end - def follow(%Actor{} = follower_actor, %Actor{} = followed, _local, additional) do + def follow(%Actor{} = follower_actor, %Actor{type: type} = followed, _local, additional) + when type != :Person do with {:ok, %Follower{} = follower} <- Mobilizon.Actors.follow(followed, follower_actor, additional["activity_id"], false), :ok <- FollowMailer.send_notification_to_admins(follower), @@ -140,6 +141,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Actors do end end + def follow(_, _, _, _), do: {:error, :no_person, "Only group and instances can be followed"} + defp prepare_args_for_actor(args) do args |> maybe_sanitize_username() diff --git a/test/federation/activity_pub/transmogrifier/follow_test.exs b/test/federation/activity_pub/transmogrifier/follow_test.exs index db99d54ab..10a2666cd 100644 --- a/test/federation/activity_pub/transmogrifier/follow_test.exs +++ b/test/federation/activity_pub/transmogrifier/follow_test.exs @@ -1,6 +1,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do use Mobilizon.DataCase + import ExUnit.CaptureLog import Mobilizon.Factory alias Mobilizon.Actors alias Mobilizon.Actors.Follower @@ -8,9 +9,25 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do alias Mobilizon.Federation.ActivityPub.{Activity, Transmogrifier} describe "handle incoming follow requests" do - test "it works for incoming follow requests" do + test "it works only for groups" do actor = insert(:actor) + data = + File.read!("test/fixtures/mastodon-follow-activity.json") + |> Jason.decode!() + |> Map.put("object", actor.url) + + assert capture_log(fn -> + :error = Transmogrifier.handle_incoming(data) + end) =~ "Only group and instances can be followed" + + actor = Actors.get_actor_with_preload(actor.id) + refute Actors.is_following(Actors.get_actor_by_url!(data["actor"], true), actor) + end + + test "it works for incoming follow requests" do + actor = insert(:group) + data = File.read!("test/fixtures/mastodon-follow-activity.json") |> Jason.decode!() @@ -27,7 +44,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do end test "it rejects activities without a valid ID" do - actor = insert(:actor) + actor = insert(:group) data = File.read!("test/fixtures/mastodon-follow-activity.json") @@ -59,7 +76,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do describe "handle incoming follow accept activities" do test "it works for incoming accepts" do follower = insert(:actor) - followed = insert(:actor, manually_approves_followers: false) + followed = insert(:group, manually_approves_followers: false) refute Actors.is_following(follower, followed) @@ -91,7 +108,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do test "it works for incoming accepts which were pre-accepted" do follower = insert(:actor) - followed = insert(:actor, manually_approves_followers: true) + followed = insert(:group, manually_approves_followers: true) refute Actors.is_following(follower, followed) @@ -126,7 +143,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do test "it works for incoming accepts which are referenced by IRI only" do follower = insert(:actor) - followed = insert(:actor, manually_approves_followers: true) + followed = insert(:group, manually_approves_followers: true) {:ok, follow_activity, _} = ActivityPub.follow(follower, followed) @@ -148,7 +165,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do test "it fails for incoming accepts which cannot be correlated" do follower = insert(:actor) - followed = insert(:actor) + followed = insert(:group) accept_data = File.read!("test/fixtures/mastodon-accept-activity.json") @@ -169,7 +186,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do describe "handle incoming follow reject activities" do test "it fails for incoming rejects which cannot be correlated" do follower = insert(:actor) - followed = insert(:actor) + followed = insert(:group) accept_data = File.read!("test/fixtures/mastodon-reject-activity.json") @@ -188,7 +205,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do test "it works for incoming rejects which are referenced by IRI only" do follower = insert(:actor) - followed = insert(:actor) + followed = insert(:group) {:ok, follow_activity, _} = ActivityPub.follow(follower, followed) diff --git a/test/federation/activity_pub/transmogrifier/undo_test.exs b/test/federation/activity_pub/transmogrifier/undo_test.exs index 777bba458..d24ee52c6 100644 --- a/test/federation/activity_pub/transmogrifier/undo_test.exs +++ b/test/federation/activity_pub/transmogrifier/undo_test.exs @@ -46,7 +46,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.UndoTest do end test "it works for incomming unfollows with an existing follow" do - actor = insert(:actor) + actor = insert(:group) follow_data = File.read!("test/fixtures/mastodon-follow-activity.json") From 3b78cffb171581dbdee2bf2ead15fac978f6aca2 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 25 Jan 2021 12:00:06 +0100 Subject: [PATCH 097/114] Hide event group organizers Signed-off-by: Thomas Citharel --- lib/graphql/resolvers/event.ex | 41 ++++++++++++++++++++++++++++++++++ lib/graphql/schema/event.ex | 10 ++++----- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/lib/graphql/resolvers/event.ex b/lib/graphql/resolvers/event.ex index ffeea8dd4..ecca7cfd2 100644 --- a/lib/graphql/resolvers/event.ex +++ b/lib/graphql/resolvers/event.ex @@ -12,12 +12,53 @@ defmodule Mobilizon.GraphQL.Resolvers.Event do alias Mobilizon.GraphQL.API alias Mobilizon.Federation.ActivityPub.Activity + import Mobilizon.Users.Guards, only: [is_moderator: 1] import Mobilizon.Web.Gettext # We limit the max number of events that can be retrieved @event_max_limit 100 @number_of_related_events 3 + def organizer_for_event( + %Event{attributed_to_id: attributed_to_id, organizer_actor_id: organizer_actor_id}, + _args, + %{context: %{current_user: %User{role: user_role} = user}} = _resolution + ) + when not is_nil(attributed_to_id) do + with %Actor{id: group_id} <- Actors.get_actor(attributed_to_id), + %Actor{id: actor_id} <- Users.get_actor_for_user(user), + {:member, true} <- + {:member, Actors.is_member?(actor_id, group_id) or is_moderator(user_role)}, + %Actor{} = actor <- Actors.get_actor(organizer_actor_id) do + {:ok, actor} + else + _ -> {:ok, nil} + end + end + + def organizer_for_event( + %Event{attributed_to_id: attributed_to_id}, + _args, + _resolution + ) + when not is_nil(attributed_to_id) do + case Actors.get_actor(attributed_to_id) do + %Actor{} -> {:ok, nil} + _ -> {:error, "Unable to get organizer actor"} + end + end + + def organizer_for_event( + %Event{organizer_actor_id: organizer_actor_id}, + _args, + _resolution + ) do + case Actors.get_actor(organizer_actor_id) do + %Actor{} = actor -> {:ok, actor} + _ -> {:error, "Unable to get organizer actor"} + end + end + def list_events(_parent, %{page: page, limit: limit}, _resolution) when limit < @event_max_limit do {:ok, Events.list_events(page, limit)} diff --git a/lib/graphql/schema/event.ex b/lib/graphql/schema/event.ex index 0b2ae40f3..b10a3b2ca 100644 --- a/lib/graphql/schema/event.ex +++ b/lib/graphql/schema/event.ex @@ -51,16 +51,16 @@ defmodule Mobilizon.GraphQL.Schema.EventType do field(:online_address, :string, description: "Online address of the event") field(:phone_address, :string, description: "Phone address for the event") - field(:organizer_actor, :actor, - resolve: dataloader(Actors), - description: "The event's organizer (as a person)" - ) - field(:attributed_to, :actor, resolve: dataloader(Actors), description: "Who the event is attributed to (often a group)" ) + field(:organizer_actor, :actor, + resolve: &Event.organizer_for_event/3, + description: "The event's organizer (as a person)" + ) + field(:tags, list_of(:tag), resolve: &Tag.list_tags_for_event/3, description: "The event's tags" From a97563d7cadbb1726b4bf934f12f098e867e588f Mon Sep 17 00:00:00 2001 From: Zero Feed <0xfeed@riseup.net> Date: Sat, 23 Jan 2021 19:31:07 +0000 Subject: [PATCH 098/114] Translated using Weblate (German) Currently translated at 99.1% (831 of 838 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/ --- js/src/i18n/de.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/js/src/i18n/de.json b/js/src/i18n/de.json index 107597a8b..9f64cd541 100644 --- a/js/src/i18n/de.json +++ b/js/src/i18n/de.json @@ -22,7 +22,7 @@ "A practical tool": "Ein praktisches Werkzeug", "A short tagline for your instance homepage. Defaults to \"Gather ⋅ Organize ⋅ Mobilize\"": "Eine kurze Tagline für Ihre Instanz-Homepage. Standardmäßig ist \"Sammeln ⋅ Organisieren ⋅ Mobilisieren\" eingestellt.", "A user-friendly, emancipatory and ethical tool for gathering, organising, and mobilising.": "Ein benutzerfreundliches, emanzipatorisches und ethisches Instrument zum Sammeln, Organisieren und Mobilisieren.", - "A validation email was sent to {email}": "Es wurde eine Bestätigungs-Mail an {email} gesendet.", + "A validation email was sent to {email}": "Es wurde eine Bestätigungs-Mail an {email} gesendet", "API": "API", "Abandon editing": "Bearbeitung abbrechen", "Abandon edition": "Bearbeitung abbrechen", @@ -90,6 +90,7 @@ "Are you sure you want to delete this event? This action cannot be reverted.": "Sind Sie sicher, dass Sie diese Veranstaltung löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", "As the event organizer has chosen to manually validate participation requests, your participation will be really confirmed only once you receive an email stating it's being accepted.": "Da der Veranstalter sich entschieden hat, die Teilnahmeanfragen manuell zu validieren, wird Ihre Teilnahme erst dann wirklich bestätigt, wenn Sie eine E-Mail erhalten, in der die Annahme bestätigt wird.", "Assigned to": "Zugewiesen an", + "Atom feed for events and posts": "Atom-Feed mit Veranstaltungen und Beiträgen", "Avatar": "Profilbild", "Back to previous page": "Zurück zur vorherigen Seite", "Banner": "Banner", @@ -214,6 +215,8 @@ "Displayed nickname": "Angezeigter Nutzername", "Displayed on homepage and meta tags. Describe what Mobilizon is and what makes this instance special in a single paragraph.": "Wird auf der Startseite und in den Meta-Tags angezeigt. Beschreiben Sie in einem Absatz was Mobilizon ist und was diese Instanz besonders macht.", "Do not receive any mail": "Keine E-Mails erhalten", + "Do you wish to {create_event} or {explore_events}?": "Wollen Sie {create_event} oder {explore_events}?", + "Do you wish to {create_group} or {explore_groups}?": "Wollen Sie {create_group} oder {explore_groups}?", "Domain": "Domain", "Don't show @{organizer} as event host alongside @{group}": "Zeige @{organizer} nicht neben @{group} als Veranstalter:in an", "Draft": "Entwurf", @@ -328,6 +331,8 @@ "I participate": "Ich nehme teil", "I want to allow people to participate without an account.": "Ich möchte Usern erlauben ohne Konto teilzunehmen.", "I want to approve every participation request": "Ich möchte jede Teilnahmeanfrage manuell bestätigen", + "ICS feed for events": "ICS-Feed mit Veranstaltungen", + "ICS/WebCal Feed": "ICS/Webcal-Feed", "Identity {displayName} created": "Identität {displayName} erstellt", "Identity {displayName} deleted": "Identität {displayName} gelöscht", "Identity {displayName} updated": "Identität {displayName} aktualisiert", @@ -511,6 +516,7 @@ "Only accessible to members of the group": "Nur für Gruppenmitglieder sichtbar", "Only alphanumeric characters and underscores are supported.": "Nur alphanumerische Zeichen und Unterstriche werden unterstützt.", "Only alphanumeric lowercased characters and underscores are supported.": "Es werden nur alphanumerische Kleinbuchstaben und Unterstriche unterstützt.", + "Only group members can access discussions": "Nur Gruppenmitglieder können die Diskussion anzeigen", "Only group moderators can create, edit and delete posts.": "Nur Gruppenmoderatoren können Beiträge erstellen, editieren oder löschen.", "Open": "Offen", "Opened reports": "Geöffnete Meldungen", @@ -639,6 +645,7 @@ "Resource provided is not an URL": "Die angegebene Ressource ist keine URL", "Resources": "Ressourcen", "Restricted": "Eingeschränkt", + "Return to the group page": "Zur Gruppenseite zurückkehren", "Right now": "Gerade eben", "Role": "Rolle", "Rules": "Regeln", @@ -722,6 +729,7 @@ "The {default_terms} will be used. They will be translated in the user's language.": "Die {default_terms} werden verwendet. Sie werden in die Sprache der Nuttzer übersetzt.", "There are {participants} participants.": "Es gibt {participants} Teilnehmer.", "There will be no way to recover your data.": "Es gibt keinen Weg Ihre Daten wiederherszustellen.", + "There's no discussions yet": "Es gibt noch keine Diskussion", "These events may interest you": "Diese Veranstaltungen könnten Sie interessieren", "This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "Diese Mobilizon-Instanz und die Organisator:in akzeptieren anonyme Teilnahmen, aber eine Bestätigung per E-Mail ist erforderlich.", "This URL is not supported": "Diese URL wird nicht unterstützt", From c5c11fa481292586283de18183c512ed3f7e52d1 Mon Sep 17 00:00:00 2001 From: Kate Date: Sat, 23 Jan 2021 16:35:50 +0000 Subject: [PATCH 099/114] Translated using Weblate (German) Currently translated at 99.1% (831 of 838 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/ --- js/src/i18n/de.json | 54 ++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/js/src/i18n/de.json b/js/src/i18n/de.json index 9f64cd541..96cc154e0 100644 --- a/js/src/i18n/de.json +++ b/js/src/i18n/de.json @@ -36,7 +36,7 @@ "Accepted": "Akzeptiert", "Accessible only to members": "Nur für Mitglieder zugänglich", "Accessible through link": "Erreichbar über Link", - "Account": "Account", + "Account": "Konto", "Account settings": "Kontoeinstellungen", "Actions": "Aktionen", "Activated": "Aktiviert", @@ -161,7 +161,7 @@ "Create event": "Veranstaltung erstellen", "Create group": "Gruppe erstellen", "Create my event": "Erstelle eine neue Veranstaltung", - "Create my group": "Erstelle meine Gruppe", + "Create my group": "Erstelle eine Gruppe", "Create my profile": "Erstelle mein Profil", "Create resource": "Ressource erstellen", "Create the discussion": "Beginne die Diskussion", @@ -175,7 +175,7 @@ "Current page": "Aktuelle Seite", "Custom": "Benutzerdefiniert", "Custom URL": "benutzerdefiniert URL", - "Custom text": "benutzerdefiniert Text", + "Custom text": "benutzerdefinierter Text", "Daily email summary": "Tägliche E-Mail-Zusammenfassungen", "Dashboard": "Dashboard", "Date": "Datum", @@ -202,7 +202,7 @@ "Delete {preferredUsername}": "Lösche {preferredUsername}", "Deleting comment": "Lösche Kommentar", "Deleting event": "Lösche Veranstaltung", - "Deleting my account will delete all of my identities.": "Das Löschen meines Accounts wird alle meine Identitäten löschen.", + "Deleting my account will delete all of my identities.": "Das Löschen meines Kontos wird alle meine Identitäten löschen.", "Deleting your Mobilizon account": "Löschen Sie Ihr Mobilizon Konto", "Demote": "zurückstufen", "Description": "Beschreibung", @@ -228,7 +228,7 @@ "Edited {ago}": "Editiert {ago}", "Eg: Stockholm, Dance, Chess…": "z.B.: Berlin, Tanzen, Schach…", "Either on the {instance} instance or on another instance.": "Entweder auf der Instanz {instance} oder auf einer andere Instanz.", - "Either the account is already validated, either the validation token is incorrect.": "Der Account ist bereits bestätigt oder der Bestätigungstoken ist abgelaufen.", + "Either the account is already validated, either the validation token is incorrect.": "Das Konto ist bereits bestätigt oder der Bestätigungstoken ist abgelaufen.", "Either the email has already been changed, either the validation token is incorrect.": "Die E-Mail-Adresse wurde bereits geändert oder der Bestätigungstoken ist abgelaufen.", "Either the participation has already been validated, either the validation token is incorrect.": "Die Teilnahme wurde bereits bestätigt oder der Bestätigungstoken ist abgelaufen.", "Either the participation request has already been validated, either the validation token is incorrect.": "Entweder wurde die Teilnahmeanfrage bereits validiert, oder das Validierungs-Token ist falsch.", @@ -277,7 +277,7 @@ "Featured events": "Vorgestellte Veranstaltungen", "Features": "Funktionen", "Federated Group Name": "Federierter Gruppenname", - "Federation": "Föderierung", + "Federation": "Federation", "Fetch more": "Mehr abrufen", "Find an address": "Adresse finden", "Find an instance": "Eine Instanz finden", @@ -337,9 +337,9 @@ "Identity {displayName} deleted": "Identität {displayName} gelöscht", "Identity {displayName} updated": "Identität {displayName} aktualisiert", "If allowed by organizer": "Wenn vom Organisator erlaubt", - "If an account with this email exists, we just sent another confirmation email to {email}": "Falls ein Account mit dieser E-Mail-Adresse existiert, senden wir eine neue Bestätigung an {email}", + "If an account with this email exists, we just sent another confirmation email to {email}": "Falls ein Konto mit dieser E-Mail-Adresse existiert, senden wir eine neue Bestätigung an {email}", "If the direction given by the development team does not suit you, you have the legal right to create your own version of the software, with your own governance choices.": "Wenn dir die von den Entwickler:innen vorgegebene Richtung nicht passt, hast du das Recht, deine eigene Version der Software nach deinen eigenen Regeln zu erstellen.", - "If this identity is the only administrator of some groups, you need to delete them before being able to delete this identity.": "Falls diese Identität die einzige Administrator:in einer oder mehrerer Gruppen sein sollte, musst du zunächst die Gruppen löschen, bevor du diese Identität löschen kannst.", + "If this identity is the only administrator of some groups, you need to delete them before being able to delete this identity.": "Falls diese Identität die einzige Administrator einer oder mehrerer Gruppen sein sollte, müssen Sie zunächst die Gruppen löschen, bevor Sie diese Identität löschen können.", "If you are being asked for your federated indentity, it's composed of your username and your instance. For instance, the federated identity for your first profile is:": "Wenn Sie nach Ihrer federierten Identität gefragt werden, setzt sich dieser aus Ihrem Benutzernamen und Ihrer Instanz zusammen. Die federierte Identität für Ihr erstes Profil lautet zum Beispiel:", "If you have opted for manual validation of participants, Mobilizon will send you an email to inform you of new participations to be processed. You can choose the frequency of these notifications below.": "Wenn Sie sich für die manuelle Validierung von Teilnehmern entschieden haben, sendet Ihnen Mobilizon eine E-Mail, um Sie über neue zu bearbeitende Teilnahmen zu informieren. Sie können die Häufigkeit dieser Benachrichtigungen unten auswählen.", "If you want, you may send a message to the event organizer here.": "Wenn Sie möchten, können Sie dem Organisator eine Nachricht hinterlassen.", @@ -418,7 +418,7 @@ "Members": "Mitglieder", "Message": "Nachricht", "Mobilizon": "Mobilizon", - "Mobilizon is a federated network. You can interact with this event from a different server.": "Mobilizon ist ein föderiertes Netzwerk.Sie könnenmit dieser Veranstaltung von verschiedenen Servern aus interagieren.", + "Mobilizon is a federated network. You can interact with this event from a different server.": "Mobilizon ist ein federiertes Netzwerk.Sie können mit dieser Veranstaltung von verschiedenen Servern aus interagieren.", "Mobilizon is a federated software, meaning you can interact - depending on your admin's federation settings - with content from other instances, such as joining groups or events that were created elsewhere.": "Mobilizon ist eine föderierte Software, d.h. Sie können - abhängig von Ihren Admin-Federationseinstellungen - mit Inhalten aus anderen Instanzen interagieren, z.B. Gruppen oder Veranstaltungen beitreten, die anderswo erstellt wurden.", "Mobilizon is a free/libre software that will allow communities to create their own spaces to publish events in order to better emancipate themselves from tech giants.": "Mobilizon ist Freie Software (Open Source), welche es Gemeinschaften erlaubt ihre eigenen Räume zu schaffen, um Veranstaltungen anzukündigen und sich aus der Abhängigkeit von Tech-Giganten zu lösen.", "Mobilizon is a tool that helps you find, create and organise events.": "Mobilizon ist ein Werkzeug, das Ihnen beim Finden, Erstellen und Organisieren von Veranstaltungen hilft.", @@ -541,7 +541,7 @@ "Participant has already been approved as participant.": "Teilnehmer:in wurde bereits bestätigt.", "Participants": "Teilnehmer", "Participate": "Teilnehmen", - "Participate using your email address": "Nehme mit deiner E-Mail-Adresse teil", + "Participate using your email address": "Nehmen Sie mit Ihrer E-Mail Adresse teil", "Participation approval": "Teilnahmebestätigung", "Participation confirmation": "Teilnahmebestätigung", "Participation notifications": "Benachrichtigungen für Teilnehmer", @@ -556,20 +556,20 @@ "Pick": "Wähle", "Pick a group": "Wählen Sie eine Gruppe", "Pick a profile or a group": "Wähle ein Profil der eine Gruppe", - "Pick an identity": "Wähle eine Identität", + "Pick an identity": "Wählen Sie eine Identität", "Pick an instance": "Wähle eine Instanz", - "Please check your spam folder if you didn't receive the email.": "Bitte schaue auch in deinem Spam-Ordner nach, wenn Du die E-Mail nicht erhalten hast.", - "Please contact this instance's Mobilizon admin if you think this is a mistake.": "Bitte kontaktiere den Administrator dieser Mobilizon-Instanz, wenn Du denkst, dass dies ein Fehler ist.", + "Please check your spam folder if you didn't receive the email.": "Bitte sehen Sie auch in Ihrem Spam-Ordner nach, wenn Sie keine E-Mail erhalten haben.", + "Please contact this instance's Mobilizon admin if you think this is a mistake.": "Bitte kontaktieren Sie den Administrator dieser Mobilizon-Instanz, wenn Sie denken, dass dies ein Fehler ist.", "Please do not use it in any real way.": "Bitte nicht im praktischen Einsatz verwenden.", - "Please enter your password to confirm this action.": "Bitte gebe zur Bestätigung des Vorgangs dein Passwort ein.", - "Please make sure the address is correct and that the page hasn't been moved.": "Bitte stelle sicher, dass die Adresse korrekt ist und die Seite nicht verschoben wurde.", + "Please enter your password to confirm this action.": "Bitte geben Sie zur Bestätigung des Vorgangs Ihr Passwort ein.", + "Please make sure the address is correct and that the page hasn't been moved.": "Bitte stellen Sie sicher, dass die Adresse korrekt ist und die Seite nicht verschoben wurde.", "Please read the full rules": "Bitte ließ die kompletten Regeln", "Please read the instance's {fullRules}": "Bitte lese die {fullRules} der Instanz", "Please read the {fullRules} published by {instance}'s administrators.": "Bitte lesen Sie die {fullRules} veröffentlicht von {instance}'s Administratoren.", "Please refresh the page and retry.": "Bitte lade die Seite neu und versuche es erneut.", "Please type at least 5 characters": "Bitte tippe wenigstens 5 Zeichen", "Post": "Beitrag", - "Post a comment": "Schreibe einen Kommentar", + "Post a comment": "Kommentar schreiben", "Post a public message": "Schreibe eine öffentliche Nachricht", "Post a reply": "Antwort schreiben", "Postal Code": "Postleitzahl", @@ -595,7 +595,7 @@ "Publication date": "Erstellungsdatum", "Publish": "Veröffentlichen", "Published events": "Veröffentlichte Veranstaltungen", - "Published events with {comments} comments and {participations} confirmed participations": "Veröffentlichend Veranstaltungen mit {comments} Kommentare und {participations} bestätigt Teilnahmen", + "Published events with {comments} comments and {participations} confirmed participations": "Veröffentlichte Veranstaltungen mit {comments} Kommentaren und {participations} bestätigten Teilnahmen", "RSS/Atom Feed": "RSS/Atom-Feed", "Radius": "Radius", "Read Framasoft’s statement of intent on the Framablog": "Ließ Framasofts Absichtserklärung im Framablog", @@ -614,7 +614,7 @@ "Registration is closed.": "Registrierung geschlossen.", "Registration is currently closed.": "Registrierungen sind aktuell geschlossen.", "Registrations": "Registrierung", - "Registrations are restricted by allowlisting.": "Anmeldungen sind durch Zugriffsrecht beschränkt.", + "Registrations are restricted by allowlisting.": "Registrierungen werden durch die Erlaubnisliste eingeschränkt.", "Registrations are restricted by whitelisting.": "Registrierung ist durch eine Positivliste beschränkt.", "Reject": "Ablehnen", "Rejected": "Abgelehnt", @@ -667,7 +667,7 @@ "Send the confirmation email again": "Bestätigungsmail erneut senden", "Send the report": "Meldung senden", "Set an URL to a page with your own privacy policy.": "Setze eine URL zu einer Seite mit deiner eigenen Datenschutzerklärung.", - "Set an URL to a page with your own terms.": "Gib einen Link zu einer Seite mit deinen eigenen Nutzungsbedingungen an.", + "Set an URL to a page with your own terms.": "Geben Sie einen Link zu einer Seite mit Ihren eigenen Nutzungsbedingungen an.", "Settings": "Einstellungen", "Share this event": "Diese Veranstaltung teilen", "Short bio": "Kurze Biografie", @@ -694,9 +694,9 @@ "Terms": "Nutzungsbedingungen", "Terms of service": "Nutzungsbedingungen", "Text": "Text", - "The account's email address was changed. Check your emails to verify it.": "Die E-Mail-Adresse des Accounts wurde geändert. Schau in deinen Mails nach einer Bestätigung.", - "The actual number of participants may differ, as this event is hosted on another instance.": "Die tatsächliche Zahl der Teilnehmer:innen kann variieren, da diese Veranstaltung auf einer anderen Instanz ausgerichtet wird.", - "The content came from another server. Transfer an anonymous copy of the report?": "Der Inhalt kam von einem anderen Server. Möchtest Du eine anonyme Kopie der Meldung übertragen?", + "The account's email address was changed. Check your emails to verify it.": "Die E-Mail-Adresse des Accounts wurde geändert. Bitte prüfen Sie Ihre E-Mails für eine Bestätigung.", + "The actual number of participants may differ, as this event is hosted on another instance.": "Die tatsächliche Zahl der Teilnehmer kann variieren, da diese Veranstaltung auf einer anderen Instanz ausgerichtet wird.", + "The content came from another server. Transfer an anonymous copy of the report?": "Der Inhalt kam von einem anderen Server. Möchten Sie eine anonyme Kopie der Meldung übertragen?", "The current identity doesn't have any permission on this event. You should probably change it.": "Die aktuelle Identität hat keine Berechtigungen für diese Veranstaltung. Du solltest sie wahrscheinlich wechseln.", "The current password is invalid": "Das Passwort ist ungültig", "The draft event has been updated": "Der Entwurf wurde aktualisiert", @@ -705,7 +705,7 @@ "The event has been updated": "Die Veranstaltung wurde aktualisiert", "The event has been updated and published": "Die Veranstaltung wurde aktualisiert und veröffentlicht", "The event organiser has chosen to validate manually participations. Do you want to add a little note to explain why you want to participate to this event?": "Der Veranstalter hat sich dafür entschieden, Teilnahmeanfragen manuell zu überprüfen. Möchten Sie eine kurze Nachricht hinterlassen, in der Sie erklären, warum Sie an der Veranstaltung teilnehmen möchten?", - "The event organizer didn't add any description.": "Die Organisator:in hat keine Beschreibung hinzugefügt.", + "The event organizer didn't add any description.": "Der Organisator hat keine Beschreibung hinzugefügt.", "The event organizer manually approves participations. Since you've chosen to participate without an account, please explain why you want to participate to this event.": "Der Organisator möchte Teilnahmen manuell bestätigen. Wenn Sie ohne Konto teilnehmen möchten, erklären Sie bitte warum Sie an der Veranstaltung interessiert sind.", "The event title will be ellipsed.": "Der Titel der Veranstaltung wird verkürzt dargestellt.", "The event will show as attributed to this group.": "Das Ereignis wird als dieser Gruppe zugehörig angezeigt.", @@ -731,7 +731,7 @@ "There will be no way to recover your data.": "Es gibt keinen Weg Ihre Daten wiederherszustellen.", "There's no discussions yet": "Es gibt noch keine Diskussion", "These events may interest you": "Diese Veranstaltungen könnten Sie interessieren", - "This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "Diese Mobilizon-Instanz und die Organisator:in akzeptieren anonyme Teilnahmen, aber eine Bestätigung per E-Mail ist erforderlich.", + "This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "Diese Mobilizon-Instanz und der Organisator akzeptieren anonyme Teilnahmen, aber eine Bestätigung per E-Mail ist erforderlich.", "This URL is not supported": "Diese URL wird nicht unterstützt", "This email is already registered as participant for this event": "Diese E-Mail-Adresse ist bereits als Teilnehmer:in für die Veranstaltung registriert", "This email is already used.": "Diese E-Mail-Adresse wird bereits verwendet.", @@ -788,9 +788,9 @@ "Upcoming": "Demnächst", "Upcoming events": "Bevorstehende Veranstaltungen", "Update": "Update", - "Update event {name}": "Event {name} aktualisieren", + "Update event {name}": "Veranstaltung {name} aktualisieren", "Update group": "Gruppe aktualisieren", - "Update my event": "Meine Veranstaltung aktualisieren", + "Update my event": "Veranstaltung aktualisieren", "Update post": "Beitrag aktualisieren", "Updated": "Aktualisiert", "Uploaded media size": "Größe der hochgeladenen Medien", @@ -830,7 +830,7 @@ "Welcome on your administration panel": "Willkommen in deiner Administrationsansicht", "Welcome to Mobilizon, {username}!": "Willkommen zu Mobilizon, {username}!", "When a moderator from the group creates an event and attributes it to the group, it will show up here.": "Wenn ein Moderator der Gruppe ein Ereignis erstellt und es der Gruppe zuordnet, wird es hier angezeigt.", - "Who can view this event and participate": "Wer kann diese Veranstaltung sehen und teilnehmen", + "Who can view this event and participate": "Wer kann diese Veranstaltung sehen und daran teilnehmen kann", "Who can view this post": "Wer kann diesen Beitrag sehen", "Who published {number} events": "Die {number} Veranstaltungen angelegt haben", "Why create an account?": "Warum ein Konto erstellen?", From 74bafce7faadca8f4d621ded0696f489f4ee852d Mon Sep 17 00:00:00 2001 From: Berto Te Date: Sat, 23 Jan 2021 18:29:32 +0000 Subject: [PATCH 100/114] Translated using Weblate (Spanish) Currently translated at 100.0% (838 of 838 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/es/ --- js/src/i18n/es.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/js/src/i18n/es.json b/js/src/i18n/es.json index 38d9a65b8..d81ed91c5 100644 --- a/js/src/i18n/es.json +++ b/js/src/i18n/es.json @@ -13,6 +13,7 @@ "@{group}": "@{group}", "@{username}": "@{username}", "@{username} ({role})": "@{username} ({role})", + "@{username}'s follow request was rejected": "Se rechazó la solicitud de seguimiento de @{username}", "A cookie is a small file containing information that is sent to your computer when you visit a website. When you visit the site again, the cookie allows that site to recognize your browser. Cookies may store user preferences and other information. You can configure your browser to refuse all cookies. However, this may result in some website features or services partially working. Local storage works the same way but allows you to store more data.": "Una cookie es un pequeño archivo que contiene información que se envía a su computadora cuando visita un sitio web. Cuando vuelve a visitar el sitio, la cookie permite que ese sitio reconozca su navegador. Las cookies pueden almacenar preferencias del usuario y otra información. Puede configurar su navegador para rechazar todas las cookies. Sin embargo, esto puede provocar que algunas funciones o servicios del sitio web funcionen parcialmente. El almacenamiento local funciona de la misma manera, pero le permite almacenar más datos.", "A cookie is a small file containing informations that is sent to your computer when you visit a website. When you visit the site again, the cookie allows that site to recognize your browser. Cookies may store user preferences and other information. You can configure your browser to refuse all cookies. However, this may result in some website features or services partially working. Local storage works the same way but allows to store more data.": "Una cookie es un pequeño archivo que contiene información que se envía a su computadora cuando visita un sitio web. Cuando vuelve a visitar el sitio, la cookie permite que ese sitio reconozca su navegador. Las cookies pueden almacenar las preferencias del usuario y otra información. Puede configurar su navegador para rechazar todas las cookies. Sin embargo, esto puede provocar que algunas funciones o servicios del sitio web funcionen parcialmente. El almacenamiento local funciona de la misma manera pero permite almacenar más datos.", "A federated software": "Un software federado", @@ -293,7 +294,9 @@ "Find an instance": "Buscar una instancia", "Find another instance": "Encuentra otra instancia", "Followed by {count} persons": "Seguido por {count} personas", + "Follower": "Seguidor", "Followers": "Seguidores", + "Followers will receive new public events and posts.": "Los seguidores recibirán nuevos eventos públicos y publicaciones.", "Followings": "Seguimientos", "For instance: London": "Por ejemplo: Londres", "For instance: London, Taekwondo, Architecture…": "Por ejemplo: Londres, Taekwondo, Arquitectura …", @@ -314,6 +317,7 @@ "Go to the event page": "Ir a la página del evento", "Going as {name}": "Ir como {nombre}", "Group": "Grupo", + "Group Followers": "Seguidores del grupo", "Group List": "Lista de grupo", "Group Members": "Miembros del grupo", "Group address": "Dirección del grupo", @@ -428,6 +432,7 @@ "Manage my notifications": "Administrar mis notificaciones", "Manage my settings": "Administrar mi configuración", "Manage participations": "Administrar participaciones", + "Manually approve new followers": "Aprobar manualmente nuevos seguidores", "Manually invite new members": "Invitar nuevos miembros manualmente", "Mark as resolved": "Marca como resuelto", "Member": "Miembro", @@ -480,6 +485,7 @@ "No discussions yet": "Aún no hay discusiones", "No end date": "Sin fecha de finalización", "No events found": "No se encontraron eventos", + "No follower matches the filters": "Ningún seguidor coincide con los filtros", "No group found": "Ningún grupo encontrado", "No groups found": "No se encontraron grupos", "No instance follows your instance yet.": "Ninguna instancia sigue a tu instancia todavía.", From cc7da129a41ddad03c6da51ebc773594a3172e03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Miko=C5=82ajczak?= Date: Sun, 24 Jan 2021 11:24:01 +0000 Subject: [PATCH 101/114] Translated using Weblate (Polish) Currently translated at 92.8% (778 of 838 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/pl/ --- js/src/i18n/pl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/src/i18n/pl.json b/js/src/i18n/pl.json index dd0ef7134..b3990ea9f 100644 --- a/js/src/i18n/pl.json +++ b/js/src/i18n/pl.json @@ -36,7 +36,7 @@ "Active": "Aktywny", "Actor": "Aktor", "Add": "Dodaj", - "Add / Remove…": "Dodaj/usun…", + "Add / Remove…": "Dodaj/usuń…", "Add a contact": "Dodaj kontakt", "Add a group": "Dodaj grupę", "Add a new post": "Dodaj nowy wpis", From 8d93dc647eef31a8de8a8a6a64b3c10c3590fe83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20Trob=C3=A4ck?= Date: Fri, 22 Jan 2021 14:13:48 +0000 Subject: [PATCH 102/114] Translated using Weblate (Swedish) Currently translated at 39.0% (327 of 838 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sv/ --- js/src/i18n/sv.json | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/js/src/i18n/sv.json b/js/src/i18n/sv.json index 8fe7279cc..4d37b5723 100644 --- a/js/src/i18n/sv.json +++ b/js/src/i18n/sv.json @@ -174,7 +174,11 @@ "Headline picture": "Huvudbild", "Hide replies": "Dölj svar", "I create an identity": "Jag skapar en identitet", + "I don't have a Mobilizon account": "Jag har inget Mobilizon konto", + "I have a Mobilizon account": "Jag har ett Mobilizon konto", + "I have an account on another Mobilizon instance.": "Jag har ett konto i en annan Mobilizon instans.", "I participate": "Jag deltar", + "I want to allow people to participate without an account.": "Jag vill låta personer utan ett konto delta.", "I want to approve every participation request": "Jag vill godkänna varje deltagande", "Identity {displayName} created": "Identiteten {displayName} skapad", "Identity {displayName} deleted": "Identiteten {displayName} raderad", @@ -184,6 +188,13 @@ "Impossible to login, your email or password seems incorrect.": "Kunde inte logga in, din e-postadress eller ditt lösenord verkar inte stämma.", "In the meantime, please consider that the software is not (yet) finished. More information {onBlog}.": "Under tiden, kom ihåg att mjukvaran inte är färdig (ännu). Mer information {onBlog}.", "Installing Mobilizon will allow communities to free themselves from the services of tech giants by creating their own event platform.": "Att installera Mobilizon kommer tillåta gemenskaper att fria sig själva från teknikjättarnas tjänster genom att skapa sina egna platformar för evenamang.", + "Instance Name": "Instansnamn", + "Instance Terms": "Instansvillkor", + "Instance Terms Source": "Instansvillkor source", + "Instance Terms URL": "Instansvillkor URL", + "Instance settings": "Instansinställningar", + "Instances": "Instanser", + "Join {instance}, a Mobilizon instance": "Gå med i {instans}, en Mobilizon instans", "Join {instance}, a Mobilizon instance": "Gå med i {instance}, en Mobilizon instans", "Key words": "Nyckelord", "Last published event": "Senast publicerade evenemang", @@ -253,7 +264,7 @@ "Pick an identity": "Välj en identitet", "Please check your spam folder if you didn't receive the email.": "Kolla din spam-folder om du inte fått mailet.", "Please contact this instance's Mobilizon admin if you think this is a mistake.": "Vänligen kontakta den här instansens Mobilizon-administratör om du tror det här är ett misstag.", - "Please do not use it in any real way.": "Använd det inte på riktigt.", + "Please do not use it in any real way.": "Använd det inte på riktigt.", "Please make sure the address is correct and that the page hasn't been moved.": "Vänligen se till att adressen stämmer och att sidan inte flyttats.", "Please read the full rules": "Vänligen läs reglerna", "Please refresh the page and retry.": "Vänligen ladda om sidan och försök igen.", @@ -371,7 +382,7 @@ "You have been disconnected": "Du har blivit frånkopplad", "You have cancelled your participation": "Du har avslutat ditt deltagande", "You have one event in {days} days.": "Du har inga evenemang under nästa {days} dagar|Du har ett evenemang under nästa {days} dagar.|Du har {count} under nästa {days} dagar", - "You have one event today.": "Du har inga evenemang idag|Du hare ett evenemang idag.|Du har {count} evenemang idag", + "You have one event today.": "Du har inga evenemang idag|Du har ett evenemang idag.|Du har {count} evenemang idag", "You have one event tomorrow.": "Du har inga evenemang imorgon|Du har ett evenemang imorgon|Du har {count} evenemang imorgon", "You may also ask to {resend_confirmation_email}.": "Du kan också be om att {resend_confirmation_email}.", "You need to login.": "Du måste logga in.", From c72ab8ed3cd620e705aab8e33c8a940658a039eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jos=C3=A9=20m?= Date: Sat, 23 Jan 2021 05:36:08 +0000 Subject: [PATCH 103/114] Translated using Weblate (Galician) Currently translated at 99.8% (837 of 838 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/ --- js/src/i18n/gl.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/js/src/i18n/gl.json b/js/src/i18n/gl.json index 6451e1601..ec9111c37 100644 --- a/js/src/i18n/gl.json +++ b/js/src/i18n/gl.json @@ -11,6 +11,7 @@ "{contact} will be displayed as contact.": "{contact} será mostrado como contacto.|{contact} serán mostrados como contactos.", "@{group}": "@{group}", "@{username} ({role})": "@{username} ({role})", + "@{username}'s follow request was rejected": "A solicitude de seguimento de @{username} foi rexeitada", "A cookie is a small file containing information that is sent to your computer when you visit a website. When you visit the site again, the cookie allows that site to recognize your browser. Cookies may store user preferences and other information. You can configure your browser to refuse all cookies. However, this may result in some website features or services partially working. Local storage works the same way but allows you to store more data.": "Unha cookie é un pequeno ficheiro que contén información que se envía á túa computadora cando visitas unha web. Cando volves á mesma web, a cookie permite que esa web recoñeza o teu navegador. As cookies poden gardar preferencias da usuaria e outra información. Podes configurar o navegador para rexeitar todas as cookies. Porén, esto podería facer que algúns servizos ou características da web non funcionen correctamente. O almacenaxe local funciona do mesmo xeito pero permite almacenar máis datos.", "A federated software": "Software federado", "A place for your code of conduct, rules or guidelines. You can use HTML tags.": "Lugar para o código de conduta, regras ou guías. Podes usar HTML.", @@ -275,7 +276,9 @@ "Find an address": "Atopar un enderezo", "Find an instance": "Atopar unha instancia", "Find another instance": "Atopa outra instancia", + "Follower": "Seguidora", "Followers": "Seguidoras", + "Followers will receive new public events and posts.": "As seguidoras recibirán os novos eventos públicos e publicacións.", "Followings": "Seguindo", "For instance: London": "Por exemplo: Allariz", "For instance: London, Taekwondo, Architecture…": "Por exemplo: Leiro, Natación, Arquitectura…", @@ -294,6 +297,7 @@ "Go": "Ir", "Go to the event page": "Ir á páxina do evento", "Going as {name}": "Ir como {name}", + "Group Followers": "Agrupar seguidoras", "Group List": "Lista do grupo", "Group Members": "Membros do grupo", "Group address": "Enderezo do grupo", @@ -402,6 +406,7 @@ "Manage my notifications": "Xestionar notificacións", "Manage my settings": "Xestionar os axustes", "Manage participations": "Xestionar participantes", + "Manually approve new followers": "Aprobar manualmente novas solicitudes", "Manually invite new members": "Convida manualmente a novos membros", "Mark as resolved": "Marcar como resolto", "Member": "Membro", @@ -452,6 +457,7 @@ "No discussions yet": "Aínda non hai debates", "No end date": "Se data de fin", "No events found": "Non se atopan eventos", + "No follower matches the filters": "Ningunha seguidora supera o filtro", "No group found": "Non hai grupos", "No groups found": "Non se atopa ningún grupo", "No instance follows your instance yet.": "Aínda non te segue ningunha instancia.", From e59e7d9289ee4c13f5bf6a1de4e39d4c64c0384c Mon Sep 17 00:00:00 2001 From: Kristijan Tkalec Date: Sun, 24 Jan 2021 21:57:39 +0000 Subject: [PATCH 104/114] Translated using Weblate (Slovenian) Currently translated at 53.9% (452 of 838 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sl/ --- js/src/i18n/sl.json | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/js/src/i18n/sl.json b/js/src/i18n/sl.json index b22a29034..997bbf9fd 100644 --- a/js/src/i18n/sl.json +++ b/js/src/i18n/sl.json @@ -1,4 +1,5 @@ { + "(Masked)": "(Maskirano)", "@{group}": "@{group}", "@{username} ({role})": "@{username} ({role})", "A user-friendly, emancipatory and ethical tool for gathering, organising, and mobilising.": "Uporabniku prijazno, emancipatorno in etično orodje za zbiranje, organiziranje in mobilizacijo.", @@ -14,6 +15,7 @@ "Add": "Dodaj", "Add a group": "Dodaj supino", "Add a note": "Dodaj opombo", + "Add a todo": "Dodaj opravilo", "Add an address": "Dodaj naslov", "Add an instance": "Dodaj vozlišče", "Add some tags": "Dodaj oznake", @@ -38,6 +40,8 @@ "Avatar": "Podoba", "Back to previous page": "Nazaj na prejšnjo stran", "Before you can login, you need to click on the link inside it to validate your account.": "Preden se lahko prijavite, morate klikniti na povezavo znotraj njega, da potrdite svoj račun.", + "Bold": "Krepko", + "By @{group}": "Avtor @{group}", "By @{username}": "Od @{username}", "Cancel": "Prekliči", "Cancel anonymous participation": "Prekliči anonimno udeležbo", @@ -66,13 +70,18 @@ "Continue editing": "Nadaljuj z urejanjem", "Country": "Država", "Create": "Ustvari", + "Create a calc": "Ustvari tabelo", "Create a new event": "Ustvari nov dogodek", "Create a new group": "Ustvari novo skupino", "Create a new identity": "Ustvari novo identiteto", + "Create a new list": "Ustvari nov seznam", + "Create a pad": "Ustvari zapisnik", + "Create a videoconference": "Ustvari videokonferenco", "Create group": "Ustvari skupino", "Create my event": "Ustvari moj dogodek", "Create my group": "Ustvari mojo skupino", "Create my profile": "Ustvari moj profil", + "Create resource": "Ustvari vir", "Create token": "Ustvari žeton", "Current identity has been changed to {identityName} in order to manage this event.": "Trenutna identiteta je bila spremenjena v {identityName}, da bi lahko upravljali ta dogodek.", "Current page": "Trenutna stran", @@ -109,6 +118,7 @@ "Draft": "Osnutek", "Drafts": "Osnutki", "Due on": "Do", + "Duplicate": "Podvojiti", "Edit": "Uredi", "Eg: Stockholm, Dance, Chess…": "Npr.: Stockholm, ples, šah …", "Either on the {instance} instance or on another instance.": "Ali na vozlišču {instance}, ali na drugem.", @@ -133,6 +143,7 @@ "Event {eventTitle} reported": "Dogodek {eventTitle} je prijavljen", "Events": "Dogodki", "Ex: mobilizon.fr": "Npr.: mobilizon.fr", + "Ex: someone@mobilizon.org": "Npr.: nekdo@mobilizon.org", "Explore": "Razišči", "Failed to save admin settings": "Skrbniških nastavitev ni bilo mogoče shraniti", "Featured events": "Izbrani dogodki", @@ -150,11 +161,13 @@ "General information": "Splošne informacije", "Getting location": "Pridobivanje lokacije", "Go": "Pojdi", + "Group Members": "Člani skupine", "Group name": "Ime skupine", "Group {displayName} created": "Skupina {displayName} je ustvarjena", "Groups": "Skupine", "Headline picture": "Naslovna slika", "Hide replies": "Skrij odgovore", + "Home": "Domov", "I create an identity": "Ustvarim identiteto", "I don't have a Mobilizon account": "Nimam Mobilizon računa", "I have a Mobilizon account": "Imam Mobilizon račun", @@ -174,14 +187,19 @@ "Instance Terms URL": "URL pogojev uporabe vozlišča", "Instance settings": "Nastavitve vozlišča", "Instances": "Vozlišča", + "Invite a new member": "Povabi novega člana", + "Invite member": "Povabi člana", + "Italic": "Ležeče", "Join {instance}, a Mobilizon instance": "Pridruži se {instance}, ki je Mobilizon vozlišče", "Last published event": "Zadnji objavljeni dogodek", "Last week": "Prejšnji teden", + "Latest posts": "Zadnje objave", "Learn more about Mobilizon": "Preberite več o Mobilizonu", "Leave event": "Zapusti dogodek", "Leaving event \"{title}\"": "Zapuščanje dogodka »{title}«", "License": "Licenca", "Limited number of places": "Omejeno število mest", + "List title": "Naslov seznama", "Load more": "Naloži več", "Location": "Lokacija", "Log in": "Vpiši se", @@ -203,6 +221,8 @@ "My identities": "Moje identitete", "Name": "Ime", "New email": "Nov e-poštni naslov", + "New folder": "Nova mapa", + "New link": "Nova povezava", "New note": "Nova opomba", "New password": "Novo geslo", "New profile": "Nov profil", @@ -220,12 +240,16 @@ "No instance to reject|Reject instance|Reject {number} instances": "Nobenega vozlišča za zavrnitev|Zavrni vozlišče|Zavrni {number} vozlišč", "No instance to remove|Remove instance|Remove {number} instances": "Nobenega vozlišča za odstranitev|Odstrani vozlišče|Odstrani {number} vozlišč", "No message": "Ni sporočil", + "No one is going to this event": "Nihče ne gre na ta dogodek|Ena oseba gre|{going} oseb gre", "No open reports yet": "Še ni odprtih poročil", "No participant to approve|Approve participant|Approve {number} participants": "Nobenega udeleženca za odobritev|Odobri udeleženca|Odobri {number} udeležencev", "No participant to reject|Reject participant|Reject {number} participants": "Nobenega udeleženca za zavrnitev|Zavrni udeleženca|Zavrni {number} udeležencev", + "No public upcoming events": "Ni javnih prihajajočih dogodkov", "No resolved reports yet": "Še ni razrešenih poročil", + "No resources selected": "Izbran ni noben vir|En vir je izbran|{count} virov je izbranih", "No results for \"{queryText}\"": "Ni rezultatov za \"{queryText}\"", "Notes": "Opombe", + "Notification on the day of the event": "Obvestilo na dan dogodka", "Number of places": "Število mest", "OK": "V redu", "Old password": "Staro geslo", @@ -274,6 +298,7 @@ "Private event": "Zasebni dogodek", "Private feeds": "Zasebni viri", "Profiles": "Profili", + "Public": "Javno", "Public RSS/Atom Feed": "Javni vir RSS/Atom", "Public comment moderation": "Moderiranje javnih komentarjev", "Public event": "Javni dogodek", @@ -283,12 +308,14 @@ "Publish": "Objavi", "Published events with {comments} comments and {participations} confirmed participations": "Objavljeni dogodki s {comments} komentarji in {participations} potrjenimi udeležbami", "RSS/Atom Feed": "Vir RSS/Atom", + "Recap every week": "Povzetek vsak teden", "Region": "Regija", "Registration is allowed, anyone can register.": "Registracija je dovoljena, prijavi se lahko vsak.", "Registration is closed.": "Registracija je zaprta.", "Registration is currently closed.": "Registracija je trenutno zaprta.", "Rejected": "Zavrnjeno", "Rename": "Preimenuj", + "Rename resource": "Preimenuj vir", "Reopen": "Ponovno odprto", "Reply": "Odgovori", "Report": "Prijavi", @@ -323,6 +350,7 @@ "Starts on…": "Začne se…", "Status": "Stanje", "Street": "Ulica", + "Task lists": "Seznami nalog", "Tentative: Will be confirmed later": "Okvirno: kasneje bo potrjeno", "Terms": "Pogoji", "Text": "Tekst", @@ -347,10 +375,12 @@ "There will be no way to recover your data.": "Vaših podatkov ne bo mogoče obnoviti.", "These events may interest you": "Ti dogodki vas lahko zanimajo", "This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "To Mobilizon vozlišče in organizator dogodkov omogočata anonimne udeležbe, vendar zahtevata potrditev po e-pošti.", + "This identity is not a member of any group.": "Ta identiteta ni članica nobene skupine.", "This information is saved only on your computer. Click for details": "Ti podatki so shranjeni samo na vašem računalniku. Kliknite za podrobnosti", "This instance isn't opened to registrations, but you can register on other instances.": "To vozlišče ni odprto za registracije, lahko pa se registrirate na drugih vozliščih.", "This is a demonstration site to test Mobilizon.": "To je demonstracijska stran za preizkušanje Mobilizona.", "This will delete / anonymize all content (events, comments, messages, participations…) created from this identity.": "S tem boste izbrisali / anonimizirali vso vsebino (dogodke, komentarje, sporočila, udeležbe ...), ustvarjeno iz te identitete.", + "Timezone detected as {timezone}.": "Časovni pas je zaznan kot {timezone}.", "Title": "Naslov", "To confirm, type your event title \"{eventTitle}\"": "Za potrditev vnesite naslov dogodka \"{eventTitle}\"", "To confirm, type your identity username \"{preferredUsername}\"": "Za potrditev vnesite svoje uporabniško ime \"{preferredUsername}\"", @@ -394,6 +424,7 @@ "You can try another search term or drag and drop the marker on the map": "Lahko poskusite z drugim iskalnim izrazom ali povlečete in spustite oznako na zemljevidu", "You don't follow any instances yet.": "Še nobenega vozlišča ne spremljate.", "You have been disconnected": "Oklopljeni ste", + "You have been invited by {invitedBy} to the following group:": "{invitedBy} vas je povabil v naslednjo skupino:", "You have cancelled your participation": "Odpovedali ste udeležbo", "You have one event in {days} days.": "V {days} dneh nimate dogodkov | V {days} dneh imate en dogodek | V {days} dneh imate {count} dogodkov", "You have one event today.": "Danes nimate dogodkov | Danes imate en dogodek | Danes imate {count} dogodkov", @@ -418,6 +449,7 @@ "Your participation request has been validated": "Vaša udeležba je potrjena", "Your participation request is being validated": "Vaša udeležba je v procesu potrjevanja", "Your participation status has been changed": "Vaše stanje udeležbe je bilo spremenjeno", + "Your timezone is currently set to {timezone}.": "Vaš časovni pas je trenutno nastavljen na {timezone}.", "[This comment has been deleted]": "[Ta komentar je bil izbrisan]", "[deleted]": "[izbrisano]", "as {identity}": "kot {identity}", @@ -427,6 +459,7 @@ "profile@instance": "profil@vozlišče", "with another identity…": "z drugo identiteto…", "{approved} / {total} seats": "{approved} / {total} mest", + "{available}/{capacity} available places": "Prostih mest ni več|{available}/{capacity} prostih mest", "{count} participants": "Še ni udeležencev | En udeleženec | {count} udeležencev", "{count} requests waiting": "{count} zahtev čaka", "{title} ({count} todos)": "{title} ({count} todos)", From e0e46a81e3b3372a7e95c48c8610267140af5bef Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 25 Jan 2021 15:55:52 +0100 Subject: [PATCH 105/114] Refactor CSP config by using Pleroma's HTTPSecurityPlug Signed-off-by: Thomas Citharel --- config/config.exs | 18 +++++ lib/web/endpoint.ex | 6 ++ lib/web/plugs/http_security_plug.ex | 116 ++++++++++++++++++++++++++++ lib/web/router.ex | 12 +-- 4 files changed, 143 insertions(+), 9 deletions(-) create mode 100644 lib/web/plugs/http_security_plug.ex diff --git a/config/config.exs b/config/config.exs index 23f3cb4ee..413108fb8 100644 --- a/config/config.exs +++ b/config/config.exs @@ -215,6 +215,24 @@ config :mobilizon, :maps, type: :openstreetmap ] +config :mobilizon, :http_security, + enabled: true, + sts: false, + sts_max_age: 31_536_000, + csp_policy: [ + script_src: [], + style_src: [], + connect_src: [], + font_src: [], + img_src: ["*.tile.openstreetmap.org"], + manifest_src: [], + media_src: [], + object_src: [], + frame_src: [], + frame_ancestors: [] + ], + referrer_policy: "same-origin" + config :mobilizon, :anonymous, participation: [ allowed: true, diff --git a/lib/web/endpoint.ex b/lib/web/endpoint.ex index 8a0601be7..24ba70034 100644 --- a/lib/web/endpoint.ex +++ b/lib/web/endpoint.ex @@ -6,6 +6,7 @@ defmodule Mobilizon.Web.Endpoint do use Absinthe.Phoenix.Endpoint plug(Mobilizon.Web.Plugs.SetLocalePlug) + plug(Mobilizon.Web.Plugs.HTTPSecurityPlug) # For e2e tests if Application.get_env(:mobilizon, :sql_sandbox) do @@ -75,4 +76,9 @@ defmodule Mobilizon.Web.Endpoint do ) plug(Mobilizon.Web.Router) + + @spec websocket_url :: String.t() + def websocket_url do + String.replace_leading(url(), "http", "ws") + end end diff --git a/lib/web/plugs/http_security_plug.ex b/lib/web/plugs/http_security_plug.ex new file mode 100644 index 000000000..8a5f2161d --- /dev/null +++ b/lib/web/plugs/http_security_plug.ex @@ -0,0 +1,116 @@ +# Portions of this file are derived from Pleroma: +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Mobilizon.Web.Plugs.HTTPSecurityPlug do + @moduledoc """ + A plug to setup some HTTP security-related headers, like CSP + """ + + alias Mobilizon.Config + import Plug.Conn + + require Logger + + def init(opts), do: opts + + def call(conn, _options) do + if Config.get([:http_security, :enabled]) do + conn + |> merge_resp_headers(headers()) + |> maybe_send_sts_header(Config.get([:http_security, :sts])) + else + conn + end + end + + defp headers do + referrer_policy = Config.get([:http_security, :referrer_policy]) + + [ + {"referrer-policy", referrer_policy}, + {"content-security-policy", csp_string()} + ] + end + + @static_csp_rules [ + "default-src 'none'", + "base-uri 'self'", + "manifest-src 'self'" + ] + + @csp_start [Enum.join(@static_csp_rules, ";") <> ";"] + + defp csp_string do + scheme = Config.get([Pleroma.Web.Endpoint, :url])[:scheme] + static_url = Mobilizon.Web.Endpoint.static_url() + websocket_url = Mobilizon.Web.Endpoint.websocket_url() + + img_src = + ["img-src 'self' data: blob: "] ++ Config.get([:http_security, :csp_policy, :img_src]) + + media_src = ["media-src 'self' "] ++ Config.get([:http_security, :csp_policy, :media_src]) + + connect_src = + ["connect-src 'self' blob: ", static_url, ?\s, websocket_url] ++ + Config.get([:http_security, :csp_policy, :connect_src]) + + script_src = + if Config.get(:env) == :dev do + "script-src 'self' 'unsafe-eval' 'unsafe-inline' " + else + "script-src 'self' " + end + + script_src = [script_src] ++ Config.get([:http_security, :csp_policy, :script_src]) + + style_src = + if Config.get(:env) == :dev do + "style-src 'self' 'unsafe-inline' " + else + "style-src 'self' " + end + + style_src = [style_src] ++ Config.get([:http_security, :csp_policy, :style_src]) + + font_src = ["font-src 'self' "] ++ Config.get([:http_security, :csp_policy, :font_src]) + + frame_src = if Config.get(:env) == :dev, do: "frame-src 'self' ", else: "frame-src 'none' " + frame_src = [frame_src] ++ Config.get([:http_security, :csp_policy, :frame_src]) + + frame_ancestors = + if Config.get(:env) == :dev, do: "frame-ancestors 'self' ", else: "frame-ancestors 'none' " + + frame_ancestors = + [frame_ancestors] ++ Config.get([:http_security, :csp_policy, :frame_ancestors]) + + insecure = if scheme == "https", do: "upgrade-insecure-requests" + + @csp_start + |> add_csp_param(script_src) + |> add_csp_param(style_src) + |> add_csp_param(connect_src) + |> add_csp_param(img_src) + |> add_csp_param(media_src) + |> add_csp_param(font_src) + |> add_csp_param(frame_src) + |> add_csp_param(frame_ancestors) + |> add_csp_param(insecure) + |> :erlang.iolist_to_binary() + end + + defp add_csp_param(csp_iodata, nil), do: csp_iodata + + defp add_csp_param(csp_iodata, param), do: [[param, ?;] | csp_iodata] + + defp maybe_send_sts_header(conn, true) do + max_age_sts = Config.get([:http_security, :sts_max_age]) + + merge_resp_headers(conn, [ + {"strict-transport-security", "max-age=#{max_age_sts}; includeSubDomains"} + ]) + end + + defp maybe_send_sts_header(conn, _), do: conn +end diff --git a/lib/web/router.ex b/lib/web/router.ex index 75aaa638d..96fafe635 100644 --- a/lib/web/router.ex +++ b/lib/web/router.ex @@ -4,12 +4,6 @@ defmodule Mobilizon.Web.Router do """ use Mobilizon.Web, :router - @csp if Application.fetch_env!(:mobilizon, :env) != :dev, - do: "default-src 'self';", - else: - "default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline'" - @headers %{"content-security-policy" => @csp} - pipeline :graphql do # plug(:accepts, ["json"]) plug(Mobilizon.Web.Auth.Pipeline) @@ -36,7 +30,7 @@ defmodule Mobilizon.Web.Router do pipeline :activity_pub_and_html do plug(:accepts, ["html", "activity-json"]) - plug(:put_secure_browser_headers, @headers) + plug(:put_secure_browser_headers) plug(Cldr.Plug.AcceptLanguage, cldr_backend: Mobilizon.Cldr @@ -44,7 +38,7 @@ defmodule Mobilizon.Web.Router do end pipeline :atom_and_ical do - plug(:put_secure_browser_headers, @headers) + plug(:put_secure_browser_headers) plug(:accepts, ["atom", "ics", "html"]) end @@ -56,7 +50,7 @@ defmodule Mobilizon.Web.Router do ) plug(:accepts, ["html"]) - plug(:put_secure_browser_headers, @headers) + plug(:put_secure_browser_headers) end pipeline :remote_media do From 166ce52a7f97b3131aa5d9dd5c13ae1d8812aeda Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 25 Jan 2021 15:59:57 +0100 Subject: [PATCH 106/114] Fix z-index issue with datepickers on Edit event page Closes #558 Signed-off-by: Thomas Citharel --- js/src/views/Event/Edit.vue | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/js/src/views/Event/Edit.vue b/js/src/views/Event/Edit.vue index 0187fe512..86304b3de 100644 --- a/js/src/views/Event/Edit.vue +++ b/js/src/views/Event/Edit.vue @@ -33,6 +33,7 @@ .container { padding: 2rem 1.5rem; From 8f156d3b5cffe88f65a125723026cf7dd9957b5d Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 25 Jan 2021 16:31:57 +0100 Subject: [PATCH 107/114] Fix sobelow lint Signed-off-by: Thomas Citharel --- .gitlab-ci.yml | 2 +- .sobelow-conf | 2 +- .sobelow-skips | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d1d0156a0..7beac896a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -57,7 +57,7 @@ lint-elixir: - export EXITVALUE=0 - mix format --check-formatted --dry-run || export EXITVALUE=1 - mix credo --strict -a || export EXITVALUE=1 - - mix sobelow --config --skip || export EXITVALUE=1 + - mix sobelow --config || export EXITVALUE=1 - exit $EXITVALUE lint-front: diff --git a/.sobelow-conf b/.sobelow-conf index 06cca8933..fc0940908 100644 --- a/.sobelow-conf +++ b/.sobelow-conf @@ -7,6 +7,6 @@ format: "txt", out: "", threshold: "medium", - ignore: ["Config.HTTPS"], + ignore: ["Config.HTTPS", "Config.CSP"], ignore_files: ["config/dev.1.secret.exs", "config/dev.2.secret.exs", "config/dev.3.secret.exs", "config/dev.secret.exs", "config/e2e.secret.exs", "config/prod.secret.exs", "config/test.secret.exs"] ] diff --git a/.sobelow-skips b/.sobelow-skips index 8a0f398e7..9e3133f2f 100644 --- a/.sobelow-skips +++ b/.sobelow-skips @@ -1,2 +1,2 @@ -AACA51671C4B3C803ACBCA3FADE84CDE \ No newline at end of file +752C0E897CA81ACD81F4BB215FA5F8E4 \ No newline at end of file From a8e58547fdb9f718f0116d4e1e0a94d98f7cd5af Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 26 Jan 2021 10:05:01 +0100 Subject: [PATCH 108/114] Add back media proxy for resources pictures Signed-off-by: Thomas Citharel --- config/config.exs | 14 ++ lib/web/controllers/media_proxy_controller.ex | 33 ++++ lib/web/media_proxy.ex | 115 ++++++++++++ lib/web/proxy/reverse_proxy.ex | 15 +- lib/web/router.ex | 5 + test/graphql/resolvers/resource_test.exs | 9 +- .../media_proxy_controller_test.exs | 70 +++++++ test/web/media_proxy_test.exs | 176 ++++++++++++++++++ 8 files changed, 428 insertions(+), 9 deletions(-) create mode 100644 lib/web/controllers/media_proxy_controller.ex create mode 100644 lib/web/media_proxy.ex create mode 100644 test/web/controllers/media_proxy_controller_test.exs create mode 100644 test/web/media_proxy_test.exs diff --git a/config/config.exs b/config/config.exs index 413108fb8..f20c3768c 100644 --- a/config/config.exs +++ b/config/config.exs @@ -81,6 +81,20 @@ config :mobilizon, Mobilizon.Web.Upload, config :mobilizon, Mobilizon.Web.Upload.Uploader.Local, uploads: "uploads" +config :mobilizon, :media_proxy, + enabled: true, + proxy_opts: [ + redirect_on_failure: false, + max_body_length: 25 * 1_048_576, + # Note: max_read_duration defaults to Mobilizon.Web.ReverseProxy.max_read_duration_default/1 + max_read_duration: 30_000, + http: [ + follow_redirect: true, + pool: :media + ] + ], + whitelist: [] + config :mobilizon, Mobilizon.Web.Email.Mailer, adapter: Bamboo.SMTPAdapter, server: "localhost", diff --git a/lib/web/controllers/media_proxy_controller.ex b/lib/web/controllers/media_proxy_controller.ex new file mode 100644 index 000000000..b60affacc --- /dev/null +++ b/lib/web/controllers/media_proxy_controller.ex @@ -0,0 +1,33 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Mobilizon.Web.MediaProxyController do + use Mobilizon.Web, :controller + + alias Mobilizon.Config + alias Mobilizon.Web.{MediaProxy, ReverseProxy} + alias Plug.Conn + + # sobelow_skip ["XSS.SendResp"] + def remote(conn, %{"sig" => sig64, "url" => url64}) do + with {_, true} <- {:enabled, MediaProxy.enabled?()}, + {:ok, url} <- MediaProxy.decode_url(sig64, url64), + :ok <- MediaProxy.verify_request_path_and_url(conn, url) do + ReverseProxy.call(conn, url, media_proxy_opts()) + else + {:enabled, false} -> + send_resp(conn, 404, Conn.Status.reason_phrase(404)) + + {:error, :invalid_signature} -> + send_resp(conn, 403, Conn.Status.reason_phrase(403)) + + {:wrong_filename, filename} -> + redirect(conn, external: MediaProxy.build_url(sig64, url64, filename)) + end + end + + defp media_proxy_opts do + Config.get([:media_proxy, :proxy_opts], []) + end +end diff --git a/lib/web/media_proxy.ex b/lib/web/media_proxy.ex new file mode 100644 index 000000000..eede9e72c --- /dev/null +++ b/lib/web/media_proxy.ex @@ -0,0 +1,115 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Mobilizon.Web.MediaProxy do + @moduledoc """ + Module to proxify remote media + """ + alias Mobilizon.Config + alias Mobilizon.Web + + @base64_opts [padding: false] + + def url(url) when is_nil(url) or url == "", do: nil + def url("/" <> _ = url), do: url + + def url(url) do + if enabled?() and url_proxiable?(url) do + encode_url(url) + else + url + end + end + + @spec url_proxiable?(String.t()) :: boolean() + def url_proxiable?(url) do + not local?(url) + end + + def enabled?, do: Config.get([:media_proxy, :enabled], false) + + # Note: media proxy must be enabled for media preview proxy in order to load all + # non-local non-whitelisted URLs through it and be sure that body size constraint is preserved. + def preview_enabled?, do: enabled?() and !!Config.get([:media_preview_proxy, :enabled]) + + def local?(url), do: String.starts_with?(url, Web.Endpoint.url()) + + defp base64_sig64(url) do + base64 = Base.url_encode64(url, @base64_opts) + + sig64 = + base64 + |> signed_url() + |> Base.url_encode64(@base64_opts) + + {base64, sig64} + end + + def encode_url(url) do + {base64, sig64} = base64_sig64(url) + + build_url(sig64, base64, filename(url)) + end + + def decode_url(sig, url) do + with {:ok, sig} <- Base.url_decode64(sig, @base64_opts), + signature when signature == sig <- signed_url(url) do + {:ok, Base.url_decode64!(url, @base64_opts)} + else + _ -> {:error, :invalid_signature} + end + end + + defp signed_url(url) do + :crypto.hmac(:sha, Config.get([Web.Endpoint, :secret_key_base]), url) + end + + def filename(url_or_path) do + if path = URI.parse(url_or_path).path, do: Path.basename(path) + end + + def base_url do + Web.Endpoint.url() + end + + defp proxy_url(path, sig_base64, url_base64, filename) do + [ + base_url(), + path, + sig_base64, + url_base64, + filename + ] + |> Enum.filter(& &1) + |> Path.join() + end + + def build_url(sig_base64, url_base64, filename \\ nil) do + proxy_url("proxy", sig_base64, url_base64, filename) + end + + def verify_request_path_and_url( + %Plug.Conn{params: %{"filename" => _}, request_path: request_path}, + url + ) do + verify_request_path_and_url(request_path, url) + end + + def verify_request_path_and_url(request_path, url) when is_binary(request_path) do + filename = filename(url) + + if filename && not basename_matches?(request_path, filename) do + {:wrong_filename, filename} + else + :ok + end + end + + def verify_request_path_and_url(_, _), do: :ok + + defp basename_matches?(path, filename) do + basename = Path.basename(path) + basename == filename or URI.decode(basename) == filename or URI.encode(basename) == filename + end +end diff --git a/lib/web/proxy/reverse_proxy.ex b/lib/web/proxy/reverse_proxy.ex index c3e5993f0..cfc677de8 100644 --- a/lib/web/proxy/reverse_proxy.ex +++ b/lib/web/proxy/reverse_proxy.ex @@ -4,17 +4,22 @@ # Upstream: https://git.pleroma.social/pleroma/pleroma/blob/develop/lib/pleroma/reverse_proxy.ex defmodule Mobilizon.Web.ReverseProxy do - @keep_req_headers ~w(accept user-agent accept-encoding cache-control - if-modified-since if-unmodified-since if-none-match if-range range) - @resp_cache_headers ~w(etag date last-modified cache-control) - @keep_resp_headers @resp_cache_headers ++ ~w(content-type content-disposition - content-encoding content-range accept-ranges vary) + @range_headers ~w(range if-range) + @keep_req_headers ~w(accept user-agent accept-encoding cache-control if-modified-since) ++ + ~w(if-unmodified-since if-none-match) ++ @range_headers + @resp_cache_headers ~w(etag date last-modified) + @keep_resp_headers @resp_cache_headers ++ + ~w(content-length content-type content-disposition content-encoding) ++ + ~w(content-range accept-ranges vary) @default_cache_control_header "public, max-age=1209600" @valid_resp_codes [200, 206, 304] @max_read_duration :timer.seconds(30) @max_body_length :infinity @methods ~w(GET HEAD) + def max_read_duration_default, do: @max_read_duration + def default_cache_control_header, do: @default_cache_control_header + @moduledoc """ A reverse proxy. diff --git a/lib/web/router.ex b/lib/web/router.ex index 96fafe635..a74a84bfd 100644 --- a/lib/web/router.ex +++ b/lib/web/router.ex @@ -163,6 +163,11 @@ defmodule Mobilizon.Web.Router do post("/auth/:provider/callback", AuthController, :callback) end + scope "/proxy/", Mobilizon.Web do + get("/:sig/:url", MediaProxyController, :remote) + get("/:sig/:url/:filename", MediaProxyController, :remote) + end + if Application.fetch_env!(:mobilizon, :env) in [:dev, :e2e] do # If using Phoenix forward("/sent_emails", Bamboo.SentEmailViewerPlug) diff --git a/test/graphql/resolvers/resource_test.exs b/test/graphql/resolvers/resource_test.exs index 654693920..65dc4b734 100644 --- a/test/graphql/resolvers/resource_test.exs +++ b/test/graphql/resolvers/resource_test.exs @@ -6,6 +6,7 @@ defmodule Mobilizon.GraphQL.Resolvers.ResourceTest do alias Mobilizon.Actors.{Actor, Member} alias Mobilizon.Resources.Resource alias Mobilizon.Users.User + alias Mobilizon.Web.MediaProxy alias Mobilizon.GraphQL.AbsintheHelpers @@ -405,10 +406,10 @@ defmodule Mobilizon.GraphQL.Resolvers.ResourceTest do assert is_nil(res["errors"]) assert res["data"]["createResource"]["metadata"]["faviconUrl"] == - "https://joinmobilizon.org/img/icons/favicon.png" + MediaProxy.url("https://joinmobilizon.org/img/icons/favicon.png") assert res["data"]["createResource"]["metadata"]["imageRemoteUrl"] == - "https://joinmobilizon.org/img/opengraph/home.jpg" + MediaProxy.url("https://joinmobilizon.org/img/opengraph/home.jpg") assert res["data"]["createResource"]["path"] == "/#{@resource_title}" assert res["data"]["createResource"]["resourceUrl"] == @resource_url @@ -461,10 +462,10 @@ defmodule Mobilizon.GraphQL.Resolvers.ResourceTest do assert is_nil(res["errors"]) assert res["data"]["createResource"]["metadata"]["faviconUrl"] == - "https://joinmobilizon.org/img/icons/favicon.png" + MediaProxy.url("https://joinmobilizon.org/img/icons/favicon.png") assert res["data"]["createResource"]["metadata"]["imageRemoteUrl"] == - "https://joinmobilizon.org/img/opengraph/home.jpg" + MediaProxy.url("https://joinmobilizon.org/img/opengraph/home.jpg") assert res["data"]["createResource"]["path"] == "#{parent_path}/#{@resource_title}" assert res["data"]["createResource"]["resourceUrl"] == @resource_url diff --git a/test/web/controllers/media_proxy_controller_test.exs b/test/web/controllers/media_proxy_controller_test.exs new file mode 100644 index 000000000..816ebfff3 --- /dev/null +++ b/test/web/controllers/media_proxy_controller_test.exs @@ -0,0 +1,70 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Mobilizon.Web.MediaProxyControllerTest do + use Mobilizon.Web.ConnCase + use Mobilizon.Tests.Helpers + + import Mock + + alias Mobilizon.Web.MediaProxy + alias Plug.Conn + + describe "Media Proxy" do + setup do + clear_config([:media_proxy, :enabled], true) + clear_config([Mobilizon.Web.Endpoint, :secret_key_base], "00000000000") + + [url: MediaProxy.encode_url("https://google.fn/test.png")] + end + + test "it returns 404 when disabled", %{conn: conn} do + clear_config([:media_proxy, :enabled], false) + + assert %Conn{ + status: 404, + resp_body: "Not Found" + } = get(conn, "/proxy/hhgfh/eeeee") + + assert %Conn{ + status: 404, + resp_body: "Not Found" + } = get(conn, "/proxy/hhgfh/eeee/fff") + end + + test "it returns 403 for invalid signature", %{conn: conn, url: url} do + Mobilizon.Config.put([Mobilizon.Web.Endpoint, :secret_key_base], "000") + %{path: path} = URI.parse(url) + + assert %Conn{ + status: 403, + resp_body: "Forbidden" + } = get(conn, path) + + assert %Conn{ + status: 403, + resp_body: "Forbidden" + } = get(conn, "/proxy/hhgfh/eeee") + + assert %Conn{ + status: 403, + resp_body: "Forbidden" + } = get(conn, "/proxy/hhgfh/eeee/fff") + end + + test "redirects to valid url when filename is invalidated", %{conn: conn, url: url} do + invalid_url = String.replace(url, "test.png", "test-file.png") + response = get(conn, invalid_url) + assert response.status == 302 + assert redirected_to(response) == url + end + + test "it performs ReverseProxy.call with valid signature", %{conn: conn, url: url} do + with_mock Mobilizon.Web.ReverseProxy, + call: fn _conn, _url, _opts -> %Conn{status: :success} end do + assert %Conn{status: :success} = get(conn, url) + end + end + end +end diff --git a/test/web/media_proxy_test.exs b/test/web/media_proxy_test.exs new file mode 100644 index 000000000..ea5d309fd --- /dev/null +++ b/test/web/media_proxy_test.exs @@ -0,0 +1,176 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Mobilizon.Web.MediaProxyTest do + use ExUnit.Case + use Mobilizon.Tests.Helpers + + alias Mobilizon.Web.{Endpoint, MediaProxy} + + defp decode_result(encoded) do + [_, "proxy", sig, base64 | _] = URI.parse(encoded).path |> String.split("/") + {:ok, decoded} = MediaProxy.decode_url(sig, base64) + decoded + end + + describe "when enabled" do + setup do: clear_config([:media_proxy, :enabled], true) + + test "ignores invalid url" do + assert MediaProxy.url(nil) == nil + assert MediaProxy.url("") == nil + end + + test "ignores relative url" do + assert MediaProxy.url("/local") == "/local" + assert MediaProxy.url("/") == "/" + end + + test "ignores local url" do + local_url = Endpoint.url() <> "/hello" + local_root = Endpoint.url() + assert MediaProxy.url(local_url) == local_url + assert MediaProxy.url(local_root) == local_root + end + + test "encodes and decodes URL" do + url = "https://pleroma.soykaf.com/static/logo.png" + encoded = MediaProxy.url(url) + + assert String.starts_with?(encoded, Endpoint.url()) + + assert String.ends_with?(encoded, "/logo.png") + + assert decode_result(encoded) == url + end + + test "encodes and decodes URL without a path" do + url = "https://pleroma.soykaf.com" + encoded = MediaProxy.url(url) + assert decode_result(encoded) == url + end + + test "encodes and decodes URL without an extension" do + url = "https://pleroma.soykaf.com/path/" + encoded = MediaProxy.url(url) + assert String.ends_with?(encoded, "/path") + assert decode_result(encoded) == url + end + + test "encodes and decodes URL and ignores query params for the path" do + url = "https://pleroma.soykaf.com/static/logo.png?93939393939&bunny=true" + encoded = MediaProxy.url(url) + assert String.ends_with?(encoded, "/logo.png") + assert decode_result(encoded) == url + end + + test "validates signature" do + encoded = MediaProxy.url("https://pleroma.social") + + clear_config( + [Endpoint, :secret_key_base], + "00000000000000000000000000000000000000000000000" + ) + + [_, "proxy", sig, base64 | _] = URI.parse(encoded).path |> String.split("/") + assert MediaProxy.decode_url(sig, base64) == {:error, :invalid_signature} + end + + def test_verify_request_path_and_url(request_path, url, expected_result) do + assert MediaProxy.verify_request_path_and_url(request_path, url) == expected_result + + assert MediaProxy.verify_request_path_and_url( + %Plug.Conn{ + params: %{"filename" => Path.basename(request_path)}, + request_path: request_path + }, + url + ) == expected_result + end + + test "if first arg of `verify_request_path_and_url/2` is a Plug.Conn without \"filename\" " <> + "parameter, `verify_request_path_and_url/2` returns :ok " do + assert MediaProxy.verify_request_path_and_url( + %Plug.Conn{params: %{}, request_path: "/some/path"}, + "https://instance.com/file.jpg" + ) == :ok + + assert MediaProxy.verify_request_path_and_url( + %Plug.Conn{params: %{}, request_path: "/path/to/file.jpg"}, + "https://instance.com/file.jpg" + ) == :ok + end + + test "`verify_request_path_and_url/2` preserves the encoded or decoded path" do + test_verify_request_path_and_url( + "/Hello world.jpg", + "http://pleroma.social/Hello world.jpg", + :ok + ) + + test_verify_request_path_and_url( + "/Hello%20world.jpg", + "http://pleroma.social/Hello%20world.jpg", + :ok + ) + + test_verify_request_path_and_url( + "/my%2Flong%2Furl%2F2019%2F07%2FS.jpg", + "http://pleroma.social/my%2Flong%2Furl%2F2019%2F07%2FS.jpg", + :ok + ) + + test_verify_request_path_and_url( + # Note: `conn.request_path` returns encoded url + "/ANALYSE-DAI-_-LE-STABLECOIN-100-D%C3%89CENTRALIS%C3%89-BQ.jpg", + "https://mydomain.com/uploads/2019/07/ANALYSE-DAI-_-LE-STABLECOIN-100-DÉCENTRALISÉ-BQ.jpg", + :ok + ) + + test_verify_request_path_and_url( + "/my%2Flong%2Furl%2F2019%2F07%2FS", + "http://pleroma.social/my%2Flong%2Furl%2F2019%2F07%2FS.jpg", + {:wrong_filename, "my%2Flong%2Furl%2F2019%2F07%2FS.jpg"} + ) + end + + # Some sites expect ASCII encoded characters in the URL to be preserved even if + # unnecessary. + # Issues: https://git.pleroma.social/pleroma/pleroma/issues/580 + # https://git.pleroma.social/pleroma/pleroma/issues/1055 + test "preserve ASCII encoding" do + url = + "https://pleroma.com/%20/%21/%22/%23/%24/%25/%26/%27/%28/%29/%2A/%2B/%2C/%2D/%2E/%2F/%30/%31/%32/%33/%34/%35/%36/%37/%38/%39/%3A/%3B/%3C/%3D/%3E/%3F/%40/%41/%42/%43/%44/%45/%46/%47/%48/%49/%4A/%4B/%4C/%4D/%4E/%4F/%50/%51/%52/%53/%54/%55/%56/%57/%58/%59/%5A/%5B/%5C/%5D/%5E/%5F/%60/%61/%62/%63/%64/%65/%66/%67/%68/%69/%6A/%6B/%6C/%6D/%6E/%6F/%70/%71/%72/%73/%74/%75/%76/%77/%78/%79/%7A/%7B/%7C/%7D/%7E/%7F/%80/%81/%82/%83/%84/%85/%86/%87/%88/%89/%8A/%8B/%8C/%8D/%8E/%8F/%90/%91/%92/%93/%94/%95/%96/%97/%98/%99/%9A/%9B/%9C/%9D/%9E/%9F/%C2%A0/%A1/%A2/%A3/%A4/%A5/%A6/%A7/%A8/%A9/%AA/%AB/%AC/%C2%AD/%AE/%AF/%B0/%B1/%B2/%B3/%B4/%B5/%B6/%B7/%B8/%B9/%BA/%BB/%BC/%BD/%BE/%BF/%C0/%C1/%C2/%C3/%C4/%C5/%C6/%C7/%C8/%C9/%CA/%CB/%CC/%CD/%CE/%CF/%D0/%D1/%D2/%D3/%D4/%D5/%D6/%D7/%D8/%D9/%DA/%DB/%DC/%DD/%DE/%DF/%E0/%E1/%E2/%E3/%E4/%E5/%E6/%E7/%E8/%E9/%EA/%EB/%EC/%ED/%EE/%EF/%F0/%F1/%F2/%F3/%F4/%F5/%F6/%F7/%F8/%F9/%FA/%FB/%FC/%FD/%FE/%FF" + + encoded = MediaProxy.url(url) + assert decode_result(encoded) == url + end + + # This includes unsafe/reserved characters which are not interpreted as part of the URL + # and would otherwise have to be ASCII encoded. It is our role to ensure the proxied URL + # is unmodified, so we are testing these characters anyway. + test "preserve non-unicode characters per RFC3986" do + url = + "https://pleroma.com/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890-._~:/?#[]@!$&'()*+,;=|^`{}" + + encoded = MediaProxy.url(url) + assert decode_result(encoded) == url + end + + test "preserve unicode characters" do + url = "https://ko.wikipedia.org/wiki/위키백과:대문" + + encoded = MediaProxy.url(url) + assert decode_result(encoded) == url + end + end + + describe "when disabled" do + setup do: clear_config([:media_proxy, :enabled], false) + + test "does not encode remote urls" do + assert MediaProxy.url("https://google.fr") == "https://google.fr" + end + end +end From 0ac12a0a29d859b997ef194a8316362afa085d2f Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 26 Jan 2021 10:05:31 +0100 Subject: [PATCH 109/114] Proxify resource metadata pictures Signed-off-by: Thomas Citharel --- lib/graphql/resolvers/resource.ex | 18 ++++++++++++++++++ lib/graphql/schema/resource.ex | 13 +++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/lib/graphql/resolvers/resource.ex b/lib/graphql/resolvers/resource.ex index d68439f58..16e5040b7 100644 --- a/lib/graphql/resolvers/resource.ex +++ b/lib/graphql/resolvers/resource.ex @@ -11,6 +11,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Resource do alias Mobilizon.Service.RichMedia.Parser alias Mobilizon.Storage.Page alias Mobilizon.Users.User + alias Mobilizon.Web.MediaProxy import Mobilizon.Web.Gettext require Logger @@ -210,6 +211,16 @@ defmodule Mobilizon.GraphQL.Resolvers.Resource do {:error, dgettext("errors", "You need to be logged-in to view a resource preview")} end + def proxyify_pictures(%Metadata{} = metadata, _args, %{ + definition: %{schema_node: %{name: name}} + }) do + case name do + "image_remote_url" -> {:ok, proxify_picture(metadata.image_remote_url)} + "favicon_url" -> {:ok, proxify_picture(metadata.favicon_url)} + _ -> {:error, "Unknown field"} + end + end + @spec get_eventual_parent(map()) :: Resource.t() | nil defp get_eventual_parent(args) do parent = args |> Map.get(:parent_id) |> get_parent_resource() @@ -234,4 +245,11 @@ defmodule Mobilizon.GraphQL.Resolvers.Resource do defp check_resource_owned_by_group(%Resource{actor_id: actor_id}, group_id) when is_number(group_id), do: actor_id == group_id + + @spec proxify_picture(String.t() | nil) :: String.t() | nil + defp proxify_picture(nil), do: nil + + defp proxify_picture(url) do + MediaProxy.url(url) + end end diff --git a/lib/graphql/schema/resource.ex b/lib/graphql/schema/resource.ex index 8fef1f42e..320c3fce5 100644 --- a/lib/graphql/schema/resource.ex +++ b/lib/graphql/schema/resource.ex @@ -45,7 +45,12 @@ defmodule Mobilizon.GraphQL.Schema.ResourceType do field(:type, :string, description: "The type of the resource") field(:title, :string, description: "The resource's metadata title") field(:description, :string, description: "The resource's metadata description") - field(:image_remote_url, :string, description: "The resource's metadata image") + + field(:image_remote_url, :string, + description: "The resource's metadata image", + resolve: &Resource.proxyify_pictures/3 + ) + field(:width, :integer, description: "The resource's metadata image width") field(:height, :integer, description: "The resource's metadata image height") field(:author_name, :string, description: "The resource's author name") @@ -53,7 +58,11 @@ defmodule Mobilizon.GraphQL.Schema.ResourceType do field(:provider_name, :string, description: "The resource's provider name") field(:provider_url, :string, description: "The resource's provider URL") field(:html, :string, description: "The resource's author name") - field(:favicon_url, :string, description: "The resource's favicon URL") + + field(:favicon_url, :string, + description: "The resource's favicon URL", + resolve: &Resource.proxyify_pictures/3 + ) end object :resource_queries do From af7f3caf0ce4ceedc859be3ee1df2939c30bf734 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 26 Jan 2021 10:05:54 +0100 Subject: [PATCH 110/114] Upgrade deps Signed-off-by: Thomas Citharel --- js/package.json | 20 ++-- js/yarn.lock | 276 +++++++++++++++++++++++++----------------------- 2 files changed, 152 insertions(+), 144 deletions(-) diff --git a/js/package.json b/js/package.json index 576506f69..8f4547317 100644 --- a/js/package.json +++ b/js/package.json @@ -65,16 +65,16 @@ "@types/prosemirror-state": "^1.2.4", "@types/prosemirror-view": "^1.11.4", "@types/vuedraggable": "^2.23.0", - "@typescript-eslint/eslint-plugin": "4.13.0", - "@typescript-eslint/parser": "4.13.0", - "@vue/cli-plugin-babel": "~4.5.10", - "@vue/cli-plugin-e2e-cypress": "~4.5.10", - "@vue/cli-plugin-eslint": "~4.5.10", - "@vue/cli-plugin-pwa": "~4.5.10", - "@vue/cli-plugin-router": "~4.5.10", - "@vue/cli-plugin-typescript": "~4.5.10", - "@vue/cli-plugin-unit-jest": "~4.5.10", - "@vue/cli-service": "~4.5.10", + "@typescript-eslint/eslint-plugin": "^4.14.1", + "@typescript-eslint/parser": "^4.14.1", + "@vue/cli-plugin-babel": "~4.5.11", + "@vue/cli-plugin-e2e-cypress": "~4.5.11", + "@vue/cli-plugin-eslint": "~4.5.11", + "@vue/cli-plugin-pwa": "~4.5.11", + "@vue/cli-plugin-router": "~4.5.11", + "@vue/cli-plugin-typescript": "~4.5.11", + "@vue/cli-plugin-unit-jest": "~4.5.11", + "@vue/cli-service": "~4.5.11", "@vue/eslint-config-prettier": "^6.0.0", "@vue/eslint-config-typescript": "^7.0.0", "@vue/test-utils": "^1.1.0", diff --git a/js/yarn.lock b/js/yarn.lock index 9e8c2e2e6..3107e8acb 100644 --- a/js/yarn.lock +++ b/js/yarn.lock @@ -1678,13 +1678,13 @@ resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.2.tgz#808c9fa7e4517274ed555fa158f2de4b4f468e71" integrity sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg== -"@typescript-eslint/eslint-plugin@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.13.0.tgz#5f580ea520fa46442deb82c038460c3dd3524bb6" - integrity sha512-ygqDUm+BUPvrr0jrXqoteMqmIaZ/bixYOc3A4BRwzEPTZPi6E+n44rzNZWaB0YvtukgP+aoj0i/fyx7FkM2p1w== +"@typescript-eslint/eslint-plugin@^4.14.1": + version "4.14.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.14.1.tgz#22dd301ce228aaab3416b14ead10b1db3e7d3180" + integrity sha512-5JriGbYhtqMS1kRcZTQxndz1lKMwwEXKbwZbkUZNnp6MJX0+OVXnG0kOlBZP4LUAxEyzu3cs+EXd/97MJXsGfw== dependencies: - "@typescript-eslint/experimental-utils" "4.13.0" - "@typescript-eslint/scope-manager" "4.13.0" + "@typescript-eslint/experimental-utils" "4.14.1" + "@typescript-eslint/scope-manager" "4.14.1" debug "^4.1.1" functional-red-black-tree "^1.0.1" lodash "^4.17.15" @@ -1703,28 +1703,18 @@ eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/experimental-utils@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.13.0.tgz#9dc9ab375d65603b43d938a0786190a0c72be44e" - integrity sha512-/ZsuWmqagOzNkx30VWYV3MNB/Re/CGv/7EzlqZo5RegBN8tMuPaBgNK6vPBCQA8tcYrbsrTdbx3ixMRRKEEGVw== +"@typescript-eslint/experimental-utils@4.14.1": + version "4.14.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.14.1.tgz#a5c945cb24dabb96747180e1cfc8487f8066f471" + integrity sha512-2CuHWOJwvpw0LofbyG5gvYjEyoJeSvVH2PnfUQSn0KQr4v8Dql2pr43ohmx4fdPQ/eVoTSFjTi/bsGEXl/zUUQ== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.13.0" - "@typescript-eslint/types" "4.13.0" - "@typescript-eslint/typescript-estree" "4.13.0" + "@typescript-eslint/scope-manager" "4.14.1" + "@typescript-eslint/types" "4.14.1" + "@typescript-eslint/typescript-estree" "4.14.1" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.13.0.tgz#c413d640ea66120cfcc37f891e8cb3fd1c9d247d" - integrity sha512-KO0J5SRF08pMXzq9+abyHnaGQgUJZ3Z3ax+pmqz9vl81JxmTTOUfQmq7/4awVfq09b6C4owNlOgOwp61pYRBSg== - dependencies: - "@typescript-eslint/scope-manager" "4.13.0" - "@typescript-eslint/types" "4.13.0" - "@typescript-eslint/typescript-estree" "4.13.0" - debug "^4.1.1" - "@typescript-eslint/parser@^3.0.0": version "3.10.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.10.1.tgz#1883858e83e8b442627e1ac6f408925211155467" @@ -1736,23 +1726,33 @@ "@typescript-eslint/typescript-estree" "3.10.1" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/scope-manager@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.13.0.tgz#5b45912a9aa26b29603d8fa28f5e09088b947141" - integrity sha512-UpK7YLG2JlTp/9G4CHe7GxOwd93RBf3aHO5L+pfjIrhtBvZjHKbMhBXTIQNkbz7HZ9XOe++yKrXutYm5KmjWgQ== +"@typescript-eslint/parser@^4.14.1": + version "4.14.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.14.1.tgz#3bd6c24710cd557d8446625284bcc9c6d52817c6" + integrity sha512-mL3+gU18g9JPsHZuKMZ8Z0Ss9YP1S5xYZ7n68Z98GnPq02pYNQuRXL85b9GYhl6jpdvUc45Km7hAl71vybjUmw== dependencies: - "@typescript-eslint/types" "4.13.0" - "@typescript-eslint/visitor-keys" "4.13.0" + "@typescript-eslint/scope-manager" "4.14.1" + "@typescript-eslint/types" "4.14.1" + "@typescript-eslint/typescript-estree" "4.14.1" + debug "^4.1.1" + +"@typescript-eslint/scope-manager@4.14.1": + version "4.14.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.14.1.tgz#8444534254c6f370e9aa974f035ced7fe713ce02" + integrity sha512-F4bjJcSqXqHnC9JGUlnqSa3fC2YH5zTtmACS1Hk+WX/nFB0guuynVK5ev35D4XZbdKjulXBAQMyRr216kmxghw== + dependencies: + "@typescript-eslint/types" "4.14.1" + "@typescript-eslint/visitor-keys" "4.14.1" "@typescript-eslint/types@3.10.1": version "3.10.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== -"@typescript-eslint/types@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.13.0.tgz#6a7c6015a59a08fbd70daa8c83dfff86250502f8" - integrity sha512-/+aPaq163oX+ObOG00M0t9tKkOgdv9lq0IQv/y4SqGkAXmhFmCfgsELV7kOCTb2vVU5VOmVwXBXJTDr353C1rQ== +"@typescript-eslint/types@4.14.1": + version "4.14.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.14.1.tgz#b3d2eb91dafd0fd8b3fce7c61512ac66bd0364aa" + integrity sha512-SkhzHdI/AllAgQSxXM89XwS1Tkic7csPdndUuTKabEwRcEfR8uQ/iPA3Dgio1rqsV3jtqZhY0QQni8rLswJM2w== "@typescript-eslint/typescript-estree@3.10.1": version "3.10.1" @@ -1768,13 +1768,13 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/typescript-estree@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.13.0.tgz#cf6e2207c7d760f5dfd8d18051428fadfc37b45e" - integrity sha512-9A0/DFZZLlGXn5XA349dWQFwPZxcyYyCFX5X88nWs2uachRDwGeyPz46oTsm9ZJE66EALvEns1lvBwa4d9QxMg== +"@typescript-eslint/typescript-estree@4.14.1": + version "4.14.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.14.1.tgz#20d3b8c8e3cdc8f764bdd5e5b0606dd83da6075b" + integrity sha512-M8+7MbzKC1PvJIA8kR2sSBnex8bsR5auatLCnVlNTJczmJgqRn8M+sAlQfkEq7M4IY3WmaNJ+LJjPVRrREVSHQ== dependencies: - "@typescript-eslint/types" "4.13.0" - "@typescript-eslint/visitor-keys" "4.13.0" + "@typescript-eslint/types" "4.14.1" + "@typescript-eslint/visitor-keys" "4.14.1" debug "^4.1.1" globby "^11.0.1" is-glob "^4.0.1" @@ -1789,12 +1789,12 @@ dependencies: eslint-visitor-keys "^1.1.0" -"@typescript-eslint/visitor-keys@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.13.0.tgz#9acb1772d3b3183182b6540d3734143dce9476fe" - integrity sha512-6RoxWK05PAibukE7jElqAtNMq+RWZyqJ6Q/GdIxaiUj2Ept8jh8+FUVlbq9WxMYxkmEOPvCE5cRSyupMpwW31g== +"@typescript-eslint/visitor-keys@4.14.1": + version "4.14.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.14.1.tgz#e93c2ff27f47ee477a929b970ca89d60a117da91" + integrity sha512-TAblbDXOI7bd0C/9PE1G+AFo7R5uc+ty1ArDoxmrC1ah61Hn6shURKy7gLdRb1qKJmjHkqu5Oq+e4Kt0jwf1IA== dependencies: - "@typescript-eslint/types" "4.13.0" + "@typescript-eslint/types" "4.14.1" eslint-visitor-keys "^2.0.0" "@ungap/global-this@^0.4.2": @@ -1839,10 +1839,10 @@ lodash.kebabcase "^4.1.1" svg-tags "^1.0.0" -"@vue/babel-preset-app@^4.5.10": - version "4.5.10" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-4.5.10.tgz#359180d8c720e30a09214d534aa208dbfc399d7f" - integrity sha512-IHOyfWqgNNM863NjGmX6s2MIF+ILkJZardHcr7bGrxu5mNBT+p0GOGRQU4sN/adDkEQ9cyAxokm/GIeeoRrnOg== +"@vue/babel-preset-app@^4.5.11": + version "4.5.11" + resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-4.5.11.tgz#f677bc10472e418f71f61f10dde5a79976a215b8" + integrity sha512-9VoFlm/9vhynKNGM+HA7qBsoQSUEnuG5i5kcFI9vTLLrh8A0fxrwUyVLLppO6T1sAZ6vrKdQFnEkjL+RkRAwWQ== dependencies: "@babel/core" "^7.11.0" "@babel/helper-compilation-targets" "^7.9.6" @@ -1924,68 +1924,68 @@ "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" camelcase "^5.0.0" -"@vue/cli-overlay@^4.5.10": - version "4.5.10" - resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-4.5.10.tgz#4eeacca20973e6601ec916c85457bd19aa45f9de" - integrity sha512-BydPsWJTXHTzH8wBcN1rinwLe5QRee52sf/Tceixpn4VVZCio2k8VkNG/o6hRTA+MeGuetXOhmAz0UQfIxfX8w== +"@vue/cli-overlay@^4.5.11": + version "4.5.11" + resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-4.5.11.tgz#ea99493131182285f7ac2762290354d6e5b188e8" + integrity sha512-aDQNw+oGk5+KR0vL9TocjfzyYHTJxR2lS8iPbcL4lRglCs2dudOE7QWXypj5dM4rQus0jJ5fxJTS55o9uy9fcQ== -"@vue/cli-plugin-babel@~4.5.10": - version "4.5.10" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.10.tgz#16c712dd44606c504e6e22977e8bdba25746a661" - integrity sha512-vWEGj3w9mbV27WBJslCmQP1l+hmdOiCHn0hmmHOrCdELm/WK/2/iXQEsPSXujtVd7TQgiaFgvvHmHurBlC/+3w== +"@vue/cli-plugin-babel@~4.5.11": + version "4.5.11" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.11.tgz#7c1db4ca2f911e2156e7d1cf774fe2ad0f7428eb" + integrity sha512-ogUMeO2waDtghIWwmuAzMJAnnPdmqRdJlwJDca9u6BK9jX1bxNThBSFS/MN2VmlYzulOnqH4zAC87jTWNg/czg== dependencies: "@babel/core" "^7.11.0" - "@vue/babel-preset-app" "^4.5.10" - "@vue/cli-shared-utils" "^4.5.10" + "@vue/babel-preset-app" "^4.5.11" + "@vue/cli-shared-utils" "^4.5.11" babel-loader "^8.1.0" cache-loader "^4.1.0" thread-loader "^2.1.3" webpack "^4.0.0" -"@vue/cli-plugin-e2e-cypress@~4.5.10": - version "4.5.10" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-e2e-cypress/-/cli-plugin-e2e-cypress-4.5.10.tgz#69bf718e61bee65bbfc5ab4c40033b9e206f0685" - integrity sha512-0j42utcD5Jnw0M5A2Zhgt23GmbKOkJ3fjqSVqd0uHM4IXuPLe8Kcem9MZ1wmeWeCAbG4BBSk1QQZhTrnFolt6Q== +"@vue/cli-plugin-e2e-cypress@~4.5.11": + version "4.5.11" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-e2e-cypress/-/cli-plugin-e2e-cypress-4.5.11.tgz#4fb86caf10b942425cb41ba2a1355a2be75e43cb" + integrity sha512-0SjUlNpjXHyZRdBMrOSsSuWDIi4DyRVmJhkkBLUpGHJt1SSyWOY70NRfemhef2yJZVWyFA4GjN9Mn6xYAH6z/w== dependencies: - "@vue/cli-shared-utils" "^4.5.10" + "@vue/cli-shared-utils" "^4.5.11" cypress "^3.8.3" eslint-plugin-cypress "^2.10.3" -"@vue/cli-plugin-eslint@~4.5.10": - version "4.5.10" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.10.tgz#ba150292d7d51c96ce1a87f2782f05f644a0eb4b" - integrity sha512-2ud8lurlMJCtcErjhYBcTWhu5eN79sCBGz5dHBAmtLP0k7p7xZq7/1mo2ahnZioUskYrfz94Vo9i+D3pOUMuMQ== +"@vue/cli-plugin-eslint@~4.5.11": + version "4.5.11" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.11.tgz#660eb7f8077a022c93bfad7b1cfb81e70a8be142" + integrity sha512-6XrF3A3ryjtqoPMYL0ltZaP0631HS2a68Ye34KIkz111EKXtC5ip+gz6bSPWrH5SbhinU3R8cstA8xVASz9kwg== dependencies: - "@vue/cli-shared-utils" "^4.5.10" + "@vue/cli-shared-utils" "^4.5.11" eslint-loader "^2.2.1" globby "^9.2.0" inquirer "^7.1.0" webpack "^4.0.0" yorkie "^2.0.0" -"@vue/cli-plugin-pwa@~4.5.10": - version "4.5.10" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-pwa/-/cli-plugin-pwa-4.5.10.tgz#e415a1ae339bf697b0656e3774dfad031c9564ed" - integrity sha512-scYCwOX5A9hkIF9PFkeQQMDcE/OSKDg3BCYrm7TcmRCtmY77jqRNcdX+KoUTPrt8A1b4OHFbzHs95C/r4y9eHw== +"@vue/cli-plugin-pwa@~4.5.11": + version "4.5.11" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-pwa/-/cli-plugin-pwa-4.5.11.tgz#3031b4d3798707c353f2ad47b7c57a4708a17611" + integrity sha512-7wvNdR8EXRWaLlybPlk4B6+lE8y+sG2kXq69EyH4ILRmZnFYc22dY22eUhR1EIFTmRxHR0g8qDBrp1BvaNeaYA== dependencies: - "@vue/cli-shared-utils" "^4.5.10" + "@vue/cli-shared-utils" "^4.5.11" webpack "^4.0.0" workbox-webpack-plugin "^4.3.1" -"@vue/cli-plugin-router@^4.5.10", "@vue/cli-plugin-router@~4.5.10": - version "4.5.10" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-router/-/cli-plugin-router-4.5.10.tgz#546eaf6295bb125ce2365fb6db83548979776b0d" - integrity sha512-roiZTx2W59kTRaqNzHEnjnakP89MS+pVf3zWBlwsNXZpQuvqwFvoNfH/nBSJjqGRgZTRtCUe6vGgVPUEFYi/cg== +"@vue/cli-plugin-router@^4.5.11", "@vue/cli-plugin-router@~4.5.11": + version "4.5.11" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-router/-/cli-plugin-router-4.5.11.tgz#3b6df738c5a1a5f50376822bf661d9a3b0c3fa62" + integrity sha512-09tzw3faOs48IUPwLutYaNC7eoyyL140fKruTwdFdXuBLDdSQVida57Brx0zj2UKXc5qF8hk4GoGrOshN0KfNg== dependencies: - "@vue/cli-shared-utils" "^4.5.10" + "@vue/cli-shared-utils" "^4.5.11" -"@vue/cli-plugin-typescript@~4.5.10": - version "4.5.10" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-typescript/-/cli-plugin-typescript-4.5.10.tgz#8d8b02df7724dff75b1b93f8317f7d7f59742ac6" - integrity sha512-Eo1D+ejv/gFHFwhM6bwYwcU4ZU12vhOnlTkGPWDpjV0EpB9gNOUJTWoYH3b72q/xcP/jyfvPxuezGQBtEPanZg== +"@vue/cli-plugin-typescript@~4.5.11": + version "4.5.11" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-typescript/-/cli-plugin-typescript-4.5.11.tgz#846ee0bf2b4dc3db1243c3dabea709af8d14fcf6" + integrity sha512-oVv4p/gec/xqFuJOUqBxVuThk7fj2QMfoDpe6QfkWIVQU+g8JLpZvOQo0wDMoiHtURQKtqGQCwC57jkKOCufqg== dependencies: "@types/webpack-env" "^1.15.2" - "@vue/cli-shared-utils" "^4.5.10" + "@vue/cli-shared-utils" "^4.5.11" cache-loader "^4.1.0" fork-ts-checker-webpack-plugin "^3.1.1" globby "^9.2.0" @@ -1997,15 +1997,15 @@ optionalDependencies: fork-ts-checker-webpack-plugin-v5 "npm:fork-ts-checker-webpack-plugin@^5.0.11" -"@vue/cli-plugin-unit-jest@~4.5.10": - version "4.5.10" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-unit-jest/-/cli-plugin-unit-jest-4.5.10.tgz#0c319fc951a94dd3d4c4e6e24a1f1fd9424f0c64" - integrity sha512-x4IPonIpzFmJWD4RvUInSYFDy9W8Ck0h5oxG/3vKQlDR3y2E3Zgh/p0DvcFn6krCXzCJDxGQ+YmxKE0AsUVgYw== +"@vue/cli-plugin-unit-jest@~4.5.11": + version "4.5.11" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-unit-jest/-/cli-plugin-unit-jest-4.5.11.tgz#d988e6e8420540954ceaf70fa050c469c45b69ab" + integrity sha512-PGpWz1RB9mfSJ5diTshFJUZsAschJBdLtJl7mmou/AVH2Yf8gTy3Zh9YZwkvhGt/wKXFbincmL6tyAQFGMa8Ow== dependencies: "@babel/core" "^7.11.0" "@babel/plugin-transform-modules-commonjs" "^7.9.6" "@types/jest" "^24.0.19" - "@vue/cli-shared-utils" "^4.5.10" + "@vue/cli-shared-utils" "^4.5.11" babel-core "^7.0.0-bridge.0" babel-jest "^24.9.0" babel-plugin-transform-es2015-modules-commonjs "^6.26.2" @@ -2018,15 +2018,15 @@ ts-jest "^24.2.0" vue-jest "^3.0.5" -"@vue/cli-plugin-vuex@^4.5.10": - version "4.5.10" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.10.tgz#bad1fc538d09df0e67454594f707782d63667f39" - integrity sha512-Z5pnL3Eg2uwkKqP09NoM46/rwQCJ1j/1cZMgO4JF817O9n5AsFgV456UE6lK2cVCvIfvt7+S3HLrSPZUsYNQjQ== +"@vue/cli-plugin-vuex@^4.5.11": + version "4.5.11" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.11.tgz#f6f619bcfb66c86cc45340d73152844635e548bd" + integrity sha512-JBPeZLubiSHbRkEKDj0tnLiU43AJ3vt6JULn4IKWH1XWZ6MFC8vElaP5/AA4O3Zko5caamDDBq3TRyxdA2ncUQ== -"@vue/cli-service@~4.5.10": - version "4.5.10" - resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-4.5.10.tgz#f08df6689fe50809b5e14dad3d7bd7b86e5c639d" - integrity sha512-HnVkbc+Zb6J1lu0ojuKC6aQ4PjCW2fqlJE0G9Zqg+7VsUZ2e15UVRoIXj2hcIWtQiFF6n2FDxEkvZLslht9rkg== +"@vue/cli-service@~4.5.11": + version "4.5.11" + resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-4.5.11.tgz#b157e2eee2351889cbbd4ccb4a4a9d8575409175" + integrity sha512-FXeJh2o6B8q/njv2Ebhe9EsLXt9sPMXGDY5zVvcV5jgj9wkoej9yLfnmwWCau5kegNClP6bcM+BEHuMYxJ+ubQ== dependencies: "@intervolga/optimize-cssnano-plugin" "^1.0.5" "@soda/friendly-errors-webpack-plugin" "^1.7.1" @@ -2034,10 +2034,10 @@ "@types/minimist" "^1.2.0" "@types/webpack" "^4.0.0" "@types/webpack-dev-server" "^3.11.0" - "@vue/cli-overlay" "^4.5.10" - "@vue/cli-plugin-router" "^4.5.10" - "@vue/cli-plugin-vuex" "^4.5.10" - "@vue/cli-shared-utils" "^4.5.10" + "@vue/cli-overlay" "^4.5.11" + "@vue/cli-plugin-router" "^4.5.11" + "@vue/cli-plugin-vuex" "^4.5.11" + "@vue/cli-shared-utils" "^4.5.11" "@vue/component-compiler-utils" "^3.1.2" "@vue/preload-webpack-plugin" "^1.1.0" "@vue/web-component-wrapper" "^1.2.0" @@ -2086,10 +2086,10 @@ optionalDependencies: vue-loader-v16 "npm:vue-loader@^16.1.0" -"@vue/cli-shared-utils@^4.5.10": - version "4.5.10" - resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-4.5.10.tgz#e3b84c38bba19c6d995278b15261da865790561c" - integrity sha512-Lid6FflDqcvo/JBIBjUriAQ1RkQaKbBpzXSLEK/JmoKkQRHW/rRhDLGI1dEVyOLYnDEiL1m8o1xPJaplUUiXpA== +"@vue/cli-shared-utils@^4.5.11": + version "4.5.11" + resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-4.5.11.tgz#fff71673ee9128f998c691515b9d327071b4f41e" + integrity sha512-+aaQ+ThQG3+WMexfSWNl0y6f43edqVqRNbguE53F3TIH81I7saS5S750ayqXhZs2r6STJJyqorQnKtAWfHo29A== dependencies: "@hapi/joi" "^15.0.1" chalk "^2.4.2" @@ -3488,9 +3488,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001173: - version "1.0.30001178" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001178.tgz#3ad813b2b2c7d585b0be0a2440e1e233c6eabdbc" - integrity sha512-VtdZLC0vsXykKni8Uztx45xynytOi71Ufx9T8kHptSw9AL4dpqailUJJHavttuzUe1KYuBYtChiWv+BAb7mPmQ== + version "1.0.30001179" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001179.tgz#b0803883b4471a6c62066fb1752756f8afc699c8" + integrity sha512-blMmO0QQujuUWZKyVrD1msR4WNDAqb/UPO1Sw2WWsQ7deoM5bJiicKnWJ1Y0NS/aGINSnKPIWBMw5luX+NDUCA== capture-exit@^2.0.0: version "2.0.0" @@ -4776,9 +4776,9 @@ ejs@^2.6.1: integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== electron-to-chromium@^1.3.634: - version "1.3.642" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.642.tgz#8b884f50296c2ae2a9997f024d0e3e57facc2b94" - integrity sha512-cev+jOrz/Zm1i+Yh334Hed6lQVOkkemk2wRozfMF4MtTR7pxf3r3L5Rbd7uX1zMcEqVJ7alJBnJL7+JffkC6FQ== + version "1.3.645" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.645.tgz#c0b269ae2ecece5aedc02dd4586397d8096affb1" + integrity sha512-T7mYop3aDpRHIQaUYcmzmh6j9MAe560n6ukqjJMbVC6bVTau7dSpvB18bcsBPPtOSe10cKxhJFtlbEzLa0LL1g== elegant-spinner@^1.0.1: version "1.0.1" @@ -4852,9 +4852,9 @@ entities@^1.1.1: integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== entities@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== errno@^0.1.3, errno@~0.1.7: version "0.1.8" @@ -4993,14 +4993,14 @@ eslint-plugin-prettier@^3.1.3: prettier-linter-helpers "^1.0.0" eslint-plugin-vue@^7.0.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.4.1.tgz#2526ef0c010c218824a89423dbe6ddbe76f04fd6" - integrity sha512-W/xPNHYIkGJphLUM2UIYYGKbRw3BcDoMIPY9lu1TTa2YLiZoxurddfnmOP+UOVywxb5vi438ejzwvKdZqydtIw== + version "7.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.5.0.tgz#cc6d983eb22781fa2440a7573cf39af439bb5725" + integrity sha512-QnMMTcyV8PLxBz7QQNAwISSEs6LYk2LJvGlxalXvpCtfKnqo7qcY0aZTIxPe8QOnHd7WCwiMZLOJzg6A03T0Gw== dependencies: eslint-utils "^2.1.0" natural-compare "^1.4.0" semver "^7.3.2" - vue-eslint-parser "^7.3.0" + vue-eslint-parser "^7.4.1" eslint-scope@^4.0.3: version "4.0.3" @@ -5661,9 +5661,9 @@ flush-write-stream@^1.0.0: readable-stream "^2.3.6" follow-redirects@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7" - integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg== + version "1.13.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.2.tgz#dd73c8effc12728ba5cf4259d760ea5fb83e3147" + integrity sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA== for-each@^0.3.3: version "0.3.3" @@ -5850,9 +5850,9 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-intrinsic@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" - integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== + version "1.1.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.0.tgz#892e62931e6938c8a23ea5aaebcfb67bd97da97e" + integrity sha512-M11rgtQp5GZMZzDL7jLTNxbDfurpzuau5uqRWDPvlHjfvg3TdScAZo96GLvhMjImrmR8uAt0FS2RLoMrfWGKlg== dependencies: function-bind "^1.1.1" has "^1.0.3" @@ -9890,7 +9890,7 @@ prosemirror-schema-list@^1.1.4: prosemirror-model "^1.0.0" prosemirror-transform "^1.0.0" -prosemirror-state@1.3.3, prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, prosemirror-state@^1.3.3: +prosemirror-state@1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.3.3.tgz#b2862866b14dec2b3ae1ab18229f2bd337651a2c" integrity sha512-PLXh2VJsIgvlgSTH6I2Yg6vk1CzPDp21DFreVpQtDMY2S6WaMmrQgDTLRcsrD8X38v8Yc873H7+ogdGzyIPn+w== @@ -9898,6 +9898,14 @@ prosemirror-state@1.3.3, prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, pro prosemirror-model "^1.0.0" prosemirror-transform "^1.0.0" +prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, prosemirror-state@^1.3.3: + version "1.3.4" + resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.3.4.tgz#4c6b52628216e753fc901c6d2bfd84ce109e8952" + integrity sha512-Xkkrpd1y/TQ6HKzN3agsQIGRcLckUMA9u3j207L04mt8ToRgpGeyhbVv0HI7omDORIBHjR29b7AwlATFFf2GLA== + dependencies: + prosemirror-model "^1.0.0" + prosemirror-transform "^1.0.0" + prosemirror-tables@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/prosemirror-tables/-/prosemirror-tables-1.1.1.tgz#ad66300cc49500455cf1243bb129c9e7d883321e" @@ -11903,9 +11911,9 @@ tsutils@^2.29.0: tslib "^1.8.1" tsutils@^3.17.1: - version "3.19.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.19.1.tgz#d8566e0c51c82f32f9c25a4d367cd62409a547a9" - integrity sha512-GEdoBf5XI324lu7ycad7s6laADfnAqCw6wLGI+knxvw9vsIYBaJfYdmeCEG3FMMUiSm3OGgNb+m6utsWf5h9Vw== + version "3.20.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.20.0.tgz#ea03ea45462e146b53d70ce0893de453ff24f698" + integrity sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg== dependencies: tslib "^1.8.1" @@ -12291,10 +12299,10 @@ vue-cli-plugin-svg@~0.1.3: url-loader "^2.0.0" vue-svg-loader "^0.12.0" -vue-eslint-parser@^7.0.0, vue-eslint-parser@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.3.0.tgz#894085839d99d81296fa081d19643733f23d7559" - integrity sha512-n5PJKZbyspD0+8LnaZgpEvNCrjQx1DyDHw8JdWwoxhhC+yRip4TAvSDpXGf9SWX6b0umeB5aR61gwUo6NVvFxw== +vue-eslint-parser@^7.0.0, vue-eslint-parser@^7.4.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.4.1.tgz#e4adcf7876a7379758d9056a72235af18a587f92" + integrity sha512-AFvhdxpFvliYq1xt/biNBslTHE/zbEvSnr1qfHA/KxRIpErmEDrQZlQnvEexednRHmLfDNOMuDYwZL5xkLzIXQ== dependencies: debug "^4.1.1" eslint-scope "^5.0.0" @@ -12391,9 +12399,9 @@ vue-resize@^1.0.0: integrity sha512-SkIi19neeJClapYavfmHiewFZkkTfITVWskg/dIL8b1Eb+RlvnCb8fjGUwLjQJmsw2qsRiiAo4o7BAJVM4pcOA== vue-router@^3.1.6: - version "3.4.9" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.4.9.tgz#c016f42030ae2932f14e4748b39a1d9a0e250e66" - integrity sha512-CGAKWN44RqXW06oC+u4mPgHLQQi2t6vLD/JbGRDAXm0YpMv0bgpKuU5bBd7AvMgfTz9kXVRIWKHqRwGEb8xFkA== + version "3.5.0" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.5.0.tgz#ae49da16a2939f8d28d66d5784b14167d661192f" + integrity sha512-QYrPzHMJiJCq20ezhlGok+NbrmjzhQDG6pnpJaD14Eg3NvT07s3acYz2ktxJ7vGHd/Ts4TgG9Tt8a2PA+Js5fw== vue-scrollto@^2.17.1: version "2.20.0" From 4c485ec2291104f91397c376670c5cfeee951c69 Mon Sep 17 00:00:00 2001 From: fadelkon Date: Mon, 25 Jan 2021 15:15:42 +0000 Subject: [PATCH 111/114] Translated using Weblate (Catalan) Currently translated at 88.7% (214 of 241 strings) Translation: Mobilizon/Backend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/ca/ --- priv/gettext/ca/LC_MESSAGES/default.po | 47 ++++++++++++++++++++------ 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/priv/gettext/ca/LC_MESSAGES/default.po b/priv/gettext/ca/LC_MESSAGES/default.po index 9de2e512b..3576ac493 100644 --- a/priv/gettext/ca/LC_MESSAGES/default.po +++ b/priv/gettext/ca/LC_MESSAGES/default.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-17 11:48+0000\n" -"PO-Revision-Date: 2021-01-22 10:14+0000\n" +"PO-Revision-Date: 2021-01-26 13:04+0000\n" "Last-Translator: fadelkon \n" "Language-Team: Catalan \n" @@ -1333,48 +1333,67 @@ msgstr "El grup %{group} ha estat suspès a %{instance}" msgctxt "terms" msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." msgstr "" +"Accedint o usant el Servei, confirmes implícitament que et compromets a les " +"condicions següents. Si les condicions no et resulten clares, contacta a " +"%{contact}." #: lib/web/templates/api/terms.html.eex:40 #, elixir-format msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "" +"Pots obtenir més informació sobre com recollim i usem informació de les " +"persones usuàries del servei a la nostra política de " +"privacitat." #: lib/web/templates/api/terms.html.eex:36 #, elixir-format msgctxt "terms" msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." msgstr "" +"Continuar fent servir el Servei després que les Condicions revisades hagin " +"entrat en vigor, implica l'acceptació d'aquestes noves Condicions." #: lib/web/templates/api/privacy.html.eex:78 #, elixir-format msgctxt "terms" msgid "If you delete this information, you need to login again." -msgstr "" +msgstr "Si esborres aquesta informació hauràs de tornar a iniciar sessió." #: lib/web/templates/api/privacy.html.eex:80 #, elixir-format msgctxt "terms" msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." msgstr "" +"Si no estat connectat, no emmagatzemem cap informació en el teu dispositiu, " +"tret que participis anònimament en una activitat. En aquest cas específic, " +"desem el resum (hash) d'un identificador únic de l'activitat i el teu estat " +"d'assistència en el navegador, de manera que ho puguem mostrar sense que " +"tinguis cap sessió oberta. L'única conseqüència d'esborrar aquesta " +"informació és que deixarem de mostrar el teu estat d'assistència en el teu " +"navegador." #: lib/web/templates/api/privacy.html.eex:87 #, elixir-format msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "" +"Nota: Aquesta informació es desa en l'emmagatzematge local (local storage) i " +"no en les cookies." #: lib/web/templates/api/terms.html.eex:71 #, elixir-format msgctxt "terms" msgid "Our responsibility" -msgstr "" +msgstr "La nostra responsabilitat" #: lib/web/templates/api/privacy.html.eex:61 #, elixir-format msgctxt "terms" msgid "Retain server logs containing the IP address of all requests to this server, insofar as such logs are kept, no more than 90 days." msgstr "" +"Retenir registres del sistema que continguin l'adreça IP de totes les " +"peticions en aquest servidor, si és que se'n desen, no més de 90 dies." #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 @@ -1382,12 +1401,18 @@ msgstr "" msgctxt "terms" msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary to help you understand them better." msgstr "" +"Algunes condicions que apareixen seguidament, siguin tècniques o d'altra " +"mena, cobreixen conceptes que poden ser difícils d'entendre. Proporcionem un " +"glossari per ajudar-te a entendre-les millor." #: lib/web/templates/api/terms.html.eex:45 #, elixir-format msgctxt "terms" msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." msgstr "" +"No som responsables de qualsevol pèrdua que pateixis com a resultat que algú " +"altre faci servir el teu correu o contrasenya, amb el teu coneixement o " +"sense." #: lib/web/templates/api/terms.html.eex:50 #, elixir-format @@ -1559,22 +1584,22 @@ msgstr "Activitat" #: lib/web/templates/email/event_updated.html.eex:38 #, elixir-format msgid "There have been changes for %{title} so we'd thought we'd let you know." -msgstr "" +msgstr "Hem pensat d'avisar-te dels canvis que hi ha hagut a %{title}." #: lib/web/templates/error/500_page.html.eex:46 #, elixir-format msgid "The Mobilizon server seems to be temporarily down." -msgstr "" +msgstr "Sembla ser que el servidor de Mobilizon està temporalment inaccessible." #: lib/web/templates/error/500_page.html.eex:7 #, elixir-format msgid "This page is not correct" -msgstr "" +msgstr "La pàgina no és correcta" #: lib/web/templates/error/500_page.html.eex:45 #, elixir-format msgid "We're sorry, but something went wrong on our end." -msgstr "" +msgstr "Ho sentim, s'ha produït un error al nostre costat." #: lib/web/templates/email/email.html.eex:88 #: lib/web/templates/email/email.text.eex:4 @@ -1585,19 +1610,19 @@ msgstr "Aquesta és una web de proves per provar la beta de Mobilizon." #: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 #, elixir-format msgid "%{name}'s feed" -msgstr "" +msgstr "El flux de %{name}" #: lib/service/export/feed.ex:77 #, elixir-format msgid "%{actor}'s private events feed on %{instance}" -msgstr "" +msgstr "El flux d'activitats privades de %{actor} a %{instance}" #: lib/service/export/feed.ex:72 #, elixir-format msgid "%{actor}'s public events feed on %{instance}" -msgstr "" +msgstr "El flux d'activitats públiques de %{actor} a %{instance}" #: lib/service/export/feed.ex:203 #, elixir-format msgid "Feed for %{email} on %{instance}" -msgstr "" +msgstr "Flux de %{email} a %{instance}" From 1b3f7598dc47d47c57f1403cc38768fcceac2b93 Mon Sep 17 00:00:00 2001 From: fadelkon Date: Mon, 25 Jan 2021 14:59:45 +0000 Subject: [PATCH 112/114] Translated using Weblate (Catalan) Currently translated at 100.0% (838 of 838 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/ca/ --- js/src/i18n/ca.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/js/src/i18n/ca.json b/js/src/i18n/ca.json index e296f2db6..7b9fa65b4 100644 --- a/js/src/i18n/ca.json +++ b/js/src/i18n/ca.json @@ -11,6 +11,7 @@ "{contact} will be displayed as contact.": "Es mostrarà {contact} com a contacte.|Es mostraran {contact} com a contactes.", "@{group}": "@{group}", "@{username} ({role})": "@{username} ({role})", + "@{username}'s follow request was rejected": "S'ha rebutjat la soŀlicitud de seguir-te de @{username}", "A cookie is a small file containing information that is sent to your computer when you visit a website. When you visit the site again, the cookie allows that site to recognize your browser. Cookies may store user preferences and other information. You can configure your browser to refuse all cookies. However, this may result in some website features or services partially working. Local storage works the same way but allows you to store more data.": "Una cookie és un arxiu petit amb informació que s'envia al teu ordinador quan visites una web. Quan tornes a visitar el lloc web, la cookie fa que el lloc pugui reconèixer el teu navegador. Les cookies poden conservar preferències i altres informacions. Pots configurar el teu navegador perquè rebutgi totes les cookies. Ara bé, això podria fer que algunes funcionalitats o serveis d'algunes webs deixessin de funcionar bé. L'emmagatzematge local funciona de la mateixa manera, però permet desar més informació.", "A federated software": "Un software federat", "A place for your code of conduct, rules or guidelines. You can use HTML tags.": "Un lloc pel codi de conducta, normes o guies. Podeu fer servir etiquetes HTML.", @@ -87,6 +88,7 @@ "Are you sure you want to delete this event? This action cannot be reverted.": "Segur que vols esborrar aquesta activitat? Aquesta acció és irreversible.", "As the event organizer has chosen to manually validate participation requests, your participation will be really confirmed only once you receive an email stating it's being accepted.": "Com que l'organitzadora de l'activitat ha triat validar manualment les soŀlicituds per participar-hi, hauràs d'esperar la seva decisió. T'arribarà un correu comunicant-te-la.", "Assigned to": "Assignat a", + "Atom feed for events and posts": "Flux Atom d'activitats i publicacions", "Avatar": "Avatar", "Back to previous page": "Tornar a la pàgina anterior", "Banner": "Bàner", @@ -274,7 +276,9 @@ "Find an address": "Cerca una adreça", "Find an instance": "Cerca una instància", "Find another instance": "Cerca una altra instància", + "Follower": "Seguidor/a", "Followers": "Seguidors/es", + "Followers will receive new public events and posts.": "Les seguidores rebran les publicacions i activitats noves.", "Followings": "Seguint", "For instance: London": "Per exemple: Lleida", "For instance: London, Taekwondo, Architecture…": "Per exemple: Lleida, Ioga, Història…", @@ -293,6 +297,7 @@ "Go": "Anar", "Go to the event page": "Porta'm a la pàgina de l'activitat", "Going as {name}": "Hi assisteixes com a {name}", + "Group Followers": "Seguidores del grup", "Group List": "Llista del grup", "Group Members": "Membres del grup", "Group address": "Adreça del grup", @@ -322,6 +327,8 @@ "I participate": "Participo", "I want to allow people to participate without an account.": "Vull permetre que tothom. participi sense un compte.", "I want to approve every participation request": "Vull aprovar cada soŀlicitud de participació", + "ICS feed for events": "Calendari ICS de les activitats", + "ICS/WebCal Feed": "Calendari ICS/WebCal", "Identity {displayName} created": "S'ha creat la identitat {displayName}", "Identity {displayName} deleted": "S'ha esborrat la identitat {displayName}", "Identity {displayName} updated": "S'ha actualitzat la identitat {displayName}", @@ -400,6 +407,7 @@ "Manage my notifications": "Gestiona les notificacions", "Manage my settings": "Gestiona les preferències", "Manage participations": "Gestiona les participacions", + "Manually approve new followers": "Aprova manualment les noves seguidores", "Manually invite new members": "Invitacions manuals", "Mark as resolved": "Marca com resolta", "Member": "Membre", @@ -450,6 +458,7 @@ "No discussions yet": "Encara no s'ha obert cap discussió", "No end date": "Sense data de finalització", "No events found": "No s'ha trobat cap esdeveniment", + "No follower matches the filters": "No hi ha cap seguidor que hi coincideixi", "No group found": "No s'ha trobat cap grup", "No groups found": "No s'han trobat grups", "No instance follows your instance yet.": "Encara no hi ha cap instància que segueixi la teva.", From c596d7e478fb9e931bd4c745ae615f32cc0f7c13 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 26 Jan 2021 14:10:24 +0100 Subject: [PATCH 113/114] Update changelog Signed-off-by: Thomas Citharel --- CHANGELOG.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c153abc2..9ea827e99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,18 +8,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Added interface to approve/reject group follow requests -- Added UI for group public Atom/ICS feeds -- Attach ICS files representing the event to notifications and participations emails +- **Added interface to approve/reject group follow requests** +- **Added UI for group public RSS (Atom) / ICS feeds** +- **Attach ICS files representing the event to notifications and participations emails** - Add initial support to build Elixir releases +- Add some CSP & other security headers ### Changed - Added `
` to allowed HTML tags - Events are now correctly ordered by their beginning date on search and group page +- Improve resource metadata parsing by restricting OGP/Twitter metadata to an allowed list of attributes +- Reverse proxy pictures from resource metadata (favicons & such) ### Fixed +- **Fixed group remote subscription** - Upgrade PWA support library to avoid a call to Google CDN - Fixed group avatar & banner upload - Fixed some events not showing on homepage @@ -28,7 +32,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed ICS export timezone issues - Fixed remote interactions when the content was not local to the instance - Fixed a federation issue with group member removal -- Fixed group remote subscription +- Hide event organiser profile through the GraphQL API when a group is the organizer +- Fix an issue where the event form datepickers where displayed under the address map ### Translations From e933004daff092976d00827dbe8f229fb0a7902b Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 26 Jan 2021 16:39:50 +0100 Subject: [PATCH 114/114] Fix CSP issues in production Signed-off-by: Thomas Citharel --- js/src/main.ts | 1 + js/vue.config.js | 10 +++++++--- js/yarn.lock | 6 +++--- lib/web/plugs/http_security_plug.ex | 11 +++-------- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/js/src/main.ts b/js/src/main.ts index 125100ad7..2ace9af59 100644 --- a/js/src/main.ts +++ b/js/src/main.ts @@ -37,5 +37,6 @@ new Vue({ el: "#app", template: "", components: { App }, + render: (h) => h(App), i18n, }); diff --git a/js/vue.config.js b/js/vue.config.js index 4ac29a74f..cacda4b92 100644 --- a/js/vue.config.js +++ b/js/vue.config.js @@ -1,10 +1,8 @@ const path = require("path"); const ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin"); +const webpack = require("webpack"); module.exports = { - runtimeCompiler: true, - filenameHashing: true, - productionSourceMap: false, outputDir: path.resolve(__dirname, "../priv/static"), configureWebpack: (config) => { // Limit the used memory when building @@ -26,6 +24,12 @@ module.exports = { forkTsCheckerOptions.memoryLimit = process.env.NODE_BUILD_MEMORY || 2048; config.plugins.push(new ForkTsCheckerWebpackPlugin(forkTsCheckerOptions)); + config.plugins.push( + new webpack.DefinePlugin({ + global: "window", // Placeholder for global used in any node_modules + }) + ); + config.node.global = false; }, chainWebpack: (config) => { // remove the prefetch plugin diff --git a/js/yarn.lock b/js/yarn.lock index 3107e8acb..9a9d5cfb3 100644 --- a/js/yarn.lock +++ b/js/yarn.lock @@ -12399,9 +12399,9 @@ vue-resize@^1.0.0: integrity sha512-SkIi19neeJClapYavfmHiewFZkkTfITVWskg/dIL8b1Eb+RlvnCb8fjGUwLjQJmsw2qsRiiAo4o7BAJVM4pcOA== vue-router@^3.1.6: - version "3.5.0" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.5.0.tgz#ae49da16a2939f8d28d66d5784b14167d661192f" - integrity sha512-QYrPzHMJiJCq20ezhlGok+NbrmjzhQDG6pnpJaD14Eg3NvT07s3acYz2ktxJ7vGHd/Ts4TgG9Tt8a2PA+Js5fw== + version "3.5.1" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.5.1.tgz#edf3cf4907952d1e0583e079237220c5ff6eb6c9" + integrity sha512-RRQNLT8Mzr8z7eL4p7BtKvRaTSGdCbTy2+Mm5HTJvLGYSSeG9gDzNasJPP/yOYKLy+/cLG/ftrqq5fvkFwBJEw== vue-scrollto@^2.17.1: version "2.20.0" diff --git a/lib/web/plugs/http_security_plug.ex b/lib/web/plugs/http_security_plug.ex index 8a5f2161d..f66cb9aa3 100644 --- a/lib/web/plugs/http_security_plug.ex +++ b/lib/web/plugs/http_security_plug.ex @@ -60,19 +60,14 @@ defmodule Mobilizon.Web.Plugs.HTTPSecurityPlug do if Config.get(:env) == :dev do "script-src 'self' 'unsafe-eval' 'unsafe-inline' " else - "script-src 'self' " + "script-src 'self' 'unsafe-eval' 'sha256-4RS22DYeB7U14dra4KcQYxmwt5HkOInieXK1NUMBmQI=' " end script_src = [script_src] ++ Config.get([:http_security, :csp_policy, :script_src]) style_src = - if Config.get(:env) == :dev do - "style-src 'self' 'unsafe-inline' " - else - "style-src 'self' " - end - - style_src = [style_src] ++ Config.get([:http_security, :csp_policy, :style_src]) + ["style-src 'self' 'unsafe-inline' "] ++ + Config.get([:http_security, :csp_policy, :style_src]) font_src = ["font-src 'self' "] ++ Config.get([:http_security, :csp_policy, :font_src])