Merge remote-tracking branch 'origin/main'

This commit is contained in:
778a69cd 2023-12-18 18:46:56 +01:00
commit c90ad81879
5 changed files with 155 additions and 99 deletions

View file

@ -13,7 +13,7 @@ defmodule Mobilizon.Federation.ActivityPub.Relay do
alias Mobilizon.Federation.ActivityPub.{Actions, Activity, Transmogrifier} alias Mobilizon.Federation.ActivityPub.{Actions, Activity, Transmogrifier}
alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Federation.WebFinger alias Mobilizon.Federation.{NodeInfo, WebFinger}
alias Mobilizon.GraphQL.API.Follows alias Mobilizon.GraphQL.API.Follows
alias Mobilizon.Service.Workers.Background alias Mobilizon.Service.Workers.Background
import Mobilizon.Federation.ActivityPub.Utils, only: [create_full_domain_string: 1] import Mobilizon.Federation.ActivityPub.Utils, only: [create_full_domain_string: 1]
@ -192,10 +192,10 @@ defmodule Mobilizon.Federation.ActivityPub.Relay do
check_actor(address) check_actor(address)
!is_nil(host) -> !is_nil(host) ->
uri case NodeInfo.application_actor(host) do
|> create_full_domain_string() nil -> check_actor("relay@#{host}")
|> then(&Kernel.<>("relay@", &1)) actor_url when is_binary(actor_url) -> {:ok, actor_url}
|> check_actor() end
true -> true ->
{:error, :bad_url} {:error, :bad_url}

View file

@ -0,0 +1,33 @@
defmodule Mobilizon.Federation.NodeInfo do
@moduledoc """
Performs NodeInfo requests
"""
alias Mobilizon.Service.HTTP.WebfingerClient
require Logger
@application_uri "https://www.w3.org/ns/activitystreams#Application"
@env Application.compile_env(:mobilizon, :env)
@spec application_actor(String.t()) :: String.t() | nil
def application_actor(host) do
prefix = if @env !== :dev, do: "https", else: "http"
case WebfingerClient.get("#{prefix}://#{host}/.well-known/nodeinfo") do
{:ok, %{body: body, status: code}} when code in 200..299 ->
extract_application_actor(body)
err ->
Logger.debug("Failed to fetch NodeInfo data #{inspect(err)}")
nil
end
end
defp extract_application_actor(body) do
body
|> Enum.find(%{rel: @application_uri, href: nil}, fn %{rel: rel, href: href} ->
rel == @application_uri and is_binary(href)
end)
|> Map.get(:href)
end
end

View file

@ -7,13 +7,17 @@ defmodule Mobilizon.Web.NodeInfoController do
use Mobilizon.Web, :controller use Mobilizon.Web, :controller
alias Mobilizon.Config alias Mobilizon.Config
alias Mobilizon.Federation.ActivityPub.Relay
alias Mobilizon.Service.Statistics alias Mobilizon.Service.Statistics
@node_info_supported_versions ["2.0", "2.1"] @node_info_supported_versions ["2.0", "2.1"]
@node_info_schema_uri "http://nodeinfo.diaspora.software/ns/schema/" @node_info_schema_uri "http://nodeinfo.diaspora.software/ns/schema/"
@application_uri "https://www.w3.org/ns/activitystreams#Application"
@spec schemas(Plug.Conn.t(), any) :: Plug.Conn.t() @spec schemas(Plug.Conn.t(), any) :: Plug.Conn.t()
def schemas(conn, _params) do def schemas(conn, _params) do
relay = Relay.get_actor()
links = links =
@node_info_supported_versions @node_info_supported_versions
|> Enum.map(fn version -> |> Enum.map(fn version ->
@ -22,6 +26,12 @@ defmodule Mobilizon.Web.NodeInfoController do
href: url(~p"/.well-known/nodeinfo/#{version}") href: url(~p"/.well-known/nodeinfo/#{version}")
} }
end) end)
|> Kernel.++([
%{
rel: @application_uri,
href: relay.url
}
])
json(conn, %{ json(conn, %{
links: links links: links

View file

@ -45,7 +45,7 @@
"Accept": "Aceptar", "Accept": "Aceptar",
"Accepted": "Aceptado", "Accepted": "Aceptado",
"Accessibility": "Accesibilidade", "Accessibility": "Accesibilidade",
"Accessible only by link": "", "Accessible only by link": "Só accesible con ligazón",
"Accessible only to members": "Accesible só para membros", "Accessible only to members": "Accesible só para membros",
"Accessible through link": "Accesible por ligazón", "Accessible through link": "Accesible por ligazón",
"Account": "Conta", "Account": "Conta",
@ -64,15 +64,15 @@
"Add a todo": "Engadir tarefas pendentes", "Add a todo": "Engadir tarefas pendentes",
"Add an address": "Engadir un enderezo", "Add an address": "Engadir un enderezo",
"Add an instance": "Engadir unha instancia", "Add an instance": "Engadir unha instancia",
"Add link": "", "Add link": "Engadir ligazón",
"Add new…": "Engadir novo…", "Add new…": "Engadir novo…",
"Add picture": "", "Add picture": "Engadir imaxe",
"Add some tags": "Engadir etiquetas", "Add some tags": "Engadir etiquetas",
"Add to my calendar": "Engadir ó meu calendario", "Add to my calendar": "Engadir ó meu calendario",
"Additional comments": "Comentarios adicionais", "Additional comments": "Comentarios adicionais",
"Admin": "Admin", "Admin": "Admin",
"Admin dashboard": "", "Admin dashboard": "Taboleiro de Admin",
"Admin settings": "", "Admin settings": "Axustes de Admin",
"Admin settings successfully saved.": "Gardáronse os axustes de Admin.", "Admin settings successfully saved.": "Gardáronse os axustes de Admin.",
"Administration": "Administración", "Administration": "Administración",
"Administrator": "Administradora", "Administrator": "Administradora",
@ -93,15 +93,16 @@
"An event from one of my groups has been published": "Publicouse un evento nun dos meus grupos", "An event from one of my groups has been published": "Publicouse un evento nun dos meus grupos",
"An event from one of my groups has been updated or deleted": "Actualizouse ou eliminouse un evento nun dos meus grupos", "An event from one of my groups has been updated or deleted": "Actualizouse ou eliminouse un evento nun dos meus grupos",
"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.": "Unha instancia é unha versión do software Mobilizon instalada nun servidor. Calquera persoa pode instalar unha instancia usando o {mobilizon_software} ou outras apps federadas, coñecidas como \"fediverso\". O nome desta instancia é {instance_name}. Mobilizon é unha rede federada de múltiples instancias (como os servidores de correo), usuarias rexistradas en diferentes servidores que poden comunicarse incluso se non están rexistradas na mesma instancia.", "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.": "Unha instancia é unha versión do software Mobilizon instalada nun servidor. Calquera persoa pode instalar unha instancia usando o {mobilizon_software} ou outras apps federadas, coñecidas como \"fediverso\". O nome desta instancia é {instance_name}. Mobilizon é unha rede federada de múltiples instancias (como os servidores de correo), usuarias rexistradas en diferentes servidores que poden comunicarse incluso se non están rexistradas na mesma instancia.",
"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, automatically and remotely.": "Unha \"interface de programación de aplicacións\" ou \"API\" é un protocolo de comunicación que permite aos compoñentes do software comunicarse entre eles. A API de Mobilizon, por exemplo, pode permitir que ferramentas de terceiras partes se comuniquen con instancias Mobilizon para realizar certas accións, como publicar eventos de xeito automático e remoto.",
"And {number} comments": "E {number} comentarios", "And {number} comments": "E {number} comentarios",
"Announcements and mentions notifications are always sent straight away.": "As notificacións de mencións e anuncios sempre son enviadas de todas formas.", "Announcements and mentions notifications are always sent straight away.": "As notificacións de mencións e anuncios sempre son enviadas de todas formas.",
"Anonymous participant": "Participante anónimo", "Anonymous participant": "Participante anónimo",
"Anonymous participants will be asked to confirm their participation through e-mail.": "Ós participantes anónimos pediráselle que confirmen a súa participación a través de email.", "Anonymous participants will be asked to confirm their participation through e-mail.": "Ós participantes anónimos pediráselle que confirmen a súa participación a través de email.",
"Anonymous participations": "Participacións anónimas", "Anonymous participations": "Participacións anónimas",
"Any day": "Calquera día", "Any day": "Calquera día",
"Any type": "", "Any type": "Calquera tipo",
"Anyone can join freely": "Calquera pode unirse", "Anyone can join freely": "Calquera pode unirse",
"Anyone can request being a member, but an administrator needs to approve the membership.": "", "Anyone can request being a member, but an administrator needs to approve the membership.": "Calquera pode solicitar membresía, pero a administración ten que aprobar a solicitude.",
"Anyone wanting to be a member from your group will be able to from your group page.": "Calquera que queira ser membro do teu grupo pode facelo desde a páxina do grupo.", "Anyone wanting to be a member from your group will be able to from your group page.": "Calquera que queira ser membro do teu grupo pode facelo desde a páxina do grupo.",
"Application": "Aplicación", "Application": "Aplicación",
"Apply filters": "Aplicar filtros", "Apply filters": "Aplicar filtros",
@ -118,12 +119,12 @@
"Are you sure you want to delete this entire discussion?": "Tes a certeza de querer eliminar o debate completo?", "Are you sure you want to delete this entire discussion?": "Tes a certeza de querer eliminar o debate completo?",
"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.", "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.",
"Are you sure you want to delete this post? This action cannot be reverted.": "Tes certeza de querer eliminar a publicación? Esta acción non ten volta.", "Are you sure you want to delete this post? This action cannot be reverted.": "Tes certeza de querer eliminar a publicación? Esta acción non ten volta.",
"Are you sure you want to leave the group {groupName}? You'll loose access to this group's private content. This action cannot be undone.": "", "Are you sure you want to leave the group {groupName}? You'll loose access to this group's private content. This action cannot be undone.": "Tes certeza de querer deixar o grupo {groupName}? Non poderás acceder ao contido privado do grupo. Esta acción non ten volta atrás.",
"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 correo informándote.", "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 correo informándote.",
"Ask your instance admin to {enable_feature}.": "Pídelle á administración da instancia que {enable_feature}.", "Ask your instance admin to {enable_feature}.": "Pídelle á administración da instancia que {enable_feature}.",
"Assigned to": "Asignado a", "Assigned to": "Asignado a",
"Atom feed for events and posts": "Fonte Atom para eventos e publicacións", "Atom feed for events and posts": "Fonte Atom para eventos e publicacións",
"Attending": "", "Attending": "Participan",
"Avatar": "Avatar", "Avatar": "Avatar",
"Back to group list": "", "Back to group list": "",
"Back to previous page": "Volver á páxina anterior", "Back to previous page": "Volver á páxina anterior",
@ -139,7 +140,7 @@
"Booking": "Reservas", "Booking": "Reservas",
"Breadcrumbs": "Breadcrumbs", "Breadcrumbs": "Breadcrumbs",
"Browser notifications": "Notificacións do navegador", "Browser notifications": "Notificacións do navegador",
"Bullet list": "", "Bullet list": "Lista de puntos",
"By others": "Por outras", "By others": "Por outras",
"By {group}": "Por {group}", "By {group}": "Por {group}",
"By {username}": "Por {username}", "By {username}": "Por {username}",
@ -147,10 +148,10 @@
"Cancel": "Cancelar", "Cancel": "Cancelar",
"Cancel anonymous participation": "Cancelar participación anónima", "Cancel anonymous participation": "Cancelar participación anónima",
"Cancel creation": "Cancelar creación", "Cancel creation": "Cancelar creación",
"Cancel discussion title edition": "", "Cancel discussion title edition": "Desbotar a edición do título da conversa",
"Cancel edition": "Cancelar edición", "Cancel edition": "Cancelar edición",
"Cancel follow request": "", "Cancel follow request": "Desbotar solicitude de seguimento",
"Cancel membership request": "", "Cancel membership request": "Desbotar a solicitude de membresía",
"Cancel my participation request…": "Cancelar a miña solicitude de participación…", "Cancel my participation request…": "Cancelar a miña solicitude de participación…",
"Cancel my participation…": "Cancelar a miña participación…", "Cancel my participation…": "Cancelar a miña participación…",
"Cancelled": "Cancelado", "Cancelled": "Cancelado",
@ -164,21 +165,21 @@
"Change timezone": "Cambiar zona horaria", "Change timezone": "Cambiar zona horaria",
"Change user email": "Cambiar correo da usuaria", "Change user email": "Cambiar correo da usuaria",
"Check your inbox (and your junk mail folder).": "Comproba a caixa de correo (e o cartafol de spam).", "Check your inbox (and your junk mail folder).": "Comproba a caixa de correo (e o cartafol de spam).",
"Choose the source of the instance's Privacy Policy": "", "Choose the source of the instance's Privacy Policy": "Escolle a orixe da Política de Privacidade da instancia",
"Choose the source of the instance's Terms": "", "Choose the source of the instance's Terms": "Elixe a orixe dos Termos da instancia",
"City or region": "Cidade ou rexión", "City or region": "Cidade ou rexión",
"Clear": "Baleirar", "Clear": "Baleirar",
"Clear address field": "", "Clear address field": "Limpar campo de enderezo",
"Clear date filter field": "", "Clear date filter field": "Limpar campo de data no filtro",
"Clear participation data for all events": "Eliminar os datos de participación para todos os eventos", "Clear participation data for all events": "Eliminar os datos de participación para todos os eventos",
"Clear participation data for this event": "Eliminar os datos de participación para este evento", "Clear participation data for this event": "Eliminar os datos de participación para este evento",
"Clear timezone field": "", "Clear timezone field": "Limpar o campo de zona horaria",
"Click for more information": "Preme para saber máis", "Click for more information": "Preme para saber máis",
"Click to upload": "Preme para subir", "Click to upload": "Preme para subir",
"Close": "Pechar", "Close": "Pechar",
"Close comments for all (except for admins)": "Pechar comentarios para todos (excepto admins)", "Close comments for all (except for admins)": "Pechar comentarios para todos (excepto admins)",
"Closed": "Pechado", "Closed": "Pechado",
"Comment body": "", "Comment body": "Corpo do comentario",
"Comment deleted": "Comentario eliminado", "Comment deleted": "Comentario eliminado",
"Comment from {'@'}{username} reported": "Denuncia sobre o comentario de {'@'}{username}", "Comment from {'@'}{username} reported": "Denuncia sobre o comentario de {'@'}{username}",
"Comment text can't be empty": "O texto do comentario non pode estar baleiro", "Comment text can't be empty": "O texto do comentario non pode estar baleiro",
@ -212,7 +213,7 @@
"Create discussion": "Crear conversa", "Create discussion": "Crear conversa",
"Create event": "Crear evento", "Create event": "Crear evento",
"Create group": "Crear grupo", "Create group": "Crear grupo",
"Create identity": "", "Create identity": "Crear identidade",
"Create my event": "Crear o meu evento", "Create my event": "Crear o meu evento",
"Create my group": "Crear o meu grupo", "Create my group": "Crear o meu grupo",
"Create my profile": "Crear o meu perfil", "Create my profile": "Crear o meu perfil",
@ -235,7 +236,7 @@
"Date and time settings": "Axustes de data e hora", "Date and time settings": "Axustes de data e hora",
"Date parameters": "Parámetros da data", "Date parameters": "Parámetros da data",
"Decline": "Rexeitar", "Decline": "Rexeitar",
"Decrease": "", "Decrease": "Diminuir",
"Default": "Por omisión", "Default": "Por omisión",
"Default Mobilizon privacy policy": "Política de privacidade por omisión para Mobilizon", "Default Mobilizon privacy policy": "Política de privacidade por omisión para Mobilizon",
"Default Mobilizon terms": "Termos Mobilizon por omisión", "Default Mobilizon terms": "Termos Mobilizon por omisión",
@ -263,7 +264,7 @@
"Didn't receive the instructions?": "Non recibiches as instruccións?", "Didn't receive the instructions?": "Non recibiches as instruccións?",
"Disabled": "Desactivado", "Disabled": "Desactivado",
"Discussions": "Comentando", "Discussions": "Comentando",
"Discussions list": "", "Discussions list": "Lista de conversas",
"Display name": "Mostrar nome", "Display name": "Mostrar nome",
"Display participation price": "Mostrar prezo da participación", "Display participation price": "Mostrar prezo da participación",
"Displayed nickname": "Nome mostrado", "Displayed nickname": "Nome mostrado",
@ -272,7 +273,7 @@
"Do you really want to suspend the account « {emailAccount} » ?": "Tes certeza de querer suspender a conta « {emailAccount} » ?", "Do you really want to suspend the account « {emailAccount} » ?": "Tes certeza de querer suspender a conta « {emailAccount} » ?",
"Do you wish to {create_event} or {explore_events}?": "Queres {create_event} ou {explore_events}?", "Do you wish to {create_event} or {explore_events}?": "Queres {create_event} ou {explore_events}?",
"Do you wish to {create_group} or {explore_groups}?": "Queres {create_group} ou {explore_groups}?", "Do you wish to {create_group} or {explore_groups}?": "Queres {create_group} ou {explore_groups}?",
"Does the event needs to be confirmed later or is it cancelled?": "", "Does the event needs to be confirmed later or is it cancelled?": "Precísase confirmar posteriormente o evento ou se foi cancelado?",
"Domain": "Dominio", "Domain": "Dominio",
"Draft": "Borrador", "Draft": "Borrador",
"Drafts": "Borradores", "Drafts": "Borradores",
@ -323,12 +324,12 @@
"Event already passed": "O evento xa rematou", "Event already passed": "O evento xa rematou",
"Event cancelled": "Evento cancelado", "Event cancelled": "Evento cancelado",
"Event creation": "Evento creado", "Event creation": "Evento creado",
"Event description body": "", "Event description body": "Corpo da descrición do evento",
"Event edition": "Edición do evento", "Event edition": "Edición do evento",
"Event list": "Lista de eventos", "Event list": "Lista de eventos",
"Event metadata": "Metadatos do evento", "Event metadata": "Metadatos do evento",
"Event page settings": "Páxina de axustes do evento", "Event page settings": "Páxina de axustes do evento",
"Event timezone will default to the timezone of the event's address if there is one, or to your own timezone setting.": "", "Event timezone will default to the timezone of the event's address if there is one, or to your own timezone setting.": "A zona horaria do evento terá por defecto a zona horaria do enderezo do evento (se está indicada), ou a túa zona horaria nos axustes.",
"Event to be confirmed": "Evento agardando confirmación", "Event to be confirmed": "Evento agardando confirmación",
"Event {eventTitle} deleted": "Eliminado o evento {eventTitle}", "Event {eventTitle} deleted": "Eliminado o evento {eventTitle}",
"Event {eventTitle} reported": "Denunciado o evento {eventTitle}", "Event {eventTitle} reported": "Denunciado o evento {eventTitle}",
@ -341,7 +342,7 @@
"Explore": "Descubre", "Explore": "Descubre",
"Explore events": "Descubrir eventos", "Explore events": "Descubrir eventos",
"Explore!": "Descubre!", "Explore!": "Descubre!",
"Export": "", "Export": "Exportar",
"Failed to get location.": "Non se obtivo a localización.", "Failed to get location.": "Non se obtivo a localización.",
"Failed to save admin settings": "Fallo ó gardar os axustes de admin", "Failed to save admin settings": "Fallo ó gardar os axustes de admin",
"Featured events": "Eventos destacados", "Featured events": "Eventos destacados",
@ -356,19 +357,19 @@
"Find an instance": "Atopar unha instancia", "Find an instance": "Atopar unha instancia",
"Find another instance": "Atopa outra instancia", "Find another instance": "Atopa outra instancia",
"Find or add an element": "Atopa ou engade un elemento", "Find or add an element": "Atopa ou engade un elemento",
"First steps": "", "First steps": "Primeiros pasos",
"Follow": "Seguir", "Follow": "Seguir",
"Follower": "Seguidora", "Follower": "Seguidora",
"Followers": "Seguidoras", "Followers": "Seguidoras",
"Followers will receive new public events and posts.": "As seguidoras recibirán os novos eventos públicos e publicacións.", "Followers will receive new public events and posts.": "As seguidoras recibirán os novos eventos públicos e publicacións.",
"Following the group will allow you to be informed of the {group_upcoming_public_events}, whereas joining the group means you will {access_to_group_private_content_as_well}, including group discussions, group resources and members-only posts.": "", "Following the group will allow you to be informed of the {group_upcoming_public_events}, whereas joining the group means you will {access_to_group_private_content_as_well}, including group discussions, group resources and members-only posts.": "Ao seguir o grupo poderás recibir información sobre {group_upcoming_public_events}, mentras que ao unirte ao grupo poderás {access_to_group_private_content_as_well}, incluíndo conversas do grupo, recursos do grupo e publicacións só para membros.",
"Followings": "Seguindo", "Followings": "Seguindo",
"For instance: London": "Por exemplo: Allariz", "For instance: London": "Por exemplo: Allariz",
"For instance: London, Taekwondo, Architecture…": "Por exemplo: Leiro, Natación, Arquitectura…", "For instance: London, Taekwondo, Architecture…": "Por exemplo: Leiro, Natación, Arquitectura…",
"Forgot your password ?": "¿Esqueceches o contrasinal?", "Forgot your password ?": "¿Esqueceches o contrasinal?",
"Forgot your password?": "Esqueceches o contrasinal?", "Forgot your password?": "Esqueceches o contrasinal?",
"Framadate poll": "Enquisa Framadate", "Framadate poll": "Enquisa Framadate",
"From my groups": "", "From my groups": "Dos meus grupos",
"From the {startDate} at {startTime} to the {endDate}": "Desde o {startDate} ás {startTime} ata o {endDate}", "From the {startDate} at {startTime} to the {endDate}": "Desde o {startDate} ás {startTime} ata o {endDate}",
"From the {startDate} at {startTime} to the {endDate} at {endTime}": "Desde o {startDate} ás {startTime} ata o {endDate} ás {endTime}", "From the {startDate} at {startTime} to the {endDate} at {endTime}": "Desde o {startDate} ás {startTime} ata o {endDate} ás {endTime}",
"From the {startDate} to the {endDate}": "Desde o {startDate} ata o {endDate}", "From the {startDate} to the {endDate}": "Desde o {startDate} ata o {endDate}",
@ -378,7 +379,7 @@
"General": "Xeral", "General": "Xeral",
"General information": "Información xeral", "General information": "Información xeral",
"General settings": "Axustes xerais", "General settings": "Axustes xerais",
"Geolocation was not determined in time.": "", "Geolocation was not determined in time.": "Non se obtivo a xeolocalización a tempo.",
"Getting location": "Obtendo localización", "Getting location": "Obtendo localización",
"Getting there": "Chegar alí", "Getting there": "Chegar alí",
"Glossary": "Glosario", "Glossary": "Glosario",
@ -392,10 +393,10 @@
"Group URL": "URL do grupo", "Group URL": "URL do grupo",
"Group activity": "Actividade do grupo", "Group activity": "Actividade do grupo",
"Group address": "Enderezo do grupo", "Group address": "Enderezo do grupo",
"Group description body": "", "Group description body": "Corpo da descrición do grupo",
"Group display name": "Nome mostrado do grupo", "Group display name": "Nome mostrado do grupo",
"Group name": "Nome do grupo", "Group name": "Nome do grupo",
"Group profiles": "", "Group profiles": "Perfís do grupo",
"Group settings": "Axustes do grupo", "Group settings": "Axustes do grupo",
"Group settings saved": "Gardáronse os axustes", "Group settings saved": "Gardáronse os axustes",
"Group short description": "Descrición curta do grupo", "Group short description": "Descrición curta do grupo",
@ -405,9 +406,9 @@
"Groups": "Grupos", "Groups": "Grupos",
"Groups are not enabled on this instance.": "Os grupos non están activados nesta instancia.", "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.", "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.",
"Heading Level 1": "", "Heading Level 1": "Cabeceira Nivel 1",
"Heading Level 2": "", "Heading Level 2": "Cabeceira Nivel 2",
"Heading Level 3": "", "Heading Level 3": "Cabeceira Nivel 3",
"Headline picture": "Imaxe de cabeceira", "Headline picture": "Imaxe de cabeceira",
"Hide replies": "Agochar respostas", "Hide replies": "Agochar respostas",
"Home": "Inicio", "Home": "Inicio",
@ -437,11 +438,11 @@
"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.": "Se optaches pola validación manual das participantes, Mobilizon enviarache un correo para informarte das novas solicitudes a tratar. Podes escoller a frecuencia destas notificacións.", "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.": "Se optaches pola validación manual das participantes, Mobilizon enviarache un correo para informarte das novas solicitudes a tratar. Podes escoller a frecuencia destas notificacións.",
"If you want, you may send a message to the event organizer here.": "Se o desexas, aquí podes enviar unha mensaxe á organización do evento.", "If you want, you may send a message to the event organizer here.": "Se o desexas, aquí podes enviar unha mensaxe á organización do evento.",
"Ignore": "Ignorar", "Ignore": "Ignorar",
"In person": "", "In person": "En persoa",
"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.": "No seguinte contexto, unha aplicación é un software, proporcionado polo equipo Mobilizon ou por terceiros, utilizado para interactuar coa túa instancia.", "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.": "No seguinte contexto, unha aplicación é un software, proporcionado polo equipo Mobilizon ou por terceiros, utilizado para interactuar coa túa instancia.",
"In the past": "", "In the past": "No pasado",
"In this instance's network": "Na rede desta instancia", "In this instance's network": "Na rede desta instancia",
"Increase": "", "Increase": "Aumentar",
"Instance": "Instancia", "Instance": "Instancia",
"Instance Long Description": "Descrición longa da instancia", "Instance Long Description": "Descrición longa da instancia",
"Instance Name": "Nome da instancia", "Instance Name": "Nome da instancia",
@ -464,7 +465,7 @@
"Instances following you": "Instancias que te seguen", "Instances following you": "Instancias que te seguen",
"Instances you follow": "Instancias que segues", "Instances you follow": "Instancias que segues",
"Integrate this event with 3rd-party tools and show metadata for the event.": "Integrar este evento en ferramentas de terceiras parte e mostrar metadatos do evento.", "Integrate this event with 3rd-party tools and show metadata for the event.": "Integrar este evento en ferramentas de terceiras parte e mostrar metadatos do evento.",
"Interact": "", "Interact": "Interactuar",
"Interact with a remote content": "Interactuar cun evento remoto", "Interact with a remote content": "Interactuar cun evento remoto",
"Invite a new member": "Convida a un novo membro", "Invite a new member": "Convida a un novo membro",
"Invite member": "Convida a persoa", "Invite member": "Convida a persoa",
@ -492,7 +493,7 @@
"Least recently published": "Publicado máis antigo", "Least recently published": "Publicado máis antigo",
"Leave": "Saír", "Leave": "Saír",
"Leave event": "Deixar o evento", "Leave event": "Deixar o evento",
"Leave group": "", "Leave group": "Deixar o grupo",
"Leaving event \"{title}\"": "Saíndo do evento \"{title}\"", "Leaving event \"{title}\"": "Saíndo do evento \"{title}\"",
"Legal": "Legal", "Legal": "Legal",
"Let's define a few settings": "Define algúns parámetros", "Let's define a few settings": "Define algúns parámetros",
@ -504,7 +505,8 @@
"Load more activities": "Cargar máis actividades", "Load more activities": "Cargar máis actividades",
"Loading comments…": "Cargando comentarios…", "Loading comments…": "Cargando comentarios…",
"Local": "Local", "Local": "Local",
"Local time ({timezone})": "", "Local time ({timezone})": "Hora local ({timezone})",
"Local times ({timezone})": "Horas locais ({timezone})",
"Locality": "Localidade", "Locality": "Localidade",
"Location": "Localización", "Location": "Localización",
"Log in": "Acceder", "Log in": "Acceder",
@ -535,7 +537,7 @@
"Mobilizon uses a system of profiles to compartiment your activities. You will be able to create as many profiles as you want.": "Mobilizon utiliza un sistema de perfís para organizar as túas actividades. Poderás crear tantos perfís como queiras.", "Mobilizon uses a system of profiles to compartiment your activities. You will be able to create as many profiles as you want.": "Mobilizon utiliza un sistema de perfís para organizar as túas actividades. Poderás crear tantos perfís como queiras.",
"Mobilizon version": "Versión Mobilizon", "Mobilizon version": "Versión Mobilizon",
"Mobilizon will send you an email when the events you are attending have important changes: date and time, address, confirmation or cancellation, etc.": "Mobilizón enviarache un correo cando os eventos nos que participes teñan cambios importantes: data e hora, enderezos, confirmación ou cancelación, etc.", "Mobilizon will send you an email when the events you are attending have important changes: date and time, address, confirmation or cancellation, etc.": "Mobilizón enviarache un correo cando os eventos nos que participes teñan cambios importantes: data e hora, enderezos, confirmación ou cancelación, etc.",
"Moderate new members": "", "Moderate new members": "Moderar novos membros",
"Moderated comments (shown after approval)": "Comentarios moderados (mostrados após aprobación)", "Moderated comments (shown after approval)": "Comentarios moderados (mostrados após aprobación)",
"Moderation": "Moderación", "Moderation": "Moderación",
"Moderation log": "Rexistro da moderación", "Moderation log": "Rexistro da moderación",
@ -551,7 +553,7 @@
"My identities": "Identidades", "My identities": "Identidades",
"NOTE! The default terms have not been checked over by a lawyer and thus are unlikely to provide full legal protection for all situations for an instance admin using them. They are also not specific to all countries and jurisdictions. If you are unsure, please check with a lawyer.": "AVISO! Os termos por omisión non foron revisados por avogados e dificilmente proporcionan cobertura legal completa para todas as situacións que se dean nun instancia. Tampouco son específicas para todos os países e xurisdicións. Se non estás segura, consúltaas cun avogado.", "NOTE! The default terms have not been checked over by a lawyer and thus are unlikely to provide full legal protection for all situations for an instance admin using them. They are also not specific to all countries and jurisdictions. If you are unsure, please check with a lawyer.": "AVISO! Os termos por omisión non foron revisados por avogados e dificilmente proporcionan cobertura legal completa para todas as situacións que se dean nun instancia. Tampouco son específicas para todos os países e xurisdicións. Se non estás segura, consúltaas cun avogado.",
"Name": "Nome", "Name": "Nome",
"Navigated to {pageTitle}": "", "Navigated to {pageTitle}": "Ir a {pageTitle}",
"New discussion": "Novo debate", "New discussion": "Novo debate",
"New email": "Novo correo", "New email": "Novo correo",
"New folder": "Novo cartafol", "New folder": "Novo cartafol",
@ -629,7 +631,7 @@
"On {date} from {startTime} to {endTime}": "O {date} desde {startTime} ás {endTime}", "On {date} from {startTime} to {endTime}": "O {date} desde {startTime} ás {endTime}",
"On {date} starting at {startTime}": "O {date} comezando ás {startTime}", "On {date} starting at {startTime}": "O {date} comezando ás {startTime}",
"On {instance} and other federated instances": "En {instance} e outras instancias federadas", "On {instance} and other federated instances": "En {instance} e outras instancias federadas",
"Online": "", "Online": "En liña",
"Online ticketing": "Entradas por internet", "Online ticketing": "Entradas por internet",
"Only accessible through link": "Accesible só a través da ligazón", "Only accessible through link": "Accesible só a través da ligazón",
"Only accessible through link (private)": "Só accesible desde a ligazón {private}", "Only accessible through link (private)": "Só accesible desde a ligazón {private}",
@ -638,13 +640,13 @@
"Only group members can access discussions": "Só os membros do grupo poden acceder ás conversas", "Only group members can access discussions": "Só os membros do grupo poden acceder ás conversas",
"Only group moderators can create, edit and delete events.": "Só os moderadores do grupo poden crear, editar e eliminar eventos.", "Only group moderators can create, edit and delete events.": "Só os moderadores do grupo poden crear, editar e eliminar eventos.",
"Only group moderators can create, edit and delete posts.": "Só as moderadoras do grupo poden crear, editar e eliminar publicacións.", "Only group moderators can create, edit and delete posts.": "Só as moderadoras do grupo poden crear, editar e eliminar publicacións.",
"Only registered users may fetch remote events from their URL.": "", "Only registered users may fetch remote events from their URL.": "Só as usuarias rexistradas poden recibir elementos remotos co seu URL.",
"Open": "Abrir", "Open": "Abrir",
"Open a topic on our forum": "Abrir un tema no noso foro", "Open a topic on our forum": "Abrir un tema no noso foro",
"Open an issue on our bug tracker (advanced users)": "Abrir un informe no noso seguimento de fallos (usuarias avanzadas)", "Open an issue on our bug tracker (advanced users)": "Abrir un informe no noso seguimento de fallos (usuarias avanzadas)",
"Opened reports": "Denuncias abertas", "Opened reports": "Denuncias abertas",
"Or": "Ou", "Or": "Ou",
"Ordered list": "", "Ordered list": "Lista ordenada",
"Organized": "Organizado", "Organized": "Organizado",
"Organized by": "Organizado por", "Organized by": "Organizado por",
"Organized by {name}": "Organizado por {name}", "Organized by {name}": "Organizado por {name}",
@ -670,8 +672,8 @@
"Participation confirmation": "Confirmación da participación", "Participation confirmation": "Confirmación da participación",
"Participation notifications": "Notificacións da participación", "Participation notifications": "Notificacións da participación",
"Participation requested!": "Participación solicitada!", "Participation requested!": "Participación solicitada!",
"Participation with account": "", "Participation with account": "Participación coa conta",
"Participation without account": "", "Participation without account": "Participación sen conta",
"Participations": "Participacións", "Participations": "Participacións",
"Password": "Contrasinal", "Password": "Contrasinal",
"Password (confirmation)": "Contrasinal (confirmación)", "Password (confirmation)": "Contrasinal (confirmación)",
@ -693,19 +695,19 @@
"Please make sure the address is correct and that the page hasn't been moved.": "Comproba ben o enderezo e que a páxina non foi movida a outro lugar.", "Please make sure the address is correct and that the page hasn't been moved.": "Comproba ben o enderezo e que a páxina non foi movida a outro lugar.",
"Please read the {fullRules} published by {instance}'s administrators.": "Por favor le as {fullRules} publicadas pola administración de {instance}.", "Please read the {fullRules} published by {instance}'s administrators.": "Por favor le as {fullRules} publicadas pola administración de {instance}.",
"Post": "Publicación", "Post": "Publicación",
"Post URL": "", "Post URL": "URL da publicación",
"Post a comment": "Comenta", "Post a comment": "Comenta",
"Post a reply": "Publica unha resposta", "Post a reply": "Publica unha resposta",
"Post body": "", "Post body": "Corpo da publicación",
"Post {eventTitle} reported": "Denunciado o evento {eventTitle}", "Post {eventTitle} reported": "Denunciado o evento {eventTitle}",
"Postal Code": "Código Postal", "Postal Code": "Código Postal",
"Posts": "Publicacións", "Posts": "Publicacións",
"Powered by Mobilizon": "", "Powered by Mobilizon": "Grazas a Mobilizon",
"Powered by {mobilizon}. © 2018 - {date} The Mobilizon Contributors - Made with the financial support of {contributors}.": "Funciona grazas a {mobilizon}. © 2018 - {date} The Mobilizon Contributors - Co soporte financieiro das {contributors}.", "Powered by {mobilizon}. © 2018 - {date} The Mobilizon Contributors - Made with the financial support of {contributors}.": "Funciona grazas a {mobilizon}. © 2018 - {date} The Mobilizon Contributors - Co soporte financieiro das {contributors}.",
"Preferences": "Preferencias", "Preferences": "Preferencias",
"Previous": "Anterior", "Previous": "Anterior",
"Previous email": "Correo anterior", "Previous email": "Correo anterior",
"Previous month": "", "Previous month": "Mes anterior",
"Previous page": "Páxina anterior", "Previous page": "Páxina anterior",
"Price sheet": "Tarifa", "Price sheet": "Tarifa",
"Privacy": "Privacidade", "Privacy": "Privacidade",
@ -727,7 +729,7 @@
"Public preview": "Vista previa pública", "Public preview": "Vista previa pública",
"Publication date": "Data de publicación", "Publication date": "Data de publicación",
"Publish": "Publicar", "Publish": "Publicar",
"Published by {name}": "", "Published by {name}": "Publicado por {name}",
"Published events with <b>{comments}</b> comments and <b>{participations}</b> confirmed participations": "Eventos publicados con <b>{comments}</b> comentarios e <b>{participations}</b> participacións confirmadas", "Published events with <b>{comments}</b> comments and <b>{participations}</b> confirmed participations": "Eventos publicados con <b>{comments}</b> comentarios e <b>{participations}</b> participacións confirmadas",
"Push": "Push", "Push": "Push",
"Quote": "Citar", "Quote": "Citar",
@ -737,9 +739,9 @@
"Receive one email for each activity": "Recibir un correo por cada actividade", "Receive one email for each activity": "Recibir un correo por cada actividade",
"Receive one email per request": "Recibir un correo por solicitude", "Receive one email per request": "Recibir un correo por solicitude",
"Redirecting in progress…": "Redireccionando…", "Redirecting in progress…": "Redireccionando…",
"Redirecting to Mobilizon": "", "Redirecting to Mobilizon": "Redirixindo a Mobilizon",
"Redirecting to content…": "Redirixindo ó contido…", "Redirecting to content…": "Redirixindo ó contido…",
"Redo": "", "Redo": "Volver facer",
"Refresh profile": "Actualiza perfil", "Refresh profile": "Actualiza perfil",
"Regenerate new links": "Recrear novas ligazóns", "Regenerate new links": "Recrear novas ligazóns",
"Region": "Rexión", "Region": "Rexión",
@ -767,7 +769,7 @@
"Report this comment": "Denunciar este comentario", "Report this comment": "Denunciar este comentario",
"Report this event": "Denunciar este evento", "Report this event": "Denunciar este evento",
"Report this group": "Denunciar este grupo", "Report this group": "Denunciar este grupo",
"Report this post": "", "Report this post": "Denuncia esta publicación",
"Reported": "Denunciado", "Reported": "Denunciado",
"Reported by": "Denunciado por", "Reported by": "Denunciado por",
"Reported by someone on {domain}": "Foi denunciado por alguén desde {domain}", "Reported by someone on {domain}": "Foi denunciado por alguén desde {domain}",
@ -775,7 +777,7 @@
"Reported group": "Grupo denunciado", "Reported group": "Grupo denunciado",
"Reported identity": "Identidade denunciada", "Reported identity": "Identidade denunciada",
"Reports": "Denuncias", "Reports": "Denuncias",
"Reports list": "", "Reports list": "Lista de denuncias",
"Request for participation confirmation sent": "Solicitar o envío da confirmación de participación", "Request for participation confirmation sent": "Solicitar o envío da confirmación de participación",
"Resend confirmation email": "Reenviar correo de confirmación", "Resend confirmation email": "Reenviar correo de confirmación",
"Resent confirmation email": "Reenviado o correo de confirmación", "Resent confirmation email": "Reenviado o correo de confirmación",
@ -806,7 +808,7 @@
"Send": "Enviar", "Send": "Enviar",
"Send email": "Enviar correo", "Send email": "Enviar correo",
"Send notification e-mails": "Enviar emails de notificacións", "Send notification e-mails": "Enviar emails de notificacións",
"Send password reset": "", "Send password reset": "Enviar restablecemento de contrasinal",
"Send the confirmation email again": "Enviar o correo de confirmación outra vez", "Send the confirmation email again": "Enviar o correo de confirmación outra vez",
"Send the report": "Enviar a denuncia", "Send the report": "Enviar a denuncia",
"Set an URL to a page with your own privacy policy.": "Establece o URL da páxina coa túa política de privacidade.", "Set an URL to a page with your own privacy policy.": "Establece o URL da páxina coa túa política de privacidade.",
@ -815,20 +817,22 @@
"Share": "Compartir", "Share": "Compartir",
"Share this event": "Compartir este evento", "Share this event": "Compartir este evento",
"Share this group": "Compartir este grupo", "Share this group": "Compartir este grupo",
"Share this post": "", "Share this post": "Comparte esta publicación",
"Short bio": "Bio curta", "Short bio": "Bio curta",
"Show map": "Mostrar mapa", "Show map": "Mostrar mapa",
"Show me where I am": "Mostra onde me atopo", "Show me where I am": "Mostra onde me atopo",
"Show remaining number of places": "Mostrar o número de prazas restantes", "Show remaining number of places": "Mostrar o número de prazas restantes",
"Show the time when the event begins": "Mostrar a hora á que comeza o evento", "Show the time when the event begins": "Mostrar a hora á que comeza o evento",
"Show the time when the event ends": "Mostar a hora na que remata o evento", "Show the time when the event ends": "Mostar a hora na que remata o evento",
"Showing events before": "", "Showing events before": "Mostrando eventos antes do",
"Showing events starting on": "", "Showing events starting on": "Mostrando eventos a partir do",
"Sign Language": "Idioma de signos", "Sign Language": "Idioma de signos",
"Sign in with": "Acceder con", "Sign in with": "Acceder con",
"Sign up": "Rexistro", "Sign up": "Rexistro",
"Since you are a new member, private content can take a few minutes to appear.": "Como es un novo membro, o contido privado podería tardar uns minutos en aparecer.", "Since you are a new member, private content can take a few minutes to appear.": "Como es un novo membro, o contido privado podería tardar uns minutos en aparecer.",
"Skip to main content": "", "Skip to main content": "Ir directamente ao contido",
"Smoke free": "Libre de fume",
"Smoking allowed": "Permítese fumar",
"Social": "Social", "Social": "Social",
"Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary here to help you understand them better:": "Algúns termos, técnicos ou doutro tipo, utilizados no texto poderían referirse a conceptos difíciles de entender. Aquí tes un glosario para axudarche a entendelos mellor:", "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary here to help you understand them better:": "Algúns termos, técnicos ou doutro tipo, utilizados no texto poderían referirse a conceptos difíciles de entender. Aquí tes un glosario para axudarche a entendelos mellor:",
"Starts on…": "Comeza o…", "Starts on…": "Comeza o…",
@ -839,7 +843,7 @@
"Suspend": "Suspender", "Suspend": "Suspender",
"Suspend group": "Suspende grupo", "Suspend group": "Suspende grupo",
"Suspended": "Suspendida", "Suspended": "Suspendida",
"Tag search": "", "Tag search": "Buscar etiqueta",
"Task lists": "Listas de tarefas", "Task lists": "Listas de tarefas",
"Technical details": "Detalles técnicos", "Technical details": "Detalles técnicos",
"Tentative": "Provisional", "Tentative": "Provisional",
@ -847,7 +851,7 @@
"Terms": "Termos", "Terms": "Termos",
"Terms of service": "Termos do servizo", "Terms of service": "Termos do servizo",
"Text": "Texto", "Text": "Texto",
"That you follow or of which you are a member": "", "That you follow or of which you are a member": "Que sigues ou do que es membro",
"The Big Blue Button video teleconference URL": "URL da videoconferencia utilizando The Big Blue Button", "The Big Blue Button video teleconference URL": "URL da videoconferencia utilizando The Big Blue Button",
"The Google Meet video teleconference URL": "URL da videoconferencia a través de Google Meet", "The Google Meet video teleconference URL": "URL da videoconferencia a través de Google Meet",
"The Jitsi Meet video teleconference URL": "URL da videoconferencia usando Jitsi Meet", "The Jitsi Meet video teleconference URL": "URL da videoconferencia usando Jitsi Meet",
@ -867,7 +871,7 @@
"The event has been updated": "O evento foi actualizado", "The event has been updated": "O evento foi actualizado",
"The event has been updated and published": "O evento foi actualizado e publicado", "The event has been updated and published": "O evento foi actualizado e publicado",
"The event hasn't got a sign language interpreter": "O evento non ten intérprete de lingua de signos", "The event hasn't got a sign language interpreter": "O evento non ten intérprete de lingua de signos",
"The event is fully online": "", "The event is fully online": "Evento totalmente en liña",
"The event live video contains subtitles": "O vídeo do evento en directo contén subtítulos", "The event live video contains subtitles": "O vídeo do evento en directo contén subtítulos",
"The event live video does not contain subtitles": "O vídeo do evento en directo non contén subtítulos", "The event live video does not contain subtitles": "O vídeo do evento en directo non contén subtítulos",
"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?": "O organizador do evento escolleu validar manualmente as participacións. Desexas engadir unha nota explicando a razón pola que queres participar no evento?", "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?": "O organizador do evento escolleu validar manualmente as participacións. Desexas engadir unha nota explicando a razón pola que queres participar no evento?",
@ -882,7 +886,7 @@
"The event {event} was updated by {profile}.": "{profile} actualizou o evento {evento}.", "The event {event} was updated by {profile}.": "{profile} actualizou o evento {evento}.",
"The events you created are not shown here.": "Os eventos que ti creaches non se mostran aquí.", "The events you created are not shown here.": "Os eventos que ti creaches non se mostran aquí.",
"The geolocation prompt was denied.": "", "The geolocation prompt was denied.": "",
"The group can now be joined by anyone, but new members need to be approved by an administrator.": "", "The group can now be joined by anyone, but new members need to be approved by an administrator.": "Agora calquera pode unirse ao grupo, pero os novos membros teñen que ser aprobados pola administración.",
"The group can now be joined by anyone.": "Agora calquera pode unirse ao grupo.", "The group can now be joined by anyone.": "Agora calquera pode unirse ao grupo.",
"The group can now only be joined with an invite.": "Agora só se pode acceder ao grupo cun convite.", "The group can now only be joined with an invite.": "Agora só se pode acceder ao grupo cun convite.",
"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 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.",
@ -933,7 +937,7 @@
"This month": "Este mes", "This month": "Este mes",
"This post is accessible only for members. You have access to it for moderation purposes only because you are an instance moderator.": "Esta publicación só é accesible para membros. Ti tes acceso a ela para poder moderala xa que es moderadora da instancia.", "This post is accessible only for members. You have access to it for moderation purposes only because you are an instance moderator.": "Esta publicación só é accesible para membros. Ti tes acceso a ela para poder moderala xa que es moderadora da instancia.",
"This post is accessible only through it's link. Be careful where you post this link.": "Este evento só é accesible coa súa ligazón. Ten tino de onde publicas esta ligazón.", "This post is accessible only through it's link. Be careful where you post this link.": "Este evento só é accesible coa súa ligazón. Ten tino de onde publicas esta ligazón.",
"This profile is from another instance, the informations shown here may be incomplete.": "", "This profile is from another instance, the informations shown here may be incomplete.": "Este perfil pertence a outra instancia, a información que ves podería estar incompleta.",
"This profile was not found": "", "This profile was not found": "",
"This setting will be used to display the website and send you emails in the correct language.": "Este axuste usarase para mostrar o sitio web e enviarche os correos no idioma correcto.", "This setting will be used to display the website and send you emails in the correct language.": "Este axuste usarase para mostrar o sitio web e enviarche os correos no idioma correcto.",
"This user was not found": "", "This user was not found": "",
@ -941,8 +945,8 @@
"This week": "Esta semana", "This week": "Esta semana",
"This weekend": "Este fin de semana", "This weekend": "Este fin de semana",
"This will delete / anonymize all content (events, comments, messages, participations…) created from this identity.": "Esto eliminará / anonimazará todo o contido (eventos, comentarios, mensaxes, participacións...) creado con esta identidade.", "This will delete / anonymize all content (events, comments, messages, participations…) created from this identity.": "Esto eliminará / anonimazará todo o contido (eventos, comentarios, mensaxes, participacións...) creado con esta identidade.",
"Time in your timezone ({timezone})": "", "Time in your timezone ({timezone})": "Hora na túa zona horaria ({timezone})",
"Times in your timezone ({timezone})": "", "Times in your timezone ({timezone})": "Horas na túa zona horaria ({timezone})",
"Timezone": "Zona horaria", "Timezone": "Zona horaria",
"Timezone detected as {timezone}.": "Zona horaria detectada como {timezone}.", "Timezone detected as {timezone}.": "Zona horaria detectada como {timezone}.",
"Title": "Título", "Title": "Título",
@ -973,24 +977,24 @@
"Unable to load event for participation. The error details are provided below:": "Non se puido cargar a participación no evento. Aquí abaixo tes detalles do erro:", "Unable to load event for participation. The error details are provided below:": "Non se puido cargar a participación no evento. Aquí abaixo tes detalles do erro:",
"Unable to save your participation in this browser.": "Non se puido gardar a túa participación neste navegador.", "Unable to save your participation in this browser.": "Non se puido gardar a túa participación neste navegador.",
"Unable to update the profile. The avatar picture may be too heavy.": "Non se puido actualizar o perfil. A imaxe do avatar podería ser demasiado grande.", "Unable to update the profile. The avatar picture may be too heavy.": "Non se puido actualizar o perfil. A imaxe do avatar podería ser demasiado grande.",
"Underline": "", "Underline": "Subliñar",
"Undo": "", "Undo": "Desfacer",
"Unfollow": "Deixar de seguir", "Unfollow": "Deixar de seguir",
"Unfortunately, your participation request was rejected by the organizers.": "Desgraciadamente a túa solicitude de participación foi rexeitada pola organización.", "Unfortunately, your participation request was rejected by the organizers.": "Desgraciadamente a túa solicitude de participación foi rexeitada pola organización.",
"Unknown": "Descoñecido", "Unknown": "Descoñecido",
"Unknown actor": "Actor descoñecido", "Unknown actor": "Actor descoñecido",
"Unknown error.": "Erro descoñecido.", "Unknown error.": "Erro descoñecido.",
"Unknown value for the openness setting.": "Axuste descoñecido para o acceso ao grupo.", "Unknown value for the openness setting.": "Axuste descoñecido para o acceso ao grupo.",
"Unlogged participation": "", "Unlogged participation": "Participación sen rexistrarse",
"Unsaved changes": "Cambios non gardados", "Unsaved changes": "Cambios non gardados",
"Unsubscribe to browser push notifications": "Retirar subscrición ás notificacións push do navegdor", "Unsubscribe to browser push notifications": "Retirar subscrición ás notificacións push do navegdor",
"Unsuspend": "Reactivar", "Unsuspend": "Reactivar",
"Upcoming": "Próximamente", "Upcoming": "Próximamente",
"Upcoming events": "Eventos próximos", "Upcoming events": "Eventos próximos",
"Upcoming events from your groups": "", "Upcoming events from your groups": "Eventos previstos para os teus grupos",
"Update": "Actualizar", "Update": "Actualizar",
"Update app": "Actualizar app", "Update app": "Actualizar app",
"Update discussion title": "", "Update discussion title": "Actualiza o título da conversa",
"Update event {name}": "Actualizar evento {name}", "Update event {name}": "Actualizar evento {name}",
"Update group": "Actualizar grupo", "Update group": "Actualizar grupo",
"Update my event": "Actualizar o meu evento", "Update my event": "Actualizar o meu evento",
@ -1002,7 +1006,7 @@
"User settings": "Axustes da usuaria", "User settings": "Axustes da usuaria",
"Username": "Identificador", "Username": "Identificador",
"Users": "Usuarias", "Users": "Usuarias",
"Validating account": "", "Validating account": "Validando a conta",
"Validating email": "Validando o correo", "Validating email": "Validando o correo",
"Video Conference": "Videoconferencia", "Video Conference": "Videoconferencia",
"View a reply": "|Ver unha resposta|Ver {totalReplies} respostas", "View a reply": "|Ver unha resposta|Ver {totalReplies} respostas",
@ -1012,7 +1016,7 @@
"View all posts": "Ver publicacións", "View all posts": "Ver publicacións",
"View event page": "Ver páxina do evento", "View event page": "Ver páxina do evento",
"View everything": "Velo todo", "View everything": "Velo todo",
"View full profile": "", "View full profile": "Ver perfil completo",
"View less": "Ver menos", "View less": "Ver menos",
"View more": "Ver máis", "View more": "Ver máis",
"View page on {hostname} (in a new window)": "Ver páxina en {hostname} (nova ventá)", "View page on {hostname} (in a new window)": "Ver páxina en {hostname} (nova ventá)",
@ -1040,12 +1044,13 @@
"What can I do to help?": "Que podo facer para axudar?", "What can I do to help?": "Que podo facer para axudar?",
"Wheelchair accessibility": "Accesible con cadeira de rodas", "Wheelchair accessibility": "Accesible con cadeira de rodas",
"When a moderator from the group creates an event and attributes it to the group, it will show up here.": "Aquí aparecerá un evento cando un moderador do grupo o cree e o atribúa ó grupo.", "When a moderator from the group creates an event and attributes it to the group, it will show up here.": "Aquí aparecerá un evento cando un moderador do grupo o cree e o atribúa ó grupo.",
"When the event is private, you'll need to share the link around.": "", "When the event is private, you'll need to share the link around.": "Se o evento é privado, deberás compartir ti a ligazón.",
"When the post is private, you'll need to share the link around.": "", "When the post is private, you'll need to share the link around.": "Se a publicación é privada, deberás compartir ti a ligazón.",
"Whether smoking is prohibited during the event": "Se está prohibido fumar durante o evento",
"Whether the event is accessible with a wheelchair": "Se o evento é accesible ou non con cadeira de rodas", "Whether the event is accessible with a wheelchair": "Se o evento é accesible ou non con cadeira de rodas",
"Whether the event is interpreted in sign language": "Se o evento está interpretado en lingua de signos", "Whether the event is interpreted in sign language": "Se o evento está interpretado en lingua de signos",
"Whether the event live video is subtitled": "Se o evento está subtitulado ou non", "Whether the event live video is subtitled": "Se o evento está subtitulado ou non",
"Who can post a comment?": "", "Who can post a comment?": "Quen pode comentar?",
"Who can view this event and participate": "Quen pode ver e participar neste evento", "Who can view this event and participate": "Quen pode ver e participar neste evento",
"Who can view this post": "Quen pode ver esta publicación", "Who can view this post": "Quen pode ver esta publicación",
"Who published {number} events": "Que publicaron {number} eventos", "Who published {number} events": "Que publicaron {number} eventos",
@ -1055,7 +1060,7 @@
"Yesterday": "Onte", "Yesterday": "Onte",
"You accepted the invitation to join the group.": "Aceptaches o convite para unirte ao grupo.", "You accepted the invitation to join the group.": "Aceptaches o convite para unirte ao grupo.",
"You added the member {member}.": "Engadiches a {member}.", "You added the member {member}.": "Engadiches a {member}.",
"You approved {member}'s membership.": "", "You approved {member}'s membership.": "Aprobaches a membresía de {member}.",
"You archived the discussion {discussion}.": "Arquivaches o debate {discussion}.", "You archived the discussion {discussion}.": "Arquivaches o debate {discussion}.",
"You are not an administrator for this group.": "Non es administradora deste grupo.", "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.",
@ -1084,9 +1089,9 @@
"You demoted {member} to simple member.": "Degradaches a {member] a membresía básica.", "You demoted {member} to simple member.": "Degradaches a {member] a membresía básica.",
"You didn't create or join any event yet.": "Aínda non te uniches nin creaches un 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 don't follow any instances yet.": "Aínda non segues ningunha instancia.",
"You don't have any upcoming events. Maybe try another filter?": "", "You don't have any upcoming events. Maybe try another filter?": "Non tes eventos previstos. Queres probar con outro filtro?",
"You excluded member {member}.": "Excluíches a {member}.", "You excluded member {member}.": "Excluíches a {member}.",
"You have attended {count} events in the past.": "", "You have attended {count} events in the past.": "Non participaches en ningún evento no pasado.|Participaches nun evento no pasado.|Participaches en {count} eventos no pasado.",
"You have been invited by {invitedBy} to the following group:": "Foches convidada por {invitedBy} ó seguinte grupo:", "You have been invited by {invitedBy} to the following group:": "Foches convidada por {invitedBy} ó seguinte grupo:",
"You have been removed from this group's members.": "Sacáronte deste grupo.", "You have been removed from this group's members.": "Sacáronte deste grupo.",
"You have cancelled your participation": "Cancelaches a túa participación", "You have cancelled your participation": "Cancelaches a túa participación",
@ -1126,7 +1131,7 @@
"You will be able to add an avatar and set other options in your account settings.": "Poderás engadir un avatar e establecer outras opcións nos axustes da conta.", "You will be able to add an avatar and set other options in your account settings.": "Poderás engadir un avatar e establecer outras opcións nos axustes da conta.",
"You will be redirected to the original instance": "Vas ser redirixida á instancia orixinal", "You will be redirected to the original instance": "Vas ser redirixida á instancia orixinal",
"You will find here all the events you have created or of which you are a participant, as well as events organized by groups you follow or are a member of.": "Aquí atoparás tódolos eventos que creaches ou dos que es partícipe, tamén os eventos organizados por grupos que segues ou aos que pertences.", "You will find here all the events you have created or of which you are a participant, as well as events organized by groups you follow or are a member of.": "Aquí atoparás tódolos eventos que creaches ou dos que es partícipe, tamén os eventos organizados por grupos que segues ou aos que pertences.",
"You will receive notifications about this group's public activity depending on %{notification_settings}.": "", "You will receive notifications about this group's public activity depending on %{notification_settings}.": "Vas recibir notificacións sobre a actividade pública deste grupo dependendo dos %{notification_settings}.",
"You wish to participate to the following event": "Queres participar no seguinte evento", "You wish to participate to the following event": "Queres participar no seguinte evento",
"You'll get a weekly recap every Monday for upcoming events, if you have any.": "Recibirás un resumen semanal cada Luns para os próximos eventos, se os tes.", "You'll get a weekly recap every Monday for upcoming events, if you have any.": "Recibirás un resumen semanal cada Luns para os próximos eventos, se os tes.",
"You'll need to change the URLs where there were previously entered.": "Precisarás cambiar os URLs alá onde fosen previamente utilizados.", "You'll need to change the URLs where there were previously entered.": "Precisarás cambiar os URLs alá onde fosen previamente utilizados.",
@ -1146,7 +1151,7 @@
"Your email is being changed": "Estase cambiando o teu correo", "Your email is being changed": "Estase cambiando o teu correo",
"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.": "O teu correo só se utilizará para confirmar que es unha persoa real e enviarche posibles actualizacións para o evento. NON será transferido a outras instancias ou á organización do evento.", "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.": "O teu correo só se utilizará para confirmar que es unha persoa real e enviarche posibles actualizacións para o evento. NON será transferido a outras instancias ou á organización do evento.",
"Your federated identity": "A túa identidade federada", "Your federated identity": "A túa identidade federada",
"Your membership was approved by {profile}.": "", "Your membership was approved by {profile}.": "{profile} aprobou a túa membresía.",
"Your participation has been confirmed": "A túa participación foi confirmada", "Your participation has been confirmed": "A túa participación foi confirmada",
"Your participation has been rejected": "A túa participación foi rexeitada", "Your participation has been rejected": "A túa participación foi rexeitada",
"Your participation has been requested": "A túa participación foi solicitada", "Your participation has been requested": "A túa participación foi solicitada",
@ -1157,7 +1162,7 @@
"Your participation still has to be approved by the organisers.": "A participación aínda debe ser aprobada pola organización.", "Your participation still has to be approved by the organisers.": "A participación aínda debe ser aprobada pola organización.",
"Your participation will be validated once you click the confirmation link into the email, and after the organizer manually validates your participation.": "A túa participación validarase unha vez premas na ligazón de confirmación do correo, e após a organización validará manualmente a participación.", "Your participation will be validated once you click the confirmation link into the email, and after the organizer manually validates your participation.": "A túa participación validarase unha vez premas na ligazón de confirmación do correo, e após a organización validará manualmente a participación.",
"Your participation will be validated once you click the confirmation link into the email.": "A túa participación será validada unha vez premas na ligazón de confirmación do correo.", "Your participation will be validated once you click the confirmation link into the email.": "A túa participación será validada unha vez premas na ligazón de confirmación do correo.",
"Your position was not available.": "", "Your position was not available.": "A túa posición non estaba dispoñible.",
"Your profile will be shown as contact.": "O teu perfil será mostrado como contacto.", "Your profile will be shown as contact.": "O teu perfil será mostrado como contacto.",
"Your timezone is currently set to {timezone}.": "Zona horaria actual establecida a {timezone}.", "Your timezone is currently set to {timezone}.": "Zona horaria actual establecida a {timezone}.",
"Your timezone was detected as {timezone}.": "Zona horaria detectada como {timezone}.", "Your timezone was detected as {timezone}.": "Zona horaria detectada como {timezone}.",
@ -1170,7 +1175,7 @@
"[This comment has been deleted]": "[Este comentario foi eliminado]", "[This comment has been deleted]": "[Este comentario foi eliminado]",
"[deleted]": "[eliminado]", "[deleted]": "[eliminado]",
"a non-existent report": "denuncia non existente", "a non-existent report": "denuncia non existente",
"access to the group's private content as well": "", "access to the group's private content as well": "accede tamén ao contido privado do grupo",
"and {number} groups": "e {number} grupos", "and {number} groups": "e {number} grupos",
"any distance": "calquera distancia", "any distance": "calquera distancia",
"as {identity}": "como {identity}", "as {identity}": "como {identity}",
@ -1185,7 +1190,7 @@
"explore the events": "descubre os eventos", "explore the events": "descubre os eventos",
"explore the groups": "atopar grupos", "explore the groups": "atopar grupos",
"full rules": "normas completas", "full rules": "normas completas",
"group's upcoming public events": "", "group's upcoming public events": "Próximos eventos públicos do grupo",
"https://mensuel.framapad.org/p/some-secret-token": "https://mensuel.framapad.org/p/some-secret-token", "https://mensuel.framapad.org/p/some-secret-token": "https://mensuel.framapad.org/p/some-secret-token",
"iCal Feed": "Fonte iCal", "iCal Feed": "Fonte iCal",
"instance rules": "normas da instancia", "instance rules": "normas da instancia",
@ -1198,21 +1203,21 @@
"terms of service": "termos do servizo", "terms of service": "termos do servizo",
"tool designed to serve you": "ferramenta creada para servirte", "tool designed to serve you": "ferramenta creada para servirte",
"with another identity…": "con outra identidade…", "with another identity…": "con outra identidade…",
"your notification settings": "", "your notification settings": "axustes das túas notificacións",
"{'@'}{username}": "{'@'}{username}", "{'@'}{username}": "{'@'}{username}",
"{approved} / {total} seats": "{approved} / {total} prazas", "{approved} / {total} seats": "{approved} / {total} prazas",
"{available}/{capacity} available places": "Non quedan prazas|{available}/{capacity} prazas dispoñibles", "{available}/{capacity} available places": "Non quedan prazas|{available}/{capacity} prazas dispoñibles",
"{count} km": "{count} km", "{count} km": "{count} km",
"{count} members": "Sen membros|Un membro|{count} membros", "{count} members": "Sen membros|Un membro|{count} membros",
"{count} members or followers": "", "{count} members or followers": "Sen membros ou seguidoras|Un membro ou seguidora|{count} membros ou seguidoras",
"{count} participants": "Sen participantes | Un participante | {count} participantes", "{count} participants": "Sen participantes | Un participante | {count} participantes",
"{count} requests waiting": "{count} solicitudes agardando", "{count} requests waiting": "{count} solicitudes agardando",
"{folder} - Resources": "{folder} - Recursos", "{folder} - Resources": "{folder} - Recursos",
"{group} activity timeline": "Cronoloxía de actividade de {group}", "{group} activity timeline": "Cronoloxía de actividade de {group}",
"{group} events": "Eventos de {group}", "{group} events": "Eventos de {group}",
"{group} posts": "", "{group} posts": "{group} publicacións",
"{group}'s events": "Eventos de {group}", "{group}'s events": "Eventos de {group}",
"{group}'s todolists": "", "{group}'s todolists": "Tarefas pendentes de {group}",
"{instanceName} is an instance of the {mobilizon} software.": "{instanceName} é unha instancia do software {mobilizon}.", "{instanceName} is an instance of the {mobilizon} software.": "{instanceName} é unha instancia do software {mobilizon}.",
"{instanceName} is an instance of {mobilizon_link}, a free software built with the community.": "{instanceName} é unha instancia de {mobilizon_link}, software libre feito para a comunidade.", "{instanceName} is an instance of {mobilizon_link}, a free software built with the community.": "{instanceName} é unha instancia de {mobilizon_link}, software libre feito para a comunidade.",
"{member} accepted the invitation to join the group.": "{member} aceptou o convite para unirse ao grupo.", "{member} accepted the invitation to join the group.": "{member} aceptou o convite para unirse ao grupo.",
@ -1239,11 +1244,11 @@
"{number} organized events": "Sen eventos organizados|Un evento organizado|{number} eventos organizados", "{number} organized events": "Sen eventos organizados|Un evento organizado|{number} eventos organizados",
"{number} participations": "Sen participacións|Unha participación|{number} participacións", "{number} participations": "Sen participacións|Unha participación|{number} participacións",
"{number} posts": "Sen publicacións|Unha publicación|{number} publicacións", "{number} posts": "Sen publicacións|Unha publicación|{number} publicacións",
"{number} seats left": "", "{number} seats left": "Quedan {number} asentos",
"{old_group_name} was renamed to {group}.": "{old_group_name} mudou de nome a {group}.", "{old_group_name} was renamed to {group}.": "{old_group_name} mudou de nome a {group}.",
"{profile} (by default)": "{profile} (by default)", "{profile} (by default)": "{profile} (by default)",
"{profile} added the member {member}.": "{profile} engadiu a {member}.", "{profile} added the member {member}.": "{profile} engadiu a {member}.",
"{profile} approved {member}'s membership.": "", "{profile} approved {member}'s membership.": "{profile} aprobou a membresía de {member}.",
"{profile} archived the discussion {discussion}.": "{profile} arquivou o debate {discussion}.", "{profile} archived the discussion {discussion}.": "{profile} arquivou o debate {discussion}.",
"{profile} created the discussion {discussion}.": "{profile} creou o debate {discussion}.", "{profile} created the discussion {discussion}.": "{profile} creou o debate {discussion}.",
"{profile} created the folder {resource}.": "{profile} creou o cartafol {resource}.", "{profile} created the folder {resource}.": "{profile} creou o cartafol {resource}.",
@ -1273,7 +1278,7 @@
"{profile} replied to the discussion {discussion}.": "{profile} respondeu ao debate {discussion}.", "{profile} replied to the discussion {discussion}.": "{profile} respondeu ao debate {discussion}.",
"{profile} updated the group {group}.": "{profile} actualizou o grupo {group}.", "{profile} updated the group {group}.": "{profile} actualizou o grupo {group}.",
"{profile} updated the member {member}.": "{profile} actualizou a participante {member].", "{profile} updated the member {member}.": "{profile} actualizou a participante {member].",
"{timezoneLongName} ({timezoneShortName})": "", "{timezoneLongName} ({timezoneShortName})": "{timezoneLongName} ({timezoneShortName})",
"{title} ({count} todos)": "{title} ({count} pendentes)", "{title} ({count} todos)": "{title} ({count} pendentes)",
"{username} was invited to {group}": "{username} foi convidada a {group}", "{username} was invited to {group}": "{username} foi convidada a {group}",
"© The OpenStreetMap Contributors": "© The OpenStreetMap Contributors" "© The OpenStreetMap Contributors": "© The OpenStreetMap Contributors"

View file

@ -2,12 +2,16 @@ defmodule Mobilizon.Web.NodeInfoControllerTest do
use Mobilizon.Web.ConnCase use Mobilizon.Web.ConnCase
alias Mobilizon.Config alias Mobilizon.Config
alias Mobilizon.Federation.ActivityPub.Relay
use Mobilizon.Web, :verified_routes use Mobilizon.Web, :verified_routes
test "Get node info schemas", %{conn: conn} do test "Get node info schemas", %{conn: conn} do
conn = get(conn, url(~p"/.well-known/nodeinfo")) conn = get(conn, url(~p"/.well-known/nodeinfo"))
relay = Relay.get_actor()
relay_url = relay.url
assert json_response(conn, 200) == %{ assert json_response(conn, 200) == %{
"links" => [ "links" => [
%{ %{
@ -17,6 +21,10 @@ defmodule Mobilizon.Web.NodeInfoControllerTest do
%{ %{
"href" => url(~p"/.well-known/nodeinfo/2.1"), "href" => url(~p"/.well-known/nodeinfo/2.1"),
"rel" => "http://nodeinfo.diaspora.software/ns/schema/2.1" "rel" => "http://nodeinfo.diaspora.software/ns/schema/2.1"
},
%{
"href" => relay_url,
"rel" => "https://www.w3.org/ns/activitystreams#Application"
} }
] ]
} }