+
+
+ -
{{ log.object.title }}
@@ -169,7 +172,10 @@
@@ -190,6 +196,56 @@
>{{ displayNameAndUsername(log.object) }}
+
+ @{{ log.actor.preferredUsername }}
+ {{ displayNameAndUsername(log.object) }}
+
+
+
+ @{{ log.actor.preferredUsername }}
+ {{ displayNameAndUsername(log.object) }}
+
+
{{ log.object.email }}
+
+
+ @{{ log.actor.preferredUsername }}
+ {{ log.object.event.title }}
+
+ {{ log.object.event.title }}
+ {{ displayNameAndUsername(log.object.actor) }}
+
+
+
+
+
+
+ @{{ log.actor.preferredUsername }}
+ {{ displayNameAndUsername(log.object.actor) }}
+
+
+
+
+
+ @{{ log.actor.preferredUsername }}
+
{{ log.insertedAt | formatDateTimeString }}
-
- {{ $t("No moderation logs yet") }}
-
+
+
+
+ {{ $t("No moderation logs yet") }}
+
diff --git a/js/yarn.lock b/js/yarn.lock
index 1f174989f..7218e500f 100644
--- a/js/yarn.lock
+++ b/js/yarn.lock
@@ -1444,9 +1444,9 @@
jest-diff "^24.3.0"
"@types/jest@^26.0.18":
- version "26.0.22"
- resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.22.tgz#8308a1debdf1b807aa47be2838acdcd91e88fbe6"
- integrity sha512-eeWwWjlqxvBxc4oQdkueW5OF/gtfSceKk4OnOAGlUSwS/liBRtZppbJuz1YkgbrbfGOoeBHun9fOvXnjNwrSOw==
+ version "26.0.23"
+ resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.23.tgz#a1b7eab3c503b80451d019efb588ec63522ee4e7"
+ integrity sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA==
dependencies:
jest-diff "^26.0.0"
pretty-format "^26.0.0"
@@ -1500,7 +1500,12 @@
resolved "https://registry.yarnpkg.com/@types/ngeohash/-/ngeohash-0.6.2.tgz#356bb5e79294bc9f746ad89eb848eca2741a6e43"
integrity sha512-6nlq2eEh75JegDGUXis9wGTYIJpUvbori4qx++PRKQsV3YRkaqUNPNykzphniqPSZADXCouBuAnyptjUkMkhvw==
-"@types/node@*", "@types/node@>=6":
+"@types/node@*":
+ version "15.0.1"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.1.tgz#ef34dea0881028d11398be5bf4e856743e3dc35a"
+ integrity sha512-TMkXt0Ck1y0KKsGr9gJtWGjttxlZnnvDtphxUOSd0bfaR6Q1jle+sPvrzNR1urqYTWMinoKvjKfXUGsumaO1PA==
+
+"@types/node@>=6":
version "14.14.41"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.41.tgz#d0b939d94c1d7bd53d04824af45f1139b8c45615"
integrity sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g==
@@ -3318,9 +3323,9 @@ bser@2.1.1:
node-int64 "^0.4.0"
buefy@^0.9.0:
- version "0.9.6"
- resolved "https://registry.yarnpkg.com/buefy/-/buefy-0.9.6.tgz#83c026c4a6f8fdcab80ded59181efc20873e3a99"
- integrity sha512-qoYtbTf78xvC5fcRsuUKqUizJCAk2rg6LiAzON8X1G0GTsHkCWRWBHsJmU/jk1/6B+TQ10pSGkQgB+OLrREeXg==
+ version "0.9.7"
+ resolved "https://registry.yarnpkg.com/buefy/-/buefy-0.9.7.tgz#694e73fe0b32632a53d94c5ba9cfa4468363badd"
+ integrity sha512-Fli0ZjNDgtFtHm0LItWmfhNJ1oLjDwPzUWccvwXXoo2mADXaH8JQxyhY+drUuUV5/GMu5PtwqQSqPgZy942VZg==
dependencies:
bulma "0.9.2"
@@ -3584,7 +3589,15 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
-chalk@^4.0.0, chalk@^4.1.0:
+chalk@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad"
+ integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chalk@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
@@ -4088,9 +4101,9 @@ core-js@^2.4.0, core-js@^2.5.0:
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
core-js@^3.6.4:
- version "3.10.2"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.10.2.tgz#17cb038ce084522a717d873b63f2b3ee532e2cd5"
- integrity sha512-W+2oVYeNghuBr3yTzZFQ5rfmjZtYB/Ubg87R5YOmlGrIb+Uw9f7qjUbhsj+/EkXhcV7eOD3jiM4+sgraX3FZUw==
+ version "3.11.0"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.11.0.tgz#05dac6aa70c0a4ad842261f8957b961d36eb8926"
+ integrity sha512-bd79DPpx+1Ilh9+30aT5O1sgpQd4Ttg8oqkqi51ZzhedMM1omD2e6IOF48Z/DzDCZ2svp49tN/3vneTK6ZBkXw==
core-js@^3.6.5:
version "3.10.1"
@@ -12677,9 +12690,9 @@ vue-hot-reload-api@^2.3.0:
integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
vue-i18n-extract@^1.0.2:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/vue-i18n-extract/-/vue-i18n-extract-1.2.1.tgz#0695f628b8ffeba840fe4cbcc2bec2429cce88a5"
- integrity sha512-CaT2vqQi/b5YZyau+6OSvyY044GQu6kexMMUh2zF08s+i08hfbj3s/pdgKLq5EjFbSDFcx2SjF5zACWAhHtN5Q==
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/vue-i18n-extract/-/vue-i18n-extract-1.2.3.tgz#7a16bbce29d587476df0bad85c0f9453b5bcfcbe"
+ integrity sha512-ZLtF6wp732KHKawHx5ZSmjyydkli9g26z0NfGLP89DkiGx4nKFYZ2oIH35HtImdhcfq1zqkeSwxs7kRzarLoVw==
dependencies:
commander "^6.1.0"
dot-object "^2.1.4"
diff --git a/lib/federation/activity_pub/activity_pub.ex b/lib/federation/activity_pub/activity_pub.ex
index 824b9c3c5..a46a02cbb 100644
--- a/lib/federation/activity_pub/activity_pub.ex
+++ b/lib/federation/activity_pub/activity_pub.ex
@@ -39,11 +39,12 @@ defmodule Mobilizon.Federation.ActivityPub do
Visibility
}
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
+
alias Mobilizon.Federation.ActivityPub.Types.{Managable, Ownable}
- alias Mobilizon.Federation.ActivityStream.{Converter, Convertible}
+ alias Mobilizon.Federation.ActivityStream.Convertible
alias Mobilizon.Federation.HTTPSignatures.Signature
- alias Mobilizon.Federation.WebFinger
alias Mobilizon.Service.Notifications.Scheduler
alias Mobilizon.Storage.Page
@@ -79,7 +80,6 @@ defmodule Mobilizon.Federation.ActivityPub do
{:ok, struct()} | {:error, any()}
def fetch_object_from_url(url, options \\ []) do
Logger.info("Fetching object from url #{url}")
- force_fetch = Keyword.get(options, :force, false)
with {:not_http, true} <- {:not_http, String.starts_with?(url, "http")},
{:existing, nil} <-
@@ -99,39 +99,7 @@ defmodule Mobilizon.Federation.ActivityPub do
Preloader.maybe_preload(entity)
else
{:existing, entity} ->
- Logger.debug("Entity is already existing")
-
- res =
- if force_fetch and not are_same_origin?(url, Endpoint.url()) do
- Logger.debug("Entity is external and we want a force fetch")
-
- case Fetcher.fetch_and_update(url, options) do
- {:ok, _activity, entity} ->
- {:ok, entity}
-
- {:error, "Gone"} ->
- {:error, "Gone", entity}
-
- {:error, "Not found"} ->
- {:error, "Not found", entity}
- end
- else
- {:ok, entity}
- end
-
- Logger.debug("Going to preload an existing entity")
-
- case res do
- {:ok, entity} ->
- Preloader.maybe_preload(entity)
-
- {:error, status, entity} ->
- {:ok, entity} = Preloader.maybe_preload(entity)
- {:error, status, entity}
-
- err ->
- err
- end
+ handle_existing_entity(url, entity, options)
e ->
Logger.warn("Something failed while fetching url #{inspect(e)}")
@@ -139,37 +107,51 @@ defmodule Mobilizon.Federation.ActivityPub do
end
end
- @doc """
- Getting an actor from url, eventually creating it if we don't have it locally or if it needs an update
- """
- @spec get_or_fetch_actor_by_url(String.t(), boolean) :: {:ok, Actor.t()} | {:error, String.t()}
- def get_or_fetch_actor_by_url(url, preload \\ false)
+ @spec handle_existing_entity(String.t(), struct(), Keyword.t()) ::
+ {:ok, struct()}
+ | {:ok, struct()}
+ | {:error, String.t(), struct()}
+ | {:error, String.t()}
+ defp handle_existing_entity(url, entity, options) do
+ Logger.debug("Entity is already existing")
+ Logger.debug("Going to preload an existing entity")
- def get_or_fetch_actor_by_url(nil, _preload), do: {:error, "Can't fetch a nil url"}
+ case refresh_entity(url, entity, options) do
+ {:ok, entity} ->
+ Preloader.maybe_preload(entity)
- def get_or_fetch_actor_by_url("https://www.w3.org/ns/activitystreams#Public", _preload) do
- with %Actor{url: url} <- Relay.get_actor() do
- get_or_fetch_actor_by_url(url)
+ {:error, status, entity} ->
+ {:ok, entity} = Preloader.maybe_preload(entity)
+ {:error, status, entity}
+
+ err ->
+ err
end
end
- @spec get_or_fetch_actor_by_url(String.t(), boolean()) :: {:ok, Actor.t()} | {:error, any()}
- def get_or_fetch_actor_by_url(url, preload) do
- with {:ok, %Actor{} = cached_actor} <- Actors.get_actor_by_url(url, preload),
- false <- Actors.needs_update?(cached_actor) do
- {:ok, cached_actor}
- else
- _ ->
- # For tests, see https://github.com/jjh42/mock#not-supported---mocking-internal-function-calls and Mobilizon.Federation.ActivityPubTest
- case __MODULE__.make_actor_from_url(url, preload) do
- {:ok, %Actor{} = actor} ->
- {:ok, actor}
+ @spec refresh_entity(String.t(), struct(), Keyword.t()) ::
+ {:ok, struct()} | {:error, String.t(), struct()} | {:error, String.t()}
+ defp refresh_entity(url, entity, options) do
+ force_fetch = Keyword.get(options, :force, false)
- err ->
- Logger.warn("Could not fetch by AP id")
- Logger.debug(inspect(err))
- {:error, "Could not fetch by AP id"}
- end
+ if force_fetch and not are_same_origin?(url, Endpoint.url()) do
+ Logger.debug("Entity is external and we want a force fetch")
+
+ case Fetcher.fetch_and_update(url, options) do
+ {:ok, _activity, entity} ->
+ {:ok, entity}
+
+ {:error, "Gone"} ->
+ {:error, "Gone", entity}
+
+ {:error, "Not found"} ->
+ {:error, "Not found", entity}
+
+ {:error, "Object origin check failed"} ->
+ {:error, "Object origin check failed"}
+ end
+ else
+ {:ok, entity}
end
end
@@ -287,7 +269,8 @@ defmodule Mobilizon.Federation.ActivityPub do
local \\ true,
public \\ true
) do
- with {:ok, %Actor{id: object_owner_actor_id}} <- get_or_fetch_actor_by_url(object["actor"]),
+ with {:ok, %Actor{id: object_owner_actor_id}} <-
+ ActivityPubActor.get_or_fetch_actor_by_url(object["actor"]),
{:ok, %Share{} = _share} <- Share.create(object["id"], actor.id, object_owner_actor_id),
announce_data <- make_announce_data(actor, object, activity_id, public),
{:ok, activity} <- create_activity(announce_data, local),
@@ -604,68 +587,6 @@ defmodule Mobilizon.Federation.ActivityPub do
end
end
- @doc """
- Create an actor locally by its URL (AP ID)
- """
- @spec make_actor_from_url(String.t(), boolean()) :: {:ok, %Actor{}} | {:error, any()}
- def make_actor_from_url(url, preload \\ false) do
- if are_same_origin?(url, Endpoint.url()) do
- {:error, "Can't make a local actor from URL"}
- else
- case fetch_and_prepare_actor_from_url(url) do
- {:ok, data} ->
- Actors.upsert_actor(data, preload)
-
- # Request returned 410
- {:error, :actor_deleted} ->
- Logger.info("Actor was deleted")
- {:error, :actor_deleted}
-
- {:error, e} ->
- Logger.warn("Failed to make actor from url")
- {:error, e}
-
- e ->
- Logger.warn("Failed to make actor from url")
- {:error, e}
- end
- end
- end
-
- @doc """
- Find an actor in our local database or call WebFinger to find what's its AP ID is and then fetch it
- """
- @spec find_or_make_actor_from_nickname(String.t(), atom() | nil) :: tuple()
- def find_or_make_actor_from_nickname(nickname, type \\ nil) do
- case Actors.get_actor_by_name(nickname, type) do
- %Actor{} = actor ->
- {:ok, actor}
-
- nil ->
- make_actor_from_nickname(nickname)
- end
- end
-
- @spec find_or_make_person_from_nickname(String.t()) :: tuple()
- def find_or_make_person_from_nickname(nick), do: find_or_make_actor_from_nickname(nick, :Person)
-
- @spec find_or_make_group_from_nickname(String.t()) :: tuple()
- def find_or_make_group_from_nickname(nick), do: find_or_make_actor_from_nickname(nick, :Group)
-
- @doc """
- Create an actor inside our database from username, using WebFinger to find out its AP ID and then fetch it
- """
- @spec make_actor_from_nickname(String.t()) :: {:ok, %Actor{}} | {:error, any()}
- def make_actor_from_nickname(nickname) do
- case WebFinger.finger(nickname) do
- {:ok, url} when is_binary(url) ->
- make_actor_from_url(url)
-
- _e ->
- {:error, "No ActivityPub URL found in WebFinger"}
- end
- end
-
@spec is_create_activity?(Activity.t()) :: boolean
defp is_create_activity?(%Activity{data: %{"type" => "Create"}}), do: true
defp is_create_activity?(_), do: false
@@ -783,40 +704,6 @@ defmodule Mobilizon.Federation.ActivityPub do
)
end
- # Fetching a remote actor's information through its AP ID
- @spec fetch_and_prepare_actor_from_url(String.t()) :: {:ok, struct()} | {:error, atom()} | any()
- defp fetch_and_prepare_actor_from_url(url) do
- Logger.debug("Fetching and preparing actor from url")
- Logger.debug(inspect(url))
-
- res =
- with {:ok, %{status: 200, body: body}} <-
- Tesla.get(url,
- headers: [{"Accept", "application/activity+json"}],
- follow_redirect: true
- ),
- :ok <- Logger.debug("response okay, now decoding json"),
- {:ok, data} <- Jason.decode(body) do
- Logger.debug("Got activity+json response at actor's endpoint, now converting data")
- {:ok, Converter.Actor.as_to_model_data(data)}
- else
- # Actor is gone, probably deleted
- {:ok, %{status: 410}} ->
- Logger.info("Response HTTP 410")
- {:error, :actor_deleted}
-
- {:error, e} ->
- Logger.warn("Could not decode actor at fetch #{url}, #{inspect(e)}")
- {:error, e}
-
- e ->
- Logger.warn("Could not decode actor at fetch #{url}, #{inspect(e)}")
- {:error, e}
- end
-
- res
- end
-
@doc """
Return all public activities (events & comments) for an actor
"""
@@ -937,10 +824,7 @@ defmodule Mobilizon.Federation.ActivityPub do
Mobilizon.Service.Activity.Member.insert_activity(member,
subject: "member_approved"
),
- _ <-
- unless(is_nil(member.parent.domain),
- do: Refresher.fetch_group(member.parent.url, member.actor)
- ),
+ _ <- maybe_refresh_group(member),
Absinthe.Subscription.publish(Endpoint, member.actor,
group_membership_changed: [
Actor.preferred_username_and_domain(member.parent),
@@ -979,6 +863,7 @@ defmodule Mobilizon.Federation.ActivityPub do
Mobilizon.Service.Activity.Member.insert_activity(member,
subject: "member_accepted_invitation"
),
+ _ <- maybe_refresh_group(member),
accept_data <- %{
"type" => "Accept",
"attributedTo" => member.parent.url,
@@ -992,6 +877,14 @@ defmodule Mobilizon.Federation.ActivityPub do
end
end
+ defp maybe_refresh_group(%Member{
+ parent: %Actor{domain: parent_domain, url: parent_url},
+ actor: %Actor{} = actor
+ }) do
+ unless is_nil(parent_domain),
+ do: Refresher.fetch_group(parent_url, actor)
+ end
+
@spec reject_join(Participant.t(), map()) :: {:ok, Participant.t(), Activity.t()} | any()
defp reject_join(%Participant{} = participant, additional) do
with {:ok, %Participant{} = participant} <-
diff --git a/lib/federation/activity_pub/actor.ex b/lib/federation/activity_pub/actor.ex
new file mode 100644
index 000000000..aad2f2f6a
--- /dev/null
+++ b/lib/federation/activity_pub/actor.ex
@@ -0,0 +1,102 @@
+defmodule Mobilizon.Federation.ActivityPub.Actor do
+ @moduledoc """
+ Module to handle ActivityPub Actor interactions
+ """
+
+ alias Mobilizon.Actors
+ alias Mobilizon.Actors.Actor
+ alias Mobilizon.Federation.ActivityPub.{Fetcher, Relay}
+ alias Mobilizon.Federation.WebFinger
+ alias Mobilizon.Web.Endpoint
+ require Logger
+ import Mobilizon.Federation.ActivityPub.Utils, only: [are_same_origin?: 2]
+
+ @doc """
+ Getting an actor from url, eventually creating it if we don't have it locally or if it needs an update
+ """
+ @spec get_or_fetch_actor_by_url(String.t(), boolean) :: {:ok, Actor.t()} | {:error, String.t()}
+ def get_or_fetch_actor_by_url(url, preload \\ false)
+
+ def get_or_fetch_actor_by_url(nil, _preload), do: {:error, "Can't fetch a nil url"}
+
+ def get_or_fetch_actor_by_url("https://www.w3.org/ns/activitystreams#Public", _preload) do
+ with %Actor{url: url} <- Relay.get_actor() do
+ get_or_fetch_actor_by_url(url)
+ end
+ end
+
+ @spec get_or_fetch_actor_by_url(String.t(), boolean()) :: {:ok, Actor.t()} | {:error, any()}
+ def get_or_fetch_actor_by_url(url, preload) do
+ with {:ok, %Actor{} = cached_actor} <- Actors.get_actor_by_url(url, preload),
+ false <- Actors.needs_update?(cached_actor) do
+ {:ok, cached_actor}
+ else
+ _ ->
+ # For tests, see https://github.com/jjh42/mock#not-supported---mocking-internal-function-calls and Mobilizon.Federation.ActivityPubTest
+ case __MODULE__.make_actor_from_url(url, preload) do
+ {:ok, %Actor{} = actor} ->
+ {:ok, actor}
+
+ {:error, err} ->
+ Logger.debug("Could not fetch by AP id")
+ Logger.debug(inspect(err))
+ {:error, "Could not fetch by AP id"}
+ end
+ end
+ end
+
+ @doc """
+ Create an actor locally by its URL (AP ID)
+ """
+ @spec make_actor_from_url(String.t(), boolean()) :: {:ok, %Actor{}} | {:error, any()}
+ def make_actor_from_url(url, preload \\ false) do
+ if are_same_origin?(url, Endpoint.url()) do
+ {:error, "Can't make a local actor from URL"}
+ else
+ case Fetcher.fetch_and_prepare_actor_from_url(url) do
+ {:ok, data} ->
+ Actors.upsert_actor(data, preload)
+
+ # Request returned 410
+ {:error, :actor_deleted} ->
+ Logger.info("Actor was deleted")
+ {:error, :actor_deleted}
+
+ {:error, e} ->
+ Logger.warn("Failed to make actor from url")
+ {:error, e}
+ end
+ end
+ end
+
+ @doc """
+ Find an actor in our local database or call WebFinger to find what's its AP ID is and then fetch it
+ """
+ @spec find_or_make_actor_from_nickname(String.t(), atom() | nil) :: tuple()
+ def find_or_make_actor_from_nickname(nickname, type \\ nil) do
+ case Actors.get_actor_by_name(nickname, type) do
+ %Actor{} = actor ->
+ {:ok, actor}
+
+ nil ->
+ make_actor_from_nickname(nickname)
+ end
+ end
+
+ @spec find_or_make_group_from_nickname(String.t()) :: tuple()
+ def find_or_make_group_from_nickname(nick), do: find_or_make_actor_from_nickname(nick, :Group)
+
+ @doc """
+ Create an actor inside our database from username, using WebFinger to find out its AP ID and then fetch it
+ """
+ @spec make_actor_from_nickname(String.t()) :: {:ok, %Actor{}} | {:error, any()}
+ def make_actor_from_nickname(nickname) do
+ case WebFinger.finger(nickname) do
+ {:ok, url} when is_binary(url) ->
+ make_actor_from_url(url)
+
+ _e ->
+ {:error, "No ActivityPub URL found in WebFinger"}
+ end
+ end
+end
diff --git a/lib/federation/activity_pub/federator.ex b/lib/federation/activity_pub/federator.ex
index d9027084f..4bed74643 100644
--- a/lib/federation/activity_pub/federator.ex
+++ b/lib/federation/activity_pub/federator.ex
@@ -13,6 +13,7 @@ defmodule Mobilizon.Federation.ActivityPub.Federator do
alias Mobilizon.Actors.Actor
alias Mobilizon.Federation.ActivityPub
alias Mobilizon.Federation.ActivityPub.{Activity, Transmogrifier}
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
require Logger
@@ -42,7 +43,8 @@ defmodule Mobilizon.Federation.ActivityPub.Federator do
Logger.debug(inspect(activity))
Logger.debug(fn -> "Running publish for #{activity.data["id"]}" end)
- with {:ok, %Actor{} = actor} <- ActivityPub.get_or_fetch_actor_by_url(activity.data["actor"]) do
+ with {:ok, %Actor{} = actor} <-
+ ActivityPubActor.get_or_fetch_actor_by_url(activity.data["actor"]) do
Logger.info(fn -> "Sending #{activity.data["id"]} out via AP" end)
ActivityPub.publish(actor, activity)
end
@@ -61,7 +63,7 @@ defmodule Mobilizon.Federation.ActivityPub.Federator do
e ->
# Just drop those for now
- Logger.error("Unhandled activity")
+ Logger.debug("Unhandled activity")
Logger.debug(inspect(e))
Logger.debug(Jason.encode!(params))
end
diff --git a/lib/federation/activity_pub/fetcher.ex b/lib/federation/activity_pub/fetcher.ex
index 65971b6c7..019e0237e 100644
--- a/lib/federation/activity_pub/fetcher.ex
+++ b/lib/federation/activity_pub/fetcher.ex
@@ -8,6 +8,7 @@ defmodule Mobilizon.Federation.ActivityPub.Fetcher do
alias Mobilizon.Federation.HTTPSignatures.Signature
alias Mobilizon.Federation.ActivityPub.{Relay, Transmogrifier}
+ alias Mobilizon.Federation.ActivityStream.Converter.Actor, as: ActorConverter
alias Mobilizon.Service.HTTP.ActivityPub, as: ActivityPubClient
import Mobilizon.Federation.ActivityPub.Utils,
@@ -30,11 +31,11 @@ defmodule Mobilizon.Federation.ActivityPub.Fetcher do
{:ok, data}
else
{:ok, %Tesla.Env{status: 410}} ->
- Logger.warn("Resource at #{url} is 410 Gone")
+ Logger.debug("Resource at #{url} is 410 Gone")
{:error, "Gone"}
{:ok, %Tesla.Env{status: 404}} ->
- Logger.warn("Resource at #{url} is 404 Gone")
+ Logger.debug("Resource at #{url} is 404 Gone")
{:error, "Not found"}
{:ok, %Tesla.Env{} = res} ->
@@ -75,7 +76,7 @@ defmodule Mobilizon.Federation.ActivityPub.Fetcher do
@spec fetch_and_update(String.t(), Keyword.t()) :: {:ok, map(), struct()}
def fetch_and_update(url, options \\ []) do
with {:ok, data} when is_map(data) <- fetch(url, options),
- {:origin_check, true} <- {:origin_check, origin_check?(url, data)},
+ {:origin_check, true} <- {:origin_check, origin_check(url, data)},
params <- %{
"type" => "Update",
"to" => data["to"],
@@ -87,7 +88,6 @@ defmodule Mobilizon.Federation.ActivityPub.Fetcher do
Transmogrifier.handle_incoming(params)
else
{:origin_check, false} ->
- Logger.warn("Object origin check failed")
{:error, "Object origin check failed"}
{:error, err} ->
@@ -95,6 +95,57 @@ defmodule Mobilizon.Federation.ActivityPub.Fetcher do
end
end
+ @doc """
+ Fetching a remote actor's information through its AP ID
+ """
+ @spec fetch_and_prepare_actor_from_url(String.t()) :: {:ok, map()} | {:error, atom()} | any()
+ def fetch_and_prepare_actor_from_url(url) do
+ Logger.debug("Fetching and preparing actor from url")
+ Logger.debug(inspect(url))
+
+ res =
+ with {:ok, %{status: 200, body: body}} <-
+ Tesla.get(url,
+ headers: [{"Accept", "application/activity+json"}],
+ follow_redirect: true
+ ),
+ :ok <- Logger.debug("response okay, now decoding json"),
+ {:ok, data} <- Jason.decode(body) do
+ Logger.debug("Got activity+json response at actor's endpoint, now converting data")
+ {:ok, ActorConverter.as_to_model_data(data)}
+ else
+ # Actor is gone, probably deleted
+ {:ok, %{status: 410}} ->
+ Logger.info("Response HTTP 410")
+ {:error, :actor_deleted}
+
+ {:ok, %Tesla.Env{}} ->
+ Logger.info("Non 200 HTTP Code")
+ {:error, :http_error}
+
+ {:error, e} ->
+ Logger.warn("Could not decode actor at fetch #{url}, #{inspect(e)}")
+ {:error, e}
+
+ e ->
+ Logger.warn("Could not decode actor at fetch #{url}, #{inspect(e)}")
+ {:error, e}
+ end
+
+ res
+ end
+
+ @spec origin_check(String.t(), map()) :: boolean()
+ defp origin_check(url, data) do
+ if origin_check?(url, data) do
+ true
+ else
+ Sentry.capture_message("Object origin check failed", extra: %{url: url, data: data})
+ Logger.debug("Object origin check failed")
+ false
+ end
+ end
+
@spec address_invalid(String.t()) :: false | {:error, :invalid_url}
defp address_invalid(address) do
with %URI{host: host, scheme: scheme} <- URI.parse(address),
diff --git a/lib/federation/activity_pub/preloader.ex b/lib/federation/activity_pub/preloader.ex
index 79db7a65a..bf8325acc 100644
--- a/lib/federation/activity_pub/preloader.ex
+++ b/lib/federation/activity_pub/preloader.ex
@@ -12,6 +12,7 @@ defmodule Mobilizon.Federation.ActivityPub.Preloader do
alias Mobilizon.Resources.Resource
alias Mobilizon.Tombstone
+ @spec maybe_preload(struct()) :: {:ok, struct()} | {:error, struct()}
def maybe_preload(%Event{url: url}),
do: {:ok, Events.get_public_event_by_url_with_preload!(url)}
diff --git a/lib/federation/activity_pub/refresher.ex b/lib/federation/activity_pub/refresher.ex
index 6f485ba4b..dec998427 100644
--- a/lib/federation/activity_pub/refresher.ex
+++ b/lib/federation/activity_pub/refresher.ex
@@ -6,8 +6,8 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do
alias Mobilizon.Actors
alias Mobilizon.Actors.Actor
alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Federation.ActivityPub.{Fetcher, Relay, Transmogrifier, Utils}
- alias Mobilizon.Storage.Repo
require Logger
@doc """
@@ -32,7 +32,7 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do
end
def refresh_profile(%Actor{type: type, url: url}) when type in [:Person, :Application] do
- with {:ok, %Actor{outbox_url: outbox_url}} <- ActivityPub.make_actor_from_url(url),
+ with {:ok, %Actor{outbox_url: outbox_url}} <- ActivityPubActor.make_actor_from_url(url),
:ok <- fetch_collection(outbox_url, Relay.get_actor()) do
:ok
end
@@ -50,7 +50,7 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do
discussions_url: discussions_url,
events_url: events_url
}} <-
- ActivityPub.make_actor_from_url(group_url),
+ ActivityPubActor.make_actor_from_url(group_url),
:ok <- fetch_collection(outbox_url, on_behalf_of),
:ok <- fetch_collection(members_url, on_behalf_of),
:ok <- fetch_collection(resources_url, on_behalf_of),
@@ -60,9 +60,23 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do
:ok <- fetch_collection(events_url, on_behalf_of) do
:ok
else
+ {:error, err} ->
+ Logger.error("Error while refreshing a group")
+
+ Sentry.capture_message("Error while refreshing a group",
+ extra: %{group_url: group_url}
+ )
+
+ Logger.debug(inspect(err))
+
err ->
Logger.error("Error while refreshing a group")
- Logger.error(inspect(err))
+
+ Sentry.capture_message("Error while refreshing a group",
+ extra: %{group_url: group_url}
+ )
+
+ Logger.debug(inspect(err))
end
end
@@ -96,14 +110,11 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do
end
end
- @spec refresh_all_external_groups :: any()
+ @spec refresh_all_external_groups :: :ok
def refresh_all_external_groups do
- Repo.transaction(fn ->
- Actors.list_external_groups_for_stream()
- |> Stream.filter(&Actors.needs_update?/1)
- |> Stream.map(&refresh_profile/1)
- |> Stream.run()
- end)
+ Actors.list_external_groups()
+ |> Enum.filter(&Actors.needs_update?/1)
+ |> Enum.each(&refresh_profile/1)
end
defp process_collection(%{"type" => type, "orderedItems" => items}, _on_behalf_of)
@@ -122,6 +133,14 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do
:ok
end
+ # Lemmy uses an OrderedCollection with the items property
+ defp process_collection(%{"type" => type, "items" => items} = collection, on_behalf_of)
+ when type in ["OrderedCollection", "OrderedCollectionPage"] do
+ collection
+ |> Map.put("orderedItems", items)
+ |> process_collection(on_behalf_of)
+ end
+
defp process_collection(%{"type" => "OrderedCollection", "first" => first}, on_behalf_of)
when is_map(first),
do: process_collection(first, on_behalf_of)
@@ -150,6 +169,11 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do
Transmogrifier.handle_incoming(data)
end
+ # If we're handling an announce activity
+ defp handling_element(%{"type" => "Announce"} = data) do
+ handling_element(get_in(data, ["object"]))
+ end
+
# If we're handling directly an object
defp handling_element(data) when is_map(data) do
object = get_in(data, ["object"])
diff --git a/lib/federation/activity_pub/relay.ex b/lib/federation/activity_pub/relay.ex
index b0a8997c9..8266d94f5 100644
--- a/lib/federation/activity_pub/relay.ex
+++ b/lib/federation/activity_pub/relay.ex
@@ -13,6 +13,7 @@ defmodule Mobilizon.Federation.ActivityPub.Relay do
alias Mobilizon.Federation.ActivityPub
alias Mobilizon.Federation.ActivityPub.{Activity, Refresher, Transmogrifier}
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Federation.WebFinger
alias Mobilizon.GraphQL.API.Follows
@@ -37,7 +38,8 @@ defmodule Mobilizon.Federation.ActivityPub.Relay do
def follow(address) do
with {:ok, target_instance} <- fetch_actor(address),
%Actor{} = local_actor <- get_actor(),
- {:ok, %Actor{} = target_actor} <- ActivityPub.get_or_fetch_actor_by_url(target_instance),
+ {:ok, %Actor{} = target_actor} <-
+ ActivityPubActor.get_or_fetch_actor_by_url(target_instance),
{:ok, activity, follow} <- Follows.follow(local_actor, target_actor) do
Logger.info("Relay: followed instance #{target_instance}; id=#{activity.data["id"]}")
{:ok, activity, follow}
@@ -56,7 +58,8 @@ defmodule Mobilizon.Federation.ActivityPub.Relay do
def unfollow(address) do
with {:ok, target_instance} <- fetch_actor(address),
%Actor{} = local_actor <- get_actor(),
- {:ok, %Actor{} = target_actor} <- ActivityPub.get_or_fetch_actor_by_url(target_instance),
+ {:ok, %Actor{} = target_actor} <-
+ ActivityPubActor.get_or_fetch_actor_by_url(target_instance),
{:ok, activity, follow} <- Follows.unfollow(local_actor, target_actor) do
Logger.info("Relay: unfollowed instance #{target_instance}: id=#{activity.data["id"]}")
{:ok, activity, follow}
@@ -73,7 +76,8 @@ defmodule Mobilizon.Federation.ActivityPub.Relay do
with {:ok, target_instance} <- fetch_actor(address),
%Actor{} = local_actor <- get_actor(),
- {:ok, %Actor{} = target_actor} <- ActivityPub.get_or_fetch_actor_by_url(target_instance),
+ {:ok, %Actor{} = target_actor} <-
+ ActivityPubActor.get_or_fetch_actor_by_url(target_instance),
{:ok, activity, follow} <- Follows.accept(target_actor, local_actor) do
{:ok, activity, follow}
end
@@ -84,7 +88,8 @@ defmodule Mobilizon.Federation.ActivityPub.Relay do
with {:ok, target_instance} <- fetch_actor(address),
%Actor{} = local_actor <- get_actor(),
- {:ok, %Actor{} = target_actor} <- ActivityPub.get_or_fetch_actor_by_url(target_instance),
+ {:ok, %Actor{} = target_actor} <-
+ ActivityPubActor.get_or_fetch_actor_by_url(target_instance),
{:ok, activity, follow} <- Follows.reject(target_actor, local_actor) do
{:ok, activity, follow}
end
@@ -94,7 +99,8 @@ defmodule Mobilizon.Federation.ActivityPub.Relay do
Logger.debug("We're trying to refresh a remote instance")
with {:ok, target_instance} <- fetch_actor(address),
- {:ok, %Actor{} = target_actor} <- ActivityPub.get_or_fetch_actor_by_url(target_instance) do
+ {:ok, %Actor{} = target_actor} <-
+ ActivityPubActor.get_or_fetch_actor_by_url(target_instance) do
Refresher.refresh_profile(target_actor)
end
end
diff --git a/lib/federation/activity_pub/transmogrifier.ex b/lib/federation/activity_pub/transmogrifier.ex
index 620c2e747..bf79f5ac2 100644
--- a/lib/federation/activity_pub/transmogrifier.ex
+++ b/lib/federation/activity_pub/transmogrifier.ex
@@ -18,6 +18,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
alias Mobilizon.Federation.ActivityPub
alias Mobilizon.Federation.ActivityPub.{Activity, Refresher, Relay, Utils}
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Federation.ActivityPub.Types.Ownable
alias Mobilizon.Federation.ActivityStream.{Converter, Convertible}
alias Mobilizon.Tombstone
@@ -117,12 +118,13 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
def handle_incoming(%{
"type" => "Create",
- "object" => %{"type" => "Group", "id" => group_url} = _object
- }) do
- Logger.info("Handle incoming to create a group")
+ "object" => %{"type" => type, "id" => actor_url} = _object
+ })
+ when type in ["Group", "Person", "Actor"] do
+ Logger.info("Handle incoming to create an actor")
- with {:ok, %Actor{} = group} <- ActivityPub.get_or_fetch_actor_by_url(group_url) do
- {:ok, nil, group}
+ with {:ok, %Actor{} = actor} <- ActivityPubActor.get_or_fetch_actor_by_url(actor_url) do
+ {:ok, nil, actor}
end
end
@@ -201,8 +203,8 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
def handle_incoming(
%{"type" => "Follow", "object" => followed, "actor" => follower, "id" => id} = _data
) do
- with {:ok, %Actor{} = followed} <- ActivityPub.get_or_fetch_actor_by_url(followed, true),
- {:ok, %Actor{} = follower} <- ActivityPub.get_or_fetch_actor_by_url(follower),
+ with {:ok, %Actor{} = followed} <- ActivityPubActor.get_or_fetch_actor_by_url(followed, true),
+ {:ok, %Actor{} = follower} <- ActivityPubActor.get_or_fetch_actor_by_url(follower),
{:ok, activity, object} <- ActivityPub.follow(follower, followed, id, false) do
{:ok, activity, object}
else
@@ -221,7 +223,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
with {:existing_todo_list, nil} <-
{:existing_todo_list, Todos.get_todo_list_by_url(object_url)},
- {:ok, %Actor{url: actor_url}} <- ActivityPub.get_or_fetch_actor_by_url(actor_url),
+ {:ok, %Actor{url: actor_url}} <- ActivityPubActor.get_or_fetch_actor_by_url(actor_url),
object_data when is_map(object_data) <-
object |> Converter.TodoList.as_to_model_data(),
{:ok, %Activity{} = activity, %TodoList{} = todo_list} <-
@@ -295,7 +297,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
} = data
) do
with actor_url <- Utils.get_actor(data),
- {:ok, %Actor{} = actor} <- ActivityPub.get_or_fetch_actor_by_url(actor_url),
+ {:ok, %Actor{} = actor} <- ActivityPubActor.get_or_fetch_actor_by_url(actor_url),
{:object_not_found, {:ok, %Activity{} = activity, object}} <-
{:object_not_found,
do_handle_incoming_accept_following(accepted_object, actor) ||
@@ -328,7 +330,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
%{"type" => "Reject", "object" => rejected_object, "actor" => _actor, "id" => id} = data
) do
with actor_url <- Utils.get_actor(data),
- {:ok, %Actor{} = actor} <- ActivityPub.get_or_fetch_actor_by_url(actor_url),
+ {:ok, %Actor{} = actor} <- ActivityPubActor.get_or_fetch_actor_by_url(actor_url),
{:object_not_found, {:ok, activity, object}} <-
{:object_not_found,
do_handle_incoming_reject_following(rejected_object, actor) ||
@@ -359,7 +361,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
) do
with actor_url <- Utils.get_actor(data),
{:ok, %Actor{id: actor_id, suspended: false} = actor} <-
- ActivityPub.get_or_fetch_actor_by_url(actor_url),
+ ActivityPubActor.get_or_fetch_actor_by_url(actor_url),
:ok <- Logger.debug("Fetching contained object"),
{:ok, entity} <- process_announce_data(object, actor),
:ok <- eventually_create_share(object, entity, actor_id) do
@@ -371,14 +373,16 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
end
end
- def handle_incoming(%{
- "type" => "Update",
- "object" => %{"type" => object_type} = object,
- "actor" => _actor_id
- })
+ def handle_incoming(
+ %{
+ "type" => "Update",
+ "object" => %{"type" => object_type} = object,
+ "actor" => _actor_id
+ } = params
+ )
when object_type in ["Person", "Group", "Application", "Service", "Organization"] do
with {:ok, %Actor{suspended: false} = old_actor} <-
- ActivityPub.get_or_fetch_actor_by_url(object["id"]),
+ ActivityPubActor.get_or_fetch_actor_by_url(object["id"]),
object_data <-
object |> Converter.Actor.as_to_model_data(),
{:ok, %Activity{} = activity, %Actor{} = new_actor} <-
@@ -386,7 +390,11 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
{:ok, activity, new_actor}
else
e ->
- Logger.error(inspect(e))
+ Sentry.capture_message("Error while handling an Update activity",
+ extra: %{params: params}
+ )
+
+ Logger.debug(inspect(e))
:error
end
end
@@ -397,7 +405,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
) do
with actor <- Utils.get_actor(update_data),
{:ok, %Actor{url: actor_url, suspended: false} = actor} <-
- ActivityPub.get_or_fetch_actor_by_url(actor),
+ ActivityPubActor.get_or_fetch_actor_by_url(actor),
{:ok, %Event{} = old_event} <-
object |> Utils.get_url() |> ActivityPub.fetch_object_from_url(),
object_data <- Converter.Event.as_to_model_data(object),
@@ -422,7 +430,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
with actor <- Utils.get_actor(update_data),
{:ok, %Actor{url: actor_url, suspended: false}} <-
- ActivityPub.get_or_fetch_actor_by_url(actor),
+ ActivityPubActor.get_or_fetch_actor_by_url(actor),
{:origin_check, true} <- {:origin_check, Utils.origin_check?(actor_url, update_data)},
object_data <- Converter.Comment.as_to_model_data(object),
{:ok, old_entity} <- object |> Utils.get_url() |> ActivityPub.fetch_object_from_url(),
@@ -442,7 +450,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
) do
with actor <- Utils.get_actor(update_data),
{:ok, %Actor{url: actor_url, suspended: false} = actor} <-
- ActivityPub.get_or_fetch_actor_by_url(actor),
+ ActivityPubActor.get_or_fetch_actor_by_url(actor),
{:ok, %Post{} = old_post} <-
object |> Utils.get_url() |> ActivityPub.fetch_object_from_url(),
object_data <- Converter.Post.as_to_model_data(object),
@@ -470,7 +478,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
when type in ["ResourceCollection", "Document"] do
with actor <- Utils.get_actor(update_data),
{:ok, %Actor{url: actor_url, suspended: false}} <-
- ActivityPub.get_or_fetch_actor_by_url(actor),
+ ActivityPubActor.get_or_fetch_actor_by_url(actor),
{:ok, %Resource{} = old_resource} <-
object |> Utils.get_url() |> ActivityPub.fetch_object_from_url(),
object_data <- Converter.Resource.as_to_model_data(object),
@@ -495,7 +503,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
with actor <- Utils.get_actor(update_data),
{:ok, %Actor{url: actor_url, suspended: false} = actor} <-
- ActivityPub.get_or_fetch_actor_by_url(actor),
+ ActivityPubActor.get_or_fetch_actor_by_url(actor),
{:origin_check, true} <- {:origin_check, Utils.origin_check?(actor_url, update_data)},
object_data <- Converter.Member.as_to_model_data(object),
{:ok, old_entity} <- object |> Utils.get_url() |> ActivityPub.fetch_object_from_url(),
@@ -537,7 +545,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
} = data
) do
with actor <- Utils.get_actor(data),
- {:ok, %Actor{} = actor} <- ActivityPub.get_or_fetch_actor_by_url(actor),
+ {:ok, %Actor{} = actor} <- ActivityPubActor.get_or_fetch_actor_by_url(actor),
{:ok, object} <- fetch_obj_helper_as_activity_streams(object_id),
{:ok, activity, object} <-
ActivityPub.unannounce(actor, object, id, cancelled_activity_id, false) do
@@ -555,8 +563,9 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
"id" => id
} = _data
) do
- with {:ok, %Actor{domain: nil} = followed} <- ActivityPub.get_or_fetch_actor_by_url(followed),
- {:ok, %Actor{} = follower} <- ActivityPub.get_or_fetch_actor_by_url(follower),
+ with {:ok, %Actor{domain: nil} = followed} <-
+ ActivityPubActor.get_or_fetch_actor_by_url(followed),
+ {:ok, %Actor{} = follower} <- ActivityPubActor.get_or_fetch_actor_by_url(follower),
{:ok, activity, object} <- ActivityPub.unfollow(follower, followed, id, false) do
{:ok, activity, object}
else
@@ -572,7 +581,8 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
%{"type" => "Delete", "object" => object, "actor" => _actor, "id" => _id} = data
) do
with actor_url <- Utils.get_actor(data),
- {:ok, %Actor{} = actor} <- ActivityPub.get_or_fetch_actor_by_url(actor_url),
+ {:actor, {:ok, %Actor{} = actor}} <-
+ {:actor, ActivityPubActor.get_or_fetch_actor_by_url(actor_url)},
object_id <- Utils.get_url(object),
{:ok, object} <- is_group_object_gone(object_id),
{:origin_check, true} <-
@@ -586,8 +596,25 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
Logger.warn("Object origin check failed")
:error
+ {:actor, {:error, "Could not fetch by AP id"}} ->
+ {:error, :unknown_actor}
+
+ {:error, e} ->
+ Logger.debug(inspect(e))
+
+ # Sentry.capture_message("Error while handling a Delete activity",
+ # extra: %{data: data}
+ # )
+
+ :error
+
e ->
Logger.error(inspect(e))
+
+ # Sentry.capture_message("Error while handling a Delete activity",
+ # extra: %{data: data}
+ # )
+
:error
end
end
@@ -598,7 +625,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
when type in ["ResourceCollection", "Document"] do
with actor <- Utils.get_actor(data),
{:ok, %Actor{url: actor_url, suspended: false} = actor} <-
- ActivityPub.get_or_fetch_actor_by_url(actor),
+ ActivityPubActor.get_or_fetch_actor_by_url(actor),
{:ok, %Resource{} = old_resource} <-
object |> Utils.get_url() |> ActivityPub.fetch_object_from_url(),
object_data <- Converter.Resource.as_to_model_data(object),
@@ -610,7 +637,12 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
{:ok, activity, new_resource}
else
e ->
- Logger.error(inspect(e))
+ Logger.debug(inspect(e))
+
+ Sentry.capture_message("Error while handling an Move activity",
+ extra: %{data: data}
+ )
+
:error
end
end
@@ -625,7 +657,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
) do
with actor <- Utils.get_actor(data),
{:ok, %Actor{url: _actor_url, suspended: false} = actor} <-
- ActivityPub.get_or_fetch_actor_by_url(actor),
+ ActivityPubActor.get_or_fetch_actor_by_url(actor),
object <- Utils.get_url(object),
{:ok, object} <- ActivityPub.fetch_object_from_url(object),
{:ok, activity, object} <-
@@ -643,7 +675,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
def handle_incoming(%{"type" => "Leave", "object" => object, "actor" => actor} = data) do
with actor <- Utils.get_actor(data),
- {:ok, %Actor{} = actor} <- ActivityPub.get_or_fetch_actor_by_url(actor),
+ {:ok, %Actor{} = actor} <- ActivityPubActor.get_or_fetch_actor_by_url(actor),
object <- Utils.get_url(object),
{:ok, object} <- ActivityPub.fetch_object_from_url(object),
{:ok, activity, object} <- ActivityPub.leave(object, actor, false) do
@@ -673,10 +705,10 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
Logger.info("Handle incoming to invite someone")
with {:ok, %Actor{} = actor} <-
- data |> Utils.get_actor() |> ActivityPub.get_or_fetch_actor_by_url(),
+ data |> Utils.get_actor() |> ActivityPubActor.get_or_fetch_actor_by_url(),
{:ok, object} <- object |> Utils.get_url() |> ActivityPub.fetch_object_from_url(),
{:ok, %Actor{} = target} <-
- target |> Utils.get_url() |> ActivityPub.get_or_fetch_actor_by_url(),
+ target |> Utils.get_url() |> ActivityPubActor.get_or_fetch_actor_by_url(),
{:ok, activity, %Member{} = member} <-
ActivityPub.invite(object, actor, target, false, %{url: id}) do
{:ok, activity, member}
@@ -689,10 +721,10 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
Logger.info("Handle incoming to remove a member from a group")
with {:ok, %Actor{id: moderator_id} = moderator} <-
- data |> Utils.get_actor() |> ActivityPub.get_or_fetch_actor_by_url(),
+ data |> Utils.get_actor() |> ActivityPubActor.get_or_fetch_actor_by_url(),
{:ok, person_id} <- get_remove_object(object),
{:ok, %Actor{type: :Group, id: group_id} = group} <-
- origin |> Utils.get_url() |> ActivityPub.get_or_fetch_actor_by_url(),
+ origin |> Utils.get_url() |> ActivityPubActor.get_or_fetch_actor_by_url(),
{:is_admin, {:ok, %Member{role: role}}}
when role in [:moderator, :administrator, :creator] <-
{:is_admin, Actors.get_member(moderator_id, group_id)},
@@ -741,6 +773,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
def handle_incoming(object) do
Logger.info("Handing something with type #{object["type"]} not supported")
Logger.debug(inspect(object))
+
{:error, :not_supported}
end
diff --git a/lib/federation/activity_pub/utils.ex b/lib/federation/activity_pub/utils.ex
index b21a5bdcc..01ad1abc6 100644
--- a/lib/federation/activity_pub/utils.ex
+++ b/lib/federation/activity_pub/utils.ex
@@ -14,6 +14,7 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do
alias Mobilizon.Federation.ActivityPub
alias Mobilizon.Federation.ActivityPub.{Activity, Federator, Relay}
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Federation.ActivityPub.Types.Ownable
alias Mobilizon.Federation.ActivityStream.Converter
alias Mobilizon.Federation.HTTPSignatures
@@ -175,7 +176,7 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do
@spec remote_actors(list(String.t())) :: list(Actor.t())
def remote_actors(recipients) do
recipients
- |> Enum.map(fn url -> ActivityPub.get_or_fetch_actor_by_url(url) end)
+ |> Enum.map(fn url -> ActivityPubActor.get_or_fetch_actor_by_url(url) end)
|> Enum.map(fn {status, actor} ->
case status do
:ok ->
@@ -259,7 +260,9 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do
are_same_origin?(id, actor)
end
- def origin_check?(_id, %{"type" => type} = _params) when type in ["Actor", "Group"], do: true
+ def origin_check?(id, %{"type" => type, "id" => actor_id} = _params)
+ when type in ["Actor", "Person", "Group"],
+ do: id == actor_id
def origin_check?(_id, %{"actor" => nil} = _args), do: false
@@ -701,4 +704,42 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do
true
end
end
+
+ @spec label_in_collection?(any(), any()) :: boolean()
+ defp label_in_collection?(url, coll) when is_binary(coll), do: url == coll
+ defp label_in_collection?(url, coll) when is_list(coll), do: url in coll
+ defp label_in_collection?(_, _), do: false
+
+ @spec label_in_message?(String.t(), map()) :: boolean()
+ def label_in_message?(label, params),
+ do:
+ [params["to"], params["cc"], params["bto"], params["bcc"]]
+ |> Enum.any?(&label_in_collection?(label, &1))
+
+ @spec unaddressed_message?(map()) :: boolean()
+ def unaddressed_message?(params),
+ do:
+ [params["to"], params["cc"], params["bto"], params["bcc"]]
+ |> Enum.all?(&is_nil(&1))
+
+ @spec recipient_in_message(Actor.t(), Actor.t(), map()) :: boolean()
+ def recipient_in_message(%Actor{url: url} = _recipient, %Actor{} = _actor, params),
+ do: label_in_message?(url, params) || unaddressed_message?(params)
+
+ defp extract_list(target) when is_binary(target), do: [target]
+ defp extract_list(lst) when is_list(lst), do: lst
+ defp extract_list(_), do: []
+
+ def maybe_splice_recipient(url, params) do
+ need_splice? =
+ !label_in_collection?(url, params["to"]) &&
+ !label_in_collection?(url, params["cc"])
+
+ if need_splice? do
+ cc_list = extract_list(params["cc"])
+ Map.put(params, "cc", [url | cc_list])
+ else
+ params
+ end
+ end
end
diff --git a/lib/federation/activity_stream/converter/discussion.ex b/lib/federation/activity_stream/converter/discussion.ex
index abc4196bd..2029923d6 100644
--- a/lib/federation/activity_stream/converter/discussion.ex
+++ b/lib/federation/activity_stream/converter/discussion.ex
@@ -8,7 +8,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Discussion do
alias Mobilizon.Actors.Actor
alias Mobilizon.Discussions.Discussion
- alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Federation.ActivityStream.{Converter, Convertible}
alias Mobilizon.Federation.ActivityStream.Converter.Discussion, as: DiscussionConverter
alias Mobilizon.Storage.Repo
@@ -49,10 +49,10 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Discussion do
def as_to_model_data(%{"type" => "Note", "name" => name} = object) when not is_nil(name) do
with creator_url <- Map.get(object, "actor"),
{:ok, %Actor{id: creator_id, suspended: false}} <-
- ActivityPub.get_or_fetch_actor_by_url(creator_url),
+ ActivityPubActor.get_or_fetch_actor_by_url(creator_url),
actor_url <- Map.get(object, "attributedTo"),
{:ok, %Actor{id: actor_id, suspended: false}} <-
- ActivityPub.get_or_fetch_actor_by_url(actor_url) do
+ ActivityPubActor.get_or_fetch_actor_by_url(actor_url) do
%{
title: name,
actor_id: actor_id,
diff --git a/lib/federation/activity_stream/converter/flag.ex b/lib/federation/activity_stream/converter/flag.ex
index 975b78a84..290551e02 100644
--- a/lib/federation/activity_stream/converter/flag.ex
+++ b/lib/federation/activity_stream/converter/flag.ex
@@ -14,7 +14,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Flag do
alias Mobilizon.Events.Event
alias Mobilizon.Reports.Report
- alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Federation.ActivityPub.Relay
alias Mobilizon.Federation.ActivityStream.{Converter, Convertible}
@@ -65,10 +65,11 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Flag do
@spec as_to_model(map) :: map
def as_to_model(%{"object" => objects} = object) do
- with {:ok, %Actor{} = reporter} <- ActivityPub.get_or_fetch_actor_by_url(object["actor"]),
+ with {:ok, %Actor{} = reporter} <-
+ ActivityPubActor.get_or_fetch_actor_by_url(object["actor"]),
%Actor{} = reported <-
Enum.reduce_while(objects, nil, fn url, _ ->
- case ActivityPub.get_or_fetch_actor_by_url(url) do
+ case ActivityPubActor.get_or_fetch_actor_by_url(url) do
{:ok, %Actor{} = actor} ->
{:halt, actor}
diff --git a/lib/federation/activity_stream/converter/member.ex b/lib/federation/activity_stream/converter/member.ex
index 0d55e8ef1..be4db50a5 100644
--- a/lib/federation/activity_stream/converter/member.ex
+++ b/lib/federation/activity_stream/converter/member.ex
@@ -8,7 +8,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Member do
alias Mobilizon.Actors.Actor
alias Mobilizon.Actors.Member, as: MemberModel
- alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Federation.ActivityPub.Utils
alias Mobilizon.Federation.ActivityStream.Convertible
@@ -53,5 +53,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Member do
@spec get_actor(String.t() | map() | nil) :: {:ok, Actor.t()} | {:error, String.t()}
defp get_actor(nil), do: {:error, "nil property found for actor data"}
- defp get_actor(actor), do: actor |> Utils.get_url() |> ActivityPub.get_or_fetch_actor_by_url()
+
+ defp get_actor(actor),
+ do: actor |> Utils.get_url() |> ActivityPubActor.get_or_fetch_actor_by_url()
end
diff --git a/lib/federation/activity_stream/converter/post.ex b/lib/federation/activity_stream/converter/post.ex
index 020fda4aa..f8d23c7ce 100644
--- a/lib/federation/activity_stream/converter/post.ex
+++ b/lib/federation/activity_stream/converter/post.ex
@@ -6,7 +6,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Post do
internal one, and back.
"""
alias Mobilizon.Actors.Actor
- alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Federation.ActivityPub.{Audience, Utils}
alias Mobilizon.Federation.ActivityStream.{Converter, Convertible}
alias Mobilizon.Federation.ActivityStream.Converter.Media, as: MediaConverter
@@ -91,7 +91,9 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Post do
@spec get_actor(String.t() | map() | nil) :: {:ok, Actor.t()} | {:error, String.t()}
defp get_actor(nil), do: {:error, "nil property found for actor data"}
- defp get_actor(actor), do: actor |> Utils.get_url() |> ActivityPub.get_or_fetch_actor_by_url()
+
+ defp get_actor(actor),
+ do: actor |> Utils.get_url() |> ActivityPubActor.get_or_fetch_actor_by_url()
defp to_date(nil), do: nil
defp to_date(%DateTime{} = date), do: DateTime.to_iso8601(date)
diff --git a/lib/federation/activity_stream/converter/resource.ex b/lib/federation/activity_stream/converter/resource.ex
index 7c045f256..0472ca1b0 100644
--- a/lib/federation/activity_stream/converter/resource.ex
+++ b/lib/federation/activity_stream/converter/resource.ex
@@ -7,6 +7,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Resource do
"""
alias Mobilizon.Actors.Actor
alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Federation.ActivityPub.Utils
alias Mobilizon.Federation.ActivityStream.{Converter, Convertible}
alias Mobilizon.Resources
@@ -88,7 +89,9 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Resource do
@spec get_actor(String.t() | map() | nil) :: {:ok, Actor.t()} | {:error, String.t()}
defp get_actor(nil), do: {:error, "nil property found for actor data"}
- defp get_actor(actor), do: actor |> Utils.get_url() |> ActivityPub.get_or_fetch_actor_by_url()
+
+ defp get_actor(actor),
+ do: actor |> Utils.get_url() |> ActivityPubActor.get_or_fetch_actor_by_url()
defp get_context(%Resource{parent_id: nil, actor: %Actor{resources_url: resources_url}}),
do: resources_url
diff --git a/lib/federation/activity_stream/converter/todo.ex b/lib/federation/activity_stream/converter/todo.ex
index fad2d8a53..fdd6f38c8 100644
--- a/lib/federation/activity_stream/converter/todo.ex
+++ b/lib/federation/activity_stream/converter/todo.ex
@@ -7,6 +7,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Todo do
"""
alias Mobilizon.Actors.Actor
alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Federation.ActivityStream.{Converter, Convertible}
alias Mobilizon.Todos
alias Mobilizon.Todos.{Todo, TodoList}
@@ -51,7 +52,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Todo do
%{"type" => "Todo", "actor" => actor_url, "todoList" => todo_list_url} = object
) do
with {:ok, %Actor{id: creator_id} = _creator} <-
- ActivityPub.get_or_fetch_actor_by_url(actor_url),
+ ActivityPubActor.get_or_fetch_actor_by_url(actor_url),
{:todo_list, %TodoList{id: todo_list_id}} <-
{:todo_list, Todos.get_todo_list_by_url(todo_list_url)} do
%{
diff --git a/lib/federation/activity_stream/converter/todo_list.ex b/lib/federation/activity_stream/converter/todo_list.ex
index 657e97df3..76ad46fc7 100644
--- a/lib/federation/activity_stream/converter/todo_list.ex
+++ b/lib/federation/activity_stream/converter/todo_list.ex
@@ -6,7 +6,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.TodoList do
internal one, and back.
"""
alias Mobilizon.Actors.Actor
- alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Federation.ActivityStream.{Converter, Convertible}
alias Mobilizon.Todos.TodoList
@@ -39,7 +39,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.TodoList do
@impl Converter
@spec as_to_model_data(map) :: {:ok, map} | {:error, any()}
def as_to_model_data(%{"type" => "TodoList", "actor" => actor_url} = object) do
- case ActivityPub.get_or_fetch_actor_by_url(actor_url) do
+ case ActivityPubActor.get_or_fetch_actor_by_url(actor_url) do
{:ok, %Actor{type: :Group, id: group_id} = _group} ->
%{
title: object["name"],
diff --git a/lib/federation/activity_stream/converter/utils.ex b/lib/federation/activity_stream/converter/utils.ex
index 79c604a63..a78456bd2 100644
--- a/lib/federation/activity_stream/converter/utils.ex
+++ b/lib/federation/activity_stream/converter/utils.ex
@@ -10,7 +10,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Utils do
alias Mobilizon.Mention
alias Mobilizon.Storage.Repo
- alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Federation.ActivityStream.Converter.Media, as: MediaConverter
alias Mobilizon.Web.Endpoint
@@ -114,7 +114,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Utils do
@spec create_mention(map(), list()) :: list()
defp create_mention(mention, acc) when is_map(mention) do
with true <- mention["type"] == "Mention",
- {:ok, %Actor{id: actor_id}} <- ActivityPub.get_or_fetch_actor_by_url(mention["href"]) do
+ {:ok, %Actor{id: actor_id}} <-
+ ActivityPubActor.get_or_fetch_actor_by_url(mention["href"]) do
acc ++ [%{actor_id: actor_id}]
else
_err ->
@@ -169,7 +170,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Utils do
@spec fetch_actor(String.t()) :: Actor.t()
defp fetch_actor(actor_url) do
with {:ok, %Actor{suspended: false} = actor} <-
- ActivityPub.get_or_fetch_actor_by_url(actor_url) do
+ ActivityPubActor.get_or_fetch_actor_by_url(actor_url) do
actor
end
end
diff --git a/lib/federation/http_signatures/signature.ex b/lib/federation/http_signatures/signature.ex
index bab2b14d7..ff703a3ed 100644
--- a/lib/federation/http_signatures/signature.ex
+++ b/lib/federation/http_signatures/signature.ex
@@ -12,7 +12,7 @@ defmodule Mobilizon.Federation.HTTPSignatures.Signature do
alias Mobilizon.Actors.Actor
- alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
require Logger
@@ -50,9 +50,10 @@ defmodule Mobilizon.Federation.HTTPSignatures.Signature do
# Gets a public key for a given ActivityPub actor ID (url).
@spec get_public_key_for_url(String.t()) ::
- {:ok, String.t()} | {:error, :actor_fetch_error | :pem_decode_error}
+ {:ok, String.t()}
+ | {:error, :actor_fetch_error | :pem_decode_error | :actor_not_fetchable}
defp get_public_key_for_url(url) do
- with {:ok, %Actor{keys: keys}} <- ActivityPub.get_or_fetch_actor_by_url(url),
+ with {:ok, %Actor{keys: keys}} <- ActivityPubActor.get_or_fetch_actor_by_url(url),
{:ok, public_key} <- prepare_public_key(keys) do
{:ok, public_key}
else
@@ -61,8 +62,16 @@ defmodule Mobilizon.Federation.HTTPSignatures.Signature do
{:error, :pem_decode_error}
- _ ->
+ {:error, "Could not fetch by AP id"} ->
+ {:error, :actor_not_fetchable}
+
+ err ->
+ Sentry.capture_message("Unable to fetch actor, so no keys for you",
+ extra: %{url: url}
+ )
+
Logger.error("Unable to fetch actor, so no keys for you")
+ Logger.error(inspect(err))
{:error, :actor_fetch_error}
end
@@ -74,9 +83,6 @@ defmodule Mobilizon.Federation.HTTPSignatures.Signature do
:ok <- Logger.debug("Fetching public key for #{actor_id}"),
{:ok, public_key} <- get_public_key_for_url(actor_id) do
{:ok, public_key}
- else
- e ->
- {:error, e}
end
end
@@ -84,12 +90,9 @@ defmodule Mobilizon.Federation.HTTPSignatures.Signature do
with %{"keyId" => kid} <- HTTPSignatures.signature_for_conn(conn),
actor_id <- key_id_to_actor_url(kid),
:ok <- Logger.debug("Refetching public key for #{actor_id}"),
- {:ok, _actor} <- ActivityPub.make_actor_from_url(actor_id),
+ {:ok, _actor} <- ActivityPubActor.make_actor_from_url(actor_id),
{:ok, public_key} <- get_public_key_for_url(actor_id) do
{:ok, public_key}
- else
- e ->
- {:error, e}
end
end
diff --git a/lib/federation/web_finger/web_finger.ex b/lib/federation/web_finger/web_finger.ex
index fbde57e4b..409f67b8f 100644
--- a/lib/federation/web_finger/web_finger.ex
+++ b/lib/federation/web_finger/web_finger.ex
@@ -10,7 +10,7 @@ defmodule Mobilizon.Federation.WebFinger do
alias Mobilizon.Actors
alias Mobilizon.Actors.Actor
- alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Federation.WebFinger.XmlBuilder
alias Mobilizon.Service.HTTP.{HostMetaClient, WebfingerClient}
alias Mobilizon.Web.Endpoint
@@ -56,7 +56,7 @@ defmodule Mobilizon.Federation.WebFinger do
{:ok, represent_actor(actor, "JSON")}
else
_e ->
- case ActivityPub.get_or_fetch_actor_by_url(resource) do
+ case ActivityPubActor.get_or_fetch_actor_by_url(resource) do
{:ok, %Actor{} = actor} when not is_nil(actor) ->
{:ok, represent_actor(actor, "JSON")}
diff --git a/lib/graphql/api/search.ex b/lib/graphql/api/search.ex
index f0f1ec83c..d652dcb68 100644
--- a/lib/graphql/api/search.ex
+++ b/lib/graphql/api/search.ex
@@ -10,6 +10,7 @@ defmodule Mobilizon.GraphQL.API.Search do
alias Mobilizon.Storage.Page
alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
require Logger
@@ -92,7 +93,7 @@ defmodule Mobilizon.GraphQL.API.Search do
# If the search string is an username
@spec process_from_username(String.t()) :: Page.t()
defp process_from_username(search) do
- case ActivityPub.find_or_make_actor_from_nickname(search) do
+ case ActivityPubActor.find_or_make_actor_from_nickname(search) do
{:ok, actor} ->
%Page{total: 1, elements: [actor]}
diff --git a/lib/graphql/resolvers/admin.ex b/lib/graphql/resolvers/admin.ex
index 9bdbe4901..42d3cd061 100644
--- a/lib/graphql/resolvers/admin.ex
+++ b/lib/graphql/resolvers/admin.ex
@@ -27,7 +27,8 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do
%{context: %{current_user: %User{role: role}}}
)
when is_moderator(role) do
- with action_logs <- Mobilizon.Admin.list_action_logs(page, limit) do
+ with %Page{elements: action_logs, total: total} <-
+ Mobilizon.Admin.list_action_logs(page, limit) do
action_logs =
action_logs
|> Enum.map(fn %ActionLog{
@@ -44,7 +45,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do
end)
|> Enum.filter(& &1)
- {:ok, action_logs}
+ {:ok, %Page{elements: action_logs, total: total}}
end
end
diff --git a/lib/graphql/resolvers/event.ex b/lib/graphql/resolvers/event.ex
index 247ed935d..3e5de2779 100644
--- a/lib/graphql/resolvers/event.ex
+++ b/lib/graphql/resolvers/event.ex
@@ -142,7 +142,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Event do
else
{:actor_approve_permission, _} ->
{:error,
- dgettext("errors", "Provided moderator profile doesn't have permission on this event")}
+ dgettext("errors", "Provided profile doesn't have moderator permissions on this event")}
end
end
diff --git a/lib/graphql/resolvers/group.ex b/lib/graphql/resolvers/group.ex
index c31892ca7..e5ed6a2f3 100644
--- a/lib/graphql/resolvers/group.ex
+++ b/lib/graphql/resolvers/group.ex
@@ -7,6 +7,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Group do
alias Mobilizon.{Actors, Events, Users}
alias Mobilizon.Actors.{Actor, Member}
alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.GraphQL.API
alias Mobilizon.Users.User
alias Mobilizon.Web.Upload
@@ -27,7 +28,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Group do
}
) do
with {:group, {:ok, %Actor{id: group_id, suspended: false} = group}} <-
- {:group, ActivityPub.find_or_make_group_from_nickname(name)},
+ {:group, ActivityPubActor.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}
@@ -45,7 +46,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Group do
def find_group(_parent, %{preferred_username: name}, _resolution) do
with {:ok, %Actor{suspended: false} = actor} <-
- ActivityPub.find_or_make_group_from_nickname(name),
+ ActivityPubActor.find_or_make_group_from_nickname(name),
%Actor{} = actor <- restrict_fields_for_non_member_request(actor) do
{:ok, actor}
else
diff --git a/lib/graphql/resolvers/member.ex b/lib/graphql/resolvers/member.ex
index 3e20194a9..44b9caed4 100644
--- a/lib/graphql/resolvers/member.ex
+++ b/lib/graphql/resolvers/member.ex
@@ -7,7 +7,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Member do
alias Mobilizon.{Actors, Users}
alias Mobilizon.Actors.{Actor, Member}
alias Mobilizon.Federation.ActivityPub
- alias Mobilizon.Federation.ActivityPub.Refresher
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Storage.Page
alias Mobilizon.Users.User
import Mobilizon.Web.Gettext
@@ -70,7 +70,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Member do
target_actor_username |> String.trim() |> String.trim_leading("@"),
{:target_actor_username, {:ok, %Actor{id: target_actor_id} = target_actor}} <-
{:target_actor_username,
- ActivityPub.find_or_make_actor_from_nickname(target_actor_username)},
+ ActivityPubActor.find_or_make_actor_from_nickname(target_actor_username)},
{:existant, true} <-
{:existant, check_member_not_existant_or_rejected(target_actor_id, group.id)},
{:ok, _activity, %Member{} = member} <- ActivityPub.invite(group, actor, target_actor) do
@@ -99,7 +99,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Member do
def accept_invitation(_parent, %{id: member_id}, %{context: %{current_user: %User{} = user}}) do
with %Actor{id: actor_id} <- Users.get_actor_for_user(user),
- %Member{actor: %Actor{id: member_actor_id} = actor} = member <-
+ %Member{actor: %Actor{id: member_actor_id}} = member <-
Actors.get_member(member_id),
{:is_same_actor, true} <- {:is_same_actor, member_actor_id === actor_id},
{:ok, _activity, %Member{} = member} <-
@@ -108,8 +108,6 @@ defmodule Mobilizon.GraphQL.Resolvers.Member do
member,
true
) do
- # Launch an async task to refresh the group profile, fetch resources, discussions, members
- Refresher.fetch_group(member.parent.url, actor)
{:ok, member}
else
{:is_same_actor, false} ->
diff --git a/lib/graphql/resolvers/participant.ex b/lib/graphql/resolvers/participant.ex
index 6b20a3641..d09259eb4 100644
--- a/lib/graphql/resolvers/participant.ex
+++ b/lib/graphql/resolvers/participant.ex
@@ -231,7 +231,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Participant do
{:actor_approve_permission, _} ->
{:error,
- dgettext("errors", "Provided moderator profile doesn't have permission on this event")}
+ dgettext("errors", "Provided profile doesn't have moderator permissions on this event")}
{:same_role, true} ->
{:error, dgettext("errors", "Participant already has role %{role}", role: new_role)}
diff --git a/lib/graphql/resolvers/person.ex b/lib/graphql/resolvers/person.ex
index 70c720a81..06b898531 100644
--- a/lib/graphql/resolvers/person.ex
+++ b/lib/graphql/resolvers/person.ex
@@ -13,6 +13,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Person do
import Mobilizon.Web.Gettext
alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
require Logger
alias Mobilizon.Web.Upload
@@ -39,7 +40,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Person do
context: %{current_user: %User{} = user}
}) do
with {:ok, %Actor{id: actor_id} = actor} <-
- ActivityPub.find_or_make_actor_from_nickname(preferred_username),
+ ActivityPubActor.find_or_make_actor_from_nickname(preferred_username),
{:own, {:is_owned, _}} <- {:own, User.owns_actor(user, actor_id)} do
{:ok, actor}
else
diff --git a/lib/graphql/schema/actors/group.ex b/lib/graphql/schema/actors/group.ex
index 59d4690f1..58b1c5be9 100644
--- a/lib/graphql/schema/actors/group.ex
+++ b/lib/graphql/schema/actors/group.ex
@@ -29,7 +29,7 @@ defmodule Mobilizon.GraphQL.Schema.Actors.GroupType do
Represents a group of actors
"""
object :group do
- interfaces([:actor, :interactable, :activity_object])
+ interfaces([:actor, :interactable, :activity_object, :action_log_object])
field(:id, :id, description: "Internal ID for this group")
field(:url, :string, description: "The ActivityPub actor's URL")
diff --git a/lib/graphql/schema/admin.ex b/lib/graphql/schema/admin.ex
index 22689f322..057548d84 100644
--- a/lib/graphql/schema/admin.ex
+++ b/lib/graphql/schema/admin.ex
@@ -22,6 +22,14 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do
field(:inserted_at, :datetime, description: "The time when the action was performed")
end
+ @desc """
+ A paginated list of action logs
+ """
+ object :paginated_action_log_list do
+ field(:elements, list_of(:action_log), description: "A list of action logs")
+ field(:total, :integer, description: "The total number of action logs in the list")
+ end
+
@desc """
The different types of action log actions
"""
@@ -62,6 +70,9 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do
%User{}, _ ->
:user
+ %Actor{type: "Group"}, _ ->
+ :group
+
_, _ ->
nil
end)
@@ -144,7 +155,7 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do
object :admin_queries do
@desc "Get the list of action logs"
- field :action_logs, type: list_of(:action_log) do
+ field :action_logs, type: :paginated_action_log_list do
arg(:page, :integer, default_value: 1)
arg(:limit, :integer, default_value: 10)
resolve(&Admin.list_action_logs/3)
diff --git a/lib/graphql/schema/discussions/comment.ex b/lib/graphql/schema/discussions/comment.ex
index 814739d65..779b8e1d1 100644
--- a/lib/graphql/schema/discussions/comment.ex
+++ b/lib/graphql/schema/discussions/comment.ex
@@ -6,7 +6,7 @@ defmodule Mobilizon.GraphQL.Schema.Discussions.CommentType do
import Absinthe.Resolution.Helpers, only: [dataloader: 1]
- alias Mobilizon.{Actors, Discussions}
+ alias Mobilizon.{Actors, Discussions, Events}
alias Mobilizon.GraphQL.Resolvers.Comment
@desc "A comment"
diff --git a/lib/mix/tasks/mobilizon/actors/refresh.ex b/lib/mix/tasks/mobilizon/actors/refresh.ex
index 44bca92e7..893af5f2b 100644
--- a/lib/mix/tasks/mobilizon/actors/refresh.ex
+++ b/lib/mix/tasks/mobilizon/actors/refresh.ex
@@ -4,7 +4,7 @@ defmodule Mix.Tasks.Mobilizon.Actors.Refresh do
"""
use Mix.Task
alias Mobilizon.Actors.Actor
- alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Storage.Repo
import Ecto.Query
import Mix.Tasks.Mobilizon.Common
@@ -65,7 +65,7 @@ defmodule Mix.Tasks.Mobilizon.Actors.Refresh do
def run([preferred_username]) do
start_mobilizon()
- case ActivityPub.make_actor_from_nickname(preferred_username) do
+ case ActivityPubActor.make_actor_from_nickname(preferred_username) do
{:ok, %Actor{}} ->
shell_info("""
Actor #{preferred_username} refreshed
@@ -89,7 +89,7 @@ defmodule Mix.Tasks.Mobilizon.Actors.Refresh do
@spec make_actor(String.t(), boolean()) :: any()
defp make_actor(username, verbose) do
- ActivityPub.make_actor_from_nickname(username)
+ ActivityPubActor.make_actor_from_nickname(username)
rescue
_ ->
if verbose do
diff --git a/lib/mobilizon/actors/actors.ex b/lib/mobilizon/actors/actors.ex
index aabdf21ef..82e8dbf24 100644
--- a/lib/mobilizon/actors/actors.ex
+++ b/lib/mobilizon/actors/actors.ex
@@ -333,28 +333,33 @@ defmodule Mobilizon.Actors do
|> Multi.run(:remove_avatar, fn _, _ -> remove_avatar(actor) end)
multi =
- if type == :Group do
- multi
- |> Multi.run(:delete_remote_members, fn _, _ ->
- delete_group_elements(actor, :remote_members)
- end)
- |> Multi.run(:delete_group_organized_events, fn _, _ ->
- delete_group_elements(actor, :events)
- end)
- |> Multi.run(:delete_group_posts, fn _, _ ->
- delete_group_elements(actor, :posts)
- end)
- |> Multi.run(:delete_group_resources, fn _, _ ->
- delete_group_elements(actor, :resources)
- end)
- |> Multi.run(:delete_group_todo_lists, fn _, _ ->
- delete_group_elements(actor, :todo_lists)
- end)
- |> Multi.run(:delete_group_discussions, fn _, _ ->
- delete_group_elements(actor, :discussions)
- end)
- else
- multi
+ case type do
+ :Group ->
+ multi
+ |> Multi.run(:delete_remote_members, fn _, _ ->
+ delete_group_elements(actor, :remote_members)
+ end)
+ |> Multi.run(:delete_group_organized_events, fn _, _ ->
+ delete_group_elements(actor, :events)
+ end)
+ |> Multi.run(:delete_group_posts, fn _, _ ->
+ delete_group_elements(actor, :posts)
+ end)
+ |> Multi.run(:delete_group_resources, fn _, _ ->
+ delete_group_elements(actor, :resources)
+ end)
+ |> Multi.run(:delete_group_todo_lists, fn _, _ ->
+ delete_group_elements(actor, :todo_lists)
+ end)
+ |> Multi.run(:delete_group_discussions, fn _, _ ->
+ delete_group_elements(actor, :discussions)
+ end)
+
+ :Person ->
+ # When deleting a profile, reset default_actor_id
+ Multi.run(multi, :reset_default_actor_id, fn _, _ ->
+ reset_default_actor_id(actor)
+ end)
end
multi =
@@ -374,12 +379,22 @@ defmodule Mobilizon.Actors do
{:error, remove, error, _} when remove in [:remove_banner, :remove_avatar] ->
Logger.error("Error while deleting actor's banner or avatar")
- Logger.error(inspect(error, pretty: true))
+
+ Sentry.capture_message("Error while deleting actor's banner or avatar",
+ extra: %{err: error}
+ )
+
+ Logger.debug(inspect(error, pretty: true))
{:error, error}
err ->
Logger.error("Unknown error while deleting actor")
- Logger.error(inspect(err, pretty: true))
+
+ Sentry.capture_message("Error while deleting actor's banner or avatar",
+ extra: %{err: err}
+ )
+
+ Logger.debug(inspect(err, pretty: true))
{:error, err}
end
end
@@ -652,10 +667,11 @@ defmodule Mobilizon.Actors do
@doc """
Lists the groups.
"""
- @spec list_groups_for_stream :: Enum.t()
- def list_external_groups_for_stream do
+ @spec list_external_groups(non_neg_integer()) :: list(Actor.t())
+ def list_external_groups(limit \\ 100) when limit > 0 do
external_groups_query()
- |> Repo.stream()
+ |> limit(^limit)
+ |> Repo.all()
end
@doc """
@@ -1814,6 +1830,24 @@ defmodule Mobilizon.Actors do
end
end
+ @spec reset_default_actor_id(Actor.t()) :: {:ok, User.t()} | {:error, :user_not_found}
+ defp reset_default_actor_id(%Actor{type: :Person, user: %User{id: user_id} = user, id: actor_id}) do
+ Logger.debug("reset_default_actor_id")
+
+ new_actor_id =
+ user
+ |> Users.get_actors_for_user()
+ |> Enum.map(& &1.id)
+ |> Enum.find(&(&1 !== actor_id))
+
+ {:ok, Users.update_user_default_actor(user_id, new_actor_id)}
+ rescue
+ _e in Ecto.NoResultsError ->
+ {:error, :user_not_found}
+ end
+
+ defp reset_default_actor_id(%Actor{type: :Person, user: nil}), do: {:ok, nil}
+
defp accumulate_paginated_elements(
%Actor{} = actor,
method,
diff --git a/lib/mobilizon/addresses/address.ex b/lib/mobilizon/addresses/address.ex
index c2d71bb20..7485ee7a9 100644
--- a/lib/mobilizon/addresses/address.ex
+++ b/lib/mobilizon/addresses/address.ex
@@ -63,6 +63,7 @@ defmodule Mobilizon.Addresses.Address do
|> cast(attrs, @attrs)
|> set_url()
|> validate_required(@required_attrs)
+ |> unique_constraint(:url, name: :addresses_url_index)
end
@spec set_url(Ecto.Changeset.t()) :: Ecto.Changeset.t()
diff --git a/lib/mobilizon/admin/admin.ex b/lib/mobilizon/admin/admin.ex
index b307ef6af..21cb7cf1a 100644
--- a/lib/mobilizon/admin/admin.ex
+++ b/lib/mobilizon/admin/admin.ex
@@ -36,11 +36,10 @@ defmodule Mobilizon.Admin do
@doc """
Returns the list of action logs.
"""
- @spec list_action_logs(integer | nil, integer | nil) :: [ActionLog.t()]
+ @spec list_action_logs(integer | nil, integer | nil) :: Page.t()
def list_action_logs(page \\ nil, limit \\ nil) do
list_action_logs_query()
- |> Page.paginate(page, limit)
- |> Repo.all()
+ |> Page.build_page(page, limit)
end
@doc """
diff --git a/lib/service/rich_media/parser.ex b/lib/service/rich_media/parser.ex
index 2ea91f995..1d45b53d5 100644
--- a/lib/service/rich_media/parser.ex
+++ b/lib/service/rich_media/parser.ex
@@ -208,7 +208,7 @@ defmodule Mobilizon.Service.RichMedia.Parser do
defp check_parsed_data(%{title: title} = data)
when is_binary(title) and byte_size(title) > 0 do
- {:ok, data}
+ data
end
defp check_parsed_data(data) do
@@ -285,15 +285,20 @@ defmodule Mobilizon.Service.RichMedia.Parser do
image_remote_url =
cond do
- is_nil(image_uri.host) -> "#{uri.scheme}://#{uri.host}#{image_remote_url}"
+ is_nil(image_uri.host) -> "#{uri.scheme}://#{uri.host}#{correct_path(image_remote_url)}"
is_nil(image_uri.scheme) -> "#{uri.scheme}:#{image_remote_url}"
true -> image_remote_url
end
- Map.put(data, :image_remote_url, image_remote_url)
+ data = Map.put(data, :image_remote_url, image_remote_url)
+ {:ok, data}
end
- defp check_remote_picture_path(data), do: data
+ defp check_remote_picture_path(data), do: {:ok, data}
+
+ # Sometimes paths have "/" in front, sometimes not
+ defp correct_path("/" <> _ = path), do: path
+ defp correct_path(path), do: "/#{path}"
# Twitter requires a well-know crawler user-agent to show server-rendered data
defp default_user_agent("https://twitter.com/" <> _) do
diff --git a/lib/web/controllers/activity_pub_controller.ex b/lib/web/controllers/activity_pub_controller.ex
index 0e35181c4..d8609359a 100644
--- a/lib/web/controllers/activity_pub_controller.ex
+++ b/lib/web/controllers/activity_pub_controller.ex
@@ -10,7 +10,8 @@ defmodule Mobilizon.Web.ActivityPubController do
alias Mobilizon.Actors.{Actor, Member}
alias Mobilizon.Federation.ActivityPub
- alias Mobilizon.Federation.ActivityPub.Federator
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
+ alias Mobilizon.Federation.ActivityPub.{Federator, Utils}
alias Mobilizon.Web.ActivityPub.ActorView
alias Mobilizon.Web.Cache
@@ -105,7 +106,17 @@ defmodule Mobilizon.Web.ActivityPubController do
actor_collection(conn, "outbox", args)
end
- # TODO: Ensure that this inbox is a recipient of the message
+ def inbox(%{assigns: %{valid_signature: true}} = conn, %{"name" => preferred_username} = params) do
+ with %Actor{url: recipient_url} = recipient <-
+ Actors.get_local_actor_by_name(preferred_username),
+ {:ok, %Actor{} = actor} <- ActivityPubActor.get_or_fetch_actor_by_url(params["actor"]),
+ true <- Utils.recipient_in_message(recipient, actor, params),
+ params <- Utils.maybe_splice_recipient(recipient_url, params) do
+ Federator.enqueue(:incoming_ap_doc, params)
+ json(conn, "ok")
+ end
+ end
+
def inbox(%{assigns: %{valid_signature: true}} = conn, params) do
Logger.debug("Got something with valid signature inside inbox")
Federator.enqueue(:incoming_ap_doc, params)
@@ -114,7 +125,7 @@ defmodule Mobilizon.Web.ActivityPubController do
# only accept relayed Creates
def inbox(conn, %{"type" => "Create"} = params) do
- Logger.info(
+ Logger.debug(
"Signature missing or not from author, relayed Create message, fetching object from source"
)
@@ -126,8 +137,9 @@ defmodule Mobilizon.Web.ActivityPubController do
def inbox(conn, params) do
headers = Enum.into(conn.req_headers, %{})
- if String.contains?(headers["signature"], params["actor"]) do
- Logger.error(
+ if headers["signature"] && params["actor"] &&
+ String.contains?(headers["signature"], params["actor"]) do
+ Logger.debug(
"Signature validation error for: #{params["actor"]}, make sure you are forwarding the HTTP Host header!"
)
diff --git a/lib/web/email/email.ex b/lib/web/email/email.ex
index 936503f88..7f6cfd2d4 100644
--- a/lib/web/email/email.ex
+++ b/lib/web/email/email.ex
@@ -5,7 +5,6 @@ defmodule Mobilizon.Web.Email do
use Bamboo.Phoenix, view: Mobilizon.Web.EmailView
- alias Ecto.UUID
alias Mobilizon.{Config, Events}
alias Mobilizon.Events.Event
alias Mobilizon.Service.Export.ICalendar
@@ -19,27 +18,27 @@ defmodule Mobilizon.Web.Email do
|> new_email()
|> from({Config.instance_name(), Config.instance_email_from()})
|> put_header("Reply-To", Config.instance_email_reply_to())
- |> put_header("Date", date())
- |> put_header("Message-Id", message_id())
+ |> maybe_put_date_header()
+ |> maybe_put_message_id()
|> assign(:instance, instance)
|> put_html_layout({EmailView, "email.html"})
|> put_text_layout({EmailView, "email.text"})
end
# Generating an UUID randomly causes Bamboo.Test.assert_delivered_email/1 to fail
- defp message_id do
+ defp maybe_put_message_id(email) do
if Application.fetch_env!(:mobilizon, :env) == :test do
- "TEST_ENV_MESSAGE_ID@#{Config.instance_hostname()}"
+ put_header(email, "Message-Id", "TEST_ENV_MESSAGE_ID@#{Config.instance_hostname()}")
else
- "#{UUID.generate()}@#{Config.instance_hostname()}"
+ email
end
end
- defp date do
+ defp maybe_put_date_header(email) do
if Application.fetch_env!(:mobilizon, :env) == :test do
- "REMOVED FOR TESTING"
+ put_header(email, "Date", "REMOVED FOR TESTING")
else
- Timex.format!(DateTime.utc_now(), "{WDshort}, {D} {Mshort} {YYYY} {h24}:{m}:{s} {Z}")
+ email
end
end
diff --git a/lib/web/plugs/mapped_signature_to_identity.ex b/lib/web/plugs/mapped_signature_to_identity.ex
index 84262bc3f..548f3ac0c 100644
--- a/lib/web/plugs/mapped_signature_to_identity.ex
+++ b/lib/web/plugs/mapped_signature_to_identity.ex
@@ -12,7 +12,7 @@ defmodule Mobilizon.Web.Plugs.MappedSignatureToIdentity do
alias Mobilizon.Actors.Actor
- alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Federation.ActivityPub.Utils
alias Mobilizon.Federation.HTTPSignatures.Signature
@@ -34,7 +34,7 @@ defmodule Mobilizon.Web.Plugs.MappedSignatureToIdentity do
@spec actor_from_key_id(Plug.Conn.t()) :: Actor.t() | nil
defp actor_from_key_id(conn) do
with key_actor_id when is_binary(key_actor_id) <- key_id_from_conn(conn),
- {:ok, %Actor{} = actor} <- ActivityPub.get_or_fetch_actor_by_url(key_actor_id) do
+ {:ok, %Actor{} = actor} <- ActivityPubActor.get_or_fetch_actor_by_url(key_actor_id) do
actor
else
_ ->
diff --git a/lib/web/templates/email/email_changed_old.html.eex b/lib/web/templates/email/email_changed_old.html.eex
index a4c2acd0c..ab5ea3e7e 100644
--- a/lib/web/templates/email/email_changed_old.html.eex
+++ b/lib/web/templates/email/email_changed_old.html.eex
@@ -37,9 +37,6 @@
<%= gettext("The email address for your account on %{host} is being changed to:", host: @instance[:name]) |> raw %>
-
- <%= gettext("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}.", host: @instance[:name]) %>
-
diff --git a/lib/web/views/error_view.ex b/lib/web/views/error_view.ex
index 7eac0ca4d..8d4ba7780 100644
--- a/lib/web/views/error_view.ex
+++ b/lib/web/views/error_view.ex
@@ -47,6 +47,14 @@ defmodule Mobilizon.Web.ErrorView do
%{msg: "Not acceptable"}
end
+ def render("500.json", assigns) do
+ render("500.html", assigns)
+ end
+
+ def render("500.activity-json", assigns) do
+ render("500.html", assigns)
+ end
+
def render("500.html", assigns) do
Mobilizon.Config.instance_config()
|> Keyword.get(:default_language, "en")
diff --git a/mix.exs b/mix.exs
index c3da82aa8..8b76aae9c 100644
--- a/mix.exs
+++ b/mix.exs
@@ -1,7 +1,7 @@
defmodule Mobilizon.Mixfile do
use Mix.Project
- @version "1.1.1"
+ @version "1.1.2"
def project do
[
@@ -119,7 +119,7 @@ defmodule Mobilizon.Mixfile do
{:http_sign, "~> 0.1.1"},
{:ecto_enum, "~> 1.4"},
{:ex_ical, "~> 0.2"},
- {:bamboo, "~> 2.1", override: true},
+ {:bamboo, "~> 2.1"},
{:bamboo_phoenix, "~> 1.0"},
{:bamboo_smtp, "~> 4.0"},
{:geolix, "~> 2.0"},
diff --git a/mix.lock b/mix.lock
index a8aa73c22..fe5899cbc 100644
--- a/mix.lock
+++ b/mix.lock
@@ -1,12 +1,12 @@
%{
"absinthe": {:hex, :absinthe, "1.6.4", "d2958908b72ce146698de8ccbc03622630471eb0e354e06823aaef183e5067bd", [: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", "6e9c1cf36d86c704cb9a9c78db62d1c2676b03e0f61a28a23fc42749e8cd41ae"},
"absinthe_phoenix": {:hex, :absinthe_phoenix, "2.0.1", "112cb3468db2748a85bd8bd3f4d6d33f37408a96cb170077026ace96ddb1bab2", [:mix], [{:absinthe, "~> 1.5", [hex: :absinthe, repo: "hexpm", optional: false]}, {:absinthe_plug, "~> 1.5", [hex: :absinthe_plug, repo: "hexpm", optional: false]}, {:decimal, "~> 1.0 or ~> 2.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", "e773adc876fbc84fb05a82e125d9c263f129520b36e5576554ffcb8cf49db445"},
- "absinthe_plug": {:hex, :absinthe_plug, "1.5.7", "c9954c5eff0a11be185f73987533d38d6aa44ca6bd5253de32de099f82996ce5", [:mix], [{:absinthe, "~> 1.5", [hex: :absinthe, repo: "hexpm", optional: false]}, {:plug, "~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "2e7d766c5b3ec57aed06db0d420674bc0ff6998c55c85f5fb9bb0d3dcf7ad20d"},
+ "absinthe_plug": {:hex, :absinthe_plug, "1.5.8", "38d230641ba9dca8f72f1fed2dfc8abd53b3907d1996363da32434ab6ee5d6ab", [:mix], [{:absinthe, "~> 1.5", [hex: :absinthe, repo: "hexpm", optional: false]}, {:plug, "~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "bbb04176647b735828861e7b2705465e53e2cf54ccf5a73ddd1ebd855f996e5a"},
"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"},
"bamboo": {:hex, :bamboo, "2.1.0", "3c58f862efd74fa8c8d48a410ac592b41f7d24785e828566f7a0af549269ddc3", [:mix], [{:hackney, ">= 1.15.2", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.4", [hex: :mime, repo: "hexpm", optional: false]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "f0ad2623b9a1d2dc06dcf289b59df9ebc522f49f3a21971ec87a8fce04e6d33e"},
"bamboo_phoenix": {:hex, :bamboo_phoenix, "1.0.0", "f3cc591ffb163ed0bf935d256f1f4645cd870cf436545601215745fb9cc9953f", [:mix], [{:bamboo, ">= 2.0.0", [hex: :bamboo, repo: "hexpm", optional: false]}, {:phoenix, ">= 1.3.0", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "6db88fbb26019c84a47994bb2bd879c0887c29ce6c559bc6385fd54eb8b37dee"},
- "bamboo_smtp": {:hex, :bamboo_smtp, "4.0.0", "0cc7df161d5d440d280a6d2eb20bf80bc45ea77161728a229e5ab339dcd087cd", [:mix], [{:bamboo, "~> 2.0.0", [hex: :bamboo, repo: "hexpm", optional: false]}, {:gen_smtp, "~> 1.1.0", [hex: :gen_smtp, repo: "hexpm", optional: false]}], "hexpm", "2412015092121b9f24f3f2e654bcd98e5c5f9afb323a94f8defa22e70ba8f23d"},
+ "bamboo_smtp": {:hex, :bamboo_smtp, "4.0.1", "7e48188663f6164a81183688bb263be4c3952648fcd3ce52164f44d68777f9cd", [:mix], [{:bamboo, "~> 2.1.0", [hex: :bamboo, repo: "hexpm", optional: false]}, {:gen_smtp, "~> 1.1.1", [hex: :gen_smtp, repo: "hexpm", optional: false]}], "hexpm", "7ff1d62ae39bfb1c14f6d3cddba0fa1482a45c2a2b497a2da601eff7099605c8"},
"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.6.1", "dbab8e5e155a0763eea978c913ca280a6b544bfa115633fa20249c3d396d9493", [:rebar3], [], "hexpm", "524c97b4991b3849dd5c17a631223896272c6b0af446778ba4675a1dff53bb7e"},
@@ -81,7 +81,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"},
+ "junit_formatter": {:hex, :junit_formatter, "3.2.0", "6a64d6327c48472e983af7645aeb1d756cad4b33c5ab3a5db820f13d6d2b85fe", [:mix], [], "hexpm", "043d6f660667ee64c6d7e5edb867b7900c395356346e77185879449b50486681"},
"linkify": {:hex, :linkify, "0.5.0", "e0ea8de73ff44742d6a889721221f4c4eccaad5284957ee9832ffeb347602d54", [:mix], [], "hexpm", "4ccd958350aee7c51c89e21f05b15d30596ebbba707e051d21766be1809df2d7"},
"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.1", "b5888c880d17d1cc3e598f05cdb5b5a91b7b17ac4eaf5f297cb697663a1094dd", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.1", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "db68c173234b07ab2a07f645a5acdc117b9f99d69ebf521821d89690ae6c6ec8"},
@@ -111,7 +111,7 @@
"plug_cowboy": {:hex, :plug_cowboy, "2.5.0", "51c998f788c4e68fc9f947a5eba8c215fbb1d63a520f7604134cab0270ea6513", [: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", "5b2c8925a5e2587446f33810a58c01e66b3c345652eeec809b76ba007acde71a"},
"plug_crypto": {:hex, :plug_crypto, "1.2.2", "05654514ac717ff3a1843204b424477d9e60c143406aa94daf2274fdd280794d", [:mix], [], "hexpm", "87631c7ad914a5a445f0a3809f99b079113ae4ed4b867348dd9eec288cecb6db"},
"poison": {:hex, :poison, "4.0.1", "bcb755a16fac91cad79bfe9fc3585bb07b9331e50cfe3420a24bcc2d735709ae", [:mix], [], "hexpm", "ba8836feea4b394bb718a161fc59a288fe0109b5006d6bdf97b6badfcf6f0f25"},
- "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"},
+ "postgrex": {:hex, :postgrex, "0.15.9", "46f8fe6f25711aeb861c4d0ae09780facfdf3adbd2fb5594ead61504dd489bda", [: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", "610719103e4cb2223d4ab78f9f0f3e720320eeca6011415ab4137ddef730adee"},
"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, "1.0.0", "3d7fb45204a5704443f480cee9515e464997f52c35e0a60b6ece1f81484067ae", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "9e9fcad4e50c43b5234bb6a9629ed6ab223f3ed07147bd35470e4ee5c8caf907"},
diff --git a/priv/gettext/ar/LC_MESSAGES/default.po b/priv/gettext/ar/LC_MESSAGES/default.po
index 406b1018a..276f18628 100644
--- a/priv/gettext/ar/LC_MESSAGES/default.po
+++ b/priv/gettext/ar/LC_MESSAGES/default.po
@@ -868,8 +868,8 @@ msgid "Hi there! Just a quick note to confirm that the email address linked to y
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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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 ""
@@ -1392,21 +1392,22 @@ msgstr ""
#, elixir-format
#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr ""
@@ -1429,3 +1430,8 @@ msgstr ""
#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr ""
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/ar/LC_MESSAGES/errors.po b/priv/gettext/ar/LC_MESSAGES/errors.po
index ee7e0c0af..fb6d0cd83 100644
--- a/priv/gettext/ar/LC_MESSAGES/errors.po
+++ b/priv/gettext/ar/LC_MESSAGES/errors.po
@@ -125,12 +125,12 @@ msgid "Cannot refresh the token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:198
+#: lib/graphql/resolvers/group.ex:206
msgid "Current profile is not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:202
+#: lib/graphql/resolvers/group.ex:210
msgid "Current profile is not an administrator of the selected group"
msgstr ""
@@ -140,13 +140,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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 lib/graphql/resolvers/member.ex:80
msgid "Group not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:66
+#: lib/graphql/resolvers/group.ex:68
msgid "Group with ID %{id} not found"
msgstr ""
@@ -156,7 +156,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:266
msgid "Member not found"
msgstr ""
@@ -172,16 +172,16 @@ msgid "No user to validate with this email was found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/user.ex:218
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
msgid "No user with this email was found"
msgstr ""
#, 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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr ""
@@ -247,22 +247,22 @@ msgid "User requested is not logged-in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:232
+#: lib/graphql/resolvers/group.ex:240
msgid "You are already a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:265
+#: lib/graphql/resolvers/group.ex:273
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:237
msgid "You cannot join this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:94
+#: lib/graphql/resolvers/group.ex:96
msgid "You may not list groups unless moderator."
msgstr ""
@@ -277,7 +277,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:215
msgid "You need to be logged-in to delete a group"
msgstr ""
@@ -287,17 +287,17 @@ 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:245
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:278
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:180
msgid "You need to be logged-in to update a group"
msgstr ""
@@ -362,12 +362,12 @@ msgid "Anonymous participation is not enabled"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:195
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:192
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr ""
@@ -414,7 +414,7 @@ msgid "Internal Error"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:201
+#: lib/graphql/resolvers/discussion.ex:202
msgid "No discussion with ID %{id}"
msgstr ""
@@ -424,7 +424,7 @@ msgid "No profile found for user"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:63
+#: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token"
msgstr ""
@@ -441,12 +441,12 @@ msgid "Participant not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:29
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:51
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr ""
@@ -480,15 +480,10 @@ msgid "Profile is not member of group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:189
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr ""
-#, elixir-format
-#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
-msgid "Provided moderator profile doesn't have permission on this event"
-msgstr ""
-
#, elixir-format
#: lib/graphql/resolvers/report.ex:36
msgid "Report not found"
@@ -521,22 +516,22 @@ msgid "Todo list doesn't exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:69
+#: lib/graphql/resolvers/feed_token.ex:73
msgid "Token does not exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:66
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID"
msgstr ""
#, elixir-format
-#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:358
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:256
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr ""
@@ -551,7 +546,7 @@ msgid "You are not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:151
+#: lib/graphql/resolvers/member.ex:149
msgid "You are not a moderator or admin for this group"
msgstr ""
@@ -571,7 +566,7 @@ msgid "You are not allowed to delete a comment if not connected"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:78
+#: lib/graphql/resolvers/feed_token.ex:82
msgid "You are not allowed to delete a feed token if not connected"
msgstr ""
@@ -587,7 +582,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:155
+#: lib/graphql/resolvers/member.ex:153
msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr ""
@@ -607,12 +602,12 @@ msgid "You cannot invite to this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:72
+#: lib/graphql/resolvers/feed_token.ex:76
msgid "You don't have permission to delete this token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:52
+#: lib/graphql/resolvers/admin.ex:53
msgid "You need to be logged-in and a moderator to list action logs"
msgstr ""
@@ -632,22 +627,22 @@ msgid "You need to be logged-in and a moderator to view a report"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:236
+#: lib/graphql/resolvers/admin.ex:237
msgid "You need to be logged-in and an administrator to access admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:221
+#: lib/graphql/resolvers/admin.ex:222
msgid "You need to be logged-in and an administrator to access dashboard statistics"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:260
+#: lib/graphql/resolvers/admin.ex:261
msgid "You need to be logged-in and an administrator to save admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:76
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr ""
@@ -787,12 +782,12 @@ msgid "You need to be logged in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:116
+#: lib/graphql/resolvers/member.ex:114
msgid "You can't accept this invitation with this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:134
+#: lib/graphql/resolvers/member.ex:132
msgid "You can't reject this invitation with this profile."
msgstr ""
@@ -802,7 +797,7 @@ msgid "File doesn't have an allowed MIME type."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:167
+#: lib/graphql/resolvers/group.ex:175
msgid "Profile is not administrator for the group"
msgstr ""
@@ -817,17 +812,17 @@ msgid "You can't attribute this event to this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:137
+#: lib/graphql/resolvers/member.ex:135
msgid "This invitation doesn't exist."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:179
+#: lib/graphql/resolvers/member.ex:177
msgid "This member already has been rejected."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:186
+#: lib/graphql/resolvers/member.ex:184
msgid "You don't have the right to remove this member."
msgstr ""
@@ -837,7 +832,7 @@ msgid "This username is already taken."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:73
+#: lib/graphql/resolvers/discussion.ex:74
msgid "You must provide either an ID or a slug to access a discussion"
msgstr ""
@@ -852,8 +847,8 @@ msgid "Profile ID provided is not the anonymous profile one"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr ""
@@ -862,7 +857,7 @@ msgstr ""
msgid "Index file not found. You need to recompile the front-end."
msgstr ""
-#, elixir-format, fuzzy
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr ""
@@ -876,3 +871,8 @@ msgstr ""
#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr ""
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr ""
diff --git a/priv/gettext/be/LC_MESSAGES/default.po b/priv/gettext/be/LC_MESSAGES/default.po
index 41990ebef..32160bf85 100644
--- a/priv/gettext/be/LC_MESSAGES/default.po
+++ b/priv/gettext/be/LC_MESSAGES/default.po
@@ -844,8 +844,8 @@ msgid "Hi there! Just a quick note to confirm that the email address linked to y
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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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 ""
@@ -1368,21 +1368,22 @@ msgstr ""
#, elixir-format
#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr ""
@@ -1405,3 +1406,8 @@ msgstr ""
#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr ""
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/be/LC_MESSAGES/errors.po b/priv/gettext/be/LC_MESSAGES/errors.po
index d1b14207e..3776146f5 100644
--- a/priv/gettext/be/LC_MESSAGES/errors.po
+++ b/priv/gettext/be/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:206
msgid "Current profile is not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:202
+#: lib/graphql/resolvers/group.ex:210
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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 lib/graphql/resolvers/member.ex:80
msgid "Group not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:66
+#: lib/graphql/resolvers/group.ex:68
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:266
msgid "Member not found"
msgstr ""
@@ -146,16 +146,16 @@ msgid "No user to validate with this email was found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/user.ex:218
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
msgid "No user with this email was found"
msgstr ""
#, 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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr ""
@@ -221,22 +221,22 @@ msgid "User requested is not logged-in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:232
+#: lib/graphql/resolvers/group.ex:240
msgid "You are already a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:265
+#: lib/graphql/resolvers/group.ex:273
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:237
msgid "You cannot join this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:94
+#: lib/graphql/resolvers/group.ex:96
msgid "You may not list groups unless moderator."
msgstr ""
@@ -251,7 +251,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:215
msgid "You need to be logged-in to delete a group"
msgstr ""
@@ -261,17 +261,17 @@ 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:245
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:278
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:180
msgid "You need to be logged-in to update a group"
msgstr ""
@@ -336,12 +336,12 @@ msgid "Anonymous participation is not enabled"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:195
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:192
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr ""
@@ -388,7 +388,7 @@ msgid "Internal Error"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:201
+#: lib/graphql/resolvers/discussion.ex:202
msgid "No discussion with ID %{id}"
msgstr ""
@@ -398,7 +398,7 @@ msgid "No profile found for user"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:63
+#: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token"
msgstr ""
@@ -415,12 +415,12 @@ msgid "Participant not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:29
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:51
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr ""
@@ -454,15 +454,10 @@ msgid "Profile is not member of group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:189
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr ""
-#, elixir-format
-#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
-msgid "Provided moderator profile doesn't have permission on this event"
-msgstr ""
-
#, elixir-format
#: lib/graphql/resolvers/report.ex:36
msgid "Report not found"
@@ -495,22 +490,22 @@ msgid "Todo list doesn't exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:69
+#: lib/graphql/resolvers/feed_token.ex:73
msgid "Token does not exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:66
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID"
msgstr ""
#, elixir-format
-#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:358
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:256
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr ""
@@ -525,7 +520,7 @@ msgid "You are not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:151
+#: lib/graphql/resolvers/member.ex:149
msgid "You are not a moderator or admin for this group"
msgstr ""
@@ -545,7 +540,7 @@ msgid "You are not allowed to delete a comment if not connected"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:78
+#: lib/graphql/resolvers/feed_token.ex:82
msgid "You are not allowed to delete a feed token if not connected"
msgstr ""
@@ -561,7 +556,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:155
+#: lib/graphql/resolvers/member.ex:153
msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr ""
@@ -581,12 +576,12 @@ msgid "You cannot invite to this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:72
+#: lib/graphql/resolvers/feed_token.ex:76
msgid "You don't have permission to delete this token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:52
+#: lib/graphql/resolvers/admin.ex:53
msgid "You need to be logged-in and a moderator to list action logs"
msgstr ""
@@ -606,22 +601,22 @@ msgid "You need to be logged-in and a moderator to view a report"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:236
+#: lib/graphql/resolvers/admin.ex:237
msgid "You need to be logged-in and an administrator to access admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:221
+#: lib/graphql/resolvers/admin.ex:222
msgid "You need to be logged-in and an administrator to access dashboard statistics"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:260
+#: lib/graphql/resolvers/admin.ex:261
msgid "You need to be logged-in and an administrator to save admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:76
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr ""
@@ -761,12 +756,12 @@ msgid "You need to be logged in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:116
+#: lib/graphql/resolvers/member.ex:114
msgid "You can't accept this invitation with this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:134
+#: lib/graphql/resolvers/member.ex:132
msgid "You can't reject this invitation with this profile."
msgstr ""
@@ -776,7 +771,7 @@ msgid "File doesn't have an allowed MIME type."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:167
+#: lib/graphql/resolvers/group.ex:175
msgid "Profile is not administrator for the group"
msgstr ""
@@ -791,17 +786,17 @@ msgid "You can't attribute this event to this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:137
+#: lib/graphql/resolvers/member.ex:135
msgid "This invitation doesn't exist."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:179
+#: lib/graphql/resolvers/member.ex:177
msgid "This member already has been rejected."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:186
+#: lib/graphql/resolvers/member.ex:184
msgid "You don't have the right to remove this member."
msgstr ""
@@ -811,7 +806,7 @@ msgid "This username is already taken."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:73
+#: lib/graphql/resolvers/discussion.ex:74
msgid "You must provide either an ID or a slug to access a discussion"
msgstr ""
@@ -826,8 +821,8 @@ msgid "Profile ID provided is not the anonymous profile one"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr ""
@@ -836,7 +831,7 @@ msgstr ""
msgid "Index file not found. You need to recompile the front-end."
msgstr ""
-#, elixir-format, fuzzy
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr ""
@@ -850,3 +845,8 @@ msgstr ""
#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr ""
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr ""
diff --git a/priv/gettext/ca/LC_MESSAGES/default.po b/priv/gettext/ca/LC_MESSAGES/default.po
index 3aebb5eff..bc7947db6 100644
--- a/priv/gettext/ca/LC_MESSAGES/default.po
+++ b/priv/gettext/ca/LC_MESSAGES/default.po
@@ -1024,8 +1024,8 @@ msgstr ""
". 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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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 no has fet aquest canvi tu mateix/a, és possible que algú hagi aconseguit "
@@ -1617,21 +1617,22 @@ 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
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr "El flux de %{name}"
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr "El flux d'activitats privades de %{actor} a %{instance}"
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr "El flux d'activitats públiques de %{actor} a %{instance}"
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr "Flux de %{email} a %{instance}"
@@ -1654,3 +1655,8 @@ msgstr ""
#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr "Sembla ser que el servidor de Mobilizon està temporalment inaccessible."
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/ca/LC_MESSAGES/errors.po b/priv/gettext/ca/LC_MESSAGES/errors.po
index 9e6c5f73c..fa2a6bbc3 100644
--- a/priv/gettext/ca/LC_MESSAGES/errors.po
+++ b/priv/gettext/ca/LC_MESSAGES/errors.po
@@ -100,12 +100,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:206
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:210
msgid "Current profile is not an administrator of the selected group"
msgstr "El perfil actual no administra el grup seleccionat"
@@ -115,13 +115,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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 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:68
msgid "Group with ID %{id} not found"
msgstr "No s'ha trobat el grup amb identificador %{id}"
@@ -131,7 +131,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:266
msgid "Member not found"
msgstr "No s'ha trobat el/la membre"
@@ -147,16 +147,16 @@ msgid "No user to validate with this email was found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/user.ex:218
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
msgid "No user with this email was found"
msgstr ""
#, 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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr ""
@@ -222,22 +222,22 @@ msgid "User requested is not logged-in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:232
+#: lib/graphql/resolvers/group.ex:240
msgid "You are already a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:265
+#: lib/graphql/resolvers/group.ex:273
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:237
msgid "You cannot join this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:94
+#: lib/graphql/resolvers/group.ex:96
msgid "You may not list groups unless moderator."
msgstr ""
@@ -252,7 +252,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:215
msgid "You need to be logged-in to delete a group"
msgstr ""
@@ -262,17 +262,17 @@ 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:245
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:278
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:180
msgid "You need to be logged-in to update a group"
msgstr ""
@@ -337,12 +337,12 @@ msgid "Anonymous participation is not enabled"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:195
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:192
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr ""
@@ -389,7 +389,7 @@ msgid "Internal Error"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:201
+#: lib/graphql/resolvers/discussion.ex:202
msgid "No discussion with ID %{id}"
msgstr ""
@@ -399,7 +399,7 @@ msgid "No profile found for user"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:63
+#: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token"
msgstr ""
@@ -416,12 +416,12 @@ msgid "Participant not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:29
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:51
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr ""
@@ -455,15 +455,10 @@ msgid "Profile is not member of group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:189
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr ""
-#, elixir-format
-#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
-msgid "Provided moderator profile doesn't have permission on this event"
-msgstr ""
-
#, elixir-format
#: lib/graphql/resolvers/report.ex:36
msgid "Report not found"
@@ -496,22 +491,22 @@ msgid "Todo list doesn't exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:69
+#: lib/graphql/resolvers/feed_token.ex:73
msgid "Token does not exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:66
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID"
msgstr ""
#, elixir-format
-#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:358
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:256
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr ""
@@ -526,7 +521,7 @@ msgid "You are not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:151
+#: lib/graphql/resolvers/member.ex:149
msgid "You are not a moderator or admin for this group"
msgstr ""
@@ -546,7 +541,7 @@ msgid "You are not allowed to delete a comment if not connected"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:78
+#: lib/graphql/resolvers/feed_token.ex:82
msgid "You are not allowed to delete a feed token if not connected"
msgstr ""
@@ -562,7 +557,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:155
+#: lib/graphql/resolvers/member.ex:153
msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr ""
@@ -582,12 +577,12 @@ msgid "You cannot invite to this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:72
+#: lib/graphql/resolvers/feed_token.ex:76
msgid "You don't have permission to delete this token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:52
+#: lib/graphql/resolvers/admin.ex:53
msgid "You need to be logged-in and a moderator to list action logs"
msgstr ""
@@ -607,22 +602,22 @@ msgid "You need to be logged-in and a moderator to view a report"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:236
+#: lib/graphql/resolvers/admin.ex:237
msgid "You need to be logged-in and an administrator to access admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:221
+#: lib/graphql/resolvers/admin.ex:222
msgid "You need to be logged-in and an administrator to access dashboard statistics"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:260
+#: lib/graphql/resolvers/admin.ex:261
msgid "You need to be logged-in and an administrator to save admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:76
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr ""
@@ -762,12 +757,12 @@ msgid "You need to be logged in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:116
+#: lib/graphql/resolvers/member.ex:114
msgid "You can't accept this invitation with this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:134
+#: lib/graphql/resolvers/member.ex:132
msgid "You can't reject this invitation with this profile."
msgstr ""
@@ -777,7 +772,7 @@ msgid "File doesn't have an allowed MIME type."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:167
+#: lib/graphql/resolvers/group.ex:175
msgid "Profile is not administrator for the group"
msgstr ""
@@ -792,17 +787,17 @@ msgid "You can't attribute this event to this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:137
+#: lib/graphql/resolvers/member.ex:135
msgid "This invitation doesn't exist."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:179
+#: lib/graphql/resolvers/member.ex:177
msgid "This member already has been rejected."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:186
+#: lib/graphql/resolvers/member.ex:184
msgid "You don't have the right to remove this member."
msgstr ""
@@ -812,7 +807,7 @@ msgid "This username is already taken."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:73
+#: lib/graphql/resolvers/discussion.ex:74
msgid "You must provide either an ID or a slug to access a discussion"
msgstr ""
@@ -827,8 +822,8 @@ msgid "Profile ID provided is not the anonymous profile one"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr ""
@@ -837,7 +832,7 @@ msgstr ""
msgid "Index file not found. You need to recompile the front-end."
msgstr ""
-#, elixir-format, fuzzy
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr ""
@@ -851,3 +846,8 @@ msgstr ""
#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr ""
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr ""
diff --git a/priv/gettext/cs/LC_MESSAGES/default.po b/priv/gettext/cs/LC_MESSAGES/default.po
index 2bf563649..a6d7d033e 100644
--- a/priv/gettext/cs/LC_MESSAGES/default.po
+++ b/priv/gettext/cs/LC_MESSAGES/default.po
@@ -844,8 +844,8 @@ msgid "Hi there! Just a quick note to confirm that the email address linked to y
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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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 ""
@@ -1368,21 +1368,22 @@ msgstr ""
#, elixir-format
#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr ""
@@ -1405,3 +1406,8 @@ msgstr ""
#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr ""
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/cs/LC_MESSAGES/errors.po b/priv/gettext/cs/LC_MESSAGES/errors.po
index ab7a5a64f..0c2d0a708 100644
--- a/priv/gettext/cs/LC_MESSAGES/errors.po
+++ b/priv/gettext/cs/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:206
msgid "Current profile is not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:202
+#: lib/graphql/resolvers/group.ex:210
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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 lib/graphql/resolvers/member.ex:80
msgid "Group not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:66
+#: lib/graphql/resolvers/group.ex:68
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:266
msgid "Member not found"
msgstr ""
@@ -146,16 +146,16 @@ msgid "No user to validate with this email was found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/user.ex:218
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
msgid "No user with this email was found"
msgstr ""
#, 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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr ""
@@ -221,22 +221,22 @@ msgid "User requested is not logged-in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:232
+#: lib/graphql/resolvers/group.ex:240
msgid "You are already a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:265
+#: lib/graphql/resolvers/group.ex:273
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:237
msgid "You cannot join this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:94
+#: lib/graphql/resolvers/group.ex:96
msgid "You may not list groups unless moderator."
msgstr ""
@@ -251,7 +251,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:215
msgid "You need to be logged-in to delete a group"
msgstr ""
@@ -261,17 +261,17 @@ 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:245
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:278
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:180
msgid "You need to be logged-in to update a group"
msgstr ""
@@ -336,12 +336,12 @@ msgid "Anonymous participation is not enabled"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:195
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:192
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr ""
@@ -388,7 +388,7 @@ msgid "Internal Error"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:201
+#: lib/graphql/resolvers/discussion.ex:202
msgid "No discussion with ID %{id}"
msgstr ""
@@ -398,7 +398,7 @@ msgid "No profile found for user"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:63
+#: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token"
msgstr ""
@@ -415,12 +415,12 @@ msgid "Participant not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:29
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:51
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr ""
@@ -454,15 +454,10 @@ msgid "Profile is not member of group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:189
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr ""
-#, elixir-format
-#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
-msgid "Provided moderator profile doesn't have permission on this event"
-msgstr ""
-
#, elixir-format
#: lib/graphql/resolvers/report.ex:36
msgid "Report not found"
@@ -495,22 +490,22 @@ msgid "Todo list doesn't exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:69
+#: lib/graphql/resolvers/feed_token.ex:73
msgid "Token does not exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:66
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID"
msgstr ""
#, elixir-format
-#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:358
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:256
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr ""
@@ -525,7 +520,7 @@ msgid "You are not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:151
+#: lib/graphql/resolvers/member.ex:149
msgid "You are not a moderator or admin for this group"
msgstr ""
@@ -545,7 +540,7 @@ msgid "You are not allowed to delete a comment if not connected"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:78
+#: lib/graphql/resolvers/feed_token.ex:82
msgid "You are not allowed to delete a feed token if not connected"
msgstr ""
@@ -561,7 +556,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:155
+#: lib/graphql/resolvers/member.ex:153
msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr ""
@@ -581,12 +576,12 @@ msgid "You cannot invite to this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:72
+#: lib/graphql/resolvers/feed_token.ex:76
msgid "You don't have permission to delete this token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:52
+#: lib/graphql/resolvers/admin.ex:53
msgid "You need to be logged-in and a moderator to list action logs"
msgstr ""
@@ -606,22 +601,22 @@ msgid "You need to be logged-in and a moderator to view a report"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:236
+#: lib/graphql/resolvers/admin.ex:237
msgid "You need to be logged-in and an administrator to access admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:221
+#: lib/graphql/resolvers/admin.ex:222
msgid "You need to be logged-in and an administrator to access dashboard statistics"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:260
+#: lib/graphql/resolvers/admin.ex:261
msgid "You need to be logged-in and an administrator to save admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:76
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr ""
@@ -761,12 +756,12 @@ msgid "You need to be logged in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:116
+#: lib/graphql/resolvers/member.ex:114
msgid "You can't accept this invitation with this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:134
+#: lib/graphql/resolvers/member.ex:132
msgid "You can't reject this invitation with this profile."
msgstr ""
@@ -776,7 +771,7 @@ msgid "File doesn't have an allowed MIME type."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:167
+#: lib/graphql/resolvers/group.ex:175
msgid "Profile is not administrator for the group"
msgstr ""
@@ -791,17 +786,17 @@ msgid "You can't attribute this event to this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:137
+#: lib/graphql/resolvers/member.ex:135
msgid "This invitation doesn't exist."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:179
+#: lib/graphql/resolvers/member.ex:177
msgid "This member already has been rejected."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:186
+#: lib/graphql/resolvers/member.ex:184
msgid "You don't have the right to remove this member."
msgstr ""
@@ -811,7 +806,7 @@ msgid "This username is already taken."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:73
+#: lib/graphql/resolvers/discussion.ex:74
msgid "You must provide either an ID or a slug to access a discussion"
msgstr ""
@@ -826,8 +821,8 @@ msgid "Profile ID provided is not the anonymous profile one"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr ""
@@ -836,7 +831,7 @@ msgstr ""
msgid "Index file not found. You need to recompile the front-end."
msgstr ""
-#, elixir-format, fuzzy
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr ""
@@ -850,3 +845,8 @@ msgstr ""
#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr ""
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr ""
diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po
index c233406d6..f16635ce8 100644
--- a/priv/gettext/de/LC_MESSAGES/default.po
+++ b/priv/gettext/de/LC_MESSAGES/default.po
@@ -14,270 +14,270 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.5.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/web/templates/email/report.html.eex:74
#, elixir-format
+#: lib/web/templates/email/report.html.eex:74
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 "Richte deine Fragen an 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:135
#, 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 aktuell 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 mit den IP-Adressen der Anfragen an unseren "
"Server aufbewahren."
-#: 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 ""
@@ -288,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 ""
@@ -300,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 ""
@@ -334,8 +334,8 @@ msgstr ""
"Beantwortung von Anfragen, und/oder anderen Bitten oder \n"
"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 ""
@@ -343,8 +343,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 ""
@@ -353,89 +353,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:47
#, 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:33
#, 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:71
#, 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:93
#, 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"
@@ -443,21 +443,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 ""
@@ -468,8 +468,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 ""
@@ -483,20 +483,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 ""
@@ -509,8 +509,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 ""
@@ -518,8 +518,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 ""
@@ -527,8 +527,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 ""
@@ -536,16 +536,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 ""
@@ -554,40 +554,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 "Rückmeldung"
-#: 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 ""
@@ -595,8 +595,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 ""
@@ -605,26 +605,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 ""
@@ -633,14 +633,14 @@ msgstr ""
"vollem Umfang zu genießen. Oder 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 ""
@@ -653,8 +653,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 ""
@@ -663,16 +663,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 ""
@@ -682,8 +682,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 ""
@@ -693,8 +693,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 ""
@@ -702,16 +702,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 ""
@@ -724,8 +724,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 ""
@@ -734,8 +734,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 ""
@@ -745,16 +745,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 ""
@@ -764,30 +764,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 ""
@@ -801,16 +801,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 ""
@@ -819,8 +819,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 ""
@@ -828,8 +828,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 ""
@@ -838,8 +838,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 ""
@@ -848,22 +848,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 ""
@@ -871,8 +871,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 ""
@@ -880,88 +880,88 @@ 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] ""
@@ -972,74 +972,74 @@ msgstr[1] ""
"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-"
@@ -1048,16 +1048,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:"
-#: 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:62
+#: 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 ""
"Wenn Sie diese Änderung nicht selbst ausgelöst haben, ist es wahrscheinlich, "
@@ -1065,180 +1065,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 "Schade! 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 gibt Änderungen für %{title}. Wir dachten daher, das könnte für Dich "
"interessant sein."
+#, 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 Organisatorinnen werden "
"Dich nach der Bestätigung informieren."
+#, 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, "
@@ -1247,133 +1247,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:63
#, 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:136
#, 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:97
#, 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 ""
@@ -1382,8 +1382,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 ""
@@ -1391,22 +1391,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 ""
@@ -1417,31 +1417,31 @@ 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 ""
"Serverprotokolle mit den IP-Adressen aller Anfragen an diesen Server werden "
"nach 90 Tagen gelöscht, sofern solche Protokolle geführt werden."
+#, 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 ""
@@ -1450,16 +1450,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 ""
@@ -1469,8 +1469,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 ""
@@ -1488,8 +1488,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 ""
@@ -1497,8 +1497,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 ""
@@ -1512,8 +1512,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 ""
@@ -1523,8 +1523,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 ""
@@ -1538,8 +1538,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 ""
@@ -1554,8 +1554,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 ""
@@ -1566,206 +1566,212 @@ 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} 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:94
#, 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:93
#, 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, das ist für Dich "
"interessant."
-#: 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:50
#, elixir-format
+#: lib/web/templates/error/500_page.html.eex:50
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."
-#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
#, elixir-format
+#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr "Feed von %{name}"
-#: lib/service/export/feed.ex:77
#, elixir-format
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr "Privater Veranstaltungsfeed von %{actor} auf %{instance}"
-#: lib/service/export/feed.ex:72
#, elixir-format
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr "Öffentlicher Veranstaltungsfeed von %{actor} auf %{instance}"
-#: lib/service/export/feed.ex:203
#, elixir-format
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr "Feed für %{email} auf %{instance}"
-#: lib/web/templates/error/500_page.html.eex:57
#, elixir-format
+#: lib/web/templates/error/500_page.html.eex:57
msgid "If the issue persists, you may contact the server administrator at %{contact}."
msgstr ""
"Falls das Problem bestehen bleibt, kontaktieren Sie den/die "
"Server-Administrator/in unter %{contact}."
-#: lib/web/templates/error/500_page.html.eex:55
#, elixir-format
+#: lib/web/templates/error/500_page.html.eex:55
msgid "If the issue persists, you may try to contact the server administrator."
msgstr ""
"Falls das Problem bestehen bleibt, versuchen Sie den/die "
"Server-Administrator/in zu kontaktieren."
-#: lib/web/templates/error/500_page.html.eex:68
#, elixir-format
+#: lib/web/templates/error/500_page.html.eex:68
msgid "Technical details"
msgstr "Technische Details"
-#: lib/web/templates/error/500_page.html.eex:52
#, elixir-format
+#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr ""
"Der Mobilizon-Server %{instance} scheint vorübergehend nicht erreichbar zu "
"sein."
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/de/LC_MESSAGES/errors.po b/priv/gettext/de/LC_MESSAGES/errors.po
index c0f8ef6ae..3aaf076ce 100644
--- a/priv/gettext/de/LC_MESSAGES/errors.po
+++ b/priv/gettext/de/LC_MESSAGES/errors.po
@@ -100,12 +100,12 @@ msgid "Cannot refresh the token"
msgstr "Der Token konnte nicht aktualisiert werden"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:198
+#: lib/graphql/resolvers/group.ex:206
msgid "Current profile is not a member of this group"
msgstr "Aktuelles Profil ist nicht Mitglied dieser Gruppe"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:202
+#: lib/graphql/resolvers/group.ex:210
msgid "Current profile is not an administrator of the selected group"
msgstr "Aktuelles Profil ist kein Administrator der ausgewählten Gruppe"
@@ -115,13 +115,13 @@ msgid "Error while saving user settings"
msgstr "Fehler beim Speichern von Benutzereinstellungen"
#, 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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 lib/graphql/resolvers/member.ex:80
msgid "Group not found"
msgstr "Gruppe nicht gefunden"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:66
+#: lib/graphql/resolvers/group.ex:68
msgid "Group with ID %{id} not found"
msgstr "Gruppe mit der ID %{id} nicht gefunden"
@@ -133,7 +133,7 @@ msgstr ""
"Passwort sind ungültig."
#, elixir-format
-#: lib/graphql/resolvers/group.ex:258
+#: lib/graphql/resolvers/group.ex:266
msgid "Member not found"
msgstr "Mitglied wurde nicht gefunden"
@@ -150,16 +150,16 @@ msgstr ""
"Es wurde kein Benutzer gefunden, der mit dieser E-Mail validiert werden kann"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/user.ex:218
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
msgid "No user with this email was found"
msgstr "Es wurde kein Benutzer mit dieser E-Mail gefunden"
#, 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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr "Profil ist nicht im Besitz des authentifizierten Benutzers"
@@ -227,24 +227,24 @@ msgid "User requested is not logged-in"
msgstr "Angeforderter Benutzer ist nicht eingeloggt"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:232
+#: lib/graphql/resolvers/group.ex:240
msgid "You are already a member of this group"
msgstr "Sie sind bereits Mitglied in dieser Gruppe"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:265
+#: lib/graphql/resolvers/group.ex:273
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"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:229
+#: lib/graphql/resolvers/group.ex:237
msgid "You cannot join this group"
msgstr "Sie können dieser Gruppe nicht beitreten"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:94
+#: lib/graphql/resolvers/group.ex:96
msgid "You may not list groups unless moderator."
msgstr "Sie dürfen keine Gruppen auflisten, es sei denn, Sie sind Moderator."
@@ -259,7 +259,7 @@ msgid "You need to be logged-in to change your password"
msgstr "Sie müssen eingeloggt sein, um Ihr Passwort zu ändern"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:207
+#: lib/graphql/resolvers/group.ex:215
msgid "You need to be logged-in to delete a group"
msgstr "Sie müssen eingeloggt sein, um eine Gruppe zu löschen"
@@ -269,17 +269,17 @@ msgid "You need to be logged-in to delete your account"
msgstr "Sie müssen eingeloggt sein, um Ihr Konto zu löschen"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:237
+#: lib/graphql/resolvers/group.ex:245
msgid "You need to be logged-in to join a group"
msgstr "Sie müssen eingeloggt sein, um einer Gruppe beizutreten"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:270
+#: lib/graphql/resolvers/group.ex:278
msgid "You need to be logged-in to leave a group"
msgstr "Sie müssen eingeloggt sein, um eine Gruppe zu verlassen"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:172
+#: lib/graphql/resolvers/group.ex:180
msgid "You need to be logged-in to update a group"
msgstr "Sie müssen eingeloggt sein, um eine Gruppe zu aktualisieren"
@@ -345,12 +345,12 @@ msgid "Anonymous participation is not enabled"
msgstr "Anonyme Teilnahme ist nicht möglich"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:195
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr "Der letzte Administrator einer Gruppe kann nicht entfernt werden"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:192
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr "Kann die letzte Identität eines Benutzers nicht entfernen"
@@ -397,7 +397,7 @@ msgid "Internal Error"
msgstr "Interner Fehler"
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:201
+#: lib/graphql/resolvers/discussion.ex:202
msgid "No discussion with ID %{id}"
msgstr "Keine Diskussion mit ID %{id}"
@@ -407,7 +407,7 @@ msgid "No profile found for user"
msgstr "Kein Profil für Benutzer gefunden"
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:63
+#: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token"
msgstr "Kein solches Feed-Token"
@@ -424,12 +424,12 @@ msgid "Participant not found"
msgstr "Teilnehmer nicht gefunden"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:29
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr "Person mit ID %{id} nicht gefunden"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:51
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr "Person mit Benutzernamen %{username} nicht gefunden"
@@ -465,15 +465,10 @@ msgid "Profile is not member of group"
msgstr "Profil ist nicht Mitglied der Gruppe"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:189
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr "Profil nicht gefunden"
-#, elixir-format
-#: lib/graphql/resolvers/event.ex:145 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"
-
#, elixir-format
#: lib/graphql/resolvers/report.ex:36
msgid "Report not found"
@@ -506,22 +501,22 @@ msgid "Todo list doesn't exist"
msgstr "ToDo-Liste existiert nicht"
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:69
+#: lib/graphql/resolvers/feed_token.ex:73
msgid "Token does not exist"
msgstr "Token existiert nicht"
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:66
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID"
msgstr "Token ist keine gültige UUID"
#, elixir-format
-#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:358
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr "User nicht gefunden"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:256
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr "Sie haben bereits ein Profil für diesen Benutzer"
@@ -536,7 +531,7 @@ msgid "You are not a member of this group"
msgstr "Sie sind nicht Mitglied in dieser Gruppe"
#, elixir-format
-#: lib/graphql/resolvers/member.ex:151
+#: lib/graphql/resolvers/member.ex:149
msgid "You are not a moderator or admin for this group"
msgstr "Sie sind kein Moderator oder Admin für diese Gruppe"
@@ -556,7 +551,7 @@ 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"
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:78
+#: lib/graphql/resolvers/feed_token.ex:82
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"
@@ -575,7 +570,7 @@ msgstr ""
"Teilnehmer sind, der die Veranstaltung erstellt"
#, elixir-format
-#: lib/graphql/resolvers/member.ex:155
+#: lib/graphql/resolvers/member.ex:153
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 "
@@ -597,12 +592,12 @@ msgid "You cannot invite to this group"
msgstr "Sie können nicht in diese Gruppe einladen"
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:72
+#: lib/graphql/resolvers/feed_token.ex:76
msgid "You don't have permission to delete this token"
msgstr "Sie haben nicht die Berechtigung diesen Token zu löschen"
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:52
+#: lib/graphql/resolvers/admin.ex:53
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 "
@@ -626,28 +621,28 @@ 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"
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:236
+#: lib/graphql/resolvers/admin.ex:237
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"
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:221
+#: lib/graphql/resolvers/admin.ex:222
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"
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:260
+#: lib/graphql/resolvers/admin.ex:261
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"
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:76
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr "Sie müssen eingeloggt sein, um auf Diskussionen zugreifen zu können"
@@ -789,12 +784,12 @@ msgid "You need to be logged in"
msgstr "Sie müssen eingeloggt sein"
#, elixir-format
-#: lib/graphql/resolvers/member.ex:116
+#: lib/graphql/resolvers/member.ex:114
msgid "You can't accept this invitation with this profile."
msgstr "Sie können diese Einladung mit diesem Profil nicht annehmen."
#, elixir-format
-#: lib/graphql/resolvers/member.ex:134
+#: lib/graphql/resolvers/member.ex:132
msgid "You can't reject this invitation with this profile."
msgstr "Sie können diese Einladung mit diesem Profil nicht ablehnen."
@@ -804,7 +799,7 @@ msgid "File doesn't have an allowed MIME type."
msgstr "Die Datei hat keinen zulässigen MIME-Typ."
#, elixir-format
-#: lib/graphql/resolvers/group.ex:167
+#: lib/graphql/resolvers/group.ex:175
msgid "Profile is not administrator for the group"
msgstr "Profil ist nicht Administrator für die Gruppe"
@@ -819,17 +814,17 @@ msgid "You can't attribute this event to this profile."
msgstr "Sie können dieses Ereignis nicht diesem Profil zuordnen."
#, elixir-format
-#: lib/graphql/resolvers/member.ex:137
+#: lib/graphql/resolvers/member.ex:135
msgid "This invitation doesn't exist."
msgstr "Diese Einladung gibt es nicht."
#, elixir-format
-#: lib/graphql/resolvers/member.ex:179
+#: lib/graphql/resolvers/member.ex:177
msgid "This member already has been rejected."
msgstr "Dieses Mitglied ist bereits abgelehnt worden."
#, elixir-format
-#: lib/graphql/resolvers/member.ex:186
+#: lib/graphql/resolvers/member.ex:184
msgid "You don't have the right to remove this member."
msgstr "Sie haben nicht das Recht, dieses Mitglied zu entfernen."
@@ -839,7 +834,7 @@ msgid "This username is already taken."
msgstr "Dieser Benutzername ist bereits vergeben."
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:73
+#: lib/graphql/resolvers/discussion.ex:74
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 "
@@ -856,8 +851,8 @@ 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:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr "Das Bild ist zu groß"
@@ -866,7 +861,7 @@ msgstr "Das Bild ist zu groß"
msgid "Index file not found. You need to recompile the front-end."
msgstr ""
-#, elixir-format, fuzzy
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr "Fehler beim Speichern des Reports"
@@ -880,3 +875,8 @@ msgstr ""
#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr ""
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr "Dieses Moderatorenprofil hat keine Berechtigung für diese Veranstaltung"
diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot
index ed0f7c730..25056224f 100644
--- a/priv/gettext/default.pot
+++ b/priv/gettext/default.pot
@@ -823,8 +823,8 @@ msgid "Hi there! Just a quick note to confirm that the email address linked to y
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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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 ""
@@ -1347,21 +1347,22 @@ msgstr ""
#, elixir-format
#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr ""
@@ -1384,3 +1385,8 @@ msgstr ""
#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr ""
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po
index 22fe8a480..1f9fda354 100644
--- a/priv/gettext/en/LC_MESSAGES/default.po
+++ b/priv/gettext/en/LC_MESSAGES/default.po
@@ -876,8 +876,8 @@ msgid "Hi there! Just a quick note to confirm that the email address linked to y
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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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 ""
@@ -1400,21 +1400,22 @@ 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
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr ""
@@ -1437,3 +1438,8 @@ msgstr ""
#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr ""
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/en/LC_MESSAGES/errors.po b/priv/gettext/en/LC_MESSAGES/errors.po
index 59e831ddb..c563dff57 100644
--- a/priv/gettext/en/LC_MESSAGES/errors.po
+++ b/priv/gettext/en/LC_MESSAGES/errors.po
@@ -103,12 +103,12 @@ msgid "Cannot refresh the token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:198
+#: lib/graphql/resolvers/group.ex:206
msgid "Current profile is not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:202
+#: lib/graphql/resolvers/group.ex:210
msgid "Current profile is not an administrator of the selected group"
msgstr ""
@@ -118,13 +118,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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 lib/graphql/resolvers/member.ex:80
msgid "Group not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:66
+#: lib/graphql/resolvers/group.ex:68
msgid "Group with ID %{id} not found"
msgstr ""
@@ -134,7 +134,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:266
msgid "Member not found"
msgstr ""
@@ -150,16 +150,16 @@ msgid "No user to validate with this email was found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/user.ex:218
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
msgid "No user with this email was found"
msgstr ""
#, 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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr ""
@@ -225,22 +225,22 @@ msgid "User requested is not logged-in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:232
+#: lib/graphql/resolvers/group.ex:240
msgid "You are already a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:265
+#: lib/graphql/resolvers/group.ex:273
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:237
msgid "You cannot join this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:94
+#: lib/graphql/resolvers/group.ex:96
msgid "You may not list groups unless moderator."
msgstr ""
@@ -255,7 +255,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:215
msgid "You need to be logged-in to delete a group"
msgstr ""
@@ -265,17 +265,17 @@ 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:245
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:278
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:180
msgid "You need to be logged-in to update a group"
msgstr ""
@@ -340,12 +340,12 @@ msgid "Anonymous participation is not enabled"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:195
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:192
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr ""
@@ -392,7 +392,7 @@ msgid "Internal Error"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:201
+#: lib/graphql/resolvers/discussion.ex:202
msgid "No discussion with ID %{id}"
msgstr ""
@@ -402,7 +402,7 @@ msgid "No profile found for user"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:63
+#: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token"
msgstr ""
@@ -419,12 +419,12 @@ msgid "Participant not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:29
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:51
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr ""
@@ -458,15 +458,10 @@ msgid "Profile is not member of group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:189
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr ""
-#, elixir-format
-#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
-msgid "Provided moderator profile doesn't have permission on this event"
-msgstr ""
-
#, elixir-format
#: lib/graphql/resolvers/report.ex:36
msgid "Report not found"
@@ -499,22 +494,22 @@ msgid "Todo list doesn't exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:69
+#: lib/graphql/resolvers/feed_token.ex:73
msgid "Token does not exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:66
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID"
msgstr ""
#, elixir-format
-#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:358
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:256
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr ""
@@ -529,7 +524,7 @@ msgid "You are not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:151
+#: lib/graphql/resolvers/member.ex:149
msgid "You are not a moderator or admin for this group"
msgstr ""
@@ -549,7 +544,7 @@ msgid "You are not allowed to delete a comment if not connected"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:78
+#: lib/graphql/resolvers/feed_token.ex:82
msgid "You are not allowed to delete a feed token if not connected"
msgstr ""
@@ -565,7 +560,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:155
+#: lib/graphql/resolvers/member.ex:153
msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr ""
@@ -585,12 +580,12 @@ msgid "You cannot invite to this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:72
+#: lib/graphql/resolvers/feed_token.ex:76
msgid "You don't have permission to delete this token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:52
+#: lib/graphql/resolvers/admin.ex:53
msgid "You need to be logged-in and a moderator to list action logs"
msgstr ""
@@ -610,22 +605,22 @@ msgid "You need to be logged-in and a moderator to view a report"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:236
+#: lib/graphql/resolvers/admin.ex:237
msgid "You need to be logged-in and an administrator to access admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:221
+#: lib/graphql/resolvers/admin.ex:222
msgid "You need to be logged-in and an administrator to access dashboard statistics"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:260
+#: lib/graphql/resolvers/admin.ex:261
msgid "You need to be logged-in and an administrator to save admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:76
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr ""
@@ -765,12 +760,12 @@ msgid "You need to be logged in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:116
+#: lib/graphql/resolvers/member.ex:114
msgid "You can't accept this invitation with this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:134
+#: lib/graphql/resolvers/member.ex:132
msgid "You can't reject this invitation with this profile."
msgstr ""
@@ -780,7 +775,7 @@ msgid "File doesn't have an allowed MIME type."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:167
+#: lib/graphql/resolvers/group.ex:175
msgid "Profile is not administrator for the group"
msgstr ""
@@ -795,17 +790,17 @@ msgid "You can't attribute this event to this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:137
+#: lib/graphql/resolvers/member.ex:135
msgid "This invitation doesn't exist."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:179
+#: lib/graphql/resolvers/member.ex:177
msgid "This member already has been rejected."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:186
+#: lib/graphql/resolvers/member.ex:184
msgid "You don't have the right to remove this member."
msgstr ""
@@ -815,7 +810,7 @@ msgid "This username is already taken."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:73
+#: lib/graphql/resolvers/discussion.ex:74
msgid "You must provide either an ID or a slug to access a discussion"
msgstr ""
@@ -830,8 +825,8 @@ msgid "Profile ID provided is not the anonymous profile one"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr ""
@@ -840,7 +835,7 @@ msgstr ""
msgid "Index file not found. You need to recompile the front-end."
msgstr ""
-#, elixir-format, fuzzy
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr ""
@@ -854,3 +849,8 @@ msgstr ""
#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr ""
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr ""
diff --git a/priv/gettext/errors.pot b/priv/gettext/errors.pot
index a64499e71..8cc4bf0f0 100644
--- a/priv/gettext/errors.pot
+++ b/priv/gettext/errors.pot
@@ -100,12 +100,12 @@ msgid "Cannot refresh the token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:198
+#: lib/graphql/resolvers/group.ex:206
msgid "Current profile is not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:202
+#: lib/graphql/resolvers/group.ex:210
msgid "Current profile is not an administrator of the selected group"
msgstr ""
@@ -115,13 +115,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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 lib/graphql/resolvers/member.ex:80
msgid "Group not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:66
+#: lib/graphql/resolvers/group.ex:68
msgid "Group with ID %{id} not found"
msgstr ""
@@ -131,7 +131,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:266
msgid "Member not found"
msgstr ""
@@ -147,16 +147,16 @@ msgid "No user to validate with this email was found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/user.ex:218
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
msgid "No user with this email was found"
msgstr ""
#, 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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr ""
@@ -222,22 +222,22 @@ msgid "User requested is not logged-in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:232
+#: lib/graphql/resolvers/group.ex:240
msgid "You are already a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:265
+#: lib/graphql/resolvers/group.ex:273
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:237
msgid "You cannot join this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:94
+#: lib/graphql/resolvers/group.ex:96
msgid "You may not list groups unless moderator."
msgstr ""
@@ -252,7 +252,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:215
msgid "You need to be logged-in to delete a group"
msgstr ""
@@ -262,17 +262,17 @@ 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:245
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:278
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:180
msgid "You need to be logged-in to update a group"
msgstr ""
@@ -337,12 +337,12 @@ msgid "Anonymous participation is not enabled"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:195
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:192
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr ""
@@ -389,7 +389,7 @@ msgid "Internal Error"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:201
+#: lib/graphql/resolvers/discussion.ex:202
msgid "No discussion with ID %{id}"
msgstr ""
@@ -399,7 +399,7 @@ msgid "No profile found for user"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:63
+#: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token"
msgstr ""
@@ -416,12 +416,12 @@ msgid "Participant not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:29
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:51
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr ""
@@ -455,15 +455,10 @@ msgid "Profile is not member of group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:189
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr ""
-#, elixir-format
-#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
-msgid "Provided moderator profile doesn't have permission on this event"
-msgstr ""
-
#, elixir-format
#: lib/graphql/resolvers/report.ex:36
msgid "Report not found"
@@ -496,22 +491,22 @@ msgid "Todo list doesn't exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:69
+#: lib/graphql/resolvers/feed_token.ex:73
msgid "Token does not exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:66
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID"
msgstr ""
#, elixir-format
-#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:358
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:256
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr ""
@@ -526,7 +521,7 @@ msgid "You are not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:151
+#: lib/graphql/resolvers/member.ex:149
msgid "You are not a moderator or admin for this group"
msgstr ""
@@ -546,7 +541,7 @@ msgid "You are not allowed to delete a comment if not connected"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:78
+#: lib/graphql/resolvers/feed_token.ex:82
msgid "You are not allowed to delete a feed token if not connected"
msgstr ""
@@ -562,7 +557,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:155
+#: lib/graphql/resolvers/member.ex:153
msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr ""
@@ -582,12 +577,12 @@ msgid "You cannot invite to this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:72
+#: lib/graphql/resolvers/feed_token.ex:76
msgid "You don't have permission to delete this token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:52
+#: lib/graphql/resolvers/admin.ex:53
msgid "You need to be logged-in and a moderator to list action logs"
msgstr ""
@@ -607,22 +602,22 @@ msgid "You need to be logged-in and a moderator to view a report"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:236
+#: lib/graphql/resolvers/admin.ex:237
msgid "You need to be logged-in and an administrator to access admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:221
+#: lib/graphql/resolvers/admin.ex:222
msgid "You need to be logged-in and an administrator to access dashboard statistics"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:260
+#: lib/graphql/resolvers/admin.ex:261
msgid "You need to be logged-in and an administrator to save admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:76
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr ""
@@ -762,12 +757,12 @@ msgid "You need to be logged in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:116
+#: lib/graphql/resolvers/member.ex:114
msgid "You can't accept this invitation with this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:134
+#: lib/graphql/resolvers/member.ex:132
msgid "You can't reject this invitation with this profile."
msgstr ""
@@ -777,7 +772,7 @@ msgid "File doesn't have an allowed MIME type."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:167
+#: lib/graphql/resolvers/group.ex:175
msgid "Profile is not administrator for the group"
msgstr ""
@@ -792,17 +787,17 @@ msgid "You can't attribute this event to this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:137
+#: lib/graphql/resolvers/member.ex:135
msgid "This invitation doesn't exist."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:179
+#: lib/graphql/resolvers/member.ex:177
msgid "This member already has been rejected."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:186
+#: lib/graphql/resolvers/member.ex:184
msgid "You don't have the right to remove this member."
msgstr ""
@@ -812,7 +807,7 @@ msgid "This username is already taken."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:73
+#: lib/graphql/resolvers/discussion.ex:74
msgid "You must provide either an ID or a slug to access a discussion"
msgstr ""
@@ -827,8 +822,8 @@ msgid "Profile ID provided is not the anonymous profile one"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr ""
@@ -851,3 +846,8 @@ msgstr ""
#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr ""
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr ""
diff --git a/priv/gettext/es/LC_MESSAGES/default.po b/priv/gettext/es/LC_MESSAGES/default.po
index 573c47189..7a5fc7332 100644
--- a/priv/gettext/es/LC_MESSAGES/default.po
+++ b/priv/gettext/es/LC_MESSAGES/default.po
@@ -1036,8 +1036,8 @@ msgstr ""
"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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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 no activó este cambio usted mismo, es probable que alguien haya obtenido "
@@ -1685,21 +1685,22 @@ 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
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr "Flujo de %{name}"
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr "Flujo de eventos privados de %{actor} a %{instance}"
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr "Flujo público de eventos de %{actor} a %{instance}"
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr "Flujo para %{email} en %{instance}"
@@ -1727,3 +1728,8 @@ msgstr "Detalles técnicos"
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr ""
"El servidor de Mobilizon %{instance} parece estar temporalmente inactivo."
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/es/LC_MESSAGES/errors.po b/priv/gettext/es/LC_MESSAGES/errors.po
index 5ea842567..f3d57ba71 100644
--- a/priv/gettext/es/LC_MESSAGES/errors.po
+++ b/priv/gettext/es/LC_MESSAGES/errors.po
@@ -94,780 +94,780 @@ 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:100
#, elixir-format
+#: lib/graphql/resolvers/user.ex:100
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:206
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:210
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:501
#, elixir-format
+#: lib/graphql/resolvers/user.ex:501
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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 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:68
msgid "Group with ID %{id} not found"
msgstr "No se encontró el grupo con ID% {id}"
-#: lib/graphql/resolvers/user.ex:80
#, elixir-format
+#: lib/graphql/resolvers/user.ex:80
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:266
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:406
-#, elixir-format
msgid "No profile found for the moderator user"
msgstr "No se encontró el perfil del usuario moderador"
-#: lib/graphql/resolvers/user.ex:193
#, elixir-format
+#: lib/graphql/resolvers/user.ex:193
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:253 lib/graphql/resolvers/user.ex:218
#, elixir-format
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
-#, elixir-format
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr "El perfil no es propiedad del usuario autenticado"
-#: lib/graphql/resolvers/user.ex:123
#, elixir-format
+#: lib/graphql/resolvers/user.ex:123
msgid "Registrations are not open"
msgstr "Las inscripciones no están abiertas"
-#: lib/graphql/resolvers/user.ex:331
#, elixir-format
+#: lib/graphql/resolvers/user.ex:331
msgid "The current password is invalid"
msgstr "La contraseña actual no es válida"
-#: lib/graphql/resolvers/user.ex:376
#, elixir-format
+#: lib/graphql/resolvers/user.ex:376
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:373
#, elixir-format
+#: lib/graphql/resolvers/user.ex:373
msgid "The new email must be different"
msgstr "El nuevo correo electrónico debe ser diferente"
-#: lib/graphql/resolvers/user.ex:334
#, elixir-format
+#: lib/graphql/resolvers/user.ex:334
msgid "The new password must be different"
msgstr "La nueva contraseña debe ser diferente"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428
#: lib/graphql/resolvers/user.ex:431
-#, elixir-format
msgid "The password provided is invalid"
msgstr "La contraseña proporcionada no es válida"
-#: lib/graphql/resolvers/user.ex:338
#, elixir-format
+#: lib/graphql/resolvers/user.ex:338
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:214
#, elixir-format
+#: lib/graphql/resolvers/user.ex:214
msgid "This user can't reset their password"
msgstr "Este usuario no puede restablecer su contraseña"
-#: lib/graphql/resolvers/user.ex:76
#, elixir-format
+#: lib/graphql/resolvers/user.ex:76
msgid "This user has been disabled"
msgstr "Este usuario ha sido inhabilitado"
-#: lib/graphql/resolvers/user.ex:177
#, elixir-format
+#: lib/graphql/resolvers/user.ex:177
msgid "Unable to validate user"
msgstr "No se puede validar al usuario"
-#: lib/graphql/resolvers/user.ex:409
#, elixir-format
+#: lib/graphql/resolvers/user.ex:409
msgid "User already disabled"
msgstr "El usuario ya está inhabilitado"
-#: lib/graphql/resolvers/user.ex:476
#, elixir-format
+#: lib/graphql/resolvers/user.ex:476
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:240
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:273
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:237
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:96
msgid "You may not list groups unless moderator."
msgstr "No puedes enumerar grupos a menos que seas moderador."
-#: lib/graphql/resolvers/user.ex:381
#, elixir-format
+#: lib/graphql/resolvers/user.ex:381
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:346
#, elixir-format
+#: lib/graphql/resolvers/user.ex:346
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:215
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:436
#, elixir-format
+#: lib/graphql/resolvers/user.ex:436
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:245
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:278
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:180
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:105
#, elixir-format
+#: lib/graphql/resolvers/user.ex:105
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:196 lib/graphql/resolvers/user.ex:221
#, elixir-format
+#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221
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:126
#, elixir-format
+#: lib/graphql/resolvers/user.ex:126
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:92
#, 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:86
#, 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:195
#, elixir-format
+#: lib/graphql/resolvers/person.ex:196
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:192
#, elixir-format
+#: lib/graphql/resolvers/person.ex:193
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:108
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:108
msgid "Comment is already deleted"
msgstr "El comentario ya está eliminado"
-#: lib/graphql/error.ex:92 lib/graphql/resolvers/discussion.ex:62
#, elixir-format
+#: lib/graphql/error.ex:92 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:127
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:127
msgid "Event id not found"
msgstr "ID de evento no encontrado"
+#, elixir-format
#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281
#: lib/graphql/resolvers/event.ex:325
-#, 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"
-#: lib/graphql/resolvers/participant.ex:99
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:99
msgid "Internal Error"
msgstr "Error interno"
-#: lib/graphql/resolvers/discussion.ex:201
#, elixir-format
+#: lib/graphql/resolvers/discussion.ex:202
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:64
msgid "No such feed token"
msgstr "No existe tal token de alimentación"
-#: lib/graphql/resolvers/participant.ex:237
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:237
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"
-#: lib/graphql/resolvers/person.ex:29
#, elixir-format
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr "Persona con ID%{id} no encontrada"
-#: lib/graphql/resolvers/person.ex:51
#, elixir-format
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr "Persona con nombre de usuario %{username} no encontrada"
-#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200
#, 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:170 lib/graphql/resolvers/post.ex:203
#, 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"
+#, 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:88 lib/graphql/resolvers/resource.ex:128
#: lib/graphql/resolvers/resource.ex:157 lib/graphql/resolvers/resource.ex:186 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:161 lib/graphql/resolvers/person.ex:189
#, elixir-format
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr "Perfil no encontrado"
-#: lib/graphql/resolvers/event.ex:145 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"
-
#: lib/graphql/resolvers/report.ex:36
-#, elixir-format
msgid "Report not found"
msgstr "Informe no encontrado"
-#: lib/graphql/resolvers/resource.ex:154 lib/graphql/resolvers/resource.ex:183
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:154 lib/graphql/resolvers/resource.ex:183
msgid "Resource doesn't exist"
msgstr "El recurso no existe"
-#: lib/graphql/resolvers/participant.ex:120
#, 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:260
#, 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:73
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:67 lib/graphql/resolvers/feed_token.ex:70
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:358
#, elixir-format
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr "Usuario no encontrado"
-#: lib/graphql/resolvers/person.ex:256
#, elixir-format
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr "Ya tienes un perfil para este usuario"
-#: lib/graphql/resolvers/participant.ex:130
#, 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/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:149
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:54
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:54
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:113
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:113
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:82
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:76
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:76
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"
-#: lib/graphql/resolvers/member.ex:155
#, elixir-format
+#: lib/graphql/resolvers/member.ex:153
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:104
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:104
msgid "You cannot delete this comment"
msgstr "No puedes borrar este comentario"
-#: lib/graphql/resolvers/event.ex:321
#, elixir-format
+#: lib/graphql/resolvers/event.ex:321
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:76
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:53
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:237
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:222
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:261
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:76
#, elixir-format
+#: lib/graphql/resolvers/discussion.ex:77
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:94
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:94
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:256
#, elixir-format
+#: lib/graphql/resolvers/event.ex:256
msgid "You need to be logged-in to create events"
msgstr "Debes iniciar sesión para crear eventos"
-#: lib/graphql/resolvers/post.ex:140
#, 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:133
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:133
msgid "You need to be logged-in to create resources"
msgstr "Debe iniciar sesión para crear recursos"
-#: lib/graphql/resolvers/event.ex:330
#, elixir-format
+#: lib/graphql/resolvers/event.ex:330
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:211
#, 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:191
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:191
msgid "You need to be logged-in to delete resources"
msgstr "Debes iniciar sesión para eliminar recursos"
-#: lib/graphql/resolvers/participant.ex:104
#, 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:203
#, 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:295
#, elixir-format
+#: lib/graphql/resolvers/event.ex:295
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:178
#, 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:162
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:162
msgid "You need to be logged-in to update resources"
msgstr "Debes iniciar sesión para actualizar los recursos"
-#: lib/graphql/resolvers/resource.ex:218
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:218
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/resource.ex:125
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:125
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:93
#, elixir-format
+#: lib/graphql/error.ex:93
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:114
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:132
msgid "You can't reject this invitation with this profile."
msgstr "No puedes rechazar esta invitación con este perfil."
-#: lib/graphql/resolvers/media.ex:62
#, 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:175
msgid "Profile is not administrator for the group"
msgstr "El perfil no es miembro del grupo"
-#: lib/graphql/resolvers/event.ex:284
#, elixir-format
+#: lib/graphql/resolvers/event.ex:284
msgid "You can't edit this event."
msgstr "No puedes borrar este evento."
-#: lib/graphql/resolvers/event.ex:287
#, elixir-format
+#: lib/graphql/resolvers/event.ex:287
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:135
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:177
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:184
msgid "You don't have the right to remove this member."
msgstr "No tiene derecho a eliminar este miembro."
-#: lib/mobilizon/actors/actor.ex:351
#, 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:73
#, elixir-format
+#: lib/graphql/resolvers/discussion.ex:74
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:245
#, elixir-format
+#: lib/graphql/resolvers/event.ex:245
msgid "Organizer profile is not owned by the user"
msgstr "El perfil del organizador no es propiedad del usuario"
-#: lib/graphql/resolvers/participant.ex:89
#, 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"
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
#, elixir-format
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr "La imagen proporcionada es demasiado pesada"
-#: lib/web/views/utils.ex:33
#, elixir-format
+#: lib/web/views/utils.ex:33
msgid "Index file not found. You need to recompile the front-end."
msgstr "No se encontró el archivo de índice. Necesita recompilar el front-end."
-#: lib/graphql/resolvers/resource.ex:122
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr "Error al crear el recurso"
-#: lib/graphql/resolvers/user.ex:390
#, elixir-format
+#: lib/graphql/resolvers/user.ex:390
msgid "Invalid activation token"
msgstr "Token de activación no válido"
-#: lib/graphql/resolvers/resource.ex:208
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr "No se pueden recuperar los detalles del recurso de esta URL."
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr "El perfil de moderador proporcionado no tiene permiso para este evento"
diff --git a/priv/gettext/fi/LC_MESSAGES/default.po b/priv/gettext/fi/LC_MESSAGES/default.po
index 1c787cfa9..0746805ec 100644
--- a/priv/gettext/fi/LC_MESSAGES/default.po
+++ b/priv/gettext/fi/LC_MESSAGES/default.po
@@ -1017,8 +1017,8 @@ msgstr ""
"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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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 ""
"Jos et tehnyt vaihtoa itse, todennäköisesti joku muu on päässyt käyttämään "
@@ -1658,21 +1658,22 @@ msgstr "Tällä kokeilusivustolla voit koekäyttää Mobilizonia."
#, elixir-format
#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr "%{name} – syöte"
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr "%{actor} – yksityistapahtumien syöte palvelimella %{instance}"
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr "%{actor} – julkisten tapahtumien syöte palvelimella %{instance}"
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr "%{email}-syöte palvelimella %{instance}"
@@ -1695,3 +1696,8 @@ msgstr ""
#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr "Mobilizon-palvelin näyttää olevan väliakaisesti alhaalla."
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/fi/LC_MESSAGES/errors.po b/priv/gettext/fi/LC_MESSAGES/errors.po
index 0db9d2ee5..286327703 100644
--- a/priv/gettext/fi/LC_MESSAGES/errors.po
+++ b/priv/gettext/fi/LC_MESSAGES/errors.po
@@ -100,12 +100,12 @@ msgid "Cannot refresh the token"
msgstr "Merkkiä ei voi päivittää"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:198
+#: lib/graphql/resolvers/group.ex:206
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:202
+#: lib/graphql/resolvers/group.ex:210
msgid "Current profile is not an administrator of the selected group"
msgstr "Nykyinen profiili ei ole valitun ryhmän ylläpitäjä"
@@ -115,13 +115,13 @@ 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: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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 lib/graphql/resolvers/member.ex:80
msgid "Group not found"
msgstr "Ryhmää ei löydy"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:66
+#: lib/graphql/resolvers/group.ex:68
msgid "Group with ID %{id} not found"
msgstr "Tunnuksella %{id} ei löydy ryhmää"
@@ -132,7 +132,7 @@ msgstr ""
"Kirjautuminen epäonnistui - joko sähköpostiosoitteesi tai salasana on väärin."
#, elixir-format
-#: lib/graphql/resolvers/group.ex:258
+#: lib/graphql/resolvers/group.ex:266
msgid "Member not found"
msgstr "Jäsentä ei löydy"
@@ -148,16 +148,16 @@ 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:253 lib/graphql/resolvers/user.ex:218
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr "Profiili ei ole tunnistautuneen käyttäjän omistuksessa"
@@ -225,22 +225,22 @@ msgid "User requested is not logged-in"
msgstr "Pyydetty käyttäjä ei ole kirjautuneena sisään"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:232
+#: lib/graphql/resolvers/group.ex:240
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:265
+#: lib/graphql/resolvers/group.ex:273
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:229
+#: lib/graphql/resolvers/group.ex:237
msgid "You cannot join this group"
msgstr "Et voi liittyä tähän ryhmään"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:94
+#: lib/graphql/resolvers/group.ex:96
msgid "You may not list groups unless moderator."
msgstr "Voit nähdä ryhmäluettelon vain, jos olet moderaattori."
@@ -255,7 +255,7 @@ 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:207
+#: lib/graphql/resolvers/group.ex:215
msgid "You need to be logged-in to delete a group"
msgstr "Ryhmän voi poistaa vain sisäänkirjautuneena"
@@ -265,17 +265,17 @@ 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:237
+#: lib/graphql/resolvers/group.ex:245
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:270
+#: lib/graphql/resolvers/group.ex:278
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:172
+#: lib/graphql/resolvers/group.ex:180
msgid "You need to be logged-in to update a group"
msgstr "Voit päivittää ryhmää vain sisäänkirjautuneena"
@@ -340,12 +340,12 @@ msgid "Anonymous participation is not enabled"
msgstr "Anonyymi osallistuminen ei ole käytössä"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:195
+#: lib/graphql/resolvers/person.ex:196
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:192
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr "Käyttäjän viimeistä identiteettiä ei voi poistaa"
@@ -392,7 +392,7 @@ msgid "Internal Error"
msgstr "Sisäinen virhe"
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:201
+#: lib/graphql/resolvers/discussion.ex:202
msgid "No discussion with ID %{id}"
msgstr "Tunnisteella %{id} ei ole keskustelua"
@@ -402,7 +402,7 @@ msgid "No profile found for user"
msgstr "Käyttäjälle ei löydy profiilia"
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:63
+#: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token"
msgstr "Kyseistä syötemerkkiä ei ole"
@@ -419,12 +419,12 @@ msgid "Participant not found"
msgstr "Osallistujaa ei löydy"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:29
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr "Tunnuksella %{id} ei löydy henkilöä"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:51
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr "Käyttäjänimellä %{username} ei löydy henkilöä"
@@ -458,15 +458,10 @@ msgid "Profile is not member of group"
msgstr "Profiili ei ole ryhmän jäsen"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:189
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr "Profiilia ei löydy"
-#, elixir-format
-#: lib/graphql/resolvers/event.ex:145 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"
-
#, elixir-format
#: lib/graphql/resolvers/report.ex:36
msgid "Report not found"
@@ -499,22 +494,22 @@ msgid "Todo list doesn't exist"
msgstr "Tehtäväluetteloa ei ole"
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:69
+#: lib/graphql/resolvers/feed_token.ex:73
msgid "Token does not exist"
msgstr "Merkkiä ei ole"
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:66
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
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:358
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr "Käyttäjää ei löydy"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:256
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr "Sinulla on jo profiili tälle käyttäjälle"
@@ -529,7 +524,7 @@ msgid "You are not a member of this group"
msgstr "Et ole ryhmän jäsen"
#, elixir-format
-#: lib/graphql/resolvers/member.ex:151
+#: lib/graphql/resolvers/member.ex:149
msgid "You are not a moderator or admin for this group"
msgstr "Et ole ryhmän moderaattori tai ylläpitäjä"
@@ -549,7 +544,7 @@ 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
+#: lib/graphql/resolvers/feed_token.ex:82
msgid "You are not allowed to delete a feed token if not connected"
msgstr "Ilman yhteyttä ei voi poistaa syötemerkkiä"
@@ -566,7 +561,7 @@ msgstr ""
"Et voi poistua tapahtumasta, koska olet ainoa tapahtuman luonut osallistuja"
#, elixir-format
-#: lib/graphql/resolvers/member.ex:155
+#: lib/graphql/resolvers/member.ex:153
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 "
@@ -588,12 +583,12 @@ 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
+#: lib/graphql/resolvers/feed_token.ex:76
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
+#: lib/graphql/resolvers/admin.ex:53
msgid "You need to be logged-in and a moderator to list action logs"
msgstr "Toimintalokien katselu vain moderaattorille sisäänkirjautuneena"
@@ -613,22 +608,22 @@ 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
+#: lib/graphql/resolvers/admin.ex:237
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
+#: lib/graphql/resolvers/admin.ex:222
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
+#: lib/graphql/resolvers/admin.ex:261
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
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr "Pääsy keskusteluihin vain sisäänkirjautuneena"
@@ -768,12 +763,12 @@ msgid "You need to be logged in"
msgstr "Kirjaudu ensin sisään"
#, elixir-format
-#: lib/graphql/resolvers/member.ex:116
+#: lib/graphql/resolvers/member.ex:114
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
+#: lib/graphql/resolvers/member.ex:132
msgid "You can't reject this invitation with this profile."
msgstr "Et voi hylätä kutsua tällä profiililla."
@@ -783,7 +778,7 @@ msgid "File doesn't have an allowed MIME type."
msgstr "Tiedostolla ei ole sallittua MIME-tyyppiä."
#, elixir-format
-#: lib/graphql/resolvers/group.ex:167
+#: lib/graphql/resolvers/group.ex:175
msgid "Profile is not administrator for the group"
msgstr "Profiili ei ole ryhmän ylläpitäjä"
@@ -798,17 +793,17 @@ 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
+#: lib/graphql/resolvers/member.ex:135
msgid "This invitation doesn't exist."
msgstr "Kutsua ei ole."
#, elixir-format
-#: lib/graphql/resolvers/member.ex:179
+#: lib/graphql/resolvers/member.ex:177
msgid "This member already has been rejected."
msgstr "Jäsen on jo hylätty."
#, elixir-format
-#: lib/graphql/resolvers/member.ex:186
+#: lib/graphql/resolvers/member.ex:184
msgid "You don't have the right to remove this member."
msgstr "Sinulla ei ole oikeutta poistaa jäsentä."
@@ -818,7 +813,7 @@ msgid "This username is already taken."
msgstr "Käyttäjänimi on jo käytössä."
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:73
+#: lib/graphql/resolvers/discussion.ex:74
msgid "You must provide either an ID or a slug to access a discussion"
msgstr "Keskusteluun pääsemiseen vaaditaan tunniste tai polkutunnus"
@@ -833,8 +828,8 @@ msgid "Profile ID provided is not the anonymous profile one"
msgstr "Annettu profiilitunniste ei kuulu anonyymille profiilille"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr "Toimitettu kuva on liian suuri"
@@ -843,7 +838,7 @@ msgstr "Toimitettu kuva on liian suuri"
msgid "Index file not found. You need to recompile the front-end."
msgstr ""
-#, elixir-format, fuzzy
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr "Virhe raporttia tallennettaessa"
@@ -857,3 +852,8 @@ msgstr ""
#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr ""
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr "Annetulla moderaattoriprofiililla ei ole oikeuksia tähän tapahtumaan"
diff --git a/priv/gettext/fr/LC_MESSAGES/default.po b/priv/gettext/fr/LC_MESSAGES/default.po
index 6b1c0ea09..bc8f2a79b 100644
--- a/priv/gettext/fr/LC_MESSAGES/default.po
+++ b/priv/gettext/fr/LC_MESSAGES/default.po
@@ -845,8 +845,8 @@ msgid "Hi there! Just a quick note to confirm that the email address linked to y
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 à :"
#, 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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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}."
@@ -1371,21 +1371,22 @@ msgstr "Ceci est un site de démonstration permettant de tester Mobilizon."
#, elixir-format
#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr "Flux de %{name}"
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr "Flux privé des événements de %{actor} sur %{instance}"
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr "Flux public des événements de %{actor} sur %{instance}"
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr "Flux pour %{email} sur %{instance}"
@@ -1408,3 +1409,8 @@ msgstr "Détails techniques"
#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr "Le serveur Mobilizon %{instance} semble être temporairement hors-service."
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/fr/LC_MESSAGES/errors.po b/priv/gettext/fr/LC_MESSAGES/errors.po
index 3cbef01b8..ff5dc0037 100644
--- a/priv/gettext/fr/LC_MESSAGES/errors.po
+++ b/priv/gettext/fr/LC_MESSAGES/errors.po
@@ -96,608 +96,764 @@ msgstr "doit être supérieur ou égal à %{number}"
msgid "must be equal to %{number}"
msgstr "doit être égal à %{number}"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:100
msgid "Cannot refresh the token"
msgstr "Impossible de rafraîchir le jeton"
-#: lib/graphql/resolvers/group.ex:198
+#, elixir-format
+#: lib/graphql/resolvers/group.ex:206
msgid "Current profile is not a member of this group"
msgstr "Le profil actuel n'est pas un membre de ce groupe"
-#: lib/graphql/resolvers/group.ex:202
+#, elixir-format
+#: lib/graphql/resolvers/group.ex:210
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é"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:501
msgid "Error while saving user settings"
msgstr "Erreur lors de la sauvegarde des paramètres utilisateur"
-#: 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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 lib/graphql/resolvers/member.ex:80
msgid "Group not found"
msgstr "Groupe non trouvé"
-#: lib/graphql/resolvers/group.ex:66
+#, elixir-format
+#: lib/graphql/resolvers/group.ex:68
msgid "Group with ID %{id} not found"
msgstr "Groupe avec l'ID %{id} non trouvé"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:80
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."
-#: lib/graphql/resolvers/group.ex:258
+#, elixir-format
+#: lib/graphql/resolvers/group.ex:266
msgid "Member not found"
msgstr "Membre non trouvé"
-#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 lib/graphql/resolvers/user.ex:406
+#, elixir-format
+#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88
+#: lib/graphql/resolvers/user.ex:406
msgid "No profile found for the moderator user"
msgstr "Aucun profil trouvé pour l'utilisateur modérateur"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:193
msgid "No user to validate with this email was found"
msgstr "Aucun·e utilisateur·ice à valider avec cet email n'a été trouvé·e"
-#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/user.ex:218
+#, elixir-format
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
msgid "No user with this email was found"
msgstr "Aucun·e utilisateur·ice avec cette adresse e-mail n'a été trouvé·e"
-#: 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:164 lib/graphql/resolvers/person.ex:198 lib/graphql/resolvers/person.ex:277
-#: lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330 lib/graphql/resolvers/person.ex:342
+#, 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:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr "Le profil n'est pas possédé par l'utilisateur connecté"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:123
msgid "Registrations are not open"
msgstr "Les inscriptions ne sont pas ouvertes"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:331
msgid "The current password is invalid"
msgstr "Le mot de passe actuel est invalid"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:376
msgid "The new email doesn't seem to be valid"
msgstr "La nouvelle adresse e-mail ne semble pas être valide"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:373
msgid "The new email must be different"
msgstr "La nouvelle adresse e-mail doit être différente"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:334
msgid "The new password must be different"
msgstr "Le nouveau mot de passe doit être différent"
-#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 lib/graphql/resolvers/user.ex:431
+#, elixir-format
+#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428
+#: lib/graphql/resolvers/user.ex:431
msgid "The password provided is invalid"
msgstr "Le mot de passe fourni est invalide"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:338
msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters."
msgstr ""
"Le mot de passe que vous avez choisi est trop court. Merci de vous assurer que votre mot de passe contienne au moins "
"6 caractères."
+#, elixir-format
#: lib/graphql/resolvers/user.ex:214
msgid "This user can't reset their password"
msgstr "Cet·te utilisateur·ice ne peut pas réinitialiser son mot de passe"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:76
msgid "This user has been disabled"
msgstr "Cet·te utilisateur·ice a été désactivé·e"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:177
msgid "Unable to validate user"
msgstr "Impossible de valider l'utilisateur·ice"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:409
msgid "User already disabled"
msgstr "L'utilisateur·ice est déjà désactivé·e"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:476
msgid "User requested is not logged-in"
msgstr "L'utilisateur·ice demandé·e n'est pas connecté·e"
-#: lib/graphql/resolvers/group.ex:232
+#, elixir-format
+#: lib/graphql/resolvers/group.ex:240
msgid "You are already a member of this group"
msgstr "Vous êtes déjà membre de ce groupe"
-#: lib/graphql/resolvers/group.ex:265
+#, elixir-format
+#: lib/graphql/resolvers/group.ex:273
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"
-#: lib/graphql/resolvers/group.ex:229
+#, elixir-format
+#: lib/graphql/resolvers/group.ex:237
msgid "You cannot join this group"
msgstr "Vous ne pouvez pas rejoindre ce groupe"
-#: lib/graphql/resolvers/group.ex:94
+#, elixir-format
+#: lib/graphql/resolvers/group.ex:96
msgid "You may not list groups unless moderator."
msgstr "Vous ne pouvez pas lister les groupes sauf à être modérateur·ice."
+#, elixir-format
#: lib/graphql/resolvers/user.ex:381
msgid "You need to be logged-in to change your email"
msgstr "Vous devez être connecté·e pour changer votre adresse e-mail"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:346
msgid "You need to be logged-in to change your password"
msgstr "Vous devez être connecté·e pour changer votre mot de passe"
-#: lib/graphql/resolvers/group.ex:207
+#, elixir-format
+#: lib/graphql/resolvers/group.ex:215
msgid "You need to be logged-in to delete a group"
msgstr "Vous devez être connecté·e pour supprimer un groupe"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:436
msgid "You need to be logged-in to delete your account"
msgstr "Vous devez être connecté·e pour supprimer votre compte"
-#: lib/graphql/resolvers/group.ex:237
+#, elixir-format
+#: lib/graphql/resolvers/group.ex:245
msgid "You need to be logged-in to join a group"
msgstr "Vous devez être connecté·e pour rejoindre un groupe"
-#: lib/graphql/resolvers/group.ex:270
+#, elixir-format
+#: lib/graphql/resolvers/group.ex:278
msgid "You need to be logged-in to leave a group"
msgstr "Vous devez être connecté·e pour quitter un groupe"
-#: lib/graphql/resolvers/group.ex:172
+#, elixir-format
+#: lib/graphql/resolvers/group.ex:180
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:105
msgid "You need to have an existing token to get a refresh token"
msgstr "Vous devez avoir un jeton existant pour obtenir un jeton de rafraîchissement"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221
msgid "You requested again a confirmation email too soon"
msgstr "Vous avez à nouveau demandé un email de confirmation trop vite"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:126
msgid "Your email is not on the allowlist"
msgstr "Votre adresse e-mail n'est pas sur la liste d'autorisations"
+#, elixir-format
#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94
msgid "Error while performing background task"
msgstr "Erreur lors de l'exécution d'une tâche d'arrière-plan"
+#, elixir-format
#: lib/graphql/resolvers/actor.ex:27
msgid "No profile found with this ID"
msgstr "Aucun profil trouvé avec cet ID"
+#, elixir-format
#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91
msgid "No remote profile found with this ID"
msgstr "Aucun profil distant trouvé avec cet ID"
+#, elixir-format
#: lib/graphql/resolvers/actor.ex:69
msgid "Only moderators and administrators can suspend a profile"
msgstr "Seul·es les modérateur·ice et les administrateur·ices peuvent suspendre un profil"
+#, elixir-format
#: lib/graphql/resolvers/actor.ex:99
msgid "Only moderators and administrators can unsuspend a profile"
msgstr "Seul·es les modérateur·ice et les administrateur·ices peuvent annuler la suspension d'un profil"
+#, elixir-format
#: lib/graphql/resolvers/actor.ex:24
msgid "Only remote profiles may be refreshed"
msgstr "Seuls les profils distants peuvent être rafraîchis"
+#, elixir-format
#: lib/graphql/resolvers/actor.ex:61
msgid "Profile already suspended"
msgstr "Le profil est déjà suspendu"
+#, elixir-format
#: 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:86
msgid "Anonymous participation is not enabled"
msgstr "La participation anonyme n'est pas activée"
-#: lib/graphql/resolvers/person.ex:195
+#, elixir-format
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr "Impossible de supprimer le ou la dernier·ère administrateur·ice d'un groupe"
-#: lib/graphql/resolvers/person.ex:192
+#, elixir-format
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr "Impossible de supprimer le dernier profil d'un·e utilisateur·ice"
+#, elixir-format
#: lib/graphql/resolvers/comment.ex:108
msgid "Comment is already deleted"
msgstr "Le commentaire est déjà supprimé"
+#, elixir-format
#: lib/graphql/error.ex:92 lib/graphql/resolvers/discussion.ex:62
msgid "Discussion not found"
msgstr "Discussion non trouvée"
+#, elixir-format
#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77
msgid "Error while saving report"
msgstr "Erreur lors de la sauvegarde du signalement"
+#, elixir-format
#: lib/graphql/resolvers/report.ex:96
msgid "Error while updating report"
msgstr "Erreur lors de la mise à jour du signalement"
+#, elixir-format
#: lib/graphql/resolvers/participant.ex:127
msgid "Event id not found"
msgstr "ID de l'événement non trouvé"
-#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 lib/graphql/resolvers/event.ex:325
+#, elixir-format
+#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281
+#: lib/graphql/resolvers/event.ex:325
msgid "Event not found"
msgstr "Événement non trouvé"
-#: lib/graphql/resolvers/participant.ex:83 lib/graphql/resolvers/participant.ex:124
-#: lib/graphql/resolvers/participant.ex:156
+#, 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'événement avec cet ID %{id} n'existe pas"
+#, elixir-format
#: lib/graphql/resolvers/participant.ex:99
msgid "Internal Error"
msgstr "Erreur interne"
-#: lib/graphql/resolvers/discussion.ex:201
+#, elixir-format
+#: lib/graphql/resolvers/discussion.ex:202
msgid "No discussion with ID %{id}"
msgstr "Aucune discussion avec l'ID %{id}"
+#, elixir-format
#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168
msgid "No profile found for user"
msgstr "Aucun profil trouvé pour l'utilisateur modérateur"
-#: lib/graphql/resolvers/feed_token.ex:63
+#, elixir-format
+#: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token"
msgstr "Aucun jeton de flux correspondant"
+#, elixir-format
#: 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}"
-#: 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
+#: 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"
-#: lib/graphql/resolvers/person.ex:29
+#, elixir-format
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr "Personne avec l'ID %{id} non trouvé"
-#: lib/graphql/resolvers/person.ex:51
+#, elixir-format
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr "Personne avec le nom %{name} non trouvé"
+#, 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 du billet n'est pas un ID valide"
+#, elixir-format
#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203
msgid "Post doesn't exist"
msgstr "Le billet n'existe pas"
+#, elixir-format
#: lib/graphql/resolvers/member.ex:83
msgid "Profile invited doesn't exist"
msgstr "Le profil invité n'existe pas"
+#, elixir-format
#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96
msgid "Profile is already a member of this group"
msgstr "Ce profil est déjà membre de ce groupe"
-#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 lib/graphql/resolvers/post.ex:206
-#: lib/graphql/resolvers/resource.ex:88 lib/graphql/resolvers/resource.ex:128 lib/graphql/resolvers/resource.ex:157
-#: lib/graphql/resolvers/resource.ex:186 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
+#: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173
+#: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:88 lib/graphql/resolvers/resource.ex:128
+#: lib/graphql/resolvers/resource.ex:157 lib/graphql/resolvers/resource.ex:186 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
msgid "Profile is not member of group"
msgstr "Le profil n'est pas un·e membre du groupe"
-#: lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:189
+#, elixir-format
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr "Profile non trouvé"
-#: lib/graphql/resolvers/event.ex:145 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"
-
+#, elixir-format
#: lib/graphql/resolvers/report.ex:36
msgid "Report not found"
msgstr "Groupe non trouvé"
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:154 lib/graphql/resolvers/resource.ex:183
msgid "Resource doesn't exist"
msgstr "La ressource n'existe pas"
+#, elixir-format
#: 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:260
msgid "This token is invalid"
msgstr "Ce jeton est invalide"
+#, elixir-format
#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219
msgid "Todo doesn't exist"
msgstr "Ce todo n'existe pas"
-#: lib/graphql/resolvers/todos.ex:75 lib/graphql/resolvers/todos.ex:191 lib/graphql/resolvers/todos.ex:216
+#, elixir-format
+#: lib/graphql/resolvers/todos.ex:75 lib/graphql/resolvers/todos.ex:191
+#: lib/graphql/resolvers/todos.ex:216
msgid "Todo list doesn't exist"
msgstr "Cette todo-liste n'existe pas"
-#: lib/graphql/resolvers/feed_token.ex:69
+#, elixir-format
+#: lib/graphql/resolvers/feed_token.ex:73
msgid "Token does not exist"
msgstr "Ce jeton n'existe pas"
-#: lib/graphql/resolvers/feed_token.ex:66
+#, elixir-format
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID"
msgstr "Ce jeton n'est pas un UUID valide"
-#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:358
+#, elixir-format
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr "Utilisateur·ice non trouvé·e"
-#: lib/graphql/resolvers/person.ex:256
+#, elixir-format
+#: lib/graphql/resolvers/person.ex:257
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: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/member.ex:86
msgid "You are not a member of this group"
msgstr "Vous n'êtes pas membre de ce groupe"
-#: lib/graphql/resolvers/member.ex:151
+#, elixir-format
+#: lib/graphql/resolvers/member.ex:149
msgid "You are not a moderator or admin for this group"
msgstr "Vous n'êtes pas administrateur·ice ou modérateur·ice de ce groupe"
+#, elixir-format
#: lib/graphql/resolvers/comment.ex:54
msgid "You are not allowed to create a comment if not connected"
msgstr "Vous n'êtes pas autorisé·e à créer un commentaire si non connecté·e"
+#, elixir-format
#: lib/graphql/resolvers/feed_token.ex:41
msgid "You are not allowed to create a feed token if not connected"
msgstr "Vous n'êtes pas autorisé·e à créer un jeton de flux si non connecté·e"
+#, elixir-format
#: lib/graphql/resolvers/comment.ex:113
msgid "You are not allowed to delete a comment if not connected"
msgstr "Vous n'êtes pas autorisé·e à supprimer un commentaire si non connecté·e"
-#: lib/graphql/resolvers/feed_token.ex:78
+#, elixir-format
+#: lib/graphql/resolvers/feed_token.ex:82
msgid "You are not allowed to delete a feed token if not connected"
msgstr "Vous n'êtes pas autorisé·e à supprimer un jeton de flux si non connecté·e"
+#, elixir-format
#: lib/graphql/resolvers/comment.ex:76
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"
-#: lib/graphql/resolvers/participant.ex:163 lib/graphql/resolvers/participant.ex:192
+#, 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 "Vous ne pouvez pas quitter cet événement car vous en êtes le ou la seule créateur·ice participant"
-#: lib/graphql/resolvers/member.ex:155
+#, elixir-format
+#: lib/graphql/resolvers/member.ex:153
msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr ""
"Vous ne pouvez pas vous définir avec un rôle de membre inférieur pour ce groupe car vous en êtes le ou la seul·e "
"administrateur·ice"
+#, elixir-format
#: lib/graphql/resolvers/comment.ex:104
msgid "You cannot delete this comment"
msgstr "Vous ne pouvez pas supprimer ce commentaire"
+#, elixir-format
#: lib/graphql/resolvers/event.ex:321
msgid "You cannot delete this event"
msgstr "Vous ne pouvez pas supprimer cet événement"
+#, elixir-format
#: lib/graphql/resolvers/member.ex:89
msgid "You cannot invite to this group"
msgstr "Vous ne pouvez pas rejoindre ce groupe"
-#: lib/graphql/resolvers/feed_token.ex:72
+#, elixir-format
+#: lib/graphql/resolvers/feed_token.ex:76
msgid "You don't have permission to delete this token"
msgstr "Vous n'avez pas la permission de supprimer ce jeton"
-#: lib/graphql/resolvers/admin.ex:52
+#, elixir-format
+#: lib/graphql/resolvers/admin.ex:53
msgid "You need to be logged-in and a moderator to list action logs"
msgstr "Vous devez être connecté·e et une modérateur·ice pour lister les journaux de modération"
+#, elixir-format
#: lib/graphql/resolvers/report.ex:26
msgid "You need to be logged-in and a moderator to list reports"
msgstr "Vous devez être connecté·e et une modérateur·ice pour lister les signalements"
+#, elixir-format
#: lib/graphql/resolvers/report.ex:101
msgid "You need to be logged-in and a moderator to update a report"
msgstr "Vous devez être connecté·e et une modérateur·ice pour modifier un signalement"
+#, elixir-format
#: lib/graphql/resolvers/report.ex:41
msgid "You need to be logged-in and a moderator to view a report"
msgstr "Vous devez être connecté·e pour et une modérateur·ice pour visionner un signalement"
-#: lib/graphql/resolvers/admin.ex:236
+#, elixir-format
+#: lib/graphql/resolvers/admin.ex:237
msgid "You need to be logged-in and an administrator to access admin settings"
msgstr "Vous devez être connecté·e et un·e administrateur·ice pour accéder aux paramètres administrateur"
-#: lib/graphql/resolvers/admin.ex:221
+#, elixir-format
+#: lib/graphql/resolvers/admin.ex:222
msgid "You need to be logged-in and an administrator to access dashboard statistics"
msgstr "Vous devez être connecté·e et un·e administrateur·ice pour accéder aux panneau de statistiques"
-#: lib/graphql/resolvers/admin.ex:260
+#, elixir-format
+#: lib/graphql/resolvers/admin.ex:261
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"
-#: lib/graphql/resolvers/discussion.ex:76
+#, elixir-format
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr "Vous devez être connecté·e pour accéder aux discussions"
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:94
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:256
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:140
msgid "You need to be logged-in to create posts"
msgstr "Vous devez être connecté·e pour quitter un groupe"
+#, elixir-format
#: lib/graphql/resolvers/report.ex:74
msgid "You need to be logged-in to create reports"
msgstr "Vous devez être connecté·e pour quitter un groupe"
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:133
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:330
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:211
msgid "You need to be logged-in to delete posts"
msgstr "Vous devez être connecté·e pour supprimer un groupe"
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:191
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: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: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:295
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:178
msgid "You need to be logged-in to update posts"
msgstr "Vous devez être connecté·e pour mettre à jour un groupe"
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:162
msgid "You need to be logged-in to update resources"
msgstr "Vous devez être connecté·e pour mettre à jour un groupe"
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:218
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/resource.ex:125
msgid "Parent resource doesn't belong to this group"
msgstr "La ressource parente n'appartient pas à ce groupe"
+#, elixir-format
#: lib/mobilizon/users/user.ex:109
msgid "The chosen password is too short."
msgstr "Le mot de passe choisi est trop court."
+#, 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 "Le jeton d'inscription est déjà utilisé, cela ressemble à un problème de notre côté."
+#, elixir-format
#: lib/mobilizon/users/user.ex:104
msgid "This email is already used."
msgstr "Cette adresse e-mail est déjà utilisée."
+#, elixir-format
#: lib/graphql/error.ex:88
msgid "Post not found"
msgstr "Billet non trouvé"
+#, elixir-format
#: lib/graphql/error.ex:75
msgid "Invalid arguments passed"
msgstr "Paramètres fournis invalides"
+#, elixir-format
#: lib/graphql/error.ex:81
msgid "Invalid credentials"
msgstr "Identifiants invalides"
+#, elixir-format
#: lib/graphql/error.ex:79
msgid "Reset your password to login"
msgstr "Réinitialiser votre mot de passe pour vous connecter"
+#, elixir-format
#: lib/graphql/error.ex:86 lib/graphql/error.ex:91
msgid "Resource not found"
msgstr "Ressource non trouvée"
+#, elixir-format
#: lib/graphql/error.ex:93
msgid "Something went wrong"
msgstr "Quelque chose s'est mal passé"
+#, elixir-format
#: lib/graphql/error.ex:74
msgid "Unknown Resource"
msgstr "Ressource inconnue"
+#, elixir-format
#: lib/graphql/error.ex:84
msgid "You don't have permission to do this"
msgstr "Vous n'avez pas la permission de faire ceci"
+#, elixir-format
#: lib/graphql/error.ex:76
msgid "You need to be logged in"
msgstr "Vous devez être connecté·e"
-#: lib/graphql/resolvers/member.ex:116
+#, elixir-format
+#: lib/graphql/resolvers/member.ex:114
msgid "You can't accept this invitation with this profile."
msgstr "Vous ne pouvez pas accepter cette invitation avec ce profil."
-#: lib/graphql/resolvers/member.ex:134
+#, elixir-format
+#: lib/graphql/resolvers/member.ex:132
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/media.ex:62
msgid "File doesn't have an allowed MIME type."
msgstr "Le fichier n'a pas un type MIME autorisé."
-#: lib/graphql/resolvers/group.ex:167
+#, elixir-format
+#: lib/graphql/resolvers/group.ex:175
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:284
msgid "You can't edit this event."
msgstr "Vous ne pouvez pas éditer cet événement."
+#, elixir-format
#: lib/graphql/resolvers/event.ex:287
msgid "You can't attribute this event to this profile."
msgstr "Vous ne pouvez pas attribuer cet événement à ce profil."
-#: lib/graphql/resolvers/member.ex:137
+#, elixir-format
+#: lib/graphql/resolvers/member.ex:135
msgid "This invitation doesn't exist."
msgstr "Cette invitation n'existe pas."
-#: lib/graphql/resolvers/member.ex:179
+#, elixir-format
+#: lib/graphql/resolvers/member.ex:177
msgid "This member already has been rejected."
msgstr "Ce·tte membre a déjà été rejetté·e."
-#: lib/graphql/resolvers/member.ex:186
+#, elixir-format
+#: lib/graphql/resolvers/member.ex:184
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:351
msgid "This username is already taken."
msgstr "Cet identifiant est déjà pris."
-#: lib/graphql/resolvers/discussion.ex:73
+#, elixir-format
+#: lib/graphql/resolvers/discussion.ex:74
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:245
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:89
msgid "Profile ID provided is not the anonymous profile one"
msgstr "L'ID du profil fourni n'est pas celui du profil anonyme"
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158 lib/graphql/resolvers/person.ex:250
+#, elixir-format
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr "L'image fournie est trop lourde"
+#, elixir-format
#: lib/web/views/utils.ex:33
msgid "Index file not found. You need to recompile the front-end."
msgstr "Fichier d'index non trouvé. Vous devez recompiler le front-end."
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr "Erreur lors de la création de la resource"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:390
msgid "Invalid activation token"
msgstr "Jeton d'activation invalide"
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr "Impossible de récupérer les détails de la ressource depuis cette URL."
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr "Le profil modérateur fourni n'a pas de permissions sur cet événement"
diff --git a/priv/gettext/gl/LC_MESSAGES/default.po b/priv/gettext/gl/LC_MESSAGES/default.po
index 9033bf190..56231825a 100644
--- a/priv/gettext/gl/LC_MESSAGES/default.po
+++ b/priv/gettext/gl/LC_MESSAGES/default.po
@@ -1014,8 +1014,8 @@ msgstr ""
"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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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 ""
"Se non fixeches este cambio ti mesma, é probable que alguén obtivese acceso "
@@ -1653,21 +1653,22 @@ msgstr "Este é un sitio web de exemplo para probar Mobilizon."
#, elixir-format
#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr "fonte de %{name}"
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr "fonte dos eventos privados de %{actor} en %{instance}"
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr "fonte dos eventos públicos de %{actor} en %{instance}"
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr "Fonte para %{email} en %{instance}"
@@ -1693,3 +1694,8 @@ msgstr "Detalles técnicos"
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr ""
"O servidor Mobilizon %{instance} semella estar temporalmente fóra de servizo."
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/gl/LC_MESSAGES/errors.po b/priv/gettext/gl/LC_MESSAGES/errors.po
index c58266c1d..cb9eed829 100644
--- a/priv/gettext/gl/LC_MESSAGES/errors.po
+++ b/priv/gettext/gl/LC_MESSAGES/errors.po
@@ -94,775 +94,775 @@ 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:100
#, elixir-format
+#: lib/graphql/resolvers/user.ex:100
msgid "Cannot refresh the token"
msgstr "Non puido actualizar o token"
-#: lib/graphql/resolvers/group.ex:198
#, elixir-format
+#: lib/graphql/resolvers/group.ex:206
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:210
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:501
#, elixir-format
+#: lib/graphql/resolvers/user.ex:501
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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 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:68
msgid "Group with ID %{id} not found"
msgstr "Grupo con ID %{id} non atopado"
-#: lib/graphql/resolvers/user.ex:80
#, elixir-format
+#: lib/graphql/resolvers/user.ex:80
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:266
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:406
-#, 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:193
#, elixir-format
+#: lib/graphql/resolvers/user.ex:193
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:253 lib/graphql/resolvers/user.ex:218
#, elixir-format
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
-#, elixir-format
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr "O perfil non pertence a unha usuaria autenticada"
-#: lib/graphql/resolvers/user.ex:123
#, elixir-format
+#: lib/graphql/resolvers/user.ex:123
msgid "Registrations are not open"
msgstr "O rexistro está pechado"
-#: lib/graphql/resolvers/user.ex:331
#, elixir-format
+#: lib/graphql/resolvers/user.ex:331
msgid "The current password is invalid"
msgstr "O contrasinal actual non é válido"
-#: lib/graphql/resolvers/user.ex:376
#, elixir-format
+#: lib/graphql/resolvers/user.ex:376
msgid "The new email doesn't seem to be valid"
msgstr "O novo email non semella ser válido"
-#: lib/graphql/resolvers/user.ex:373
#, elixir-format
+#: lib/graphql/resolvers/user.ex:373
msgid "The new email must be different"
msgstr "O novo email ten que ser diferente"
-#: lib/graphql/resolvers/user.ex:334
#, elixir-format
+#: lib/graphql/resolvers/user.ex:334
msgid "The new password must be different"
msgstr "O novo contrasinal ten que ser diferente"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428
#: lib/graphql/resolvers/user.ex:431
-#, elixir-format
msgid "The password provided is invalid"
msgstr "O contrasinal escrito non é válido"
-#: lib/graphql/resolvers/user.ex:338
#, elixir-format
+#: lib/graphql/resolvers/user.ex:338
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:214
#, elixir-format
+#: lib/graphql/resolvers/user.ex:214
msgid "This user can't reset their password"
msgstr "Esta usuaria non pode restablecer o seu contrasinal"
-#: lib/graphql/resolvers/user.ex:76
#, elixir-format
+#: lib/graphql/resolvers/user.ex:76
msgid "This user has been disabled"
msgstr "Estab usuaria foi desactivada"
-#: lib/graphql/resolvers/user.ex:177
#, elixir-format
+#: lib/graphql/resolvers/user.ex:177
msgid "Unable to validate user"
msgstr "Non se puido validar a usuaria"
-#: lib/graphql/resolvers/user.ex:409
#, elixir-format
+#: lib/graphql/resolvers/user.ex:409
msgid "User already disabled"
msgstr "A usuaria xa está desactivada"
-#: lib/graphql/resolvers/user.ex:476
#, elixir-format
+#: lib/graphql/resolvers/user.ex:476
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:240
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:273
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:237
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:96
msgid "You may not list groups unless moderator."
msgstr "Non podes facer listas de grupos porque non es moderadora."
-#: lib/graphql/resolvers/user.ex:381
#, elixir-format
+#: lib/graphql/resolvers/user.ex:381
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:346
#, elixir-format
+#: lib/graphql/resolvers/user.ex:346
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:215
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:436
#, elixir-format
+#: lib/graphql/resolvers/user.ex:436
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:245
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:278
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:180
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:105
#, elixir-format
+#: lib/graphql/resolvers/user.ex:105
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:196 lib/graphql/resolvers/user.ex:221
#, elixir-format
+#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221
msgid "You requested again a confirmation email too soon"
msgstr "Solicitaches demasiado pronto un email de confirmación"
-#: lib/graphql/resolvers/user.ex:126
#, elixir-format
+#: lib/graphql/resolvers/user.ex:126
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:92
#, 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:86
#, 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:195
#, elixir-format
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr "Non se pode eliminar a última administradora dun grupo"
-#: lib/graphql/resolvers/person.ex:192
#, elixir-format
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr "Non se pode eliminar a última identidade dunha usuaria"
-#: lib/graphql/resolvers/comment.ex:108
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:108
msgid "Comment is already deleted"
msgstr "O comentario xa foi eliminado"
-#: lib/graphql/error.ex:92 lib/graphql/resolvers/discussion.ex:62
#, elixir-format
+#: lib/graphql/error.ex:92 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:127
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:127
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:281
#: lib/graphql/resolvers/event.ex:325
-#, 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}"
-#: lib/graphql/resolvers/participant.ex:99
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:99
msgid "Internal Error"
msgstr "Erro interno"
-#: lib/graphql/resolvers/discussion.ex:201
#, elixir-format
+#: lib/graphql/resolvers/discussion.ex:202
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:64
msgid "No such feed token"
msgstr "Non hai tal token da fonte"
-#: lib/graphql/resolvers/participant.ex:237
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:237
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"
-#: lib/graphql/resolvers/person.ex:29
#, elixir-format
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr "Non se atopou a persoa con ID %{id}"
-#: lib/graphql/resolvers/person.ex:51
#, elixir-format
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr "Non se atopa a persoa con nome de usuaria %{username}"
-#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200
#, 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:170 lib/graphql/resolvers/post.ex:203
#, 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"
+#, 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:88 lib/graphql/resolvers/resource.ex:128
#: lib/graphql/resolvers/resource.ex:157 lib/graphql/resolvers/resource.ex:186 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:161 lib/graphql/resolvers/person.ex:189
#, elixir-format
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr "Perfil non atopado"
-#: lib/graphql/resolvers/event.ex:145 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"
-
#: lib/graphql/resolvers/report.ex:36
-#, elixir-format
msgid "Report not found"
msgstr "Denuncia non atopada"
-#: lib/graphql/resolvers/resource.ex:154 lib/graphql/resolvers/resource.ex:183
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:154 lib/graphql/resolvers/resource.ex:183
msgid "Resource doesn't exist"
msgstr "Non existe o recurso"
-#: lib/graphql/resolvers/participant.ex:120
#, 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:260
#, 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:73
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:67 lib/graphql/resolvers/feed_token.ex:70
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:358
#, elixir-format
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr "Usuaria non atopada"
-#: lib/graphql/resolvers/person.ex:256
#, elixir-format
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr "Xa tes un perfil para esta usuaria"
-#: lib/graphql/resolvers/participant.ex:130
#, 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/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:149
msgid "You are not a moderator or admin for this group"
msgstr "Non es moderadora ou administradora deste grupo"
-#: lib/graphql/resolvers/comment.ex:54
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:54
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:113
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:113
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:82
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:76
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:76
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"
-#: lib/graphql/resolvers/member.ex:155
#, elixir-format
+#: lib/graphql/resolvers/member.ex:153
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:104
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:104
msgid "You cannot delete this comment"
msgstr "Non podes eliminar este comentario"
-#: lib/graphql/resolvers/event.ex:321
#, elixir-format
+#: lib/graphql/resolvers/event.ex:321
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:76
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:53
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:237
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:222
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:261
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:76
#, elixir-format
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr "Tes que estar conectada para acceder ás conversas"
-#: lib/graphql/resolvers/resource.ex:94
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:94
msgid "You need to be logged-in to access resources"
msgstr "Tes que estar conectada para acceder ós recursos"
-#: lib/graphql/resolvers/event.ex:256
#, elixir-format
+#: lib/graphql/resolvers/event.ex:256
msgid "You need to be logged-in to create events"
msgstr "Tes que estar conectada para crear eventos"
-#: lib/graphql/resolvers/post.ex:140
#, 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:133
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:133
msgid "You need to be logged-in to create resources"
msgstr "Tes que estar conectada para crear recursos"
-#: lib/graphql/resolvers/event.ex:330
#, elixir-format
+#: lib/graphql/resolvers/event.ex:330
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:211
#, 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:191
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:191
msgid "You need to be logged-in to delete resources"
msgstr "Tes que estar conectada para eliminar recursos"
-#: lib/graphql/resolvers/participant.ex:104
#, 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:203
#, 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:295
#, elixir-format
+#: lib/graphql/resolvers/event.ex:295
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:178
#, 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:162
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:162
msgid "You need to be logged-in to update resources"
msgstr "Tes que estar conectada para actualizar recursos"
-#: lib/graphql/resolvers/resource.ex:218
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:218
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/resource.ex:125
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:125
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:93
#, elixir-format
+#: lib/graphql/error.ex:93
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:114
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:132
msgid "You can't reject this invitation with this profile."
msgstr "Non podes rexeitar este convite con este perfil."
-#: lib/graphql/resolvers/media.ex:62
#, 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:175
msgid "Profile is not administrator for the group"
msgstr "O perfil non é administrador do grupo"
-#: lib/graphql/resolvers/event.ex:284
#, elixir-format
+#: lib/graphql/resolvers/event.ex:284
msgid "You can't edit this event."
msgstr "Non podes editar este evento."
-#: lib/graphql/resolvers/event.ex:287
#, elixir-format
+#: lib/graphql/resolvers/event.ex:287
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:135
msgid "This invitation doesn't exist."
msgstr "O convite non existe."
-#: lib/graphql/resolvers/member.ex:179
#, elixir-format
+#: lib/graphql/resolvers/member.ex:177
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:184
msgid "You don't have the right to remove this member."
msgstr "Non tes permiso para eliminar este membro."
-#: lib/mobilizon/actors/actor.ex:351
#, 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:73
#, elixir-format
+#: lib/graphql/resolvers/discussion.ex:74
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:245
#, elixir-format
+#: lib/graphql/resolvers/event.ex:245
msgid "Organizer profile is not owned by the user"
msgstr "O perfil da organización non pertence á usuaria"
-#: lib/graphql/resolvers/participant.ex:89
#, 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"
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
#, elixir-format
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr "A imaxe proporcionada é demasiado grande (mb)"
-#: lib/web/views/utils.ex:33
#, elixir-format
+#: lib/web/views/utils.ex:33
msgid "Index file not found. You need to recompile the front-end."
msgstr "Non se atopa o ficheiro Index. Tes que recompilar o front-end."
-#: lib/graphql/resolvers/resource.ex:122
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr "Erro ao crear o recurso"
-#: lib/graphql/resolvers/user.ex:390
#, elixir-format
+#: lib/graphql/resolvers/user.ex:390
msgid "Invalid activation token"
msgstr "O token de activación non é válido"
-#: lib/graphql/resolvers/resource.ex:208
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr "Non se puideron obter os detalles do recurso desde o URL."
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr "O perfil da moderadora proporcionado non ten permisos neste evento"
diff --git a/priv/gettext/hu/LC_MESSAGES/default.po b/priv/gettext/hu/LC_MESSAGES/default.po
index bd8ff92bb..bcd9cdf34 100644
--- a/priv/gettext/hu/LC_MESSAGES/default.po
+++ b/priv/gettext/hu/LC_MESSAGES/default.po
@@ -887,8 +887,8 @@ msgid "Hi there! Just a quick note to confirm that the email address linked to y
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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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 ""
@@ -1413,21 +1413,22 @@ msgstr ""
#, elixir-format
#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr ""
@@ -1450,3 +1451,8 @@ msgstr ""
#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr ""
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/hu/LC_MESSAGES/errors.po b/priv/gettext/hu/LC_MESSAGES/errors.po
index cadc4ebf1..4bed746a2 100644
--- a/priv/gettext/hu/LC_MESSAGES/errors.po
+++ b/priv/gettext/hu/LC_MESSAGES/errors.po
@@ -110,784 +110,784 @@ 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:100
#, elixir-format
+#: lib/graphql/resolvers/user.ex:100
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:206
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:210
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:501
#, elixir-format
+#: lib/graphql/resolvers/user.ex:501
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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 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:68
msgid "Group with ID %{id} not found"
msgstr "Nem található %{id} azonosítóval rendelkező csoport"
-#: lib/graphql/resolvers/user.ex:80
#, elixir-format
+#: lib/graphql/resolvers/user.ex:80
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:266
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:406
-#, 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:193
#, elixir-format
+#: lib/graphql/resolvers/user.ex:193
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:253 lib/graphql/resolvers/user.ex:218
#, elixir-format
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
msgid "No user with this email was found"
msgstr "Nem található ezzel az e-mail-címmel rendelkező felhasználó"
+#, 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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
-#, elixir-format
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr "A profilt nem hitelesített felhasználó birtokolja"
-#: lib/graphql/resolvers/user.ex:123
#, elixir-format
+#: lib/graphql/resolvers/user.ex:123
msgid "Registrations are not open"
msgstr "A regisztrációk nincsenek nyitva"
-#: lib/graphql/resolvers/user.ex:331
#, elixir-format
+#: lib/graphql/resolvers/user.ex:331
msgid "The current password is invalid"
msgstr "A jelenlegi jelszó érvénytelen"
-#: lib/graphql/resolvers/user.ex:376
#, elixir-format
+#: lib/graphql/resolvers/user.ex:376
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:373
#, elixir-format
+#: lib/graphql/resolvers/user.ex:373
msgid "The new email must be different"
msgstr "Az új e-mail-címnek eltérőnek kell lennie"
-#: lib/graphql/resolvers/user.ex:334
#, elixir-format
+#: lib/graphql/resolvers/user.ex:334
msgid "The new password must be different"
msgstr "Az új jelszónak eltérőnek kell lennie"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428
#: lib/graphql/resolvers/user.ex:431
-#, elixir-format
msgid "The password provided is invalid"
msgstr "A megadott jelszó érvénytelen"
-#: lib/graphql/resolvers/user.ex:338
#, elixir-format
+#: lib/graphql/resolvers/user.ex:338
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:214
#, elixir-format
+#: lib/graphql/resolvers/user.ex:214
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:76
#, elixir-format
+#: lib/graphql/resolvers/user.ex:76
msgid "This user has been disabled"
msgstr "Ez a felhasználó le lett tiltva"
-#: lib/graphql/resolvers/user.ex:177
#, elixir-format
+#: lib/graphql/resolvers/user.ex:177
msgid "Unable to validate user"
msgstr "Nem lehet ellenőrizni a felhasználót"
-#: lib/graphql/resolvers/user.ex:409
#, elixir-format
+#: lib/graphql/resolvers/user.ex:409
msgid "User already disabled"
msgstr "A felhasználó már le van tiltva"
-#: lib/graphql/resolvers/user.ex:476
#, elixir-format
+#: lib/graphql/resolvers/user.ex:476
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:240
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:273
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:237
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:96
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:381
#, elixir-format
+#: lib/graphql/resolvers/user.ex:381
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:346
#, elixir-format
+#: lib/graphql/resolvers/user.ex:346
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:215
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:436
#, elixir-format
+#: lib/graphql/resolvers/user.ex:436
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:245
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:278
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:180
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:105
#, elixir-format
+#: lib/graphql/resolvers/user.ex:105
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:196 lib/graphql/resolvers/user.ex:221
#, elixir-format
+#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221
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:126
#, elixir-format
+#: lib/graphql/resolvers/user.ex:126
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:92
#, 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:86
#, 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:195
#, elixir-format
+#: lib/graphql/resolvers/person.ex:196
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:192
#, elixir-format
+#: lib/graphql/resolvers/person.ex:193
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:108
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:108
msgid "Comment is already deleted"
msgstr "A hozzászólást már törölték"
-#: lib/graphql/error.ex:92 lib/graphql/resolvers/discussion.ex:62
#, elixir-format
+#: lib/graphql/error.ex:92 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:127
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:127
msgid "Event id not found"
msgstr "Nem található az eseményazonosító"
+#, elixir-format
#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281
#: lib/graphql/resolvers/event.ex:325
-#, elixir-format
msgid "Event not found"
msgstr "Nem található az esemény"
+#, 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 "Ezzel a(z) %{id} azonosítóval rendelkező esemény nem létezik"
-#: lib/graphql/resolvers/participant.ex:99
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:99
msgid "Internal Error"
msgstr "Belső hiba"
-#: lib/graphql/resolvers/discussion.ex:201
#, elixir-format
+#: lib/graphql/resolvers/discussion.ex:202
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:64
msgid "No such feed token"
msgstr "Nincs ilyen hírforrástoken"
-#: lib/graphql/resolvers/participant.ex:237
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:237
msgid "Participant already has role %{role}"
msgstr "A résztvevő már rendelkezik %{role} szereppel"
+#, 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 "Nem található a résztvevő"
-#: lib/graphql/resolvers/person.ex:29
#, elixir-format
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr "Nem található %{id} azonosítóval rendelkező személy"
-#: lib/graphql/resolvers/person.ex:51
#, elixir-format
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr "Nem található %{username} felhasználónévvel rendelkező személy"
-#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200
#, 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:170 lib/graphql/resolvers/post.ex:203
#, 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"
+#, 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:88 lib/graphql/resolvers/resource.ex:128
#: lib/graphql/resolvers/resource.ex:157 lib/graphql/resolvers/resource.ex:186 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:161 lib/graphql/resolvers/person.ex:189
#, elixir-format
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr "Nem található a profil"
-#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
#, elixir-format
-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
msgid "Report not found"
msgstr "Nem található a jelentés"
-#: lib/graphql/resolvers/resource.ex:154 lib/graphql/resolvers/resource.ex:183
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:154 lib/graphql/resolvers/resource.ex:183
msgid "Resource doesn't exist"
msgstr "Az erőforrás nem létezik"
-#: lib/graphql/resolvers/participant.ex:120
#, 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:260
#, 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:73
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:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID"
msgstr "A token nem érvényes UUID"
-#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:358
#, elixir-format
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr "Nem található a felhasználó"
-#: lib/graphql/resolvers/person.ex:256
#, elixir-format
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr "Már rendelkezik profillal ehhez a felhasználóhoz"
-#: lib/graphql/resolvers/participant.ex:130
#, 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/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:149
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:54
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:54
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:113
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:113
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:82
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:76
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:76
msgid "You are not allowed to update a comment if not connected"
msgstr "Nem frissíthet hozzászólást, ha nincs kapcsolódva"
+#, 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 ""
"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:153
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:104
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:104
msgid "You cannot delete this comment"
msgstr "Nem tudja törölni ezt a hozzászólást"
-#: lib/graphql/resolvers/event.ex:321
#, elixir-format
+#: lib/graphql/resolvers/event.ex:321
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:76
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:53
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:237
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:222
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:261
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:76
#, elixir-format
+#: lib/graphql/resolvers/discussion.ex:77
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:94
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:94
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:256
#, elixir-format
+#: lib/graphql/resolvers/event.ex:256
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:140
#, 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:133
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:133
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:330
#, elixir-format
+#: lib/graphql/resolvers/event.ex:330
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:211
#, 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:191
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:191
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:104
#, 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:203
#, 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:295
#, elixir-format
+#: lib/graphql/resolvers/event.ex:295
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:178
#, 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:162
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:162
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:218
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:218
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/resource.ex:125
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:125
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:93
#, elixir-format
+#: lib/graphql/error.ex:93
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:114
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:132
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/media.ex:62
#, 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:175
msgid "Profile is not administrator for the group"
msgstr "A profil nem adminisztrátor ennél a csoportnál"
-#: lib/graphql/resolvers/event.ex:284
#, elixir-format
+#: lib/graphql/resolvers/event.ex:284
msgid "You can't edit this event."
msgstr "Nem tudja szerkeszteni ezt az eseményt."
-#: lib/graphql/resolvers/event.ex:287
#, elixir-format
+#: lib/graphql/resolvers/event.ex:287
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:135
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:177
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:184
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:351
#, 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:73
#, elixir-format
+#: lib/graphql/resolvers/discussion.ex:74
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:245
#, elixir-format
+#: lib/graphql/resolvers/event.ex:245
msgid "Organizer profile is not owned by the user"
msgstr "A szervező profilját nem a felhasználó birtokolja"
-#: lib/graphql/resolvers/participant.ex:89
#, 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"
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
#, elixir-format
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr "A megadott fénykép túl nehéz"
-#: lib/web/views/utils.ex:33
#, elixir-format
+#: lib/web/views/utils.ex:33
msgid "Index file not found. You need to recompile the front-end."
msgstr "Indexfájl nem található. Újra kell fordítania az előtétprogramot."
-#: lib/graphql/resolvers/resource.ex:122
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr "Hiba az erőforrás létrehozáskor"
-#: lib/graphql/resolvers/user.ex:390
#, elixir-format
+#: lib/graphql/resolvers/user.ex:390
msgid "Invalid activation token"
msgstr "Érvénytelen aktiválási token"
-#: lib/graphql/resolvers/resource.ex:208
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr "Nem lehet lekérni az erőforrás részleteit erről az URL-ről."
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr "A megadott moderátorprofilnak nincs jogosultsága ezen az eseményen"
diff --git a/priv/gettext/it/LC_MESSAGES/default.po b/priv/gettext/it/LC_MESSAGES/default.po
index 5071f20b8..c76ce8529 100644
--- a/priv/gettext/it/LC_MESSAGES/default.po
+++ b/priv/gettext/it/LC_MESSAGES/default.po
@@ -3,8 +3,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 14:40+0000\n"
-"PO-Revision-Date: 2021-03-25 14:25+0000\n"
-"Last-Translator: deadmorose \n"
+"PO-Revision-Date: 2021-04-28 14:49+0000\n"
+"Last-Translator: Leo Durruti \n"
"Language-Team: Italian \n"
"Language: it\n"
@@ -12,268 +12,268 @@ 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.5.1\n"
+"X-Generator: Weblate 4.6\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 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/web/templates/email/report.html.eex:74
+#, elixir-format
msgid "%{title} by %{creator}"
msgstr "%{title} di %{creator}"
-#, elixir-format
#: lib/web/templates/email/registration_confirmation.html.eex:58
+#, elixir-format
msgid "Activate my account"
msgstr "Attiva il mio account"
-#, 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 "Chiedi alla comunità su Framacolibri"
-#, elixir-format
#: lib/web/templates/email/report.text.eex:15
+#, elixir-format
msgid "Comments"
msgstr "Commenti"
-#, 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 "Istruzioni per reimpostare la tua password su %{instance}"
-#, elixir-format
#: lib/web/templates/email/report.text.eex:21
+#, elixir-format
msgid "Reason"
msgstr "Spiegazione"
-#, elixir-format
#: lib/web/templates/email/password_reset.html.eex:61
+#, elixir-format
msgid "Reset Password"
msgstr "Resetta la password"
-#, 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 ""
"Resettare la tua password è semplice. Premi il pulsante sotto e segui le "
"istruzioni. Potrai riutilizzare Mobilizon in pochissimo tempo."
-#, elixir-format
#: lib/web/email/user.ex:28
+#, elixir-format
msgid "Instructions to confirm your Mobilizon account on %{instance}"
msgstr "Istruzioni per confermare il tuo account Mobilizon su %{instance}"
-#, elixir-format
#: lib/web/email/admin.ex:24
+#, elixir-format
msgid "New report on Mobilizon instance %{instance}"
msgstr "Nuovo rapporto sull'istanza di Mobilizion %{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 "Vai alla pagina dell'evento"
-#, elixir-format
#: lib/web/templates/email/report.text.eex:1
+#, elixir-format
msgid "New report from %{reporter} on %{instance}"
msgstr "Nuovo rapporto da %{reporter} su %{instance}"
-#, elixir-format
#: lib/web/templates/email/event_participation_approved.text.eex:1
+#, elixir-format
msgid "Participation approved"
msgstr "Partecipazione approvata"
-#, 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 "Reset della password"
-#, 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 ""
"Resettare la tua password è semplice. Seleziona il link sotto e segui le "
"istruzioni. Potrai riutilizzare Mobilizon in pochissimo tempo."
-#, 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 ""
"Hai creato un account su %{host} con questa email. Sei ad un click "
"dall'attivarlo. Se non sei tu ignora questo messaggio."
-#, elixir-format
#: lib/web/email/participation.ex:112
+#, elixir-format
msgid "Your participation to event %{title} has been approved"
msgstr "La tua partecipazione all'evento %{title} è stata approvata"
-#, elixir-format
#: lib/web/email/participation.ex:70
+#, elixir-format
msgid "Your participation to event %{title} has been rejected"
msgstr "La tua partecipazione all'evento %{title} è stata rifiutata"
-#, elixir-format
#: lib/web/email/event.ex:37
+#, elixir-format
msgid "Event %{title} has been updated"
msgstr "L'evento %{title} è stato aggiornato"
-#, elixir-format
#: lib/web/templates/email/event_updated.text.eex:15
+#, elixir-format
msgid "New title: %{title}"
msgstr "Nuovo titolo: %{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 "Hai richiesto una nuova password per il tuo account su %{instance}."
-#, elixir-format
#: lib/web/templates/email/email.html.eex:85
+#, elixir-format
msgid "Warning"
msgstr "Attenzione"
-#, elixir-format
#: lib/web/email/participation.ex:135
+#, elixir-format
msgid "Confirm your participation to event %{title}"
msgstr "Conferma la tua partecipazione all'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 per l'identità attualmente selezionata"
-#, elixir-format
#: lib/web/templates/api/privacy.html.eex:74
+#, elixir-format
msgctxt "terms"
msgid "An internal user ID"
msgstr "Un ID utente 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 ""
"Qualsiasi informazione che raccogliamo da te può essere utilizzata nel "
"seguenti modi:"
-#, elixir-format
#: lib/web/templates/api/privacy.html.eex:9
+#, elixir-format
msgctxt "terms"
msgid "Basic account information"
msgstr "Informazioni di base sull'account"
-#, 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 condividere informazioni pericolose su 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 "Divulghiamo informazioni a terzi?"
-#, elixir-format
#: lib/web/templates/api/privacy.html.eex:68
+#, elixir-format
msgctxt "terms"
msgid "Do we use cookies?"
msgstr "Usiamo i cookies?"
-#, elixir-format
#: lib/web/templates/api/privacy.html.eex:51
+#, elixir-format
msgctxt "terms"
msgid "How do we protect your information?"
msgstr "Come proteggiamo le tue informazioni?"
-#, elixir-format
#: lib/web/templates/api/privacy.html.eex:29
+#, elixir-format
msgctxt "terms"
msgid "IPs and other metadata"
msgstr "IPs e altri metadati"
-#, elixir-format
#: lib/web/templates/api/privacy.html.eex:17
+#, elixir-format
msgctxt "terms"
msgid "Published events and comments"
msgstr "Eventi e commenti pubblicati"
-#, 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 gli indirizzi IP associati agli utenti registrati per non più di 12 "
"mesi."
-#, elixir-format
#: lib/web/templates/api/privacy.html.eex:76
+#, elixir-format
msgctxt "terms"
msgid "Tokens to authenticate you"
msgstr "Tokens per autenticarti"
-#, 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 ""
"Possiamo anche conservare i registri del server che includono l'indirizzo IP "
"di ogni richiesta al nostro server."
-#, 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 ""
"Memorizziamo le seguenti informazioni sul tuo dispositivo quando ti connetti:"
-#, elixir-format
#: lib/web/templates/api/privacy.html.eex:58
+#, elixir-format
msgctxt "terms"
msgid "We will make a good faith effort to:"
msgstr "Facciamo tutto il possibile per:"
-#, elixir-format
#: lib/web/templates/api/privacy.html.eex:35
+#, elixir-format
msgctxt "terms"
msgid "What do we use your information for?"
msgstr "Per cosa usiamo le tue informazioni?"
-#, elixir-format
#: lib/web/templates/api/privacy.html.eex:57
+#, elixir-format
msgctxt "terms"
msgid "What is our data retention policy?"
msgstr "Qual'è la nostra politica di conservazione dei dati?"
-#, 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 "Puoi eliminare irreversibilmente il tuo account in qualsiasi momento."
-#, elixir-format
#: lib/web/templates/api/privacy.html.eex:115
+#, elixir-format
msgctxt "terms"
msgid "Changes to our Privacy Policy"
msgstr "Modifiche alla nostra politica sulla privacy"
-#, 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 ""
"General_Data_Protection_Regulation\">General Data Protection Regulation) "
"non usare questo sito."
-#, 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 ""
@@ -294,30 +294,30 @@ msgstr ""
"27s_Online_Privacy_Protection_Act\">Children's Online Privacy Protection "
"Act) non usare questo sito."
-#, 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 decidiamo di modificare la politica sulla privacy, pubblicheremo i "
"cambiamenti su questa pagina."
-#, 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 ""
"I requisiti di legge possono essere diversi se questo server si trova in "
"un'altra giurisdizione."
-#, elixir-format
#: lib/web/templates/api/privacy.html.eex:103
+#, elixir-format
msgctxt "terms"
msgid "Site usage by children"
msgstr "Utilizzo del sito da parte dei bambini"
-#, 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 ""
@@ -327,8 +327,8 @@ msgstr ""
"rispondere a indagini, e/o altre richieste o\n"
"…domande."
-#, 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 ""
@@ -336,8 +336,8 @@ msgstr ""
"indirizzo IP con altri noti per determinare \n"
"…l'evasione del divieto o altre violazioni."
-#, 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 ""
@@ -346,89 +346,89 @@ msgstr ""
"…interagire con i contenuti di altre persone e pubblicare i tuoi contenuti "
"solo se hai effettuato l'accesso."
-#, elixir-format
#: lib/web/templates/api/privacy.html.eex:6
+#, elixir-format
msgctxt "terms"
msgid "What information do we collect?"
msgstr "Quali informazioni raccogliamo?"
-#, elixir-format
#: lib/web/email/user.ex:176
+#, elixir-format
msgid "Mobilizon on %{instance}: confirm your email address"
msgstr "Mobilizon su %{instance}: conferma il tuo indirizzo email"
-#, elixir-format
#: lib/web/email/user.ex:152
+#, elixir-format
msgid "Mobilizon on %{instance}: email changed"
msgstr "Mobilizon su %{instance}: email modificata"
-#, 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 programmato oggi"
msgstr[1] "%{nb_events} eventi programmati oggi"
-#, 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] "Hai un evento oggi:"
msgstr[1] "Hai %{total} eventi oggi:"
-#, 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} ti ha appena invitato a unirti al suo gruppo %{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 "Sbrigati!"
-#, elixir-format
#: lib/web/email/notification.ex:24
+#, elixir-format
msgid "Don't forget to go to %{title}"
msgstr "Non dimenticare di andare 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 "Tenersi pronti per %{title}"
-#, elixir-format
#: lib/web/templates/email/group_invite.html.eex:59
+#, elixir-format
msgid "See my groups"
msgstr "Visualizza i miei gruppi"
-#, 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 accettare questo invito, vai ai tuoi gruppi."
-#, elixir-format
#: lib/web/templates/email/before_event_notification.text.eex:5
+#, elixir-format
msgid "View the event on: %{link}"
msgstr "Visualizza l'evento su: %{link}"
-#, elixir-format
#: lib/web/email/group.ex:33
+#, elixir-format
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:71
+#, elixir-format
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: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 richiesta di partecipazione per l'evento %{title} da elaborare"
@@ -436,21 +436,21 @@ msgstr[1] ""
"%{number_participation_requests} richieste di partecipazione per l'evento "
"%{title} da elaborare"
-#, 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] "Hai un evento questa settimana:"
msgstr[1] "Hai %{total} eventi questa settimana:"
-#, elixir-format
#: lib/service/metadata/utils.ex:52
+#, elixir-format
msgid "The event organizer didn't add any description."
msgstr "L'organizzatore dell'evento non ha aggiunto alcuna descrizione."
-#, 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 ""
"la password viene sottoposta ad hashing utilizzando un potente algoritmo "
"unidirezionale."
-#, 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 ""
@@ -475,20 +475,20 @@ msgstr ""
"appropriato per rispettare la legge, far rispettare le politiche del nostro "
"sito o proteggere i nostri o altri diritti, proprietà o sicurezza."
-#, elixir-format
#: lib/web/templates/api/terms.html.eex:23
+#, elixir-format
msgctxt "terms"
msgid "Accepting these Terms"
msgstr "Accettazione di queste Condizioni"
-#, elixir-format
#: lib/web/templates/api/terms.html.eex:27
+#, elixir-format
msgctxt "terms"
msgid "Changes to these Terms"
msgstr "Modifiche a queste Condizioni d'Utilizzo"
-#, 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 ""
@@ -501,16 +501,16 @@ msgstr ""
"assumere tutti i rischi sull'uso che ne fai e sulla fiducia che attribuisci "
"ad essi."
-#, 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 ""
"inoltre accetti di non essere in nessun modo relazionato col Servizio o con "
"altri utenti se farai una delle seguenti azioni:"
-#, 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 ""
@@ -518,24 +518,24 @@ msgstr ""
"o altre funzionalità progettate per proteggere il Servizio, gli utenti del "
"Servizio o terze parti."
-#, 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 ""
"Raccogliere informazioni personali su altri utenti o intimidire, minacciare, "
"perseguitare o molestare in altro modo altri utenti del Servizio;"
-#, 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 ""
"Creare contenuti che sono illegali o illeciti o che possono dare luogo a "
"responsabilità penali;"
-#, 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 ""
"commerciali, copyright, diritti alla privacy, diritti di pubblicità o altri "
"diritti intellettuali o di altro tipo di qualsiasi parte;"
-#, elixir-format
#: lib/web/templates/api/terms.html.eex:42
+#, elixir-format
msgctxt "terms"
msgid "Creating Accounts"
msgstr "Creazione degli Accounts"
-#, elixir-format
#: lib/web/templates/api/terms.html.eex:89
+#, elixir-format
msgctxt "terms"
msgid "Entire Agreement"
msgstr "Intero Accordo"
-#, elixir-format
#: lib/web/templates/api/terms.html.eex:92
+#, elixir-format
msgctxt "terms"
msgid "Feedback"
msgstr "Opinione"
-#, elixir-format
#: lib/web/templates/api/terms.html.eex:83
+#, elixir-format
msgctxt "terms"
msgid "Hyperlinks and Third Party Content"
msgstr "Collegamenti ipertestuali e contenuti di terze parti"
-#, 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 infrangete uno di questi Termini avete il diritto di sospendere o "
"disabilitare l'accesso al Servizio o il suo uso."
-#, 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 ""
"Impersonare o pubblicare per conto di qualsiasi persona o entità o "
"altrimenti travisare la propria affiliazione con una persona o entità;"
-#, 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 ""
@@ -593,26 +593,26 @@ msgstr ""
"che metti a disposizione del Servizio, inclusa la sua legalità, affidabilità "
"e adeguatezza."
-#, elixir-format
#: lib/web/templates/api/terms.html.eex:39
+#, elixir-format
msgctxt "terms"
msgid "Privacy Policy"
-msgstr "Politica sulla Privacy (Privacy Policy)"
+msgstr "Politica sulla Privacy"
-#, elixir-format
#: lib/web/templates/api/terms.html.eex:95
+#, elixir-format
msgctxt "terms"
msgid "Questions & Contact Information"
msgstr "Domande e Informazioni di Contatto"
-#, elixir-format
#: lib/web/templates/api/terms.html.eex:87
+#, elixir-format
msgctxt "terms"
msgid "Termination"
msgstr "Termine"
-#, 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 ""
@@ -621,14 +621,14 @@ msgstr ""
"appieno del Servizio o che potrebbe danneggiare, disabilitare, "
"sovraccaricare o compromettere il funzionamento del Servizio;"
-#, elixir-format
#: lib/web/templates/api/terms.html.eex:47
+#, elixir-format
msgctxt "terms"
msgid "Your Content & Conduct"
msgstr "I tuoi Contenuti e la tua Condotta"
-#, 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 ""
@@ -641,8 +641,8 @@ msgstr ""
"di % {instance_name} del sito. L'utilizzo di tali siti Web collegati "
"è a rischio dell'utente."
-#, 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 ""
@@ -651,16 +651,16 @@ msgstr ""
"condotta e alle regole di moderazione. La violazione di queste regole può "
"anche comportare la disattivazione o la sospensione del tuo account."
-#, 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 ""
"Per i dettagli completi sul software Mobilizon vedi qui ."
-#, 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 ""
@@ -669,8 +669,8 @@ msgstr ""
") sito web e servizio (collettivamente, \"Servizio\"). Questi sono i "
"nostri termini di servizio (\"Termini\"). Si prega di leggerli attentamente."
-#, 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 ""
@@ -679,8 +679,8 @@ msgstr ""
"piè di pagina del nostro sito web. È tua responsabilità controllare "
"regolarmente il sito web per eventuali modifiche ai presenti Termini."
-#, 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 ""
@@ -688,8 +688,8 @@ msgstr ""
"preghiamo di non pubblicare, linkare, o rendere disponibile sul nostro "
"Servizio o attraverso esso uno dei seguenti elementi:"
-#, 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 ""
@@ -697,8 +697,8 @@ msgstr ""
"indirizzi e-mail, numeri di previdenza sociale e numeri di carte di credito);"
" 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 ""
@@ -710,8 +710,8 @@ msgstr ""
"quelle altre istanze termina qui. Se per qualche motivo, qualche altra "
"istanza non elimina il contenuto, non possiamo essere ritenuti responsabili."
-#, 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 ""
@@ -720,8 +720,8 @@ msgstr ""
"sostituendo qualsiasi accordo precedente tra te e % {instance_name} "
"relativo al tuo utilizzo di il servizio."
-#, 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 ""
@@ -731,16 +731,16 @@ msgstr ""
"significa che sei autorizzato e persino incoraggiato a prendere il codice "
"sorgente, modificarlo e 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, dati corrotti o altri file o codice dannosi, disturbanti o "
"distruttivi."
-#, 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 ""
@@ -750,30 +750,30 @@ msgstr ""
"un certo periodo di tempo. I registri di accesso al server Web potrebbero "
"anche essere archiviati per qualche tempo nel 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 ""
"Domande o commenti sul Servizio possono essere indirizzati a noi "
"all'indirizzo %{contact}"
-#, elixir-format
#: lib/web/templates/api/terms.html.eex:79
+#, elixir-format
msgctxt "terms"
msgid "Source code"
msgstr "Codice sorgente"
-#, 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 ""
"Adoriamo i feedback. Fateci sapere cosa ne pensate del Servizio, dei "
"presenti Termini e, in generale,%{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 ""
@@ -786,16 +786,16 @@ msgstr ""
"violazione dei presenti termini o per altri comportamenti che ritengono "
"inappropriati, minacciosi, offensivi o dannosi."
-#, 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 utilizzerà, trasmetterà o rivenderà i tuoi dati "
"personali"
-#, 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 ""
@@ -804,8 +804,8 @@ msgstr ""
"contatta direttamente "
"i suoi contributori ."
-#, 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 ""
@@ -813,8 +813,8 @@ msgstr ""
"ospitata sull'istanza sia adeguatamente moderata in base alle regole "
"definite."
-#, 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 ""
@@ -823,8 +823,8 @@ msgstr ""
"appdotnet/terms-of-service\"> App .net , anch'esse concesse in 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 ""
@@ -833,22 +833,22 @@ msgstr ""
"discourse/discourse\"> Discourse , anch'esse concesse in licenza CC BY-SA ."
-#, elixir-format
#: lib/web/templates/api/terms.html.eex:3
+#, elixir-format
msgctxt "terms"
msgid "Short version"
msgstr "Versione breve"
-#, 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 ""
"Il servizio è fornito senza garanzie e questi termini possono cambiare in "
"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 ""
@@ -856,8 +856,8 @@ msgstr ""
"licenses/by-sa/4.0/\">CC BY-SA. È stato aggiornato l'ultima volta il 18 "
"giugno 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 ""
@@ -865,85 +865,85 @@ msgstr ""
"licenses/by-sa/4.0/\"> CC BY-SA . È stato aggiornato l'ultima volta il "
"22 giugno 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 ""
"Devi rispettare le altre persone e le regole di % {instance_name} "
"quando utilizzi il servizio"
-#, 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 "Devi rispettare la legge quando utilizzi % {instance_name} "
-#, elixir-format
#: lib/web/templates/api/terms.html.eex:5
+#, elixir-format
msgctxt "terms"
msgid "Your content is yours"
msgstr "I tuoi dati ti appartengono"
-#, elixir-format
#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51
+#, elixir-format
msgid "Confirm my e-mail address"
msgstr "Conferma il mio indirizzo e-mail"
-#, 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 "Conferma il tuo indirizzo e-mail"
-#, 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 ""
"Ciao! Ti sei appena registrato per partecipare a questo evento: «% {title}». "
"Conferma l'indirizzo e-mail che hai fornito:"
-#, 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 "Bisogno di aiuto? Qualcosa non funziona correttamente?"
-#, 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 ""
"Hai creato un account su % {host} con questo indirizzo email. Sei a "
"un clic di distanza dall'attivarlo."
-#, elixir-format
#: lib/web/templates/email/report.html.eex:13
+#, elixir-format
msgid "New report on %{instance}"
msgstr "Nuova segnalazione sull'istanza %{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'indirizzo email del tuo account su % {host} verrà modificato in:"
-#, 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 ""
"Hai richiesto una nuova password per il tuo account su % {instance} ."
-#, elixir-format
#: lib/web/templates/email/email.text.eex:5
+#, elixir-format
msgid "Please do not use it for real purposes."
msgstr "Si prega di non usarlo per scopi reali."
-#, 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] ""
@@ -954,9 +954,9 @@ msgstr[1] ""
"pagine dell'evento attraverso il links sotto e seleziona il pulsante "
"'Partecipo'."
-#, 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] "Hai una richiesta di partecipazione in sospeso da esaminare:"
@@ -964,67 +964,67 @@ msgstr[1] ""
"Hai %{number_participation_requests} richieste di partecipazione in sospeso "
"da esaminare:"
-#, elixir-format
#: lib/web/templates/email/email.text.eex:11
+#, elixir-format
msgid "%{instance} is powered by Mobilizon."
msgstr "% {instance} è alimentata da Mobilizon."
-#, elixir-format
#: lib/web/templates/email/email.html.eex:142
+#, elixir-format
msgid "%{instance} is powered by Mobilizon."
msgstr "%{instance} è alimentata da 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 richiesta in sospeso!"
-#, 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 è in arrivo!"
-#, 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 "Conferma il nuovo indirizzo e-mail"
-#, elixir-format
#: lib/web/templates/email/event_updated.html.eex:84
+#, elixir-format
msgid "End"
msgstr "Fine"
-#, elixir-format
#: lib/web/templates/email/event_updated.text.eex:21
+#, elixir-format
msgid "End %{ends_on}"
msgstr "Fine %{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 aggiornato!"
-#, elixir-format
#: lib/web/templates/email/report.html.eex:88
+#, elixir-format
msgid "Flagged comments"
msgstr "Commenti contrassegnati"
-#, 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 ""
"Buone notizie: uno degli organizzatori dell'evento ha appena approvato la "
"tua richiesta. Aggiorna il tuo calendario, perché ora sei nella lista degli "
"invitati!"
-#, 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 ""
"Ciao! Sembra che tu volessi modificare l'indirizzo email collegato al tuo "
@@ -1032,16 +1032,16 @@ msgstr ""
"pulsante in basso per confermare la modifica. Potrai quindi accedere a% "
"{instance} con questo nuovo indirizzo 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 ""
"Ciao! Solo una breve nota per confermare che l'indirizzo email collegato al "
"tuo account su% {host} è stato cambiato da questo 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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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 ""
"Se non hai attivato tu stesso questa modifica, è probabile che qualcuno "
@@ -1049,179 +1049,179 @@ msgstr ""
"modifica immediatamente la password. Se non riesci ad accedere, contatta "
"l'amministratore su% {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 hai attivato tu stesso la modifica, ignora questo messaggio. La tua "
"password non verrà modificata finché non fai clic sul collegamento sopra."
-#, 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 hai attivato questa email, puoi tranquillamente ignorarla."
-#, 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 desideri annullare la tua partecipazione, visita la pagina dell'evento "
"tramite il link in alto e fai clic sul pulsante «Partecipanti»."
-#, 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 "Scopri di più su Mobilizon qui!"
-#, elixir-format
#: lib/web/templates/email/event_updated.html.eex:94
+#, elixir-format
msgid "Location"
msgstr "Luogo"
-#, elixir-format
#: lib/web/templates/email/event_updated.html.eex:104
+#, elixir-format
msgid "Location address was removed"
msgstr "L'indirizzo del luogo è stato rimosso"
-#, 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 "Gestisci le richieste in sospeso"
-#, 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 "Ci sei quasi!"
-#, 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 "Conferma del nuovo indirizzo e-mail"
-#, elixir-format
#: lib/web/templates/email/report.html.eex:106
+#, elixir-format
msgid "Reasons for report"
msgstr "Ragioni della segnalazione"
-#, 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 ""
"Qualcuno su % {instance} ha segnalato i seguenti contenuti da "
"analizzare:"
-#, 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 "Peccato! Non ci sei andato."
-#, elixir-format
#: lib/web/templates/email/event_updated.html.eex:74
+#, elixir-format
msgid "Start"
msgstr "Inizio"
-#, elixir-format
#: lib/web/templates/email/event_updated.text.eex:18
+#, elixir-format
msgid "Start %{begins_on}"
msgstr "Inizio %{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 ""
"Ci sono stati cambiamenti in %{title}, così abbiamo pensato di fartelo "
"sapere."
-#, 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 "Questo evento è stato annullato dai suoi organizzatori. Spiacente!"
-#, 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 "L'evento è stato confermato"
-#, 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 ""
"Questo evento deve ancora essere confermato: gli organizzatori ti faranno "
"sapere se lo confermano."
-#, 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 ""
"Purtroppo gli organizzatori hanno rifiutato la tua domanda di partecipazione."
-#, elixir-format
#: lib/web/templates/email/email_changed_new.html.eex:51
+#, elixir-format
msgid "Verify your email address"
msgstr "Verifica il tuo indirizzo e-mail"
-#, elixir-format
#: lib/web/templates/email/report.html.eex:126
+#, elixir-format
msgid "View report"
msgstr "Visualizza la segnalazione"
-#, elixir-format
#: lib/web/templates/email/report.text.eex:24
+#, elixir-format
msgid "View report:"
msgstr "Visualizza la segnalazione:"
-#, 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 "Visualizza la pagina dell'evento"
-#, elixir-format
#: lib/web/templates/email/event_updated.html.eex:121
+#, elixir-format
msgid "Visit the updated event page"
msgstr "Visita la pagina dell'evento aggiornata"
-#, elixir-format
#: lib/web/templates/email/event_updated.text.eex:23
+#, elixir-format
msgid "Visit the updated event page: %{link}"
msgstr "Visita la pagina dell'evento aggiornata:% {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 "Che succede questa settimana?"
-#, 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 "Cosa succede oggi?"
-#, 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 ""
"Desideri aggiornare o annullare la tua partecipazione, è sufficiente "
"accedere alla pagina dell'evento tramite il link in alto e fare clic sul "
"pulsante Partecipanti."
-#, 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 ""
"Hai ricevuto questa email perché hai scelto di ricevere notifiche per "
@@ -1229,130 +1229,130 @@ msgstr ""
"disabilitare o modificare le impostazioni di notifica nelle impostazioni "
"dell'account utente in «Notifiche»."
-#, elixir-format
#: lib/web/templates/email/event_participation_rejected.text.eex:5
+#, elixir-format
msgid "You issued a request to attend %{title}."
msgstr "Hai effettuato una domanda di partecipazione 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 "Di recente hai richiesto di partecipare a %{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 "Ce l'hai fatta!"
-#, 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 hai attivato tu stesso la modifica, ignora questo messaggio."
-#, elixir-format
#: lib/web/templates/email/email.html.eex:89
+#, elixir-format
msgid "Please do not use it for real purposes."
msgstr " Si prega di non utilizzarlo per scopi reali. "
-#, 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 ritieni che si tratti di un errore, puoi contattare gli amministratori "
"del gruppo in modo che possano aggiungerti di nuovo."
-#, 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 "Addio, e grazie per il pesce!"
-#, elixir-format
#: lib/web/email/group.ex:63
+#, elixir-format
msgid "You have been removed from group %{group}"
msgstr "Sei stato rimosso dal gruppo %{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 ""
"Sei stato rimosso dal gruppo %{group}. Non potrai più accedere al contenuto "
"privato di questo gruppo."
-#, 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} ti ha appena invitato a partecipare al suo gruppo "
"%{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 ""
"Sei stato rimosso dal gruppo %{link_start}%{group}%{link_end}. Non "
"potrai più accedere al contenuto privato di questo gruppo."
-#, 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 ""
"Poiché questo gruppo era posizionato su un'altra istanza, continuerà a "
"funzionare per altre istanze tranne questa."
-#, 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 ""
"Poiché questo gruppo si trovava su questa istanza, tutti i suoi dati sono "
"stati irrimediabilmente cancellati."
-#, 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'amministratore %{author} ha eliminato il gruppo %{group}. Tutti gli "
"eventi, le discussioni, i post e gli impegni del gruppo sono stati eliminati."
-#, 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 "Il gruppo %{group} è stato sospeso su %{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 "Il gruppo %{group} è stato eliminato su %{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 ""
"Il team di moderazione della tua istanza ha deciso di sospendere "
"%{group_name} (%{group_address}). Non sei più un membro di questo gruppo."
-#, elixir-format
#: lib/web/email/group.ex:136
+#, elixir-format
msgid "The group %{group} has been deleted on %{instance}"
msgstr "Il gruppo %{group} è stato eliminato su %{instance}"
-#, elixir-format
#: lib/web/email/group.ex:97
+#, elixir-format
msgid "The group %{group} has been suspended on %{instance}"
msgstr "Il gruppo %{group} è stato sospeso su %{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 ""
@@ -1360,8 +1360,8 @@ msgstr ""
"termini sotto. Se questi non ti sono chiari a sufficienza, per favore "
"faccelo sapere contattando %{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 ""
@@ -1369,22 +1369,22 @@ msgstr ""
"utenti del Servizio, consultare la nostra politica "
"sulla privacy."
-#, 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 continui a utilizzare il Servizio dopo l'entrata in vigore dei Termini "
"modificati, accetti i Termini modificati."
-#, 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 elimini queste informazioni, devi accedere di nuovo."
-#, 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 ""
@@ -1396,22 +1396,22 @@ msgstr ""
"informazioni interromperà solo la visualizzazione dello stato di "
"partecipazione nel tuo browser."
-#, 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: queste informazioni sono memorizzate nel tuo localStorage e non nei "
"tuoi cookie."
-#, elixir-format
#: lib/web/templates/api/terms.html.eex:71
+#, elixir-format
msgctxt "terms"
msgid "Our responsibility"
msgstr "La nostra responsabilità"
-#, 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 ""
@@ -1419,9 +1419,9 @@ msgstr ""
"richieste a questo server, nella misura in cui tali registri vengono "
"conservati, per non più di 90 giorni."
-#, 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 ""
@@ -1429,8 +1429,8 @@ msgstr ""
"possono coprire concetti difficili da comprendere. Abbiamo fornito un glossario per aiutarti a capirli meglio."
-#, 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 ""
@@ -1438,8 +1438,8 @@ msgstr ""
"dell'utilizzo da parte di qualcun altro della tua email o password, con o "
"senza la tua conoscenza."
-#, 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 ""
@@ -1449,8 +1449,8 @@ msgstr ""
"contenuto, mantieni tutti i tuoi diritti sul contenuto che pubblichi, "
"colleghi e rendi disponibile in altro modo sul o tramite il Servizio."
-#, 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 ""
@@ -1468,8 +1468,8 @@ msgstr ""
"elencati pubblicamente. Puoi tuttavia visitare questa istanza senza "
"registrarti."
-#, 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 ""
@@ -1477,8 +1477,8 @@ msgstr ""
"momento. Ad esempio, potrebbe essere necessario modificare questi Termini se "
"pubblichiamo una nuova funzionalità."
-#, 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 ""
@@ -1492,8 +1492,8 @@ msgstr ""
"Mobilizon. Puoi trovare ulteriori informazioni su questa istanza nella "
"pagina \"Informazioni su questa istanza\"."
-#, 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 ""
@@ -1502,8 +1502,8 @@ msgstr ""
"dati del tuo account e a qualsiasi altra informazione che fornisci 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 ""
@@ -1516,8 +1516,8 @@ msgstr ""
"solo in base alle regole di visibilità che hai impostato per il contenuto. "
"Non modificheremo la visibilità del contenuto che hai impostato."
-#, 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 ""
@@ -1531,8 +1531,8 @@ msgstr ""
"istanza ricevente possono visualizzare tali messaggi e informazioni e che i "
"destinatari possono fare screenshot, copiarli o ricondividerli in altro modo."
-#, 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 ""
@@ -1542,196 +1542,204 @@ msgstr ""
"le istanze di tutti i membri del gruppo, nella misura in cui questi membri "
"risiedono su un'istanza diversa da questa."
-#, 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 ""
"Hai confermato la tua partecipazione. Aggiorna il tuo calendario, perché ora "
"sei nella lista degli invitati!"
-#, 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 "Eecentemente hai richiesto di partecipare %{title}."
-#, elixir-format
#: lib/web/email/participation.ex:91
+#, elixir-format
msgid "Your participation to event %{title} has been confirmed"
msgstr "La tua partecipazione all'evento %{title} è stata confermata"
-#, elixir-format
#: lib/web/templates/email/report.html.eex:41
+#, elixir-format
msgid "%{reporter} reported the following content."
msgstr "%{reporter} ha segnalato il seguente contenuto."
-#, elixir-format
#: lib/web/templates/email/report.text.eex:5
+#, elixir-format
msgid "Group %{group} was reported"
msgstr "Il gruppo %{group} è stato segnalato"
-#, elixir-format
#: lib/web/templates/email/report.html.eex:51
+#, elixir-format
msgid "Group reported"
msgstr "Gruppo segnalato"
-#, elixir-format
#: lib/web/templates/email/report.text.eex:7
+#, elixir-format
msgid "Profile %{profile} was reported"
msgstr "Il profilo %{profile} è stato segnalato"
-#, elixir-format
#: lib/web/templates/email/report.html.eex:56
+#, elixir-format
msgid "Profile reported"
msgstr "Profilo segnalato"
-#, 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 ""
"Hai ora confermato la tua partecipazione. Aggiorna il tuo calendario, perché "
"ora sei nella lista degli invitati!"
-#, elixir-format
#: lib/mobilizon/posts/post.ex:94
+#, elixir-format
msgid "A text is required for the post"
msgstr "È richiesto un testo per il post"
-#, elixir-format
#: lib/mobilizon/posts/post.ex:93
+#, elixir-format
msgid "A title is required for the post"
msgstr "È richiesto un titolo per il post"
-#, 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}) ha appena richiesto di seguire la tua istanza."
-#, elixir-format
#: lib/web/email/follow.ex:54
+#, elixir-format
msgid "%{name} requests to follow your instance"
msgstr "%{name} richiede di seguire la tua istanza"
-#, 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}) ha appena richiesto di seguire la tua istanza. Se "
"accetti, questa istanza riceverà tutti gli eventi pubblici della tua istanza."
-#, 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 accetti, questa istanza riceverà tutti i tuoi eventi pubblici."
-#, elixir-format
#: lib/web/email/follow.ex:48
+#, elixir-format
msgid "Instance %{name} (%{domain}) requests to follow your instance"
msgstr "L'istanza %{name} (%{domain}) richiede di seguire la tua istanza"
-#, elixir-format
#: lib/web/templates/email/instance_follow.html.eex:66
+#, elixir-format
msgid "See the federation settings"
msgstr "Vedi le impostazioni della federazione"
-#, 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 ""
"Per accettare questo invito, vai alle impostazioni di amministrazione "
"dell'istanza."
-#, 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 "Vuoi connetterti?"
-#, 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: %{name} (%{domain}) che ti segue non implica necessariamente che segui "
"questa istanza, ma puoi anche chiedere di seguirli."
-#, 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 ""
"Ciao! Ti sei appena registrato per partecipare a questo evento: « "
"%{title} ». Conferma l'indirizzo e-mail che hai fornito:"
-#, elixir-format
#: lib/web/templates/email/event_participation_rejected.html.eex:38
+#, elixir-format
msgid "You issued a request to attend %{title}."
msgstr "Hai chiesto di partecipare %{title}."
-#, elixir-format
#: lib/web/templates/email/event_updated.html.eex:64
+#, elixir-format
msgid "Event title"
msgstr "Titolo dell'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 ""
"Sono state apportate modifiche a %{title}, quindi abbiamo pensato di "
"informarti."
-#, elixir-format
#: lib/web/templates/error/500_page.html.eex:7
+#, elixir-format
msgid "This page is not correct"
msgstr "Questa pagina non è corretta"
-#, elixir-format
#: lib/web/templates/error/500_page.html.eex:50
+#, elixir-format
msgid "We're sorry, but something went wrong on our end."
msgstr "Siamo spiacenti, ma qualcosa è andato storto da parte nostra."
-#, 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 "Questo è un sito dimostrativo per testare Mobilizon."
-#, elixir-format
#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr "Flusso di %{name}"
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr "Flusso privato degli eventi di %{actor} su %{instance}"
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr "Flusso pubblico degli eventi di %{actor} su %{instance}"
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr "Flusso per %{email} su %{instance}"
-#, elixir-format
#: lib/web/templates/error/500_page.html.eex:57
+#, elixir-format
msgid "If the issue persists, you may contact the server administrator at %{contact}."
msgstr ""
+"Se il problema persiste contatta l'amministratore del server a %{contact}."
-#, elixir-format
#: lib/web/templates/error/500_page.html.eex:55
+#, elixir-format
msgid "If the issue persists, you may try to contact the server administrator."
msgstr ""
+"Se il problema persiste puoi provare a contattare l'amministratore del "
+"server."
-#, elixir-format
#: lib/web/templates/error/500_page.html.eex:68
-msgid "Technical details"
-msgstr ""
-
#, elixir-format
+msgid "Technical details"
+msgstr "Dettagli tecnici"
+
#: lib/web/templates/error/500_page.html.eex:52
+#, elixir-format
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr "Il server Mobilizon sembra essere temporaneamente inattivo."
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/it/LC_MESSAGES/errors.po b/priv/gettext/it/LC_MESSAGES/errors.po
index c1d5c1dc3..a83f9c0d3 100644
--- a/priv/gettext/it/LC_MESSAGES/errors.po
+++ b/priv/gettext/it/LC_MESSAGES/errors.po
@@ -8,15 +8,15 @@
## to merge POT files into PO files.
msgid ""
msgstr ""
-"PO-Revision-Date: 2021-02-19 10:14+0000\n"
-"Last-Translator: diorama \n"
+"PO-Revision-Date: 2021-04-28 14:49+0000\n"
+"Last-Translator: Leo Durruti \n"
"Language-Team: Italian \n"
"Language: it\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.2\n"
+"X-Generator: Weblate 4.6\n"
#: lib/mobilizon/discussions/discussion.ex:67
msgid "can't be blank"
@@ -94,777 +94,778 @@ msgstr "dev'essere maggiore o uguale di %{number}"
msgid "must be equal to %{number}"
msgstr "dev'essere uguale a %{number}"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:100
+#, elixir-format
msgid "Cannot refresh the token"
msgstr "Il token non può essere aggiornato"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:198
+#: lib/graphql/resolvers/group.ex:206
msgid "Current profile is not a member of this group"
msgstr "Il profilo corrente non è membro di questo gruppo"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:202
+#: lib/graphql/resolvers/group.ex:210
msgid "Current profile is not an administrator of the selected group"
msgstr "Il profilo corrente non è amministratore del gruppo selezionato"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:501
+#, elixir-format
msgid "Error while saving user settings"
msgstr "Errore nel salvare le preferenze utente"
#, 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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 lib/graphql/resolvers/member.ex:80
msgid "Group not found"
msgstr "Gruppo non trovato"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:66
+#: lib/graphql/resolvers/group.ex:68
msgid "Group with ID %{id} not found"
msgstr "Gruppo con ID %{id} non trovato"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:80
+#, elixir-format
msgid "Impossible to authenticate, either your email or password are invalid."
msgstr "Impossibile autenticarsi: email e/o password non validi."
#, elixir-format
-#: lib/graphql/resolvers/group.ex:258
+#: lib/graphql/resolvers/group.ex:266
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:406
+#, elixir-format
msgid "No profile found for the moderator user"
msgstr "Nessun profilo trovato per l'utente moderatore"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:193
+#, elixir-format
msgid "No user to validate with this email was found"
msgstr "Nessun utente da convalidare trovato con questa email"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/user.ex:218
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
msgid "No user with this email was found"
msgstr "Nessun utente con questa 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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr "L'utente autenticato non è propietario di questo profilo"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:123
+#, elixir-format
msgid "Registrations are not open"
msgstr "Le registrazioni non sono aperte"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:331
+#, elixir-format
msgid "The current password is invalid"
msgstr "la password corrente non è valida"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:376
+#, elixir-format
msgid "The new email doesn't seem to be valid"
msgstr "La nuova email sembra non valida"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:373
+#, elixir-format
msgid "The new email must be different"
msgstr "La nuova email dev'essere diversa"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:334
+#, elixir-format
msgid "The new password must be different"
msgstr "La nuova password deve essere diversa"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428
#: lib/graphql/resolvers/user.ex:431
+#, elixir-format
msgid "The password provided is invalid"
msgstr "La password assegnata non è valida"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:338
+#, elixir-format
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."
-#, elixir-format
#: lib/graphql/resolvers/user.ex:214
+#, elixir-format
msgid "This user can't reset their password"
msgstr "Questo utente non può resettare la password"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:76
+#, elixir-format
msgid "This user has been disabled"
msgstr "L'utente è stato disabilitato"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:177
+#, elixir-format
msgid "Unable to validate user"
msgstr "Impossibile convalidare l'utente"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:409
+#, elixir-format
msgid "User already disabled"
msgstr "Utente già disabilitato"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:476
+#, elixir-format
msgid "User requested is not logged-in"
msgstr "L'utente richiesto non è loggato"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:232
+#: lib/graphql/resolvers/group.ex:240
msgid "You are already a member of this group"
msgstr "Sei già un membro di questo gruppo"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:265
+#: lib/graphql/resolvers/group.ex:273
msgid "You can't leave this group because you are the only administrator"
msgstr "Non puoi lasciare questo gruppo perchè sei l'unico amministratore"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:229
+#: lib/graphql/resolvers/group.ex:237
msgid "You cannot join this group"
msgstr "Non puoi unirti a questo gruppo"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:94
+#: lib/graphql/resolvers/group.ex:96
msgid "You may not list groups unless moderator."
msgstr "Non è possibile elencare i gruppi a meno che non sia un moderatore."
-#, elixir-format
#: lib/graphql/resolvers/user.ex:381
+#, elixir-format
msgid "You need to be logged-in to change your email"
msgstr "È necessario effettuare il login per modificare la tua email"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:346
+#, elixir-format
msgid "You need to be logged-in to change your password"
msgstr "È necessario effettuare il login per modificare la tua password"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:207
+#: lib/graphql/resolvers/group.ex:215
msgid "You need to be logged-in to delete a group"
msgstr "È necessario effettuare il login per eliminare un gruppo"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:436
+#, elixir-format
msgid "You need to be logged-in to delete your account"
msgstr "È necessario effettuare il login per eliminare il tuo account"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:237
+#: lib/graphql/resolvers/group.ex:245
msgid "You need to be logged-in to join a group"
msgstr "È necessario effettuare il login per entrare a far parte di un gruppo"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:270
+#: lib/graphql/resolvers/group.ex:278
msgid "You need to be logged-in to leave a group"
msgstr "È necessario effettuare il login per lasciare un gruppo"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:172
+#: lib/graphql/resolvers/group.ex:180
msgid "You need to be logged-in to update a group"
msgstr "È necessario effettuare il login per aggiornare un gruppo"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:105
+#, 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"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221
+#, elixir-format
msgid "You requested again a confirmation email too soon"
msgstr "Hai richiesto di nuovo un'e-mail di conferma troppo presto"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:126
+#, elixir-format
msgid "Your email is not on the allowlist"
msgstr "La tua mail non è nella lista delle autorizzazioni"
-#, elixir-format
#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94
+#, elixir-format
msgid "Error while performing background task"
msgstr "Errore nell'eseguire un processo in background"
-#, elixir-format
#: lib/graphql/resolvers/actor.ex:27
+#, elixir-format
msgid "No profile found with this ID"
msgstr "Nessun profilo trovato con questo 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 "Nessun profilo remoto trovato con questo ID"
-#, elixir-format
#: lib/graphql/resolvers/actor.ex:69
+#, elixir-format
msgid "Only moderators and administrators can suspend a profile"
msgstr "Solo i moderatori e gli amministratori possono sospendere un profilo"
-#, elixir-format
#: lib/graphql/resolvers/actor.ex:99
+#, elixir-format
msgid "Only moderators and administrators can unsuspend a profile"
msgstr "Solo i moderatori e gli amministratori possono riattivare un profilo"
-#, elixir-format
#: lib/graphql/resolvers/actor.ex:24
+#, elixir-format
msgid "Only remote profiles may be refreshed"
msgstr "È possibile aggiornare solo i profili remoti"
-#, elixir-format
#: lib/graphql/resolvers/actor.ex:61
+#, elixir-format
msgid "Profile already suspended"
msgstr "Profilo già sospeso"
-#, elixir-format
#: lib/graphql/resolvers/participant.ex:92
+#, elixir-format
msgid "A valid email is required by your instance"
msgstr "Un'email valida è richiesta dalla vostra istanza"
-#, elixir-format
#: lib/graphql/resolvers/participant.ex:86
+#, elixir-format
msgid "Anonymous participation is not enabled"
msgstr "La partecipazione anonima non è abilitata"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:195
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr "Impossibile rimuovere l'ultimo amministratore di un gruppo"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:192
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr "Impossibile rimuovere l'ultima identità di un utente"
-#, elixir-format
#: lib/graphql/resolvers/comment.ex:108
+#, elixir-format
msgid "Comment is already deleted"
msgstr "Commento già cancellato"
-#, elixir-format
#: lib/graphql/error.ex:92 lib/graphql/resolvers/discussion.ex:62
+#, elixir-format
msgid "Discussion not found"
msgstr "Discussione non trovata"
-#, elixir-format
#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77
+#, elixir-format
msgid "Error while saving report"
msgstr "Errore nel salvare la segnalazione"
-#, elixir-format
#: lib/graphql/resolvers/report.ex:96
+#, elixir-format
msgid "Error while updating report"
msgstr "Errore durante l'aggiornamento del rapporto"
-#, elixir-format
#: lib/graphql/resolvers/participant.ex:127
+#, elixir-format
msgid "Event id not found"
msgstr "ID evento non trovato"
-#, elixir-format
#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281
#: lib/graphql/resolvers/event.ex:325
+#, elixir-format
msgid "Event not found"
msgstr "Evento non trovato"
-#, 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 "L'evento con questo ID %{id} non esiste"
-#, elixir-format
#: lib/graphql/resolvers/participant.ex:99
+#, elixir-format
msgid "Internal Error"
msgstr "Errore Interno"
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:201
+#: lib/graphql/resolvers/discussion.ex:202
msgid "No discussion with ID %{id}"
msgstr "Nessuna discussione con l'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 "Nessuno profilo trovato per l'utente"
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:63
+#: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token"
msgstr "Nessun token di rifornimento corrispondente"
-#, elixir-format
#: lib/graphql/resolvers/participant.ex:237
+#, elixir-format
msgid "Participant already has role %{role}"
msgstr "Il partecipante ha già il ruolo %{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 "Partecipante non trovato"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:29
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr "La persona con l'ID %{id} non è stata trovata"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:51
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr "La persona con il nome utente %{username} non è stata trovata"
-#, 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 "L'ID del post non è un ID valido"
-#, elixir-format
#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203
+#, elixir-format
msgid "Post doesn't exist"
msgstr "Il post non esiste"
-#, elixir-format
#: lib/graphql/resolvers/member.ex:83
+#, elixir-format
msgid "Profile invited doesn't exist"
msgstr "Il profilo invitato non esiste"
-#, 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 "Il profilo è già un membro diquesto gruppo"
-#, 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:88 lib/graphql/resolvers/resource.ex:128
#: lib/graphql/resolvers/resource.ex:157 lib/graphql/resolvers/resource.ex:186 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"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:189
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr "Profilo non trovato"
-#, elixir-format
-#: lib/graphql/resolvers/event.ex:145 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"
-
#, elixir-format
#: lib/graphql/resolvers/report.ex:36
+#, elixir-format
msgid "Report not found"
msgstr "Segnalazione non trovata"
-#, elixir-format
#: lib/graphql/resolvers/resource.ex:154 lib/graphql/resolvers/resource.ex:183
+#, elixir-format
msgid "Resource doesn't exist"
msgstr "La risorsa non esiste"
-#, elixir-format
#: lib/graphql/resolvers/participant.ex:120
+#, elixir-format
msgid "The event has already reached its maximum capacity"
msgstr "L'evento ha già raggiunto la sua massima capacità"
-#, elixir-format
#: lib/graphql/resolvers/participant.ex:260
+#, elixir-format
msgid "This token is invalid"
msgstr "Questo token non è valido"
-#, elixir-format
#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219
+#, elixir-format
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"
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:69
+#: lib/graphql/resolvers/feed_token.ex:73
msgid "Token does not exist"
msgstr "Il token non esiste"
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:66
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID"
msgstr "Il token non è un UUID valido"
#, elixir-format
-#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:358
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr "Utente non trovato"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:256
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr "Hai già un profilo per questo utente"
-#, elixir-format
#: lib/graphql/resolvers/participant.ex:130
+#, elixir-format
msgid "You are already a participant of this event"
msgstr "Se già un partecipante di questo evento"
-#, elixir-format
#: lib/graphql/resolvers/member.ex:86
+#, elixir-format
msgid "You are not a member of this group"
msgstr "Non sei un membro di questo gruppo"
#, elixir-format
-#: lib/graphql/resolvers/member.ex:151
+#: lib/graphql/resolvers/member.ex:149
msgid "You are not a moderator or admin for this group"
msgstr "Non sei un moderatore o amministratore di questo gruppo"
-#, elixir-format
#: lib/graphql/resolvers/comment.ex:54
+#, elixir-format
msgid "You are not allowed to create a comment if not connected"
msgstr "Non è consentito creare un commento se non si è collegati"
-#, 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 puoi creare un token di rifornimento senza connessione"
-#, elixir-format
#: lib/graphql/resolvers/comment.ex:113
+#, elixir-format
msgid "You are not allowed to delete a comment if not connected"
msgstr "Non è consentito eliminare un commento se non si è collegati"
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:78
+#: lib/graphql/resolvers/feed_token.ex:82
msgid "You are not allowed to delete a feed token if not connected"
msgstr "Non puoi eliminare un token di rifornimento senza connettersi"
-#, elixir-format
#: lib/graphql/resolvers/comment.ex:76
+#, elixir-format
msgid "You are not allowed to update a comment if not connected"
msgstr "Non è consentito aggiornare un commento se non si è collegati"
-#, 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 puoi lasciare l'evento perchè sei l'unico partecipante creatore di eventi"
#, elixir-format
-#: lib/graphql/resolvers/member.ex:155
+#: lib/graphql/resolvers/member.ex:153
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"
-#, elixir-format
#: lib/graphql/resolvers/comment.ex:104
+#, elixir-format
msgid "You cannot delete this comment"
msgstr "Non puoi eliminare questo commento"
-#, elixir-format
#: lib/graphql/resolvers/event.ex:321
+#, elixir-format
msgid "You cannot delete this event"
msgstr "Non puoi eliminare questo evento"
-#, elixir-format
#: lib/graphql/resolvers/member.ex:89
+#, elixir-format
msgid "You cannot invite to this group"
msgstr "Non puoi invitare in questo gruppo"
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:72
+#: lib/graphql/resolvers/feed_token.ex:76
msgid "You don't have permission to delete this token"
msgstr "Non hai il permesso di cancellare questo token"
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:52
+#: lib/graphql/resolvers/admin.ex:53
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"
-#, elixir-format
#: lib/graphql/resolvers/report.ex:26
+#, elixir-format
msgid "You need to be logged-in and a moderator to list reports"
msgstr "Devi essere connesso e un moderatore per elencare i rapporti"
-#, 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 "Devi essere connesso e un moderatore per aggiornare un rapporto"
-#, 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 "Devi essere connesso e un moderatore per visualizzare un rapporto"
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:236
+#: lib/graphql/resolvers/admin.ex:237
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"
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:221
+#: lib/graphql/resolvers/admin.ex:222
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"
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:260
+#: lib/graphql/resolvers/admin.ex:261
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"
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:76
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr "Devi essere connesso per accedere alle discussioni"
-#, elixir-format
#: lib/graphql/resolvers/resource.ex:94
+#, elixir-format
msgid "You need to be logged-in to access resources"
msgstr "Devi essere connesso per accedere alle risorse"
-#, elixir-format
#: lib/graphql/resolvers/event.ex:256
+#, elixir-format
msgid "You need to be logged-in to create events"
msgstr "Devi essere connesso per creare eventi"
-#, elixir-format
#: lib/graphql/resolvers/post.ex:140
+#, elixir-format
msgid "You need to be logged-in to create posts"
msgstr "Devi essere connesso per creare dei post"
-#, elixir-format
#: lib/graphql/resolvers/report.ex:74
+#, elixir-format
msgid "You need to be logged-in to create reports"
msgstr "Devi essere connesso per creare rapporti"
-#, elixir-format
#: lib/graphql/resolvers/resource.ex:133
+#, elixir-format
msgid "You need to be logged-in to create resources"
msgstr "Devi essere connesso per creare risorse"
-#, elixir-format
#: lib/graphql/resolvers/event.ex:330
+#, elixir-format
msgid "You need to be logged-in to delete an event"
msgstr "Devi essere connesso per eliminare un evento"
-#, elixir-format
#: lib/graphql/resolvers/post.ex:211
+#, elixir-format
msgid "You need to be logged-in to delete posts"
msgstr "Devi essere connesso per eliminare dei post"
-#, elixir-format
#: lib/graphql/resolvers/resource.ex:191
+#, elixir-format
msgid "You need to be logged-in to delete resources"
msgstr "Devi essere connesso per eliminare risorse"
-#, elixir-format
#: lib/graphql/resolvers/participant.ex:104
+#, elixir-format
msgid "You need to be logged-in to join an event"
msgstr "Devi essere connesso per partecipare 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 "Devi essere connesso per lasciare un evento"
-#, elixir-format
#: lib/graphql/resolvers/event.ex:295
+#, elixir-format
msgid "You need to be logged-in to update an event"
msgstr "Devi essere connesso per aggiornare un evento"
-#, elixir-format
#: lib/graphql/resolvers/post.ex:178
+#, elixir-format
msgid "You need to be logged-in to update posts"
msgstr "Devi essere connesso per aggiornare dei post"
-#, elixir-format
#: lib/graphql/resolvers/resource.ex:162
+#, elixir-format
msgid "You need to be logged-in to update resources"
msgstr "Devi essere connesso per aggiornare le risorse"
-#, elixir-format
#: lib/graphql/resolvers/resource.ex:218
+#, elixir-format
msgid "You need to be logged-in to view a resource preview"
msgstr "Devi essere connesso per visualizzare l'anteprima di una risorsa"
-#, elixir-format
#: lib/graphql/resolvers/resource.ex:125
+#, elixir-format
msgid "Parent resource doesn't belong to this group"
msgstr "La risorsa principale non appartiene a questo gruppo"
-#, elixir-format
#: lib/mobilizon/users/user.ex:109
+#, elixir-format
msgid "The chosen password is too short."
msgstr "La password scelta è troppo 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 ""
"Il token di registrazione è già in uso, questo sembra un problema dalla "
"nostra parte."
-#, elixir-format
#: lib/mobilizon/users/user.ex:104
+#, elixir-format
msgid "This email is already used."
msgstr "Questa email è già in uso."
-#, elixir-format
#: lib/graphql/error.ex:88
+#, elixir-format
msgid "Post not found"
msgstr "Post non trovato"
-#, elixir-format
#: lib/graphql/error.ex:75
+#, elixir-format
msgid "Invalid arguments passed"
msgstr "Sono stati trasmessi argomenti non validi"
-#, elixir-format
#: lib/graphql/error.ex:81
+#, elixir-format
msgid "Invalid credentials"
msgstr "Credenziali non valide"
-#, elixir-format
#: lib/graphql/error.ex:79
+#, elixir-format
msgid "Reset your password to login"
msgstr "Reimposta la tua password per connetterti"
-#, elixir-format
#: lib/graphql/error.ex:86 lib/graphql/error.ex:91
+#, elixir-format
msgid "Resource not found"
msgstr "Segnalazione non trovata"
-#, elixir-format
#: lib/graphql/error.ex:93
+#, elixir-format
msgid "Something went wrong"
msgstr "Qualcosa è andato storto"
-#, elixir-format
#: lib/graphql/error.ex:74
+#, elixir-format
msgid "Unknown Resource"
msgstr "Risorsa sconosciuta"
-#, elixir-format
#: lib/graphql/error.ex:84
+#, elixir-format
msgid "You don't have permission to do this"
msgstr "Non hai il permesso di farlo"
-#, elixir-format
#: lib/graphql/error.ex:76
+#, elixir-format
msgid "You need to be logged in"
msgstr "Devi essere connesso"
#, elixir-format
-#: lib/graphql/resolvers/member.ex:116
+#: lib/graphql/resolvers/member.ex:114
msgid "You can't accept this invitation with this profile."
msgstr "Non puoi accettare l'invito con questo profilo."
#, elixir-format
-#: lib/graphql/resolvers/member.ex:134
+#: lib/graphql/resolvers/member.ex:132
msgid "You can't reject this invitation with this profile."
msgstr "Non puoi rifiutare l'invito con questo profilo."
-#, elixir-format
#: lib/graphql/resolvers/media.ex:62
+#, elixir-format
msgid "File doesn't have an allowed MIME type."
msgstr "Il file non ha un tipo MIME consentito."
#, elixir-format
-#: lib/graphql/resolvers/group.ex:167
+#: lib/graphql/resolvers/group.ex:175
msgid "Profile is not administrator for the group"
msgstr "Il profilo non è amministratore del gruppo"
-#, elixir-format
#: lib/graphql/resolvers/event.ex:284
+#, elixir-format
msgid "You can't edit this event."
msgstr "Non puoi modificare questo evento."
-#, elixir-format
#: lib/graphql/resolvers/event.ex:287
+#, elixir-format
msgid "You can't attribute this event to this profile."
msgstr "Non puo iattribuire questo evento a questo profilo."
#, elixir-format
-#: lib/graphql/resolvers/member.ex:137
+#: lib/graphql/resolvers/member.ex:135
msgid "This invitation doesn't exist."
msgstr "Questo invito non esiste."
#, elixir-format
-#: lib/graphql/resolvers/member.ex:179
+#: lib/graphql/resolvers/member.ex:177
msgid "This member already has been rejected."
msgstr "Questo memebro è già stato rifiutato."
#, elixir-format
-#: lib/graphql/resolvers/member.ex:186
+#: lib/graphql/resolvers/member.ex:184
msgid "You don't have the right to remove this member."
msgstr "Non hai il diritto di rimuovere questo membro."
-#, elixir-format
#: lib/mobilizon/actors/actor.ex:351
+#, elixir-format
msgid "This username is already taken."
msgstr "Questo nome utente è già in uso."
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:73
+#: lib/graphql/resolvers/discussion.ex:74
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"
-#, elixir-format
#: lib/graphql/resolvers/event.ex:245
+#, elixir-format
msgid "Organizer profile is not owned by the user"
msgstr "Il profilo dell'organizzatore non è di proprietà dell'utente"
-#, elixir-format
#: lib/graphql/resolvers/participant.ex:89
+#, elixir-format
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:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr "L'immagine inserita è troppo pesante"
-#, elixir-format
#: lib/web/views/utils.ex:33
+#, elixir-format
msgid "Index file not found. You need to recompile the front-end."
-msgstr ""
+msgstr "Il file di indice non è stato trovato. Devi ricompilare il front-end."
-#, elixir-format, fuzzy
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:122
+#, elixir-format
msgid "Error while creating resource"
-msgstr "Errore nel salvare la segnalazione"
+msgstr "Errore durante la creazione della risorsa"
-#, elixir-format
#: lib/graphql/resolvers/user.ex:390
-msgid "Invalid activation token"
-msgstr ""
-
#, elixir-format
+msgid "Invalid activation token"
+msgstr "Token di attivazione non valido"
+
#: lib/graphql/resolvers/resource.ex:208
+#, elixir-format
msgid "Unable to fetch resource details from this URL."
msgstr ""
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr ""
+"Il profilo del moderatore fornito non dispone dell'autorizzazione per questo "
+"evento"
diff --git a/priv/gettext/ja/LC_MESSAGES/default.po b/priv/gettext/ja/LC_MESSAGES/default.po
index 718eccfe7..9ef615c0c 100644
--- a/priv/gettext/ja/LC_MESSAGES/default.po
+++ b/priv/gettext/ja/LC_MESSAGES/default.po
@@ -832,8 +832,8 @@ msgid "Hi there! Just a quick note to confirm that the email address linked to y
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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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 ""
@@ -1356,21 +1356,22 @@ msgstr ""
#, elixir-format
#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr ""
@@ -1393,3 +1394,8 @@ msgstr ""
#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr ""
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/ja/LC_MESSAGES/errors.po b/priv/gettext/ja/LC_MESSAGES/errors.po
index 9f2dc6f11..a9fd66f74 100644
--- a/priv/gettext/ja/LC_MESSAGES/errors.po
+++ b/priv/gettext/ja/LC_MESSAGES/errors.po
@@ -87,12 +87,12 @@ msgid "Cannot refresh the token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:198
+#: lib/graphql/resolvers/group.ex:206
msgid "Current profile is not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:202
+#: lib/graphql/resolvers/group.ex:210
msgid "Current profile is not an administrator of the selected group"
msgstr ""
@@ -102,13 +102,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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 lib/graphql/resolvers/member.ex:80
msgid "Group not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:66
+#: lib/graphql/resolvers/group.ex:68
msgid "Group with ID %{id} not found"
msgstr ""
@@ -118,7 +118,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:266
msgid "Member not found"
msgstr ""
@@ -134,16 +134,16 @@ msgid "No user to validate with this email was found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/user.ex:218
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
msgid "No user with this email was found"
msgstr ""
#, 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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr ""
@@ -209,22 +209,22 @@ msgid "User requested is not logged-in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:232
+#: lib/graphql/resolvers/group.ex:240
msgid "You are already a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:265
+#: lib/graphql/resolvers/group.ex:273
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:237
msgid "You cannot join this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:94
+#: lib/graphql/resolvers/group.ex:96
msgid "You may not list groups unless moderator."
msgstr ""
@@ -239,7 +239,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:215
msgid "You need to be logged-in to delete a group"
msgstr ""
@@ -249,17 +249,17 @@ 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:245
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:278
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:180
msgid "You need to be logged-in to update a group"
msgstr ""
@@ -324,12 +324,12 @@ msgid "Anonymous participation is not enabled"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:195
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:192
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr ""
@@ -376,7 +376,7 @@ msgid "Internal Error"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:201
+#: lib/graphql/resolvers/discussion.ex:202
msgid "No discussion with ID %{id}"
msgstr ""
@@ -386,7 +386,7 @@ msgid "No profile found for user"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:63
+#: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token"
msgstr ""
@@ -403,12 +403,12 @@ msgid "Participant not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:29
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:51
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr ""
@@ -442,15 +442,10 @@ msgid "Profile is not member of group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:189
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr ""
-#, elixir-format
-#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
-msgid "Provided moderator profile doesn't have permission on this event"
-msgstr ""
-
#, elixir-format
#: lib/graphql/resolvers/report.ex:36
msgid "Report not found"
@@ -483,22 +478,22 @@ msgid "Todo list doesn't exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:69
+#: lib/graphql/resolvers/feed_token.ex:73
msgid "Token does not exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:66
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID"
msgstr ""
#, elixir-format
-#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:358
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:256
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr ""
@@ -513,7 +508,7 @@ msgid "You are not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:151
+#: lib/graphql/resolvers/member.ex:149
msgid "You are not a moderator or admin for this group"
msgstr ""
@@ -533,7 +528,7 @@ msgid "You are not allowed to delete a comment if not connected"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:78
+#: lib/graphql/resolvers/feed_token.ex:82
msgid "You are not allowed to delete a feed token if not connected"
msgstr ""
@@ -549,7 +544,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:155
+#: lib/graphql/resolvers/member.ex:153
msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr ""
@@ -569,12 +564,12 @@ msgid "You cannot invite to this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:72
+#: lib/graphql/resolvers/feed_token.ex:76
msgid "You don't have permission to delete this token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:52
+#: lib/graphql/resolvers/admin.ex:53
msgid "You need to be logged-in and a moderator to list action logs"
msgstr ""
@@ -594,22 +589,22 @@ msgid "You need to be logged-in and a moderator to view a report"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:236
+#: lib/graphql/resolvers/admin.ex:237
msgid "You need to be logged-in and an administrator to access admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:221
+#: lib/graphql/resolvers/admin.ex:222
msgid "You need to be logged-in and an administrator to access dashboard statistics"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:260
+#: lib/graphql/resolvers/admin.ex:261
msgid "You need to be logged-in and an administrator to save admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:76
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr ""
@@ -749,12 +744,12 @@ msgid "You need to be logged in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:116
+#: lib/graphql/resolvers/member.ex:114
msgid "You can't accept this invitation with this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:134
+#: lib/graphql/resolvers/member.ex:132
msgid "You can't reject this invitation with this profile."
msgstr ""
@@ -764,7 +759,7 @@ msgid "File doesn't have an allowed MIME type."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:167
+#: lib/graphql/resolvers/group.ex:175
msgid "Profile is not administrator for the group"
msgstr ""
@@ -779,17 +774,17 @@ msgid "You can't attribute this event to this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:137
+#: lib/graphql/resolvers/member.ex:135
msgid "This invitation doesn't exist."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:179
+#: lib/graphql/resolvers/member.ex:177
msgid "This member already has been rejected."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:186
+#: lib/graphql/resolvers/member.ex:184
msgid "You don't have the right to remove this member."
msgstr ""
@@ -799,7 +794,7 @@ msgid "This username is already taken."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:73
+#: lib/graphql/resolvers/discussion.ex:74
msgid "You must provide either an ID or a slug to access a discussion"
msgstr ""
@@ -814,8 +809,8 @@ msgid "Profile ID provided is not the anonymous profile one"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr ""
@@ -824,7 +819,7 @@ msgstr ""
msgid "Index file not found. You need to recompile the front-end."
msgstr ""
-#, elixir-format, fuzzy
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr ""
@@ -838,3 +833,8 @@ msgstr ""
#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr ""
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr ""
diff --git a/priv/gettext/nl/LC_MESSAGES/default.po b/priv/gettext/nl/LC_MESSAGES/default.po
index 1e0fef867..562e6e680 100644
--- a/priv/gettext/nl/LC_MESSAGES/default.po
+++ b/priv/gettext/nl/LC_MESSAGES/default.po
@@ -854,8 +854,8 @@ msgid "Hi there! Just a quick note to confirm that the email address linked to y
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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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 ""
@@ -1381,21 +1381,22 @@ 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
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr ""
@@ -1418,3 +1419,8 @@ msgstr ""
#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr ""
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/nl/LC_MESSAGES/errors.po b/priv/gettext/nl/LC_MESSAGES/errors.po
index b756ff4ec..bdb41f567 100644
--- a/priv/gettext/nl/LC_MESSAGES/errors.po
+++ b/priv/gettext/nl/LC_MESSAGES/errors.po
@@ -93,12 +93,12 @@ msgid "Cannot refresh the token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:198
+#: lib/graphql/resolvers/group.ex:206
msgid "Current profile is not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:202
+#: lib/graphql/resolvers/group.ex:210
msgid "Current profile is not an administrator of the selected group"
msgstr ""
@@ -108,13 +108,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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 lib/graphql/resolvers/member.ex:80
msgid "Group not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:66
+#: lib/graphql/resolvers/group.ex:68
msgid "Group with ID %{id} not found"
msgstr ""
@@ -124,7 +124,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:266
msgid "Member not found"
msgstr ""
@@ -140,16 +140,16 @@ msgid "No user to validate with this email was found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/user.ex:218
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
msgid "No user with this email was found"
msgstr ""
#, 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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr ""
@@ -215,22 +215,22 @@ msgid "User requested is not logged-in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:232
+#: lib/graphql/resolvers/group.ex:240
msgid "You are already a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:265
+#: lib/graphql/resolvers/group.ex:273
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:237
msgid "You cannot join this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:94
+#: lib/graphql/resolvers/group.ex:96
msgid "You may not list groups unless moderator."
msgstr ""
@@ -245,7 +245,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:215
msgid "You need to be logged-in to delete a group"
msgstr ""
@@ -255,17 +255,17 @@ 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:245
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:278
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:180
msgid "You need to be logged-in to update a group"
msgstr ""
@@ -330,12 +330,12 @@ msgid "Anonymous participation is not enabled"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:195
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:192
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr ""
@@ -382,7 +382,7 @@ msgid "Internal Error"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:201
+#: lib/graphql/resolvers/discussion.ex:202
msgid "No discussion with ID %{id}"
msgstr ""
@@ -392,7 +392,7 @@ msgid "No profile found for user"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:63
+#: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token"
msgstr ""
@@ -409,12 +409,12 @@ msgid "Participant not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:29
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:51
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr ""
@@ -448,15 +448,10 @@ msgid "Profile is not member of group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:189
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr ""
-#, elixir-format
-#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
-msgid "Provided moderator profile doesn't have permission on this event"
-msgstr ""
-
#, elixir-format
#: lib/graphql/resolvers/report.ex:36
msgid "Report not found"
@@ -489,22 +484,22 @@ msgid "Todo list doesn't exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:69
+#: lib/graphql/resolvers/feed_token.ex:73
msgid "Token does not exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:66
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID"
msgstr ""
#, elixir-format
-#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:358
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:256
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr ""
@@ -519,7 +514,7 @@ msgid "You are not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:151
+#: lib/graphql/resolvers/member.ex:149
msgid "You are not a moderator or admin for this group"
msgstr ""
@@ -539,7 +534,7 @@ msgid "You are not allowed to delete a comment if not connected"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:78
+#: lib/graphql/resolvers/feed_token.ex:82
msgid "You are not allowed to delete a feed token if not connected"
msgstr ""
@@ -555,7 +550,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:155
+#: lib/graphql/resolvers/member.ex:153
msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr ""
@@ -575,12 +570,12 @@ msgid "You cannot invite to this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:72
+#: lib/graphql/resolvers/feed_token.ex:76
msgid "You don't have permission to delete this token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:52
+#: lib/graphql/resolvers/admin.ex:53
msgid "You need to be logged-in and a moderator to list action logs"
msgstr ""
@@ -600,22 +595,22 @@ msgid "You need to be logged-in and a moderator to view a report"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:236
+#: lib/graphql/resolvers/admin.ex:237
msgid "You need to be logged-in and an administrator to access admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:221
+#: lib/graphql/resolvers/admin.ex:222
msgid "You need to be logged-in and an administrator to access dashboard statistics"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:260
+#: lib/graphql/resolvers/admin.ex:261
msgid "You need to be logged-in and an administrator to save admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:76
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr ""
@@ -755,12 +750,12 @@ msgid "You need to be logged in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:116
+#: lib/graphql/resolvers/member.ex:114
msgid "You can't accept this invitation with this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:134
+#: lib/graphql/resolvers/member.ex:132
msgid "You can't reject this invitation with this profile."
msgstr ""
@@ -770,7 +765,7 @@ msgid "File doesn't have an allowed MIME type."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:167
+#: lib/graphql/resolvers/group.ex:175
msgid "Profile is not administrator for the group"
msgstr ""
@@ -785,17 +780,17 @@ msgid "You can't attribute this event to this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:137
+#: lib/graphql/resolvers/member.ex:135
msgid "This invitation doesn't exist."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:179
+#: lib/graphql/resolvers/member.ex:177
msgid "This member already has been rejected."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:186
+#: lib/graphql/resolvers/member.ex:184
msgid "You don't have the right to remove this member."
msgstr ""
@@ -805,7 +800,7 @@ msgid "This username is already taken."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:73
+#: lib/graphql/resolvers/discussion.ex:74
msgid "You must provide either an ID or a slug to access a discussion"
msgstr ""
@@ -820,8 +815,8 @@ msgid "Profile ID provided is not the anonymous profile one"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr ""
@@ -830,7 +825,7 @@ msgstr ""
msgid "Index file not found. You need to recompile the front-end."
msgstr ""
-#, elixir-format, fuzzy
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr ""
@@ -844,3 +839,8 @@ msgstr ""
#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr ""
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr ""
diff --git a/priv/gettext/nn/LC_MESSAGES/default.po b/priv/gettext/nn/LC_MESSAGES/default.po
index 2a57ff6f9..9c5c62c2c 100644
--- a/priv/gettext/nn/LC_MESSAGES/default.po
+++ b/priv/gettext/nn/LC_MESSAGES/default.po
@@ -14,262 +14,262 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.5.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 ""
"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."
-#: lib/web/templates/email/report.html.eex:74
#, elixir-format
+#: lib/web/templates/email/report.html.eex:74
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 "Ta i bruk kontoen min"
+#, 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 "Spør brukarsamfunnet på Framacolibri"
-#: lib/web/templates/email/report.text.eex:15
#, elixir-format
+#: lib/web/templates/email/report.text.eex:15
msgid "Comments"
msgstr "Kommentarar"
+#, elixir-format
#: lib/web/templates/email/report.html.eex:72
#: lib/web/templates/email/report.text.eex:11
-#, elixir-format
msgid "Event"
msgstr "Hending"
-#: lib/web/email/user.ex:48
#, elixir-format
+#: lib/web/email/user.ex:48
msgid "Instructions to reset your password on %{instance}"
msgstr "Framgangsmåte for å nullstilla passordet på %{instance}"
-#: lib/web/templates/email/report.text.eex:21
#, elixir-format
+#: lib/web/templates/email/report.text.eex:21
msgid "Reason"
msgstr "Grunn"
-#: lib/web/templates/email/password_reset.html.eex:61
#, elixir-format
+#: lib/web/templates/email/password_reset.html.eex:61
msgid "Reset Password"
msgstr "Nullstill passord"
-#: 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 er lett å nullstilla passordet. Berre trykk på knappen under og fylg "
"framgangsmåten. Dette ordnar me på ei lita stund."
-#: lib/web/email/user.ex:28
#, elixir-format
+#: lib/web/email/user.ex:28
msgid "Instructions to confirm your Mobilizon account on %{instance}"
msgstr "Framgangsmåte for å stadfesta Mobilizon-kontoen din 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 rapport på Mobilizon-nettstaden %{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å til hendingssida"
-#: 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 rapport frå %{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 "Deltakinga er godkjend"
+#, 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 "Passordet er nullstilt"
-#: 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 er lett å nullstilla passordet. Berre klikk på lenka under og fylg "
"framgangsmåten. Dette ordnar me på ei lita stund."
-#: 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 oppretta ein konto på %{host} med denne epostadressa. Du er eitt "
"klikk unna å aktivera kontoen. Viss du ikkje oppretta nokon konto, kan du "
"berre oversjå denne eposten."
-#: lib/web/email/participation.ex:112
#, elixir-format
+#: lib/web/email/participation.ex:112
msgid "Your participation to event %{title} has been approved"
msgstr "Deltakinga di på hendinga %{title} er godkjent"
-#: lib/web/email/participation.ex:70
#, elixir-format
+#: lib/web/email/participation.ex:70
msgid "Your participation to event %{title} has been rejected"
msgstr "Deltakinga di på hendinga %{title} er avslegen"
-#: lib/web/email/event.ex:37
#, elixir-format
+#: lib/web/email/event.ex:37
msgid "Event %{title} has been updated"
msgstr "Hendinga %{title} er oppdatert"
-#: 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 tittel: %{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 ba om eit nytt passord for brukarkontoen din på %{instance}."
-#: lib/web/templates/email/email.html.eex:85
#, elixir-format
+#: lib/web/templates/email/email.html.eex:85
msgid "Warning"
msgstr "Åtvaring"
-#: lib/web/email/participation.ex:135
#, elixir-format
+#: lib/web/email/participation.ex:135
msgid "Confirm your participation to event %{title}"
msgstr "Stadfest at du vil delta på hendinga %{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 "Ein intern ID for den identiteten du har valt"
-#: 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 intern brukar-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 "Informasjonen me samlar frå deg, kan bli brukt på desse måtane:"
-#: 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 "Grunnleggjande kontoinformasjon"
-#: 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 "Ikkje del farleg stoff på 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 "Sender me informasjon om deg til utanforståande?"
-#: 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 "Bruker me infokapslar?"
-#: 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 "Korleis vernar me opplysingane dine?"
-#: 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-adresser og andre 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 "Offentlege hendingar og kommentarar"
-#: 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 "Ikkje lagra IP-adressene for registrerte brukarar lenger enn eitt år."
-#: 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 "Identifiseringsteikn"
-#: 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 ""
"Me kan òg lagra tenarloggar som inneheld IP-adressene for alle førespurnader "
"til tenaren vår."
-#: 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 "Me lagrar desse opplysingane på eininga di når du koplar til:"
-#: 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 "Me gjer vårt beste for å:"
-#: 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 "Kva bruker me opplysingane dine til?"
-#: 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 "Kva retningsliner for datalagring har me?"
-#: 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 kan når som helst sletta kontoen din for alltid."
-#: 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 "Endringar i personvernretningslinene våre"
-#: 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 ""
@@ -279,8 +279,8 @@ msgstr ""
"Personvernforordningen\">General Data Protection Regulation) at du ikkje "
"bruker nettstaden."
-#: 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 ""
@@ -290,30 +290,30 @@ msgstr ""
"27s_Online_Privacy_Protection_Act\">Children's Online Privacy Protection "
"Act) at du ikkje bruker nettstaden."
-#: 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 ""
"Viss me endrar personvernretningslinene seinare, vil me leggja ut endringane "
"på denne sida."
-#: 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 ""
"Lovkrava kan vera annleis om denne tenaren er innanfor ein annan "
"jurisdiksjon."
-#: 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 "Born på denne nettstaden"
-#: 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 ""
@@ -321,8 +321,8 @@ msgstr ""
"varslingar om korleis andre\n"
" reagerer på innhaldet ditt, eller sender deg meldingar, spørsmål og svar."
-#: 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 ""
@@ -330,8 +330,8 @@ msgstr ""
"adressa di med andre kjente adresser slik\n"
" at me kan finna ut om adressa er utestengt, eller andre brot på reglane."
-#: 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 ""
@@ -340,89 +340,89 @@ msgstr ""
" berre samhandla med innhald og innlegg frå andre samt leggja ut eige "
"innhald når du er logga inn."
-#: 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 "Kva opplysingar samlar me?"
-#: 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}: stadfest epostadressa di"
-#: lib/web/email/user.ex:152
#, elixir-format
+#: lib/web/email/user.ex:152
msgid "Mobilizon on %{instance}: email changed"
msgstr "Mobilizon på %{instance}: epostadressa er endra"
-#: lib/web/email/notification.ex:47
#, elixir-format
+#: 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"
msgstr[1] "%{nb_events} planlagde hendingar i dag"
+#, 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 ei hending i dag:"
msgstr[1] "Du har %{total} hendingar i dag:"
-#: 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} har nett invitert deg til gruppa %{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 "Bli med!"
-#: lib/web/email/notification.ex:24
#, elixir-format
+#: lib/web/email/notification.ex:24
msgid "Don't forget to go to %{title}"
msgstr "Ikkje gløym å koma på %{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 "Gjer deg klar til %{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 "Sjå på gruppene mine"
+#, 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å til gruppene dine for å takka ja til denne invitasjonen."
-#: 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 "Sjå hendinga på: %{link}"
-#: lib/web/email/group.ex:33
#, elixir-format
+#: 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}"
-#: lib/web/email/notification.ex:71
#, elixir-format
+#: 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"
-#: lib/web/email/notification.ex:93
#, 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] "Du har ein førespurnad om å delta på %{title} å handtera"
@@ -430,21 +430,21 @@ msgstr[1] ""
"%{number_participation_requests} førespurnader om å delta på %{title} å "
"handtera"
+#, 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 har ei hending denne veka:"
msgstr[1] "Du har %{total} hendingar denne veka:"
-#: lib/service/metadata/utils.ex:52
#, elixir-format
+#: lib/service/metadata/utils.ex:52
msgid "The event organizer didn't add any description."
msgstr "Tilskiparen skreiv inga skildring."
-#: 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 ""
@@ -453,8 +453,8 @@ msgstr ""
"er både nettlesarøkta di og trafikken sikra med SSL/TLS, og passordet ditt "
"blir nykjelkryptert med ein sterk einvegsalgoritme."
-#: 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 ""
@@ -465,20 +465,20 @@ msgstr ""
"halda lova, oppfylla våre eigne vilkår, eller verna våre eigne og andre sine "
"rettar, eigedom og tryggleik."
-#: 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 "Å godta vilkåra"
-#: 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 "Endringar i vilkåra"
-#: 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 ""
@@ -490,38 +490,38 @@ msgstr ""
"ansvar når det gjeld å bruka eller lita på ein kvar del av innhaldet på "
"nettstaden."
-#: 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 ""
"Du godtek òg at du ikkje vil gjera noko av dette når du bruker tenesta eller "
"har med andre brukarar å gjera:"
-#: 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 ""
"Gå rundt eller prøva å gå rundt filter, tryggleiksmekanismar, avgrensingar "
"eller andre måtar å verna tenesta, brukarane eller tredjepartar."
-#: 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 ""
"Samla personopplysingar om andre brukarar, eller plaga, truga, forfylgja "
"eller uroa andre som bruker tenesta;"
-#: 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 "Innhald som er ulovleg eller som vil føra med seg straffeansvar;"
-#: 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 ""
@@ -529,48 +529,48 @@ msgstr ""
"opphavsrett, privatlivsrett, publiseringsrett eller andre intellektuelle og "
"andre rettar til alle partar;"
-#: lib/web/templates/api/terms.html.eex:42
#, elixir-format
+#: lib/web/templates/api/terms.html.eex:42
msgctxt "terms"
msgid "Creating Accounts"
msgstr "Oppretta kontoar"
-#: lib/web/templates/api/terms.html.eex:89
#, elixir-format
+#: lib/web/templates/api/terms.html.eex:89
msgctxt "terms"
msgid "Entire Agreement"
msgstr "Heile avtala"
-#: lib/web/templates/api/terms.html.eex:92
#, elixir-format
+#: lib/web/templates/api/terms.html.eex:92
msgctxt "terms"
msgid "Feedback"
msgstr "Tilbakemeldingar"
-#: 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 "Lenker og tredjepartsinnhald"
-#: 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 ""
"Viss du bryt med desse vilkåra, har me rett til å sperra brukarkontoen din "
"eller kasta deg ut frå tenesta."
-#: 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 ""
"Gje seg ut for å vera nokon andre, eller leggja ut innhald på deira vegner, "
"eller elles misbruka tilknytinga di til ein person eller ei eining;"
-#: 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 ""
@@ -579,26 +579,26 @@ msgstr ""
"denne tenesta. Det tyder òg at du er ansvarleg for om innhaldet er lovleg, "
"til å lita på, og høver for dei som ser det."
-#: lib/web/templates/api/terms.html.eex:39
#, elixir-format
+#: lib/web/templates/api/terms.html.eex:39
msgctxt "terms"
msgid "Privacy Policy"
msgstr "Personvernretningsliner"
-#: 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 "Spørsmål & kontakt"
-#: lib/web/templates/api/terms.html.eex:87
#, elixir-format
+#: lib/web/templates/api/terms.html.eex:87
msgctxt "terms"
msgid "Termination"
msgstr "Opphøyr"
-#: 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 ""
@@ -606,14 +606,14 @@ msgstr ""
"eller hindra andre i å bruka tenesta; eller som kan skada, setja ut av "
"drift, overlasta eller hindra funksjonane på tenesta;"
-#: 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 "Innhaldet og åtferda di"
-#: 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 ""
@@ -624,8 +624,8 @@ msgstr ""
"tyder ikkje det at me går gode for innhaldet der. Du bruker alle lenker på "
"eigen risiko."
-#: 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 ""
@@ -633,16 +633,16 @@ msgstr ""
"om åtferd og styring når du bruker nettstaden vår. Dersom du bryt reglane, "
"kan det føra til at du blir utestengt eller at brukarkontoen din blir sperra."
-#: 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 ""
"Les meir om Mobilizon-programvara her."
-#: 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 ""
@@ -650,8 +650,8 @@ msgstr ""
"href=\"https://%{instance_url}\">%{instance_url})-nettstaden og "
"tenestene der (framover \"tenesta\"). her er vikåra, som me bed deg lesa."
-#: 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 ""
@@ -660,8 +660,8 @@ msgstr ""
"på nettsida vår. Viss du er interessert i endringane i vilkåra, må du fylgja "
"med på nettsida."
-#: 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 ""
@@ -669,16 +669,16 @@ msgstr ""
"ved å ikkje leggja ut, lenka eller visa til noko av det fylgjande når du "
"bruker nettstaden:"
-#: 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 ""
"Privatopplysingar til tredjepartar (td. adresser, telefonnummer, "
"epostadresser, personnummer og kredittkortnummer); og"
-#: 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 ""
@@ -689,8 +689,8 @@ msgstr ""
"innhaldet ditt på andre nettstader. Me er ikkje ansvarlege viss andre "
"nettstader av ein eller annan grunn ikkje slettar innhaldet ditt."
-#: 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 ""
@@ -698,8 +698,8 @@ msgstr ""
"å bruka tenesta, og avløyser alle tidlegare avtaler mellom deg og "
"%{instance_name} om det same."
-#: 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 ""
@@ -708,16 +708,16 @@ msgstr ""
"license-v3-(agpl-3.0)\">AGPLv3-lisensen, som både gjev deg høve til, og "
"faktisk oppmodar deg til, å sjå på, bruka og endra kjeldekoden."
-#: 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, øydelagde data eller andre skadelege, forstyrrande og øydeleggjande "
"filer eller kode."
-#: 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 ""
@@ -726,29 +726,29 @@ msgstr ""
"det i systemet eller tryggingskopiane våre i noko tid. Tilgangsloggar frå "
"vevtenaren kan òg bli lagra i noko tid."
-#: 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 ""
"Du kan senda spørsmål eller kommentarar om tenesta til oss på %{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 "Kjeldekode"
-#: 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 ""
"Me likar tilbakemeldingar! Sei gjerne kva du synest om tenesta, vilkåra og "
"kva som helst om %{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 ""
@@ -760,16 +760,16 @@ msgstr ""
"same gjeld andre nettstader og brukarsamfunn, og åtferd som dei meiner er "
"upassande, trugande, krenkjande eller skadeleg."
-#: 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} korkje bruker, overfører eller sel "
"personopplysingane dine"
-#: 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 ""
@@ -778,16 +778,16 @@ msgstr ""
"programvara, bed me deg kontakta Framasoft direkte."
-#: 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 ""
"Styrarane på nettstaden bør passa på at alle brukarsamfunna som er på "
"nettstaden blir styrte etter retningslinene som er fastsette."
-#: 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 ""
@@ -796,8 +796,8 @@ msgstr ""
"appdotnet/terms-of-service\">App.net, som òg er under CC BY-SA-lisensen."
-#: 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 ""
@@ -806,22 +806,22 @@ msgstr ""
"discourse\">Discourse, som òg er under CC BY-SA-lisensen."
-#: lib/web/templates/api/terms.html.eex:3
#, elixir-format
+#: lib/web/templates/api/terms.html.eex:3
msgctxt "terms"
msgid "Short version"
msgstr "Kortversjon"
-#: 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 ""
"Me driv denne tenesta utan å yta garantiar, og desse vilkåra kan bli endra i "
"framtida"
-#: 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 ""
@@ -829,8 +829,8 @@ msgstr ""
"licenses/by-sa/4.0/\">CC BY-SA-lisensen. Det vart sist endra 18. juni "
"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 ""
@@ -838,83 +838,83 @@ msgstr ""
"licenses/by-sa/4.0/\">CC BY-SA-lisensen. Det vart sist endra 22. juni "
"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 ""
"Du må respektera andre menneske og halda reglane på %{instance_name} "
"når du bruker denne tenesta"
-#: 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 "Du må fylgja lovene når du bruker %{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 "Du eig det du lagar"
-#: 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 "Stadfest epostadressa mi"
+#, 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 "Stadfest epostadressa di"
-#: 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 ""
"Hei! Du har akkurat meldt deg på denne hendinga: « %{title} ». Stadfest "
"epostadressa du skreiv inn:"
+#, 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 "Treng du hjelp, eller er det noko som ikkje verkar slik du venta?"
-#: 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 laga ein konto på %{host} med denne epostadressa. Du er berre "
"eitt klikk unna å ta kontoen i bruk."
-#: 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 rapport 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 "Epostadressa for brukarkontoen din på %{host} blir no endra til:"
-#: 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 bede om eit nytt passord for kontoen din 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 "Ikkje bruk han på ordentleg."
+#, 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] ""
@@ -924,9 +924,9 @@ msgstr[1] ""
"Viss du vil avbryta deltakinga di på ei eller fleire hendingar, kan du gå "
"til hendingssidene via lenkene over og klikka på «deltek»-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] "Du har ein førespurnad om deltaking å handtera:"
@@ -934,66 +934,66 @@ msgstr[1] ""
"Du har %{number_participation_requests} førespurnader om deltaking å "
"handtera:"
-#: 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} er ein Mobilizon-nettstad."
-#: 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} er ein Mobilizon-nettstad."
+#, 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 "Ein førespurnad ventar på deg!"
+#, 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 "Ei hending skjer snart!"
+#, 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 "Stadfest ny epostadresse"
-#: lib/web/templates/email/event_updated.html.eex:84
#, elixir-format
+#: lib/web/templates/email/event_updated.html.eex:84
msgid "End"
msgstr "Slutt"
-#: 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 "Slutt %{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 "Oppdatert hending!"
-#: lib/web/templates/email/report.html.eex:88
#, elixir-format
+#: lib/web/templates/email/report.html.eex:88
msgid "Flagged comments"
msgstr "Flagga kommentarar"
+#, 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 ""
"Godt nytt: Ein av tilskiparane har godkjent at du deltek. Skriv det i "
"kalenderen din, for du er på gjestelista!"
+#, 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! Det ser ut til at du vil endra epostadressa du har brukt til "
@@ -1001,16 +1001,16 @@ msgstr ""
"du klikka på knappen under for å stadfesta dndringa. Etterpå kan du logga "
"inn på %{instance} med den nye adressa."
-#: 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 ""
"Hei! Berre ei lita melding for å stadfesta at epostadressa til kontoen din "
"på %{host} er endra frå denne til:"
-#: 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:62
+#: 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 ""
"Viss du ikkje gjorde denne endringa sjølv, er det sannsynleg at nokon har "
@@ -1018,335 +1018,335 @@ msgstr ""
"ditt med ein gong. Viss du ikkje kan logga inn, bør du kontakta styraren på "
"%{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 ""
"Viss du ikkje gjorde dette sjølv, kan du oversjå denne meldinga. Passordet "
"ditt blir ikkje endra med mindre du klikkar på lenka over."
+#, 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 "Viss du ikkje gjorde dette sjølv, kan du trygt sjå bort frå dette."
+#, 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 ""
"Viss du ikkje vil delta likevel, kan du gå til hendingssida med lenka over "
"og klkka på «Deltek»-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ær meir om Mobilizon her!"
-#: lib/web/templates/email/event_updated.html.eex:94
#, elixir-format
+#: lib/web/templates/email/event_updated.html.eex:94
msgid "Location"
msgstr "Stad"
-#: 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 "Adressa vart fjerna"
+#, 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 "Sjå over ventande førespurnader"
+#, 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 "Nesten klar!"
+#, 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 "Ny stadfestingsepost"
-#: lib/web/templates/email/report.html.eex:106
#, elixir-format
+#: lib/web/templates/email/report.html.eex:106
msgid "Reasons for report"
msgstr "Grungjeving for rapporten"
-#: 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 ""
"Nokon på %{instance} rapporterte dette, slik at du kan sjå på det:"
+#, 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 "Orsak! Du er ikkje påmeld."
-#: 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 "Startar %{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 "%{title} er endra, så me tenkte du ville vita det."
+#, 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 "Tilskiparane har avlyst denne hendinga. Me orsakar!"
+#, 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 "Denne hendinga er stadfesta"
+#, 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 ""
"Denne hendinga er ikkje stadfesta enno. Tilskiparane seier frå viss dei "
"stadfestar ho."
+#, 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 "Tilskiparane har diverre avslege førespurnaden din."
-#: 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 "Stadfest epostadressa di"
-#: lib/web/templates/email/report.html.eex:126
#, elixir-format
+#: lib/web/templates/email/report.html.eex:126
msgid "View report"
msgstr "Les rapporten"
-#: lib/web/templates/email/report.text.eex:24
#, elixir-format
+#: lib/web/templates/email/report.text.eex:24
msgid "View report:"
msgstr "Les rapporten:"
+#, 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 "Sjå på hendingssida"
-#: 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 "Sjå på den oppdaterte hendingssida"
-#: 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 "Sjå på den oppdaterte hendingssida: %{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 "Kva skjer denne veka?"
+#, 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 "Kva skjer i dag?"
+#, 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 ""
"Viss du vil oppdatera eller avbryta deltakinga di, kan du gå til "
"hendingssida med lenka over og klikka på Deltek-knappen."
+#, 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 ""
"Du får denne eposten fordi du har valt å få varslingar når det er ventande "
"førespurnader til hendingane dine. Du kan skru av eller endra varsel i "
"kontoinnstillingane dine, under «Varsel»."
-#: 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 "Du ba om å bli med på %{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 "Du ba nyst om å vera med på %{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 "Du skal dit!"
+#, 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 ""
"Viss du ikkje endra dette sjølv, kan du trygt sjå bort frå denne meldinga."
-#: 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 "Ikkje bruk det på ordentleg."
+#, 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 ""
"Viss du meiner dette er feil, kan du kontakta gruppestyrarane slik at dei "
"kan leggja deg til att."
+#, 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 "Ha det så lenge, og takk for all fisken!"
-#: lib/web/email/group.ex:63
#, elixir-format
+#: lib/web/email/group.ex:63
msgid "You have been removed from group %{group}"
msgstr "Du er fjerna frå gruppa %{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 ""
"Du er fjerna frå gruppa %{group}. Du kan ikkje lenger lesa innhald som er "
"privat for denne gruppa."
-#: 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} har nett invitert deg til gruppa "
"%{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 ""
"Du er fjerna frå gruppa %{link_start}%{group}%{link_end}. Frå no kan "
"du ikkje lesa privat innhald i denne gruppa."
+#, 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 ""
"Denne gruppa var på ein annan nettstad, og vil halda fram å verka for andre "
"nettstader unnateke denne."
+#, 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 ""
"Denne gruppa var på ein annan nettstad, så alle data gruppa hadde er borte "
"for alltid."
+#, 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 ""
"Styraren %{author} sletta gruppa %{group}. Alle hendingar, ordskifte, "
"innlegg og gjeremål i gruppa er sletta."
+#, 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 "Gruppa %{group} på %{instance} er sperra!"
+#, 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 "Gruppa %{group} på %{instance} vart sletta!"
+#, 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 ""
"Styrarane på nettstaden din har avgjort å sperra gruppa %{group_name} "
"(%{group_address}). Du er ikkje lenger medlem av gruppa."
-#: lib/web/email/group.ex:136
#, elixir-format
+#: lib/web/email/group.ex:136
msgid "The group %{group} has been deleted on %{instance}"
msgstr "Gruppa %{group} på %{instance} er sletta"
-#: lib/web/email/group.ex:97
#, elixir-format
+#: lib/web/email/group.ex:97
msgid "The group %{group} has been suspended on %{instance}"
msgstr "Gruppa %{group} på %{instance} er sperra"
-#: 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 ""
"Ved å vitja eller bruka denne tenesta, er du bunden av alle vilkåra under. "
"Viss vilkåra er uklåre, set me pris på om du kontaktar %{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 ""
"På personvernsida vår kan du lesa meir om korleis "
"me samlar og bruker informasjon om dei som bruker denne tenesta."
-#: 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 ""
"Viss du held fram å bruka tenesta etter at dei endra vilkåra byrjar gjelda, "
"tyder det at du godtek dei endra vilkåra."
-#: 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 "Viss du slettar desse opplysingane, må du logga inn på nytt."
-#: 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 ""
@@ -1357,31 +1357,31 @@ msgstr ""
"Viss du slettar desse opplysingane, kjem ikkje nettlesaren din til å syna om "
"du deltek eller ei."
-#: 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 ""
"Merk: Desse opplysingane blir lagra i lokallagringa di, og ikkje i "
"infokapslane."
-#: lib/web/templates/api/terms.html.eex:71
#, elixir-format
+#: lib/web/templates/api/terms.html.eex:71
msgctxt "terms"
msgid "Our responsibility"
msgstr "Ansvaret vårt"
-#: 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 ""
"Å lagra tenarloggar med IP-adressene for alle førespurnader til denne "
"tenaren, i den grad me lagrar loggar, i maksimalt 90 dagar."
+#, 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 ""
@@ -1389,16 +1389,16 @@ msgstr ""
"skjøna. Me har laga ei ordliste som kan hjelpa deg "
"å forstå dei."
-#: 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 ""
"Me er ikkje ansvarlege for tap som kan koma av at nokon andre bruker eposten "
"og passordet ditt, anten du veit om det eller ikkje."
-#: 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 ""
@@ -1408,8 +1408,8 @@ msgstr ""
"innhaldet du legg ut, lenkar eller gjer tilgjengeleg på eller gjennom "
"tenesta."
-#: 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 ""
@@ -1426,16 +1426,16 @@ msgstr ""
"offentlege. Hugs at du kan vitja denne nettstaden utan å registrera "
"deg."
-#: 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 ""
"Me held på retten til å endra desse vilkåra til ei kvar tid. Til dømes kan "
"me ha bruk for å endra vilkåra dersom det kjem nye funksjonar på nettstaden."
-#: 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 ""
@@ -1448,8 +1448,8 @@ msgstr ""
"lesa meir om denne nettstaden på «Om "
"oss»-sida."
-#: 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 ""
@@ -1458,8 +1458,8 @@ msgstr ""
"tilgang til kontoopplysingane dine eller andre opplysingar du gjev til "
"%{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 ""
@@ -1471,8 +1471,8 @@ msgstr ""
"avgrensingane du har gjeve for kvar innhaldet skal syna. Me vil ikkje endra "
"dei innstillingane du har gjort for kvar innhaldet skal syna."
-#: 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 ""
@@ -1487,8 +1487,8 @@ msgstr ""
"mottakarar kan kopiera, laga skjermbilete eller dela innhaldet på andre "
"måtar."
-#: 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 ""
@@ -1498,199 +1498,205 @@ msgstr ""
"alle nettstader frå alle medlemer i gruppa, i den grad desse medlemene er på "
"andre nettstader enn denne."
-#: 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 ""
"Du har stadfesta at du deltek. Skriv det inn i kalenderen din, for du står "
"på gjestelista no!"
+#, 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 ba nett om å vera med på %{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 "Me har stadfesta at du deltek på hendinga %{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} rapporterte dette innhaldet."
-#: lib/web/templates/email/report.text.eex:5
#, elixir-format
+#: lib/web/templates/email/report.text.eex:5
msgid "Group %{group} was reported"
msgstr "Gruppa %{group} er rapportert"
-#: lib/web/templates/email/report.html.eex:51
#, elixir-format
+#: lib/web/templates/email/report.html.eex:51
msgid "Group reported"
msgstr "Ei gruppe er rapportert"
-#: lib/web/templates/email/report.text.eex:7
#, elixir-format
+#: lib/web/templates/email/report.text.eex:7
msgid "Profile %{profile} was reported"
msgstr "Profilen %{profile} er rapportert"
-#: lib/web/templates/email/report.html.eex:56
#, elixir-format
+#: lib/web/templates/email/report.html.eex:56
msgid "Profile reported"
msgstr "Ein profil er rapportert"
-#: 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 ""
"No har du stadfesta at du deltek. Skriv det inn i kalenderen din, for du "
"står på gjestelista no!"
-#: lib/mobilizon/posts/post.ex:94
#, elixir-format
+#: lib/mobilizon/posts/post.ex:94
msgid "A text is required for the post"
msgstr "Du treng tekst i innlegget"
-#: lib/mobilizon/posts/post.ex:93
#, elixir-format
+#: lib/mobilizon/posts/post.ex:93
msgid "A title is required for the post"
msgstr "Du treng ein tittel på innlegget"
-#: 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}) har spurt om å fylgja nettstaden din."
-#: lib/web/email/follow.ex:54
#, elixir-format
+#: lib/web/email/follow.ex:54
msgid "%{name} requests to follow your instance"
msgstr "%{name} spør om å fylgja nettstaden din"
-#: 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}) har nett spurt om å fylgja nettstaden din. Viss "
"du seier ja, vil nettstaden få alle dei offentlege hendingane på nettstaden "
"din."
-#: 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 ""
"Viss du seier ja, vil nettstaden få alle dei offentlege hendingane dine."
-#: lib/web/email/follow.ex:48
#, elixir-format
+#: lib/web/email/follow.ex:48
msgid "Instance %{name} (%{domain}) requests to follow your instance"
msgstr "Nettstaden %{name} (%{domain}) spør om å fylgja nettstaden din"
-#: 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 "Sjå på innstillingane for spreiing"
+#, 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å til administratorinnstillingane for nettstaden for å godta denne "
"invitasjonen."
+#, 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 "Vil du kopla til?"
+#, 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 ""
"Merk: At %{name} (%{domain}) fylgjer deg, tyder ikkje plent at du fylgjer "
"dei, men du kan be om å fylgja dei òg."
-#: 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 ""
"Hei! Du melde deg akkurat på denne hendinga: «%{title}». Stadfest "
"epostadressa du skreiv inn:"
-#: 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 "Du sende ein førespurnad om å vera med på %{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 "Namn på hendinga"
-#: 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 "%{title} har vorte endra, så me tenkte du ville vita det."
-#: 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 "Denne sida er feil"
-#: lib/web/templates/error/500_page.html.eex:50
#, elixir-format
+#: lib/web/templates/error/500_page.html.eex:50
msgid "We're sorry, but something went wrong on our end."
msgstr "Orsak, det skjedde noko feil hjå oss."
+#, 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 "Dette er ei demoside for å prøva ut Mobilizon."
-#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
#, elixir-format
+#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr "Straumen til %{name}"
-#: lib/service/export/feed.ex:77
#, elixir-format
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr "Den private hendingsstraumen til %{actor} på %{instance}"
-#: lib/service/export/feed.ex:72
#, elixir-format
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr "Den offentlege hendingsstraumen til %{actor} på %{instance}"
-#: lib/service/export/feed.ex:203
#, elixir-format
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr "Straum for %{email} på %{instance}"
-#: lib/web/templates/error/500_page.html.eex:57
#, elixir-format
+#: lib/web/templates/error/500_page.html.eex:57
msgid "If the issue persists, you may contact the server administrator at %{contact}."
msgstr ""
"Viss feilen held fram, kan du kontakta styraren for denne tenaren på "
"%{contact}."
-#: lib/web/templates/error/500_page.html.eex:55
#, elixir-format
+#: lib/web/templates/error/500_page.html.eex:55
msgid "If the issue persists, you may try to contact the server administrator."
msgstr ""
"Viss feilen held fram, kan du prøva å kontakta styraren på denne tenaren."
-#: lib/web/templates/error/500_page.html.eex:68
#, elixir-format
+#: lib/web/templates/error/500_page.html.eex:68
msgid "Technical details"
msgstr "Tekniske opplysingar"
-#: lib/web/templates/error/500_page.html.eex:52
#, elixir-format
+#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr "Mobilizon-tenaren ser ut til å vera nede i augeblinken."
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/nn/LC_MESSAGES/errors.po b/priv/gettext/nn/LC_MESSAGES/errors.po
index d2a64daff..4cb5e014c 100644
--- a/priv/gettext/nn/LC_MESSAGES/errors.po
+++ b/priv/gettext/nn/LC_MESSAGES/errors.po
@@ -110,775 +110,775 @@ 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:100
#, elixir-format
+#: lib/graphql/resolvers/user.ex:100
msgid "Cannot refresh the token"
msgstr "Kan ikkje fornya teiknet"
-#: lib/graphql/resolvers/group.ex:198
#, elixir-format
+#: lib/graphql/resolvers/group.ex:206
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:210
msgid "Current profile is not an administrator of the selected group"
msgstr "Denne brukaren er ikkje styrar av gruppa"
-#: lib/graphql/resolvers/user.ex:501
#, elixir-format
+#: lib/graphql/resolvers/user.ex:501
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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 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:68
msgid "Group with ID %{id} not found"
msgstr "Fann ikkje gruppa med ID %{id}"
-#: lib/graphql/resolvers/user.ex:80
#, elixir-format
+#: lib/graphql/resolvers/user.ex:80
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:266
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:406
-#, elixir-format
msgid "No profile found for the moderator user"
msgstr "Fann ingen profil for moderator-brukaren"
-#: lib/graphql/resolvers/user.ex:193
#, elixir-format
+#: lib/graphql/resolvers/user.ex:193
msgid "No user to validate with this email was found"
msgstr "Fann ingen brukar med denne eposten å godkjenna"
-#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/user.ex:218
#, elixir-format
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
msgid "No user with this email was found"
msgstr "Fann ingen brukar med denne eposten"
+#, 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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
-#, elixir-format
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr "Ingen godkjent brukar eig denne profilen"
-#: lib/graphql/resolvers/user.ex:123
#, elixir-format
+#: lib/graphql/resolvers/user.ex:123
msgid "Registrations are not open"
msgstr "Det er ikkje opna for å registrera seg"
-#: lib/graphql/resolvers/user.ex:331
#, elixir-format
+#: lib/graphql/resolvers/user.ex:331
msgid "The current password is invalid"
msgstr "Dette passordet er ugyldig"
-#: lib/graphql/resolvers/user.ex:376
#, elixir-format
+#: lib/graphql/resolvers/user.ex:376
msgid "The new email doesn't seem to be valid"
msgstr "Den nye epostadressa ser ut til å vera feil"
-#: lib/graphql/resolvers/user.ex:373
#, elixir-format
+#: lib/graphql/resolvers/user.ex:373
msgid "The new email must be different"
msgstr "Den nye epostadressa må vera annleis"
-#: lib/graphql/resolvers/user.ex:334
#, elixir-format
+#: lib/graphql/resolvers/user.ex:334
msgid "The new password must be different"
msgstr "Det nye passordet må vera annleis"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428
#: lib/graphql/resolvers/user.ex:431
-#, elixir-format
msgid "The password provided is invalid"
msgstr "Dette passordet er ugyldig"
-#: lib/graphql/resolvers/user.ex:338
#, elixir-format
+#: lib/graphql/resolvers/user.ex:338
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:214
#, elixir-format
+#: lib/graphql/resolvers/user.ex:214
msgid "This user can't reset their password"
msgstr "Denne brukaren kan ikkje nullstilla passordet sitt"
-#: lib/graphql/resolvers/user.ex:76
#, elixir-format
+#: lib/graphql/resolvers/user.ex:76
msgid "This user has been disabled"
msgstr "Denne brukaren er avskrudd"
-#: lib/graphql/resolvers/user.ex:177
#, elixir-format
+#: lib/graphql/resolvers/user.ex:177
msgid "Unable to validate user"
msgstr "Greier ikkje godkjenna brukaren"
-#: lib/graphql/resolvers/user.ex:409
#, elixir-format
+#: lib/graphql/resolvers/user.ex:409
msgid "User already disabled"
msgstr "Brukaren er allereie inaktiv"
-#: lib/graphql/resolvers/user.ex:476
#, elixir-format
+#: lib/graphql/resolvers/user.ex:476
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:240
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:273
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:237
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:96
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:381
#, elixir-format
+#: lib/graphql/resolvers/user.ex:381
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:346
#, elixir-format
+#: lib/graphql/resolvers/user.ex:346
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:215
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:436
#, elixir-format
+#: lib/graphql/resolvers/user.ex:436
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:245
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:278
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:180
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:105
#, elixir-format
+#: lib/graphql/resolvers/user.ex:105
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:196 lib/graphql/resolvers/user.ex:221
#, elixir-format
+#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221
msgid "You requested again a confirmation email too soon"
msgstr "Du ba om ny stadfestingsepost for snøgt"
-#: lib/graphql/resolvers/user.ex:126
#, elixir-format
+#: lib/graphql/resolvers/user.ex:126
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:92
#, 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:86
#, 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:195
#, elixir-format
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr "Kan ikkje fjerna den siste styraren i gruppa"
-#: lib/graphql/resolvers/person.ex:192
#, elixir-format
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr "Kan ikkje fjerna den siste identiteten til ein brukar"
-#: lib/graphql/resolvers/comment.ex:108
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:108
msgid "Comment is already deleted"
msgstr "Kommentaren er allereie sletta"
-#: lib/graphql/error.ex:92 lib/graphql/resolvers/discussion.ex:62
#, elixir-format
+#: lib/graphql/error.ex:92 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:127
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:127
msgid "Event id not found"
msgstr "Fann ikkje ID-en til hendinga"
+#, elixir-format
#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281
#: lib/graphql/resolvers/event.ex:325
-#, elixir-format
msgid "Event not found"
msgstr "Fann ikkje hendinga"
+#, 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 "Det finst inga hending med ID-en %{id}"
-#: lib/graphql/resolvers/participant.ex:99
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:99
msgid "Internal Error"
msgstr "Intern feil"
-#: lib/graphql/resolvers/discussion.ex:201
#, elixir-format
+#: lib/graphql/resolvers/discussion.ex:202
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:64
msgid "No such feed token"
msgstr "Det finst ikkje noko slikt teikn for kjelda"
-#: lib/graphql/resolvers/participant.ex:237
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:237
msgid "Participant already has role %{role}"
msgstr "Deltakaren har rolla %{role} allereie"
+#, 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 "Fann ikkje deltakaren"
-#: lib/graphql/resolvers/person.ex:29
#, elixir-format
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr "Fann ingen person med ID-en %{id}"
-#: lib/graphql/resolvers/person.ex:51
#, elixir-format
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr "Fann ingen person med brukarnamnet %{username}"
-#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200
#, 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:170 lib/graphql/resolvers/post.ex:203
#, 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"
+#, 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:88 lib/graphql/resolvers/resource.ex:128
#: lib/graphql/resolvers/resource.ex:157 lib/graphql/resolvers/resource.ex:186 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:161 lib/graphql/resolvers/person.ex:189
#, elixir-format
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr "Fann ikkje profilen"
-#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
#, elixir-format
-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
msgid "Report not found"
msgstr "Fann ikkje rapporten"
-#: lib/graphql/resolvers/resource.ex:154 lib/graphql/resolvers/resource.ex:183
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:154 lib/graphql/resolvers/resource.ex:183
msgid "Resource doesn't exist"
msgstr "Ressursen finst ikkje"
-#: lib/graphql/resolvers/participant.ex:120
#, 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:260
#, 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:73
msgid "Token does not exist"
msgstr "Teiknet finst ikkje"
-#: lib/graphql/resolvers/feed_token.ex:66
#, elixir-format
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID"
msgstr "Teiknet er ikkje ein gyldig UUID"
-#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:358
#, elixir-format
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr "Fann ikkje brukaren"
-#: lib/graphql/resolvers/person.ex:256
#, elixir-format
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr "Du har allereie ein profil for denne brukaren"
-#: lib/graphql/resolvers/participant.ex:130
#, 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/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:149
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:54
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:54
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:113
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:113
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:82
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:76
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:76
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"
+#, 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 ""
"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:153
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:104
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:104
msgid "You cannot delete this comment"
msgstr "Du kan ikkje sletta denne kommentaren"
-#: lib/graphql/resolvers/event.ex:321
#, elixir-format
+#: lib/graphql/resolvers/event.ex:321
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:76
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:53
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:237
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:222
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:261
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:76
#, elixir-format
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr "Du må vera innlogga for å sjå ordskifte"
-#: lib/graphql/resolvers/resource.ex:94
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:94
msgid "You need to be logged-in to access resources"
msgstr "Du må vera innlogga for å sjå ressursane"
-#: lib/graphql/resolvers/event.ex:256
#, elixir-format
+#: lib/graphql/resolvers/event.ex:256
msgid "You need to be logged-in to create events"
msgstr "Du må vera innlogga for å laga hendingar"
-#: lib/graphql/resolvers/post.ex:140
#, 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:133
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:133
msgid "You need to be logged-in to create resources"
msgstr "Du må vera innlogga for å laga ressursar"
-#: lib/graphql/resolvers/event.ex:330
#, elixir-format
+#: lib/graphql/resolvers/event.ex:330
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:211
#, 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:191
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:191
msgid "You need to be logged-in to delete resources"
msgstr "Du må vera innlogga for å sletta ressursar"
-#: lib/graphql/resolvers/participant.ex:104
#, 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:203
#, 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:295
#, elixir-format
+#: lib/graphql/resolvers/event.ex:295
msgid "You need to be logged-in to update an event"
msgstr "Du må vera innlogga for å oppdatera hendingar"
-#: lib/graphql/resolvers/post.ex:178
#, 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:162
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:162
msgid "You need to be logged-in to update resources"
msgstr "Du må vera innlogga for å oppdatera ressursar"
-#: lib/graphql/resolvers/resource.ex:218
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:218
msgid "You need to be logged-in to view a resource preview"
msgstr "Du må vera innlogga for å førehandsvisa ressursar"
-#: lib/graphql/resolvers/resource.ex:125
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:125
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:93
#, elixir-format
+#: lib/graphql/error.ex:93
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:114
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:132
msgid "You can't reject this invitation with this profile."
msgstr "Du kan ikkje avslå invitasjonen med denne profilen."
-#: lib/graphql/resolvers/media.ex:62
#, 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:175
msgid "Profile is not administrator for the group"
msgstr "Profilen er ikkje administrator for gruppa"
-#: lib/graphql/resolvers/event.ex:284
#, elixir-format
+#: lib/graphql/resolvers/event.ex:284
msgid "You can't edit this event."
msgstr "Du kan ikkje endra denne hendinga."
-#: lib/graphql/resolvers/event.ex:287
#, elixir-format
+#: lib/graphql/resolvers/event.ex:287
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:135
msgid "This invitation doesn't exist."
msgstr "Invitasjonen finst ikkje."
-#: lib/graphql/resolvers/member.ex:179
#, elixir-format
+#: lib/graphql/resolvers/member.ex:177
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:184
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:351
#, elixir-format
+#: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken."
msgstr "Dette brukarnamnet er oppteke."
-#: lib/graphql/resolvers/discussion.ex:73
#, elixir-format
+#: lib/graphql/resolvers/discussion.ex:74
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:245
#, elixir-format
+#: lib/graphql/resolvers/event.ex:245
msgid "Organizer profile is not owned by the user"
msgstr "Brukaren eig ikkje arrangørprofilen"
-#: lib/graphql/resolvers/participant.ex:89
#, 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"
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
#, elixir-format
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr "Dette biletet er for stort"
-#: lib/web/views/utils.ex:33
#, elixir-format
+#: lib/web/views/utils.ex:33
msgid "Index file not found. You need to recompile the front-end."
msgstr "Fann ikkje indeksfila. Du må kompilera framsida på nytt."
-#: lib/graphql/resolvers/resource.ex:122
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr "Greidde ikkje laga ressursen"
-#: lib/graphql/resolvers/user.ex:390
#, elixir-format
+#: lib/graphql/resolvers/user.ex:390
msgid "Invalid activation token"
msgstr "Ugyldig aktiveringslykjel"
-#: lib/graphql/resolvers/resource.ex:208
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr "Greidde ikkje henta ressursdetaljane frå denne adressa."
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr "Moderatorprofilen har ikkje tilgang til denne hendinga"
diff --git a/priv/gettext/oc/LC_MESSAGES/default.po b/priv/gettext/oc/LC_MESSAGES/default.po
index b8d905b41..31b13a439 100644
--- a/priv/gettext/oc/LC_MESSAGES/default.po
+++ b/priv/gettext/oc/LC_MESSAGES/default.po
@@ -926,8 +926,8 @@ msgid "Hi there! Just a quick note to confirm that the email address linked to y
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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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 ""
@@ -1466,21 +1466,22 @@ msgstr ""
#, elixir-format
#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr ""
@@ -1503,3 +1504,8 @@ msgstr ""
#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr ""
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/oc/LC_MESSAGES/errors.po b/priv/gettext/oc/LC_MESSAGES/errors.po
index fb28ea692..b9176f188 100644
--- a/priv/gettext/oc/LC_MESSAGES/errors.po
+++ b/priv/gettext/oc/LC_MESSAGES/errors.po
@@ -100,12 +100,12 @@ msgid "Cannot refresh the token"
msgstr "Actualizacion impossibla del geton"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:198
+#: lib/graphql/resolvers/group.ex:206
msgid "Current profile is not a member of this group"
msgstr "Lo perfil actual es pas un membre d’aqueste grop"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:202
+#: lib/graphql/resolvers/group.ex:210
msgid "Current profile is not an administrator of the selected group"
msgstr "Lo perfil actual es pas administrator del grop seleccionat"
@@ -115,13 +115,13 @@ msgid "Error while saving user settings"
msgstr "Error en salvagardant los paramètres utilizaire"
#, 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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 lib/graphql/resolvers/member.ex:80
msgid "Group not found"
msgstr "Grop pas trobat"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:66
+#: lib/graphql/resolvers/group.ex:68
msgid "Group with ID %{id} not found"
msgstr "Grop amb l’ID %{id} pas trobat"
@@ -133,7 +133,7 @@ msgstr ""
"invalid."
#, elixir-format
-#: lib/graphql/resolvers/group.ex:258
+#: lib/graphql/resolvers/group.ex:266
msgid "Member not found"
msgstr "Membre pas trobat"
@@ -149,16 +149,16 @@ msgid "No user to validate with this email was found"
msgstr "Cap d’utilizaire de validar amb aqueste email pas trobat"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/user.ex:218
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
msgid "No user with this email was found"
msgstr "Degun trobat d'amb aquesta 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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr "Lo perhiu es pas proprietat del utilizator autenticat"
@@ -226,22 +226,22 @@ msgid "User requested is not logged-in"
msgstr "L'utilizator demandat es pas conectat"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:232
+#: lib/graphql/resolvers/group.ex:240
msgid "You are already a member of this group"
msgstr "Essetz déjà membre d'aquest grop"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:265
+#: lib/graphql/resolvers/group.ex:273
msgid "You can't leave this group because you are the only administrator"
msgstr "Podetz pas quitar aquest grop perque essetz lo sol administrator"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:229
+#: lib/graphql/resolvers/group.ex:237
msgid "You cannot join this group"
msgstr "Podetz pas rejónher aquest grop"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:94
+#: lib/graphql/resolvers/group.ex:96
msgid "You may not list groups unless moderator."
msgstr "Podetz listar los grops sonque se essetz moderator."
@@ -256,7 +256,7 @@ 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"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:207
+#: lib/graphql/resolvers/group.ex:215
msgid "You need to be logged-in to delete a group"
msgstr "Debetz d'esser conectat per suprimir un grop"
@@ -266,17 +266,17 @@ msgid "You need to be logged-in to delete your account"
msgstr "Devetz d'esser conectat per suprimir lo voste compte"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:237
+#: lib/graphql/resolvers/group.ex:245
msgid "You need to be logged-in to join a group"
msgstr "Devetz d'esser conectat per rejónher un grop"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:270
+#: lib/graphql/resolvers/group.ex:278
msgid "You need to be logged-in to leave a group"
msgstr "Devetz d'esser conectat per quitar un grop"
#, elixir-format
-#: lib/graphql/resolvers/group.ex:172
+#: lib/graphql/resolvers/group.ex:180
msgid "You need to be logged-in to update a group"
msgstr "Devetz d'esser conectat per metre à jorn un grop"
@@ -342,12 +342,12 @@ msgid "Anonymous participation is not enabled"
msgstr "Ua participacion anonima es pas permetuda"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:195
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr "Pòden pas suprimir lo darrièr administrator d'un grop"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:192
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr "Pòden pas suprimir la darrièra identitat d'un utilizator"
@@ -394,7 +394,7 @@ msgid "Internal Error"
msgstr "Error interna"
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:201
+#: lib/graphql/resolvers/discussion.ex:202
msgid "No discussion with ID %{id}"
msgstr "Cap de discussion d'amb aquesta ID %{id}"
@@ -404,7 +404,7 @@ msgid "No profile found for user"
msgstr "Cap de profiu trobat per l'utilizator"
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:63
+#: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token"
msgstr "Cap de senhau d'alimentacion"
@@ -421,12 +421,12 @@ msgid "Participant not found"
msgstr "Participant non trobat"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:29
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr "Degun trobat d'amb ID %{id}"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:51
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr "Degun trobat d'amb l'utilizator %{username}"
@@ -460,15 +460,10 @@ msgid "Profile is not member of group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:189
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr ""
-#, elixir-format
-#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
-msgid "Provided moderator profile doesn't have permission on this event"
-msgstr ""
-
#, elixir-format
#: lib/graphql/resolvers/report.ex:36
msgid "Report not found"
@@ -501,22 +496,22 @@ msgid "Todo list doesn't exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:69
+#: lib/graphql/resolvers/feed_token.ex:73
msgid "Token does not exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:66
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID"
msgstr ""
#, elixir-format
-#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:358
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:256
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr ""
@@ -531,7 +526,7 @@ msgid "You are not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:151
+#: lib/graphql/resolvers/member.ex:149
msgid "You are not a moderator or admin for this group"
msgstr ""
@@ -551,7 +546,7 @@ msgid "You are not allowed to delete a comment if not connected"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:78
+#: lib/graphql/resolvers/feed_token.ex:82
msgid "You are not allowed to delete a feed token if not connected"
msgstr ""
@@ -567,7 +562,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:155
+#: lib/graphql/resolvers/member.ex:153
msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr ""
@@ -587,12 +582,12 @@ msgid "You cannot invite to this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:72
+#: lib/graphql/resolvers/feed_token.ex:76
msgid "You don't have permission to delete this token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:52
+#: lib/graphql/resolvers/admin.ex:53
msgid "You need to be logged-in and a moderator to list action logs"
msgstr ""
@@ -612,22 +607,22 @@ msgid "You need to be logged-in and a moderator to view a report"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:236
+#: lib/graphql/resolvers/admin.ex:237
msgid "You need to be logged-in and an administrator to access admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:221
+#: lib/graphql/resolvers/admin.ex:222
msgid "You need to be logged-in and an administrator to access dashboard statistics"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:260
+#: lib/graphql/resolvers/admin.ex:261
msgid "You need to be logged-in and an administrator to save admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:76
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr ""
@@ -767,12 +762,12 @@ msgid "You need to be logged in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:116
+#: lib/graphql/resolvers/member.ex:114
msgid "You can't accept this invitation with this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:134
+#: lib/graphql/resolvers/member.ex:132
msgid "You can't reject this invitation with this profile."
msgstr ""
@@ -782,7 +777,7 @@ msgid "File doesn't have an allowed MIME type."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:167
+#: lib/graphql/resolvers/group.ex:175
msgid "Profile is not administrator for the group"
msgstr ""
@@ -797,17 +792,17 @@ msgid "You can't attribute this event to this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:137
+#: lib/graphql/resolvers/member.ex:135
msgid "This invitation doesn't exist."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:179
+#: lib/graphql/resolvers/member.ex:177
msgid "This member already has been rejected."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:186
+#: lib/graphql/resolvers/member.ex:184
msgid "You don't have the right to remove this member."
msgstr ""
@@ -817,7 +812,7 @@ msgid "This username is already taken."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:73
+#: lib/graphql/resolvers/discussion.ex:74
msgid "You must provide either an ID or a slug to access a discussion"
msgstr ""
@@ -832,8 +827,8 @@ msgid "Profile ID provided is not the anonymous profile one"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr ""
@@ -842,7 +837,7 @@ msgstr ""
msgid "Index file not found. You need to recompile the front-end."
msgstr ""
-#, elixir-format, fuzzy
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr "Error mentre que sauvant lo rapòrt"
@@ -856,3 +851,8 @@ msgstr ""
#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr ""
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr ""
diff --git a/priv/gettext/pl/LC_MESSAGES/default.po b/priv/gettext/pl/LC_MESSAGES/default.po
index 1f3623d17..ca9b1186b 100644
--- a/priv/gettext/pl/LC_MESSAGES/default.po
+++ b/priv/gettext/pl/LC_MESSAGES/default.po
@@ -934,8 +934,8 @@ msgstr ""
"powiązany z Twoim kontem na %{host} został zmieniony z tego na:"
#, 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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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 ""
"Jeżeli to nie Ty dokonałeś(-aś) tej zmiany, prawdopodobnie ktoś uzyskał "
@@ -1482,21 +1482,22 @@ msgstr "To jest strona demonstracyjna pozwalająca na przetestowanie Mobilizon."
#, elixir-format
#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr ""
@@ -1519,3 +1520,8 @@ msgstr ""
#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr "Serwer Mobilizon wydaje się tymczasowo nie działać."
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/pl/LC_MESSAGES/errors.po b/priv/gettext/pl/LC_MESSAGES/errors.po
index 14d8c232b..1faef75e7 100644
--- a/priv/gettext/pl/LC_MESSAGES/errors.po
+++ b/priv/gettext/pl/LC_MESSAGES/errors.po
@@ -107,12 +107,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:206
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:210
msgid "Current profile is not an administrator of the selected group"
msgstr "Obecny profil nie jest administratorem zaznaczonej grupy"
@@ -122,13 +122,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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 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:68
msgid "Group with ID %{id} not found"
msgstr "Nie odnaleziono grupy o ID %{id}"
@@ -139,7 +139,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:266
msgid "Member not found"
msgstr "Nie odnaleziono użytkownika"
@@ -156,16 +156,16 @@ msgstr ""
"Nie znaleziono użytkownika do zatwierdzenia z użyciem tego adresu e-mail"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/user.ex:218
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
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:28 lib/graphql/resolvers/participant.ex:159
-#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr "Profil nie należy do uwierzytelnionego użytkownika"
@@ -233,23 +233,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:240
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:273
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:237
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:96
msgid "You may not list groups unless moderator."
msgstr "Nie masz dostępu do listy grup, jeżeli nie jesteś moderatorem."
@@ -264,7 +264,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:215
msgid "You need to be logged-in to delete a group"
msgstr "Musisz być zalogowany(-a), aby usunąć grupę"
@@ -274,17 +274,17 @@ 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:245
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:278
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:180
msgid "You need to be logged-in to update a group"
msgstr "Musisz być zalogowany(-a), aby zaktualizować grupę"
@@ -349,12 +349,12 @@ msgid "Anonymous participation is not enabled"
msgstr "Anonimowe uczestnictwa nie są włączone"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:195
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr "Nie można usunać jedynego administratora grupy"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:192
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr "Nie można usunąć jedynej tożsamości użytkownika"
@@ -401,7 +401,7 @@ msgid "Internal Error"
msgstr "Wewnętrzny błąd"
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:201
+#: lib/graphql/resolvers/discussion.ex:202
msgid "No discussion with ID %{id}"
msgstr "Nie znaleziono dyskusji o ID ${id}"
@@ -411,7 +411,7 @@ msgid "No profile found for user"
msgstr "Nie znaleziono profilu dla użytkownika"
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:63
+#: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token"
msgstr "Nie ma takiego tokenu strumienia"
@@ -428,12 +428,12 @@ msgid "Participant not found"
msgstr "Nie znaleziono uczestnika"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:29
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr "Osoba o ID %{id} nie istnieje"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:51
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr "Nie znaleziono osoby o nazwie użytkownika %{username}"
@@ -467,15 +467,10 @@ msgid "Profile is not member of group"
msgstr "Profil nie jest członkiem grupy"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:189
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr "Nie znaleziono profilu"
-#, elixir-format
-#: lib/graphql/resolvers/event.ex:145 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"
-
#, elixir-format
#: lib/graphql/resolvers/report.ex:36
msgid "Report not found"
@@ -508,22 +503,22 @@ msgid "Todo list doesn't exist"
msgstr "Lista do zrobienia nie istnieje"
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:69
+#: lib/graphql/resolvers/feed_token.ex:73
msgid "Token does not exist"
msgstr "Token nie istnieje"
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:66
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
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:358
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr "Nie znaleziono użytkownika"
#, elixir-format
-#: lib/graphql/resolvers/person.ex:256
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr "Już masz profil dla tego użytkownika"
@@ -538,7 +533,7 @@ msgid "You are not a member of this group"
msgstr "Nie jesteś członkiem tej grupy"
#, elixir-format
-#: lib/graphql/resolvers/member.ex:151
+#: lib/graphql/resolvers/member.ex:149
msgid "You are not a moderator or admin for this group"
msgstr "Nie jesteś moderatorem ani administratorem tej grupy"
@@ -558,7 +553,7 @@ msgid "You are not allowed to delete a comment if not connected"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:78
+#: lib/graphql/resolvers/feed_token.ex:82
msgid "You are not allowed to delete a feed token if not connected"
msgstr ""
@@ -574,7 +569,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:155
+#: lib/graphql/resolvers/member.ex:153
msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr ""
"Nie możesz przydzielić sobie niższej rangi grupy, ponieważ jesteś jedynym "
@@ -596,12 +591,12 @@ msgid "You cannot invite to this group"
msgstr "Nie możesz zaprosić do tej grupy"
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:72
+#: lib/graphql/resolvers/feed_token.ex:76
msgid "You don't have permission to delete this token"
msgstr "Nie masz uprawnień do usunięcia tego tokenu"
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:52
+#: lib/graphql/resolvers/admin.ex:53
msgid "You need to be logged-in and a moderator to list action logs"
msgstr "Musisz być zalogowanym moderatorem, aby mieć dostęp do dzennika działań"
@@ -621,28 +616,28 @@ msgid "You need to be logged-in and a moderator to view a report"
msgstr "Musisz być zalogowanym moderatorem, aby wyświetlić zgłoszenie"
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:236
+#: lib/graphql/resolvers/admin.ex:237
msgid "You need to be logged-in and an administrator to access admin settings"
msgstr ""
"Musisz być zalogowanym moderatorem, aby uzyskać dostęp do ustawień "
"administratora"
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:221
+#: lib/graphql/resolvers/admin.ex:222
msgid "You need to be logged-in and an administrator to access dashboard statistics"
msgstr ""
"Musisz być zalogowanym administratorem, aby uzyskać dostęp do statystyk w "
"panelu"
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:260
+#: lib/graphql/resolvers/admin.ex:261
msgid "You need to be logged-in and an administrator to save admin settings"
msgstr ""
"Musisz być zalogowanym administratorem, aby zapisywać ustawienia "
"administratora"
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:76
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr "Musisz być zalogowany(-a), aby uzyskać dostęp do dyskusji"
@@ -784,12 +779,12 @@ msgid "You need to be logged in"
msgstr "Musisz być zalogowany(-a)"
#, elixir-format
-#: lib/graphql/resolvers/member.ex:116
+#: lib/graphql/resolvers/member.ex:114
msgid "You can't accept this invitation with this profile."
msgstr "Nie możesz zaakceptować tego zaproszenia z tego profilu."
#, elixir-format
-#: lib/graphql/resolvers/member.ex:134
+#: lib/graphql/resolvers/member.ex:132
msgid "You can't reject this invitation with this profile."
msgstr "Nie możesz odrzucić tego zaproszenia z tego profilu."
@@ -799,7 +794,7 @@ 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:175
msgid "Profile is not administrator for the group"
msgstr "Profil nie jest administratorem grupy"
@@ -814,17 +809,17 @@ msgid "You can't attribute this event to this profile."
msgstr "Nie możesz przypisać tego wydarzenia do tego profilu."
#, elixir-format
-#: lib/graphql/resolvers/member.ex:137
+#: lib/graphql/resolvers/member.ex:135
msgid "This invitation doesn't exist."
msgstr "To zaproszenie nie istnieje."
#, elixir-format
-#: lib/graphql/resolvers/member.ex:179
+#: lib/graphql/resolvers/member.ex:177
msgid "This member already has been rejected."
msgstr "Ten członek już został odrzucony."
#, elixir-format
-#: lib/graphql/resolvers/member.ex:186
+#: lib/graphql/resolvers/member.ex:184
msgid "You don't have the right to remove this member."
msgstr "Nie masz uprawnień do usunięcia tego członka."
@@ -834,7 +829,7 @@ msgid "This username is already taken."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:73
+#: lib/graphql/resolvers/discussion.ex:74
msgid "You must provide either an ID or a slug to access a discussion"
msgstr ""
@@ -849,8 +844,8 @@ msgid "Profile ID provided is not the anonymous profile one"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr ""
@@ -859,7 +854,7 @@ msgstr ""
msgid "Index file not found. You need to recompile the front-end."
msgstr ""
-#, elixir-format, fuzzy
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr "Wystąpił błąd podczas zapisywania zgłoszenia"
@@ -873,3 +868,8 @@ msgstr ""
#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr ""
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr "Wskazany profil moderatora nie ma uprawnień dla tego wydarzenia"
diff --git a/priv/gettext/pt/LC_MESSAGES/default.po b/priv/gettext/pt/LC_MESSAGES/default.po
index c597d83b1..c79a35bd5 100644
--- a/priv/gettext/pt/LC_MESSAGES/default.po
+++ b/priv/gettext/pt/LC_MESSAGES/default.po
@@ -837,8 +837,8 @@ msgid "Hi there! Just a quick note to confirm that the email address linked to y
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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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 ""
@@ -1361,21 +1361,22 @@ msgstr ""
#, elixir-format
#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr ""
@@ -1398,3 +1399,8 @@ msgstr ""
#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr ""
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/pt/LC_MESSAGES/errors.po b/priv/gettext/pt/LC_MESSAGES/errors.po
index aba908b6b..4cc4c6f7a 100644
--- a/priv/gettext/pt/LC_MESSAGES/errors.po
+++ b/priv/gettext/pt/LC_MESSAGES/errors.po
@@ -93,12 +93,12 @@ msgid "Cannot refresh the token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:198
+#: lib/graphql/resolvers/group.ex:206
msgid "Current profile is not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:202
+#: lib/graphql/resolvers/group.ex:210
msgid "Current profile is not an administrator of the selected group"
msgstr ""
@@ -108,13 +108,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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 lib/graphql/resolvers/member.ex:80
msgid "Group not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:66
+#: lib/graphql/resolvers/group.ex:68
msgid "Group with ID %{id} not found"
msgstr ""
@@ -124,7 +124,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:266
msgid "Member not found"
msgstr ""
@@ -140,16 +140,16 @@ msgid "No user to validate with this email was found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/user.ex:218
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
msgid "No user with this email was found"
msgstr ""
#, 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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr ""
@@ -215,22 +215,22 @@ msgid "User requested is not logged-in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:232
+#: lib/graphql/resolvers/group.ex:240
msgid "You are already a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:265
+#: lib/graphql/resolvers/group.ex:273
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:237
msgid "You cannot join this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:94
+#: lib/graphql/resolvers/group.ex:96
msgid "You may not list groups unless moderator."
msgstr ""
@@ -245,7 +245,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:215
msgid "You need to be logged-in to delete a group"
msgstr ""
@@ -255,17 +255,17 @@ 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:245
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:278
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:180
msgid "You need to be logged-in to update a group"
msgstr ""
@@ -330,12 +330,12 @@ msgid "Anonymous participation is not enabled"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:195
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:192
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr ""
@@ -382,7 +382,7 @@ msgid "Internal Error"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:201
+#: lib/graphql/resolvers/discussion.ex:202
msgid "No discussion with ID %{id}"
msgstr ""
@@ -392,7 +392,7 @@ msgid "No profile found for user"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:63
+#: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token"
msgstr ""
@@ -409,12 +409,12 @@ msgid "Participant not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:29
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:51
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr ""
@@ -448,15 +448,10 @@ msgid "Profile is not member of group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:189
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr ""
-#, elixir-format
-#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
-msgid "Provided moderator profile doesn't have permission on this event"
-msgstr ""
-
#, elixir-format
#: lib/graphql/resolvers/report.ex:36
msgid "Report not found"
@@ -489,22 +484,22 @@ msgid "Todo list doesn't exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:69
+#: lib/graphql/resolvers/feed_token.ex:73
msgid "Token does not exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:66
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID"
msgstr ""
#, elixir-format
-#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:358
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:256
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr ""
@@ -519,7 +514,7 @@ msgid "You are not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:151
+#: lib/graphql/resolvers/member.ex:149
msgid "You are not a moderator or admin for this group"
msgstr ""
@@ -539,7 +534,7 @@ msgid "You are not allowed to delete a comment if not connected"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:78
+#: lib/graphql/resolvers/feed_token.ex:82
msgid "You are not allowed to delete a feed token if not connected"
msgstr ""
@@ -555,7 +550,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:155
+#: lib/graphql/resolvers/member.ex:153
msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr ""
@@ -575,12 +570,12 @@ msgid "You cannot invite to this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:72
+#: lib/graphql/resolvers/feed_token.ex:76
msgid "You don't have permission to delete this token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:52
+#: lib/graphql/resolvers/admin.ex:53
msgid "You need to be logged-in and a moderator to list action logs"
msgstr ""
@@ -600,22 +595,22 @@ msgid "You need to be logged-in and a moderator to view a report"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:236
+#: lib/graphql/resolvers/admin.ex:237
msgid "You need to be logged-in and an administrator to access admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:221
+#: lib/graphql/resolvers/admin.ex:222
msgid "You need to be logged-in and an administrator to access dashboard statistics"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:260
+#: lib/graphql/resolvers/admin.ex:261
msgid "You need to be logged-in and an administrator to save admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:76
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr ""
@@ -755,12 +750,12 @@ msgid "You need to be logged in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:116
+#: lib/graphql/resolvers/member.ex:114
msgid "You can't accept this invitation with this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:134
+#: lib/graphql/resolvers/member.ex:132
msgid "You can't reject this invitation with this profile."
msgstr ""
@@ -770,7 +765,7 @@ msgid "File doesn't have an allowed MIME type."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:167
+#: lib/graphql/resolvers/group.ex:175
msgid "Profile is not administrator for the group"
msgstr ""
@@ -785,17 +780,17 @@ msgid "You can't attribute this event to this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:137
+#: lib/graphql/resolvers/member.ex:135
msgid "This invitation doesn't exist."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:179
+#: lib/graphql/resolvers/member.ex:177
msgid "This member already has been rejected."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:186
+#: lib/graphql/resolvers/member.ex:184
msgid "You don't have the right to remove this member."
msgstr ""
@@ -805,7 +800,7 @@ msgid "This username is already taken."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:73
+#: lib/graphql/resolvers/discussion.ex:74
msgid "You must provide either an ID or a slug to access a discussion"
msgstr ""
@@ -820,8 +815,8 @@ msgid "Profile ID provided is not the anonymous profile one"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr ""
@@ -830,7 +825,7 @@ msgstr ""
msgid "Index file not found. You need to recompile the front-end."
msgstr ""
-#, elixir-format, fuzzy
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr ""
@@ -844,3 +839,8 @@ msgstr ""
#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr ""
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr ""
diff --git a/priv/gettext/pt_BR/LC_MESSAGES/default.po b/priv/gettext/pt_BR/LC_MESSAGES/default.po
index 9534c5d17..b077d9baa 100644
--- a/priv/gettext/pt_BR/LC_MESSAGES/default.po
+++ b/priv/gettext/pt_BR/LC_MESSAGES/default.po
@@ -912,8 +912,8 @@ msgid "Hi there! Just a quick note to confirm that the email address linked to y
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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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 ""
@@ -1473,21 +1473,22 @@ msgstr "Este é um site de demonstração para testar a versão beta do Mobilizo
#, elixir-format
#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr ""
@@ -1510,3 +1511,8 @@ msgstr ""
#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr ""
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/pt_BR/LC_MESSAGES/errors.po b/priv/gettext/pt_BR/LC_MESSAGES/errors.po
index d1f42428b..538063b08 100644
--- a/priv/gettext/pt_BR/LC_MESSAGES/errors.po
+++ b/priv/gettext/pt_BR/LC_MESSAGES/errors.po
@@ -93,12 +93,12 @@ msgid "Cannot refresh the token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:198
+#: lib/graphql/resolvers/group.ex:206
msgid "Current profile is not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:202
+#: lib/graphql/resolvers/group.ex:210
msgid "Current profile is not an administrator of the selected group"
msgstr ""
@@ -108,13 +108,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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 lib/graphql/resolvers/member.ex:80
msgid "Group not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:66
+#: lib/graphql/resolvers/group.ex:68
msgid "Group with ID %{id} not found"
msgstr ""
@@ -124,7 +124,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:266
msgid "Member not found"
msgstr ""
@@ -140,16 +140,16 @@ msgid "No user to validate with this email was found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/user.ex:218
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
msgid "No user with this email was found"
msgstr ""
#, 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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr ""
@@ -215,22 +215,22 @@ msgid "User requested is not logged-in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:232
+#: lib/graphql/resolvers/group.ex:240
msgid "You are already a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:265
+#: lib/graphql/resolvers/group.ex:273
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:237
msgid "You cannot join this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:94
+#: lib/graphql/resolvers/group.ex:96
msgid "You may not list groups unless moderator."
msgstr ""
@@ -245,7 +245,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:215
msgid "You need to be logged-in to delete a group"
msgstr ""
@@ -255,17 +255,17 @@ 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:245
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:278
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:180
msgid "You need to be logged-in to update a group"
msgstr ""
@@ -330,12 +330,12 @@ msgid "Anonymous participation is not enabled"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:195
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:192
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr ""
@@ -382,7 +382,7 @@ msgid "Internal Error"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:201
+#: lib/graphql/resolvers/discussion.ex:202
msgid "No discussion with ID %{id}"
msgstr ""
@@ -392,7 +392,7 @@ msgid "No profile found for user"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:63
+#: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token"
msgstr ""
@@ -409,12 +409,12 @@ msgid "Participant not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:29
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:51
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr ""
@@ -448,15 +448,10 @@ msgid "Profile is not member of group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:189
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr ""
-#, elixir-format
-#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
-msgid "Provided moderator profile doesn't have permission on this event"
-msgstr ""
-
#, elixir-format
#: lib/graphql/resolvers/report.ex:36
msgid "Report not found"
@@ -489,22 +484,22 @@ msgid "Todo list doesn't exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:69
+#: lib/graphql/resolvers/feed_token.ex:73
msgid "Token does not exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:66
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID"
msgstr ""
#, elixir-format
-#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:358
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:256
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr ""
@@ -519,7 +514,7 @@ msgid "You are not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:151
+#: lib/graphql/resolvers/member.ex:149
msgid "You are not a moderator or admin for this group"
msgstr ""
@@ -539,7 +534,7 @@ msgid "You are not allowed to delete a comment if not connected"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:78
+#: lib/graphql/resolvers/feed_token.ex:82
msgid "You are not allowed to delete a feed token if not connected"
msgstr ""
@@ -555,7 +550,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:155
+#: lib/graphql/resolvers/member.ex:153
msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr ""
@@ -575,12 +570,12 @@ msgid "You cannot invite to this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:72
+#: lib/graphql/resolvers/feed_token.ex:76
msgid "You don't have permission to delete this token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:52
+#: lib/graphql/resolvers/admin.ex:53
msgid "You need to be logged-in and a moderator to list action logs"
msgstr ""
@@ -600,22 +595,22 @@ msgid "You need to be logged-in and a moderator to view a report"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:236
+#: lib/graphql/resolvers/admin.ex:237
msgid "You need to be logged-in and an administrator to access admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:221
+#: lib/graphql/resolvers/admin.ex:222
msgid "You need to be logged-in and an administrator to access dashboard statistics"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:260
+#: lib/graphql/resolvers/admin.ex:261
msgid "You need to be logged-in and an administrator to save admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:76
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr ""
@@ -755,12 +750,12 @@ msgid "You need to be logged in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:116
+#: lib/graphql/resolvers/member.ex:114
msgid "You can't accept this invitation with this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:134
+#: lib/graphql/resolvers/member.ex:132
msgid "You can't reject this invitation with this profile."
msgstr ""
@@ -770,7 +765,7 @@ msgid "File doesn't have an allowed MIME type."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:167
+#: lib/graphql/resolvers/group.ex:175
msgid "Profile is not administrator for the group"
msgstr ""
@@ -785,17 +780,17 @@ msgid "You can't attribute this event to this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:137
+#: lib/graphql/resolvers/member.ex:135
msgid "This invitation doesn't exist."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:179
+#: lib/graphql/resolvers/member.ex:177
msgid "This member already has been rejected."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:186
+#: lib/graphql/resolvers/member.ex:184
msgid "You don't have the right to remove this member."
msgstr ""
@@ -805,7 +800,7 @@ msgid "This username is already taken."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:73
+#: lib/graphql/resolvers/discussion.ex:74
msgid "You must provide either an ID or a slug to access a discussion"
msgstr ""
@@ -820,8 +815,8 @@ msgid "Profile ID provided is not the anonymous profile one"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr ""
@@ -830,7 +825,7 @@ msgstr ""
msgid "Index file not found. You need to recompile the front-end."
msgstr ""
-#, elixir-format, fuzzy
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr ""
@@ -844,3 +839,8 @@ msgstr ""
#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr ""
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr ""
diff --git a/priv/gettext/ru/LC_MESSAGES/default.po b/priv/gettext/ru/LC_MESSAGES/default.po
index ee1cff706..0907e9102 100644
--- a/priv/gettext/ru/LC_MESSAGES/default.po
+++ b/priv/gettext/ru/LC_MESSAGES/default.po
@@ -15,267 +15,267 @@ msgstr ""
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.5.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 ""
"Если вы не оставляли такой запрос, проигнорируйте данное письмо. Пароль не "
"изменится, если не перейти по приведённой ссылке и не указать новый."
-#: lib/web/templates/email/report.html.eex:74
#, elixir-format
+#: lib/web/templates/email/report.html.eex:74
msgid "%{title} by %{creator}"
msgstr "%{title} от %{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 "Активировать мою учётную запись"
+#, 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 "Обратиться к сообществу на Framacolibri"
-#: lib/web/templates/email/report.text.eex:15
#, elixir-format
+#: lib/web/templates/email/report.text.eex:15
msgid "Comments"
msgstr "Комментарии"
+#, elixir-format
#: lib/web/templates/email/report.html.eex:72
#: lib/web/templates/email/report.text.eex:11
-#, elixir-format
msgid "Event"
msgstr "Мероприятие"
-#: lib/web/email/user.ex:48
#, elixir-format
+#: lib/web/email/user.ex:48
msgid "Instructions to reset your password on %{instance}"
msgstr "Инструкции по сбросу пароля на %{instance}"
-#: lib/web/templates/email/report.text.eex:21
#, elixir-format
+#: lib/web/templates/email/report.text.eex:21
msgid "Reason"
msgstr "Причина"
-#: lib/web/templates/email/password_reset.html.eex:61
#, elixir-format
+#: lib/web/templates/email/password_reset.html.eex:61
msgid "Reset Password"
msgstr "Сбросить пароль"
-#: 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 ""
"Сбросить пароль легко. Просто нажмите на кнопку ниже и следуйте инструкциям. "
"Это быстро."
-#: lib/web/email/user.ex:28
#, elixir-format
+#: lib/web/email/user.ex:28
msgid "Instructions to confirm your Mobilizon account on %{instance}"
msgstr "Инструкции по подтверждению учётной записи Mobilizon на %{instance}"
-#: lib/web/email/admin.ex:24
#, elixir-format
+#: lib/web/email/admin.ex:24
msgid "New report on Mobilizon instance %{instance}"
msgstr "Новый отчёт на 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 "Перейти на страницу мероприятия"
-#: 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 "Новый отчёт от %{reporter} на %{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 "Участие одобрено"
+#, 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 "Сброс пароля"
-#: 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 ""
"Сбросить пароль легко. Просто нажмите на ссылку ниже и следуйте инструкциям. "
"Это быстро."
-#: 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 ""
"Вы создали аккаунт на% {host}, используя этот адрес электронной почты. Вы в "
"одном клике от его активации. Если это сделали не вы, просто проигнорируйте "
"это письмо."
-#: lib/web/email/participation.ex:112
#, elixir-format
+#: lib/web/email/participation.ex:112
msgid "Your participation to event %{title} has been approved"
msgstr "Ваше участие в мероприятии %{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 "Ваш запрос на участие в %{title} был отклонен"
-#: lib/web/email/event.ex:37
#, elixir-format
+#: lib/web/email/event.ex:37
msgid "Event %{title} has been updated"
msgstr "Мероприятие %{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 "Новый заголовок: %{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 "Вы запросили новый пароль для своей учетной записи на %{instance}."
-#: lib/web/templates/email/email.html.eex:85
#, elixir-format
+#: lib/web/templates/email/email.html.eex:85
msgid "Warning"
msgstr "Внимание"
-#: lib/web/email/participation.ex:135
#, elixir-format
+#: lib/web/email/participation.ex:135
msgid "Confirm your participation to event %{title}"
msgstr "Подтвердите свое участие в мероприятии %{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 для выбранного идентификатора"
-#: 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"
-#: 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 ""
"Любая информация, которую мы собираем, может быть использована следующим "
"образом:"
-#: 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 "Основная информация об аккаунте"
-#: 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 "Не передавайте через 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 "Передаем ли мы какую-либо информацию третьим лицам?"
-#: 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 "Мы используем файлы cookie?"
-#: 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 "Как мы защищаем вашу информацию?"
-#: 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-адреса и другие метаданные"
-#: 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 "Опубликованные мероприятия и комментарии"
-#: 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 ""
"Не храните IP-адреса, присвоенные зарегистрированным пользователям более 12 "
"месяцев."
-#: 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 "Токены для аутентификации вас"
-#: 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 ""
"Мы также можем хранить логи сервера, которые включают IP-адрес каждого "
"запроса к нашему серверу."
-#: 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 ""
"Мы храним следующую информацию об устройстве, с которого вы подключаетесь:"
-#: 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 ""
@@ -285,8 +285,8 @@ 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 ""
@@ -296,30 +296,30 @@ msgstr ""
"99s_Online_Privacy_Protection_Act\">Закон о защите конфиденциальности детей "
"в Интернете) не используйте этот сайт."
-#: 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 ""
@@ -329,8 +329,8 @@ msgstr ""
"также для ответа на запросы, просьбы или\n"
" вопросы."
-#: 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 ""
@@ -338,8 +338,8 @@ msgstr ""
"адреса с другими известными, чтобы обнаружить обход бана\n"
" или другие нарушения."
-#: 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 ""
@@ -348,92 +348,92 @@ 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 на %{instance}: подтвердите свой адрес электронной почты"
-#: lib/web/email/user.ex:152
#, elixir-format
+#: lib/web/email/user.ex:152
msgid "Mobilizon on %{instance}: email changed"
msgstr "Mobilizon на %{instance}: адрес электронной почты изменен"
-#: lib/web/email/notification.ex:47
#, elixir-format
+#: lib/web/email/notification.ex:47
msgid "One event planned today"
msgid_plural "%{nb_events} events planned today"
msgstr[0] "Сегодня запланировано одно мероприятие"
msgstr[1] "Сегодня запланировано %{nb_events} мероприятия"
msgstr[2] "Сегодня запланировано %{nb_events} мероприятий"
+#, 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] "У вас сегодня одно мероприятие:"
msgstr[1] "У вас сегодня %{total} мероприятия:"
msgstr[2] "У вас сегодня %{total} мероприятий:"
-#: 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} только что пригласил вас присоединиться к их группе %{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 "Присоединяйтесь к нам!"
-#: lib/web/email/notification.ex:24
#, elixir-format
+#: lib/web/email/notification.ex:24
msgid "Don't forget to go to %{title}"
msgstr "Не забудь об участии в %{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}"
-#: 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 "Посмотреть мои группы"
+#, 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 "Чтобы принять это приглашение, зайдите в свои группы."
-#: 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 "Посмотреть мероприятие на: %{link}"
-#: lib/web/email/group.ex:33
#, elixir-format
+#: lib/web/email/group.ex:33
msgid "You have been invited by %{inviter} to join group %{group}"
msgstr "%{Inviter} пригласил вас присоединиться к группе %{group}"
-#: lib/web/email/notification.ex:71
#, 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] "На этой неделе запланировано %{nb_events} мероприятия"
msgstr[2] "На этой неделе запланировано %{nb_events} мероприятий"
-#: lib/web/email/notification.ex:93
#, 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] "Одна заявка на участие в мероприятии %{title} ожидает одобрения"
@@ -444,22 +444,22 @@ msgstr[2] ""
"%{number_participation_requests} заявок на участие в мероприятии %{title} "
"ожидают одобрения"
+#, 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] "На этой неделе у вас запланировано %{total} мероприятия:"
msgstr[2] "На этой неделе у вас запланировано %{total} мероприятий:"
-#: 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 ""
@@ -469,8 +469,8 @@ msgstr ""
"между вашими приложениями и API защищены с помощью SSL/TLS, а ваш пароль "
"хешируется с использованием надежного одностороннего алгоритма."
-#: 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 ""
@@ -482,20 +482,20 @@ 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 ""
@@ -508,16 +508,16 @@ 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 ""
@@ -525,8 +525,8 @@ 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 ""
@@ -534,16 +534,16 @@ 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 ""
@@ -551,40 +551,40 @@ 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 ""
@@ -592,8 +592,8 @@ 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 ""
@@ -602,26 +602,26 @@ 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 ""
@@ -630,14 +630,14 @@ 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 ""
@@ -649,8 +649,8 @@ 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 ""
@@ -659,16 +659,16 @@ 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 ""
"Для получения полной информации о 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 ""
@@ -677,8 +677,8 @@ msgstr ""
">%{instance_url}) веб-сайта и сервиса (вместе именуемые \"Сервис\"). Это "
"наши условия обслуживания (\"Условия\"). Пожалуйста, прочтите их внимательно."
-#: 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 ""
@@ -687,8 +687,8 @@ 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 ""
@@ -696,16 +696,16 @@ 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 ""
@@ -716,8 +716,8 @@ 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 ""
@@ -726,8 +726,8 @@ msgstr ""
"предыдущие соглашения между вами и %{instance_name}, касающиеся "
"использования Сервиса."
-#: 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 ""
@@ -736,14 +736,14 @@ msgstr ""
"license-v3-(agpl-3.0)\">AGPLv3, следовательно, вам разрешено и даже "
"рекомендуется брать, изменять и использовать его."
-#: 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 ""
@@ -752,29 +752,29 @@ 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 ""
"Вопросы и отзывы о нашем Сервисе можно направлять нам по адресу %{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 "Исходный код"
-#: 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 ""
"Нам нравятся отзывы! Не стесняйтесь говорить, что вы думаете о Сервисе, "
"настоящих Условиях и в целом о %{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 ""
@@ -786,16 +786,16 @@ 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 ""
"%{instance_name} не будет использовать, передавать или продавать ваши "
"личные данные"
-#: 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 ""
@@ -804,16 +804,16 @@ msgstr ""
"уязвимостей в самом программном обеспечении Mobilizon обращайтесь напрямую "
"к её разработчикам."
-#: 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 ""
@@ -822,8 +822,8 @@ msgstr ""
"service\">App.net, которые находятся под лицензией 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 ""
@@ -832,115 +832,115 @@ msgstr ""
"discourse\">Discourse, которые находятся под лицензией 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 "Сокращённая версия"
-#: 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 ""
"Этот документ находится под лицензией CC BY-SA. Последний раз обновлялся 18 июня 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 ""
"Этот документ находится под лицензиейCC BY-SA. Последний раз обновлялся 22 июня 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 ""
"Вы должны уважать других людей и правила %{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 "Вы должны соблюдать законы при использовании %{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 "Ваши данные принадлежат вам"
-#: 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 ""
"Привет! Вы только что зарегистрировались, чтобы присоединиться к мероприятию:"
" « % {title} ». Пожалуйста, подтвердите адрес электронной почты, который вы "
"указали:"
+#, 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 "Нужна помощь? Что-то не работает?"
-#: 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 ""
"Вы создали на %{host} учётную запись с данным адресом электронной "
"почты. Вы в одном клике от его активации."
-#: lib/web/templates/email/report.html.eex:13
#, elixir-format
+#: lib/web/templates/email/report.html.eex:13
msgid "New report on %{instance}"
msgstr "Новый отчёт на %{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 ""
"Адрес электронной почты вашего аккаунта на %{host} будет изменен на:"
-#: 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 ""
"Вы запросили новый пароль для своей учетной записи на %{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] ""
@@ -955,9 +955,9 @@ msgstr[2] ""
"просто перейдите на страницы мероприятий по указанным выше ссылкам и нажмите "
"кнопку « Я участвую »."
+#, 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] "У вас есть ожидающий рассмотрения запрос на участие:"
@@ -968,66 +968,66 @@ msgstr[2] ""
"У вас есть %{number_participation_requests} ожидающих рассмотрения запросов "
"на участие:"
-#: 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} работает на платформе 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} работает на платформе 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 "Заявка находится на рассмотрении!"
+#, 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 "Конец %{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 "Мероприятие обновлено!"
-#: 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 ""
"Привет! Похоже, вы хотели изменить адрес электронной почты, связанный с "
@@ -1035,16 +1035,16 @@ msgstr ""
"это, нажмите кнопку ниже, чтобы подтвердить изменение. После этого вы "
"сможете войти в %{instance} с новым адресом электронной почты."
-#: 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 ""
"Привет! Мы просто хотели сообщить вам, что адрес электронной почты, который "
"ранее был связан с вашей учетной записью на %{host}, был изменен с этого на:"
-#: 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:62
+#: 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 ""
"Если вы не активировали это изменение самостоятельно, вероятно, кто-то "
@@ -1052,174 +1052,174 @@ msgstr ""
"немедленно измените свой пароль. Если вам не удается войти в систему, "
"обратитесь к администратору %{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 ""
"Если вы не активировали это изменение самостоятельно, проигнорируйте это "
"сообщение. Ваш пароль не будет изменен, пока вы не нажмете ссылку выше."
+#, 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 ""
"Если вы не оставляли этот запрос, пожалуйста, проигнорируйте данное письмо."
+#, 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 ""
"Если вы хотите отменить свое участие, просто перейдите на страницу "
"мероприятия по ссылке выше и нажмите кнопку « Я участвую »."
+#, 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 "Узнайте больше о Mobilizon!"
-#: 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 "Почти готово!"
+#, 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 "Кто-то на %{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 "Очень жаль! Вы не будете участвовать."
-#: 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 "Начало %{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 "В %{title} произошли изменения, поэтому мы решили сообщить вам об этом."
+#, 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 "К сожалению, организаторы отклонили ваше участие."
-#: 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 "Смотреть отчёт"
-#: lib/web/templates/email/report.text.eex:24
#, elixir-format
+#: lib/web/templates/email/report.text.eex:24
msgid "View report:"
msgstr "Смотреть отчёт:"
+#, 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 "Посетите обновленную страницу мероприятия: %{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 ""
"Вы получили это письмо, потому что выбрали получение уведомлений об "
@@ -1227,133 +1227,133 @@ 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 "Вы подали заявку на участие в %{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 "Вы недавно подали заявку на присоединение к %{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:63
#, elixir-format
+#: lib/web/email/group.ex:63
msgid "You have been removed from group %{group}"
msgstr "Вас исключили из группы %{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 ""
"Вас исключили из группы %{group}. Вы больше не сможете получить доступ к "
"приватному контенту этой группы."
-#: 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} только что пригласил вас присоединиться к их группе "
"%{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 ""
"Вас исключили из группы %{link_start}%{group}%{link_end}. Вы больше "
"не сможете получить доступ к приватному контенту этой группы."
+#, 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 ""
"Администратор %{author} удалил группу %{group}. Все мероприятия, обсуждения, "
"сообщения и записи связанные с ней были удалены."
+#, 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 "Группа %{group} заблокирована на %{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 "Группа %{group} удалена на %{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 ""
"Команда модераторов вашего узла приняла решение приостановить работу "
"%{group_name} (%{group_address}). Вы больше не являетесь участником этой "
"группы."
-#: lib/web/email/group.ex:136
#, elixir-format
+#: lib/web/email/group.ex:136
msgid "The group %{group} has been deleted on %{instance}"
msgstr "Группа %{group} удалена на %{instance}"
-#: lib/web/email/group.ex:97
#, elixir-format
+#: lib/web/email/group.ex:97
msgid "The group %{group} has been suspended on %{instance}"
msgstr "Группа %{group} заблокирована на %{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 ""
@@ -1361,8 +1361,8 @@ msgstr ""
"ниже условиями. Если некоторые из этих условий вам неясны, сообщите нам об "
"этом, связавшись с %{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 ""
@@ -1370,22 +1370,22 @@ 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 ""
@@ -1395,31 +1395,31 @@ 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 ""
"Хранить логи сервера, содержащие IP-адреса всех запросов к этому серверу, "
"если таковые имеются, не более 90 дней."
+#, 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 ""
@@ -1427,8 +1427,8 @@ 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 ""
@@ -1436,8 +1436,8 @@ 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 ""
@@ -1447,8 +1447,8 @@ 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 ""
@@ -1465,16 +1465,16 @@ 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 ""
@@ -1487,8 +1487,8 @@ msgstr ""
"использующей исходный код Mobilizon. Дополнительную информацию об этом узле "
"можно найти на странице «Об этом узле»."
-#: 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 ""
@@ -1497,8 +1497,8 @@ msgstr ""
"доступа к данным вашей учетной записи и любой другой информации, которую вы "
"предоставляете %{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 ""
@@ -1511,8 +1511,8 @@ 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 ""
@@ -1526,8 +1526,8 @@ 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 ""
@@ -1536,202 +1536,208 @@ 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 "Вы недавно запросили участие в мероприятии %{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 "Ваше участие в мероприятии %{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} сообщил о следующем содержимом."
-#: lib/web/templates/email/report.text.eex:5
#, elixir-format
+#: lib/web/templates/email/report.text.eex:5
msgid "Group %{group} was reported"
msgstr "Группа %{group} сообщила"
-#: 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 "Профиль %{profile} сообщил"
-#: 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:94
#, elixir-format
+#: lib/mobilizon/posts/post.ex:94
msgid "A text is required for the post"
msgstr "Для публикации требуется текст"
-#: lib/mobilizon/posts/post.ex:93
#, 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 "%{name} (%{domain}) только что попросил подписаться на ваш узел."
-#: lib/web/email/follow.ex:54
#, elixir-format
+#: lib/web/email/follow.ex:54
msgid "%{name} requests to follow your instance"
msgstr "%{name} просит подписаться на ваш узел"
-#: 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}) только что просил подписаться на ваш узел. Если "
"вы согласитесь, то этот узел будет получать все публичные события вашего "
"узла."
-#: 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 "Узел %{name} (%{domain}) просит подписаться на ваш узел"
-#: 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 ""
"Примечание: Подписка %{name} (%{domain}) на вас не обязательно означает, что "
"вы подписаны на этот узел, но вы также можете запросить подписку на него."
-#: 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 ""
"Привет! Вы только что зарегистрировались для участия в этом мероприятии: « "
"%{title} ». Пожалуйста, подтвердите адрес электронной почты, который "
"вы указали:"
-#: 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 "Вы отправили запрос на участие в %{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 "Название мероприятия"
-#: 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 ""
"В %{title} были внесены изменения, поэтому мы решили сообщить вам об "
"этом."
-#: 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:50
#, elixir-format
+#: lib/web/templates/error/500_page.html.eex:50
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 "Это демонстрационный сайт, на котором вы можете опробовать Mobilizon."
-#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
#, elixir-format
+#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr "Лента %{name}"
-#: lib/service/export/feed.ex:77
#, elixir-format
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr "Лента приватных мероприятий от %{actor} на %{instance}"
-#: lib/service/export/feed.ex:72
#, elixir-format
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr "Лента публичных мероприятий от %{actor} на %{instance}"
-#: lib/service/export/feed.ex:203
#, elixir-format
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr "Лента для %{email} на %{instance}"
-#: lib/web/templates/error/500_page.html.eex:57
#, elixir-format
+#: lib/web/templates/error/500_page.html.eex:57
msgid "If the issue persists, you may contact the server administrator at %{contact}."
msgstr ""
"Если проблема не исчезнет, вы можете связаться с администратором сервера по "
"адресу %{contact}."
-#: lib/web/templates/error/500_page.html.eex:55
#, elixir-format
+#: lib/web/templates/error/500_page.html.eex:55
msgid "If the issue persists, you may try to contact the server administrator."
msgstr ""
"Если проблема не исчезнет, вы можете попытаться связаться с администратором "
"сервера."
-#: lib/web/templates/error/500_page.html.eex:68
#, elixir-format
+#: lib/web/templates/error/500_page.html.eex:68
msgid "Technical details"
msgstr "Технические детали"
-#: lib/web/templates/error/500_page.html.eex:52
#, elixir-format
+#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr "Сервер Mobilizon %{instance} временно недоступен."
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/ru/LC_MESSAGES/errors.po b/priv/gettext/ru/LC_MESSAGES/errors.po
index 4e3828492..f33f46ed0 100644
--- a/priv/gettext/ru/LC_MESSAGES/errors.po
+++ b/priv/gettext/ru/LC_MESSAGES/errors.po
@@ -101,796 +101,796 @@ msgstr "должно быть больше или равно %{number}"
msgid "must be equal to %{number}"
msgstr "должно быть равно %{number}"
-#: lib/graphql/resolvers/user.ex:100
#, elixir-format
+#: lib/graphql/resolvers/user.ex:100
msgid "Cannot refresh the token"
msgstr "Токен не может быть обновлен"
-#: lib/graphql/resolvers/group.ex:198
#, elixir-format
+#: lib/graphql/resolvers/group.ex:206
msgid "Current profile is not a member of this group"
msgstr "Текущий профиль не является участником этой группы"
-#: lib/graphql/resolvers/group.ex:202
#, elixir-format
+#: lib/graphql/resolvers/group.ex:210
msgid "Current profile is not an administrator of the selected group"
msgstr "Текущий профиль не является администратором выбранной группы"
-#: lib/graphql/resolvers/user.ex:501
#, elixir-format
+#: lib/graphql/resolvers/user.ex:501
msgid "Error while saving user settings"
msgstr "Ошибка при сохранении пользовательских настроек"
-#: 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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 lib/graphql/resolvers/member.ex:80
msgid "Group not found"
msgstr "Группа не найдена"
-#: lib/graphql/resolvers/group.ex:66
#, elixir-format
+#: lib/graphql/resolvers/group.ex:68
msgid "Group with ID %{id} not found"
msgstr "Группа с ID %{id} не найдена"
-#: lib/graphql/resolvers/user.ex:80
#, elixir-format
+#: lib/graphql/resolvers/user.ex:80
msgid "Impossible to authenticate, either your email or password are invalid."
msgstr ""
"Не удалось пройти аутентификацию. Неверный адрес электронной почты или "
"пароль."
-#: lib/graphql/resolvers/group.ex:258
#, elixir-format
+#: lib/graphql/resolvers/group.ex:266
msgid "Member not found"
msgstr "Участник не найден"
+#, elixir-format
#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88
#: lib/graphql/resolvers/user.ex:406
-#, elixir-format
msgid "No profile found for the moderator user"
msgstr "Профиль модератора не найден"
-#: lib/graphql/resolvers/user.ex:193
#, elixir-format
+#: lib/graphql/resolvers/user.ex:193
msgid "No user to validate with this email was found"
msgstr ""
"Не найдено ни одного пользователя для подтверждения с этим адресом "
"электронной почты"
-#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/user.ex:218
#, elixir-format
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
msgid "No user with this email was found"
msgstr "Пользователя с этим адресом электронной почты не найдено"
+#, 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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
-#, elixir-format
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr "Профиль не принадлежит аутентифицированному пользователю"
-#: lib/graphql/resolvers/user.ex:123
#, elixir-format
+#: lib/graphql/resolvers/user.ex:123
msgid "Registrations are not open"
msgstr "Регистрация не открыта"
-#: lib/graphql/resolvers/user.ex:331
#, elixir-format
+#: lib/graphql/resolvers/user.ex:331
msgid "The current password is invalid"
msgstr "Текущий пароль неверен"
-#: lib/graphql/resolvers/user.ex:376
#, elixir-format
+#: lib/graphql/resolvers/user.ex:376
msgid "The new email doesn't seem to be valid"
msgstr "Новый адрес электронной почты недействителен"
-#: lib/graphql/resolvers/user.ex:373
#, elixir-format
+#: lib/graphql/resolvers/user.ex:373
msgid "The new email must be different"
msgstr "Новый адрес электронной почты должен отличаться от текущего"
-#: lib/graphql/resolvers/user.ex:334
#, elixir-format
+#: lib/graphql/resolvers/user.ex:334
msgid "The new password must be different"
msgstr "Новый пароль должен отличаться от текущего"
+#, elixir-format
#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428
#: lib/graphql/resolvers/user.ex:431
-#, elixir-format
msgid "The password provided is invalid"
msgstr "Введён неверный пароль"
-#: lib/graphql/resolvers/user.ex:338
#, elixir-format
+#: lib/graphql/resolvers/user.ex:338
msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters."
msgstr ""
"Введенный пароль слишком короткий. Убедитесь, что ваш пароль состоит не "
"менее чем из 6 символов."
-#: lib/graphql/resolvers/user.ex:214
#, elixir-format
+#: lib/graphql/resolvers/user.ex:214
msgid "This user can't reset their password"
msgstr "Этот пользователь не может сбросить свой пароль"
-#: lib/graphql/resolvers/user.ex:76
#, elixir-format
+#: lib/graphql/resolvers/user.ex:76
msgid "This user has been disabled"
msgstr "Этот пользователь отключен"
-#: lib/graphql/resolvers/user.ex:177
#, elixir-format
+#: lib/graphql/resolvers/user.ex:177
msgid "Unable to validate user"
msgstr "Невозможно проверить пользователя"
-#: lib/graphql/resolvers/user.ex:409
#, elixir-format
+#: lib/graphql/resolvers/user.ex:409
msgid "User already disabled"
msgstr "Пользователь уже отключен"
-#: lib/graphql/resolvers/user.ex:476
#, elixir-format
+#: lib/graphql/resolvers/user.ex:476
msgid "User requested is not logged-in"
msgstr "Запрошенный пользователь не авторизован"
-#: lib/graphql/resolvers/group.ex:232
#, elixir-format
+#: lib/graphql/resolvers/group.ex:240
msgid "You are already a member of this group"
msgstr "Вы уже являетесь участником этой группы"
-#: lib/graphql/resolvers/group.ex:265
#, elixir-format
+#: lib/graphql/resolvers/group.ex:273
msgid "You can't leave this group because you are the only administrator"
msgstr ""
"Вы не можете покинуть эту группу, потому что вы её единственный администратор"
-#: lib/graphql/resolvers/group.ex:229
#, elixir-format
+#: lib/graphql/resolvers/group.ex:237
msgid "You cannot join this group"
msgstr "Вы не можете присоединиться к этой группе"
-#: lib/graphql/resolvers/group.ex:94
#, elixir-format
+#: lib/graphql/resolvers/group.ex:96
msgid "You may not list groups unless moderator."
msgstr "Только модератор может просматривать список групп."
-#: lib/graphql/resolvers/user.ex:381
#, elixir-format
+#: lib/graphql/resolvers/user.ex:381
msgid "You need to be logged-in to change your email"
msgstr ""
"Вам необходимо войти в систему, чтобы изменить свой адрес электронной почты"
-#: lib/graphql/resolvers/user.ex:346
#, elixir-format
+#: lib/graphql/resolvers/user.ex:346
msgid "You need to be logged-in to change your password"
msgstr "Вам необходимо войти в систему, чтобы изменить свой пароль"
-#: lib/graphql/resolvers/group.ex:207
#, elixir-format
+#: lib/graphql/resolvers/group.ex:215
msgid "You need to be logged-in to delete a group"
msgstr "Вам необходимо войти в систему, чтобы удалить группу"
-#: lib/graphql/resolvers/user.ex:436
#, elixir-format
+#: lib/graphql/resolvers/user.ex:436
msgid "You need to be logged-in to delete your account"
msgstr "Вам необходимо войти в систему, чтобы удалить свою учетную запись"
-#: lib/graphql/resolvers/group.ex:237
#, elixir-format
+#: lib/graphql/resolvers/group.ex:245
msgid "You need to be logged-in to join a group"
msgstr "Вам необходимо войти в систему, чтобы присоединиться к группе"
-#: lib/graphql/resolvers/group.ex:270
#, elixir-format
+#: lib/graphql/resolvers/group.ex:278
msgid "You need to be logged-in to leave a group"
msgstr "Вам необходимо войти в систему, чтобы покинуть группу"
-#: lib/graphql/resolvers/group.ex:172
#, elixir-format
+#: lib/graphql/resolvers/group.ex:180
msgid "You need to be logged-in to update a group"
msgstr "Вам необходимо войти в систему, чтобы обновить группу"
-#: lib/graphql/resolvers/user.ex:105
#, elixir-format
+#: lib/graphql/resolvers/user.ex:105
msgid "You need to have an existing token to get a refresh token"
msgstr "У вас должен быть существующий токен, чтобы получить токен обновления"
-#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221
#, elixir-format
+#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221
msgid "You requested again a confirmation email too soon"
msgstr "Вы слишком рано запросили новое письмо с подтверждением"
-#: lib/graphql/resolvers/user.ex:126
#, elixir-format
+#: lib/graphql/resolvers/user.ex:126
msgid "Your email is not on the allowlist"
msgstr "Ваш адрес электронной почты отсутствует в белом списке"
-#: 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 "Ошибка при выполнении фоновой задачи"
-#: lib/graphql/resolvers/actor.ex:27
#, elixir-format
+#: lib/graphql/resolvers/actor.ex:27
msgid "No profile found with this ID"
msgstr "Профиль с этим 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 "Удалённый профиль с этим 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 "Только модераторы и администраторы могут заблокировать профиль"
-#: lib/graphql/resolvers/actor.ex:99
#, elixir-format
+#: lib/graphql/resolvers/actor.ex:99
msgid "Only moderators and administrators can unsuspend a profile"
msgstr "Только модераторы и администраторы могут разблокировать профиль"
-#: lib/graphql/resolvers/actor.ex:24
#, elixir-format
+#: lib/graphql/resolvers/actor.ex:24
msgid "Only remote profiles may be refreshed"
msgstr "Обновлять можно только удаленные профили"
-#: lib/graphql/resolvers/actor.ex:61
#, elixir-format
+#: lib/graphql/resolvers/actor.ex:61
msgid "Profile already suspended"
msgstr "Профиль уже заблокирован"
-#: lib/graphql/resolvers/participant.ex:92
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:92
msgid "A valid email is required by your instance"
msgstr "Вашему узлу требуется действующий адрес электронной почты"
-#: lib/graphql/resolvers/participant.ex:86
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:86
msgid "Anonymous participation is not enabled"
msgstr "Анонимное участие не разрешено"
-#: lib/graphql/resolvers/person.ex:195
#, elixir-format
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr "Невозможно удалить последнего администратора группы"
-#: lib/graphql/resolvers/person.ex:192
#, elixir-format
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr "Единственный идентификатор пользователя не может быть удален"
-#: lib/graphql/resolvers/comment.ex:108
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:108
msgid "Comment is already deleted"
msgstr "Комментарий уже удалён"
-#: lib/graphql/error.ex:92 lib/graphql/resolvers/discussion.ex:62
#, elixir-format
+#: lib/graphql/error.ex:92 lib/graphql/resolvers/discussion.ex:62
msgid "Discussion not found"
msgstr "Обсуждение не найдено"
-#: 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 "При сохранении отчёта произошла ошибка"
-#: lib/graphql/resolvers/report.ex:96
#, elixir-format
+#: lib/graphql/resolvers/report.ex:96
msgid "Error while updating report"
msgstr "При обновлении отчёта произошла ошибка"
-#: lib/graphql/resolvers/participant.ex:127
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:127
msgid "Event id not found"
msgstr "Не найден id мероприятия"
+#, elixir-format
#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281
#: lib/graphql/resolvers/event.ex:325
-#, elixir-format
msgid "Event not found"
msgstr "Мероприятие не найдено"
+#, 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 "Мероприятия с ID %{id} не существует"
-#: lib/graphql/resolvers/participant.ex:99
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:99
msgid "Internal Error"
msgstr "Внутренняя ошибка"
-#: lib/graphql/resolvers/discussion.ex:201
#, elixir-format
+#: lib/graphql/resolvers/discussion.ex:202
msgid "No discussion with ID %{id}"
msgstr "Обсуждения с 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 "Профиль пользователя не найден"
-#: lib/graphql/resolvers/feed_token.ex:63
#, elixir-format
+#: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token"
msgstr "Такого токена ленты не существует"
-#: lib/graphql/resolvers/participant.ex:237
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:237
msgid "Participant already has role %{role}"
msgstr "У участника уже есть роль %{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 "Участник не найден"
-#: lib/graphql/resolvers/person.ex:29
#, elixir-format
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr "Человек с ID %{id} не найден"
-#: lib/graphql/resolvers/person.ex:51
#, elixir-format
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr "Не найдено человека с именем пользователя %{username}"
-#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200
#, elixir-format
+#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200
msgid "Post ID is not a valid ID"
msgstr "ID поста имеет недопустимое значение"
-#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203
#, 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 "Профиль уже является участником этой группы"
+#, 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:88 lib/graphql/resolvers/resource.ex:128
#: lib/graphql/resolvers/resource.ex:157 lib/graphql/resolvers/resource.ex:186 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:161 lib/graphql/resolvers/person.ex:189
#, elixir-format
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr "Профиль не найден"
-#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
#, elixir-format
-msgid "Provided moderator profile doesn't have permission on this event"
-msgstr "Указанный профиль модератора не имеет доступа к этому событию"
-
#: lib/graphql/resolvers/report.ex:36
-#, elixir-format
msgid "Report not found"
msgstr "Отчёт не найден"
-#: lib/graphql/resolvers/resource.ex:154 lib/graphql/resolvers/resource.ex:183
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:154 lib/graphql/resolvers/resource.ex:183
msgid "Resource doesn't exist"
msgstr "Ресурс не существует"
-#: lib/graphql/resolvers/participant.ex:120
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:120
msgid "The event has already reached its maximum capacity"
msgstr ""
"В мероприятии уже зарегистрировано максимально разрешённое количество "
"участников"
-#: lib/graphql/resolvers/participant.ex:260
#, 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:73
msgid "Token does not exist"
msgstr "Токен не существует"
-#: lib/graphql/resolvers/feed_token.ex:66
#, elixir-format
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID"
msgstr "Токен не является допустимым UUID"
-#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:358
#, elixir-format
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr "Пользователь не найден"
-#: lib/graphql/resolvers/person.ex:256
#, elixir-format
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr "У вас уже есть профиль для этого пользователя"
-#: lib/graphql/resolvers/participant.ex:130
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:130
msgid "You are already a participant of this event"
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:149
msgid "You are not a moderator or admin for this group"
msgstr "Вы не модератор и не администратор этой группы"
-#: lib/graphql/resolvers/comment.ex:54
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:54
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:113
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:113
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:82
msgid "You are not allowed to delete a feed token if not connected"
msgstr "Вы не можете удалить токен ленты при отсутствии подключения"
-#: lib/graphql/resolvers/comment.ex:76
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:76
msgid "You are not allowed to update a comment if not connected"
msgstr "Вы не можете обновить комментарий при отсутствии подключения"
+#, 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 ""
"Вы не можете покинуть мероприятие, потому что являетесь единственным "
"участником, создавшим его"
-#: lib/graphql/resolvers/member.ex:155
#, elixir-format
+#: lib/graphql/resolvers/member.ex:153
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:104
#, elixir-format
+#: lib/graphql/resolvers/comment.ex:104
msgid "You cannot delete this comment"
msgstr "Вы не можете удалить этот комментарий"
-#: lib/graphql/resolvers/event.ex:321
#, elixir-format
+#: lib/graphql/resolvers/event.ex:321
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:76
msgid "You don't have permission to delete this token"
msgstr "У вас нет прав на удаление этого токена"
-#: lib/graphql/resolvers/admin.ex:52
#, elixir-format
+#: lib/graphql/resolvers/admin.ex:53
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:237
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:222
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:261
msgid "You need to be logged-in and an administrator to save admin settings"
msgstr ""
"Для сохранения настроек в админке вы должны войти в систему и иметь права "
"администратора"
-#: lib/graphql/resolvers/discussion.ex:76
#, elixir-format
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr "Вам необходимо войти в систему, чтобы получить доступ к обсуждениям"
-#: lib/graphql/resolvers/resource.ex:94
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:94
msgid "You need to be logged-in to access resources"
msgstr "Вам необходимо войти в систему, чтобы получить доступ к ресурсам"
-#: lib/graphql/resolvers/event.ex:256
#, elixir-format
+#: lib/graphql/resolvers/event.ex:256
msgid "You need to be logged-in to create events"
msgstr ""
"Вам необходимо войти в систему, чтобы иметь возможность создавать мероприятия"
-#: lib/graphql/resolvers/post.ex:140
#, 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:133
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:133
msgid "You need to be logged-in to create resources"
msgstr ""
"Вам необходимо войти в систему, чтобы иметь возможность создавать ресурсы"
-#: lib/graphql/resolvers/event.ex:330
#, elixir-format
+#: lib/graphql/resolvers/event.ex:330
msgid "You need to be logged-in to delete an event"
msgstr ""
"Вам необходимо войти в систему, чтобы иметь возможность удалить мероприятие"
-#: lib/graphql/resolvers/post.ex:211
#, elixir-format
+#: lib/graphql/resolvers/post.ex:211
msgid "You need to be logged-in to delete posts"
msgstr ""
"Вам необходимо войти в систему, чтобы иметь возможность удалять публикации"
-#: lib/graphql/resolvers/resource.ex:191
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:191
msgid "You need to be logged-in to delete resources"
msgstr "Вам необходимо войти в систему, чтобы иметь возможность удалять ресурсы"
-#: lib/graphql/resolvers/participant.ex:104
#, 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:203
#, 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:295
#, elixir-format
+#: lib/graphql/resolvers/event.ex:295
msgid "You need to be logged-in to update an event"
msgstr "Вам необходимо войти в систему, чтобы обновить мероприятие"
-#: lib/graphql/resolvers/post.ex:178
#, elixir-format
+#: lib/graphql/resolvers/post.ex:178
msgid "You need to be logged-in to update posts"
msgstr ""
"Вам необходимо войти в систему, чтобы иметь возможность обновлять публикации"
-#: lib/graphql/resolvers/resource.ex:162
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:162
msgid "You need to be logged-in to update resources"
msgstr ""
"Вам необходимо войти в систему, чтобы иметь возможность обновлять ресурсы"
-#: lib/graphql/resolvers/resource.ex:218
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:218
msgid "You need to be logged-in to view a resource preview"
msgstr ""
"Вам необходимо войти в систему, чтобы получить доступ к предпросмотру "
"ресурсов"
-#: lib/graphql/resolvers/resource.ex:125
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:125
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:93
#, elixir-format
+#: lib/graphql/error.ex:93
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:114
msgid "You can't accept this invitation with this profile."
msgstr "Вы не можете принять это приглашение из этого профиля."
-#: lib/graphql/resolvers/member.ex:134
#, elixir-format
+#: lib/graphql/resolvers/member.ex:132
msgid "You can't reject this invitation with this profile."
msgstr "Вы не можете отклонить это приглашение из этого профиля."
-#: lib/graphql/resolvers/media.ex:62
#, elixir-format
+#: lib/graphql/resolvers/media.ex:62
msgid "File doesn't have an allowed MIME type."
msgstr "Файл не имеет разрешенного MIME-типа."
-#: lib/graphql/resolvers/group.ex:167
#, elixir-format
+#: lib/graphql/resolvers/group.ex:175
msgid "Profile is not administrator for the group"
msgstr "Профиль не является администратором группы"
-#: lib/graphql/resolvers/event.ex:284
#, elixir-format
+#: lib/graphql/resolvers/event.ex:284
msgid "You can't edit this event."
msgstr "Вы не можете редактировать это мероприятие."
-#: lib/graphql/resolvers/event.ex:287
#, elixir-format
+#: lib/graphql/resolvers/event.ex:287
msgid "You can't attribute this event to this profile."
msgstr "Вы не можете назначить это мероприятие этому профилю."
-#: lib/graphql/resolvers/member.ex:137
#, elixir-format
+#: lib/graphql/resolvers/member.ex:135
msgid "This invitation doesn't exist."
msgstr "Такого приглашения не существует."
-#: lib/graphql/resolvers/member.ex:179
#, elixir-format
+#: lib/graphql/resolvers/member.ex:177
msgid "This member already has been rejected."
msgstr "Этот участник уже был отклонён."
-#: lib/graphql/resolvers/member.ex:186
#, elixir-format
+#: lib/graphql/resolvers/member.ex:184
msgid "You don't have the right to remove this member."
msgstr "У вас нет прав на удаление этого участника."
-#: lib/mobilizon/actors/actor.ex:351
#, elixir-format
+#: lib/mobilizon/actors/actor.ex:351
msgid "This username is already taken."
msgstr "Это имя пользователя уже занято."
-#: lib/graphql/resolvers/discussion.ex:73
#, elixir-format
+#: lib/graphql/resolvers/discussion.ex:74
msgid "You must provide either an ID or a slug to access a discussion"
msgstr ""
"Вы должны предоставить либо ID, либо короткое имя для доступа к обсуждению"
-#: lib/graphql/resolvers/event.ex:245
#, elixir-format
+#: lib/graphql/resolvers/event.ex:245
msgid "Organizer profile is not owned by the user"
msgstr "Профиль организатора не принадлежит пользователю"
-#: lib/graphql/resolvers/participant.ex:89
#, elixir-format
+#: lib/graphql/resolvers/participant.ex:89
msgid "Profile ID provided is not the anonymous profile one"
msgstr "Указанный ID профиля не является анонимным"
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
#, elixir-format
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr "Предоставленное изображение слишком большое"
-#: lib/web/views/utils.ex:33
#, elixir-format
+#: lib/web/views/utils.ex:33
msgid "Index file not found. You need to recompile the front-end."
msgstr "Индексный файл не найден. Вам нужно пересобрать фронтенд."
-#: lib/graphql/resolvers/resource.ex:122
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr "При создании ресурса произошла ошибка"
-#: lib/graphql/resolvers/user.ex:390
#, elixir-format
+#: lib/graphql/resolvers/user.ex:390
msgid "Invalid activation token"
msgstr "Неверный токен активации"
-#: lib/graphql/resolvers/resource.ex:208
#, elixir-format
+#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr "Невозможно получить сведения о ресурсе по этому URL-адресу."
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr "Указанный профиль модератора не имеет доступа к этому событию"
diff --git a/priv/gettext/sv/LC_MESSAGES/default.po b/priv/gettext/sv/LC_MESSAGES/default.po
index a16a09d27..4053509fb 100644
--- a/priv/gettext/sv/LC_MESSAGES/default.po
+++ b/priv/gettext/sv/LC_MESSAGES/default.po
@@ -859,8 +859,8 @@ msgid "Hi there! Just a quick note to confirm that the email address linked to y
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
+#: lib/web/templates/email/email_changed_old.html.eex:62
+#: 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 ""
@@ -1389,21 +1389,22 @@ msgstr ""
#, elixir-format
#: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60
+#: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60
msgid "%{name}'s feed"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:77
+#: lib/service/export/feed.ex:120
msgid "%{actor}'s private events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:72
+#: lib/service/export/feed.ex:115
msgid "%{actor}'s public events feed on %{instance}"
msgstr ""
#, elixir-format
-#: lib/service/export/feed.ex:203
+#: lib/service/export/feed.ex:220
msgid "Feed for %{email} on %{instance}"
msgstr ""
@@ -1426,3 +1427,8 @@ msgstr ""
#: lib/web/templates/error/500_page.html.eex:52
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr ""
+
+#, elixir-format
+#: lib/service/export/feed.ex:73
+msgid "Public feed for %{instance}"
+msgstr ""
diff --git a/priv/gettext/sv/LC_MESSAGES/errors.po b/priv/gettext/sv/LC_MESSAGES/errors.po
index 07516e0e4..9b9c6db76 100644
--- a/priv/gettext/sv/LC_MESSAGES/errors.po
+++ b/priv/gettext/sv/LC_MESSAGES/errors.po
@@ -100,12 +100,12 @@ msgid "Cannot refresh the token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:198
+#: lib/graphql/resolvers/group.ex:206
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:210
msgid "Current profile is not an administrator of the selected group"
msgstr ""
@@ -115,13 +115,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:203
+#: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 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:68
msgid "Group with ID %{id} not found"
msgstr "Gruppen med %{id} kunde inte hittas"
@@ -131,7 +131,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:266
msgid "Member not found"
msgstr ""
@@ -147,16 +147,16 @@ msgid "No user to validate with this email was found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:253 lib/graphql/resolvers/user.ex:218
+#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218
msgid "No user with this email was found"
msgstr ""
#, 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:164 lib/graphql/resolvers/person.ex:198
-#: lib/graphql/resolvers/person.ex:277 lib/graphql/resolvers/person.ex:306 lib/graphql/resolvers/person.ex:330
-#: lib/graphql/resolvers/person.ex:342
+#: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199
+#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334
+#: lib/graphql/resolvers/person.ex:346
msgid "Profile is not owned by authenticated user"
msgstr ""
@@ -222,22 +222,22 @@ msgid "User requested is not logged-in"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:232
+#: lib/graphql/resolvers/group.ex:240
msgid "You are already a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:265
+#: lib/graphql/resolvers/group.ex:273
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:237
msgid "You cannot join this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:94
+#: lib/graphql/resolvers/group.ex:96
msgid "You may not list groups unless moderator."
msgstr ""
@@ -252,7 +252,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:215
msgid "You need to be logged-in to delete a group"
msgstr ""
@@ -262,17 +262,17 @@ 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:245
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:278
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:180
msgid "You need to be logged-in to update a group"
msgstr ""
@@ -337,12 +337,12 @@ msgid "Anonymous participation is not enabled"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:195
+#: lib/graphql/resolvers/person.ex:196
msgid "Cannot remove the last administrator of a group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:192
+#: lib/graphql/resolvers/person.ex:193
msgid "Cannot remove the last identity of a user"
msgstr ""
@@ -389,7 +389,7 @@ msgid "Internal Error"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:201
+#: lib/graphql/resolvers/discussion.ex:202
msgid "No discussion with ID %{id}"
msgstr ""
@@ -399,7 +399,7 @@ msgid "No profile found for user"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:63
+#: lib/graphql/resolvers/feed_token.ex:64
msgid "No such feed token"
msgstr ""
@@ -416,12 +416,12 @@ msgid "Participant not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:29
+#: lib/graphql/resolvers/person.ex:30
msgid "Person with ID %{id} not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:51
+#: lib/graphql/resolvers/person.ex:52
msgid "Person with username %{username} not found"
msgstr ""
@@ -455,15 +455,10 @@ msgid "Profile is not member of group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:161 lib/graphql/resolvers/person.ex:189
+#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190
msgid "Profile not found"
msgstr ""
-#, elixir-format
-#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
-msgid "Provided moderator profile doesn't have permission on this event"
-msgstr ""
-
#, elixir-format
#: lib/graphql/resolvers/report.ex:36
msgid "Report not found"
@@ -496,22 +491,22 @@ msgid "Todo list doesn't exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:69
+#: lib/graphql/resolvers/feed_token.ex:73
msgid "Token does not exist"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:66
+#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70
msgid "Token is not a valid UUID"
msgstr ""
#, elixir-format
-#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:358
+#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362
msgid "User not found"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:256
+#: lib/graphql/resolvers/person.ex:257
msgid "You already have a profile for this user"
msgstr ""
@@ -526,7 +521,7 @@ msgid "You are not a member of this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:151
+#: lib/graphql/resolvers/member.ex:149
msgid "You are not a moderator or admin for this group"
msgstr ""
@@ -546,7 +541,7 @@ msgid "You are not allowed to delete a comment if not connected"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:78
+#: lib/graphql/resolvers/feed_token.ex:82
msgid "You are not allowed to delete a feed token if not connected"
msgstr ""
@@ -562,7 +557,7 @@ msgid "You can't leave event because you're the only event creator participant"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:155
+#: lib/graphql/resolvers/member.ex:153
msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr ""
@@ -582,12 +577,12 @@ msgid "You cannot invite to this group"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/feed_token.ex:72
+#: lib/graphql/resolvers/feed_token.ex:76
msgid "You don't have permission to delete this token"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:52
+#: lib/graphql/resolvers/admin.ex:53
msgid "You need to be logged-in and a moderator to list action logs"
msgstr ""
@@ -607,22 +602,22 @@ msgid "You need to be logged-in and a moderator to view a report"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:236
+#: lib/graphql/resolvers/admin.ex:237
msgid "You need to be logged-in and an administrator to access admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:221
+#: lib/graphql/resolvers/admin.ex:222
msgid "You need to be logged-in and an administrator to access dashboard statistics"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/admin.ex:260
+#: lib/graphql/resolvers/admin.ex:261
msgid "You need to be logged-in and an administrator to save admin settings"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:76
+#: lib/graphql/resolvers/discussion.ex:77
msgid "You need to be logged-in to access discussions"
msgstr ""
@@ -762,12 +757,12 @@ msgid "You need to be logged in"
msgstr "Du måste vara inloggad"
#, elixir-format
-#: lib/graphql/resolvers/member.ex:116
+#: lib/graphql/resolvers/member.ex:114
msgid "You can't accept this invitation with this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:134
+#: lib/graphql/resolvers/member.ex:132
msgid "You can't reject this invitation with this profile."
msgstr ""
@@ -777,7 +772,7 @@ msgid "File doesn't have an allowed MIME type."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/group.ex:167
+#: lib/graphql/resolvers/group.ex:175
msgid "Profile is not administrator for the group"
msgstr ""
@@ -792,17 +787,17 @@ msgid "You can't attribute this event to this profile."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:137
+#: lib/graphql/resolvers/member.ex:135
msgid "This invitation doesn't exist."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:179
+#: lib/graphql/resolvers/member.ex:177
msgid "This member already has been rejected."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/member.ex:186
+#: lib/graphql/resolvers/member.ex:184
msgid "You don't have the right to remove this member."
msgstr ""
@@ -812,7 +807,7 @@ msgid "This username is already taken."
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/discussion.ex:73
+#: lib/graphql/resolvers/discussion.ex:74
msgid "You must provide either an ID or a slug to access a discussion"
msgstr ""
@@ -827,8 +822,8 @@ msgid "Profile ID provided is not the anonymous profile one"
msgstr ""
#, elixir-format
-#: lib/graphql/resolvers/person.ex:131 lib/graphql/resolvers/person.ex:158
-#: lib/graphql/resolvers/person.ex:250
+#: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169
+#: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251
msgid "The provided picture is too heavy"
msgstr ""
@@ -837,7 +832,7 @@ msgstr ""
msgid "Index file not found. You need to recompile the front-end."
msgstr ""
-#, elixir-format, fuzzy
+#, elixir-format
#: lib/graphql/resolvers/resource.ex:122
msgid "Error while creating resource"
msgstr ""
@@ -851,3 +846,8 @@ msgstr ""
#: lib/graphql/resolvers/resource.ex:208
msgid "Unable to fetch resource details from this URL."
msgstr ""
+
+#, elixir-format
+#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234
+msgid "Provided profile doesn't have moderator permissions on this event"
+msgstr ""
diff --git a/priv/repo/migrations/20210422140923_cleanup_addresses.exs b/priv/repo/migrations/20210422140923_cleanup_addresses.exs
new file mode 100644
index 000000000..5a6a82693
--- /dev/null
+++ b/priv/repo/migrations/20210422140923_cleanup_addresses.exs
@@ -0,0 +1,73 @@
+defmodule Mobilizon.Storage.Repo.Migrations.CleanupAddresses do
+ use Ecto.Migration
+
+ def up do
+ # Make sure we don't have any duplicate addresses
+ rows = fetch_bad_rows()
+ Enum.each(rows, &process_row/1)
+ end
+
+ def down do
+ # No way down
+ end
+
+ defp fetch_bad_rows() do
+ %Postgrex.Result{rows: rows} =
+ Ecto.Adapters.SQL.query!(
+ Mobilizon.Storage.Repo,
+ "SELECT * FROM (
+ SELECT id, url,
+ ROW_NUMBER() OVER(PARTITION BY url ORDER BY id asc) AS Row
+ FROM addresses
+ ) dups
+ WHERE dups.Row > 1;"
+ )
+
+ rows
+ end
+
+ defp process_row([id, url, _row]) do
+ first_id = find_first_address_id(url)
+
+ if id != first_id do
+ repair_events(id, first_id)
+ repair_actors(id, first_id)
+ delete_row(id)
+ end
+ end
+
+ defp find_first_address_id(url) do
+ %Postgrex.Result{rows: [[id]]} =
+ Ecto.Adapters.SQL.query!(
+ Mobilizon.Storage.Repo,
+ "SELECT id FROM addresses WHERE url = $1 order by id asc limit 1",
+ [url]
+ )
+
+ id
+ end
+
+ defp repair_events(id, first_id) do
+ Ecto.Adapters.SQL.query!(
+ Mobilizon.Storage.Repo,
+ "UPDATE events SET physical_address_id = $1 WHERE physical_address_id = $2",
+ [first_id, id]
+ )
+ end
+
+ defp repair_actors(id, first_id) do
+ Ecto.Adapters.SQL.query!(
+ Mobilizon.Storage.Repo,
+ "UPDATE actors SET physical_address_id = $1 WHERE physical_address_id = $2",
+ [first_id, id]
+ )
+ end
+
+ defp delete_row(id) do
+ Ecto.Adapters.SQL.query!(
+ Mobilizon.Storage.Repo,
+ "DELETE FROM addresses WHERE id = $1",
+ [id]
+ )
+ end
+end
diff --git a/priv/repo/migrations/20210422155913_add_index_to_addresses.exs b/priv/repo/migrations/20210422155913_add_index_to_addresses.exs
new file mode 100644
index 000000000..1a08a28fd
--- /dev/null
+++ b/priv/repo/migrations/20210422155913_add_index_to_addresses.exs
@@ -0,0 +1,11 @@
+defmodule Mobilizon.Storage.Repo.Migrations.AddIndexToAddresses do
+ use Ecto.Migration
+
+ def up do
+ create_if_not_exists(unique_index("addresses", [:url]))
+ end
+
+ def down do
+ drop_if_exists(index("addresses", [:url]))
+ end
+end
diff --git a/priv/repo/migrations/20210427091034_repair_users_default_actors.exs b/priv/repo/migrations/20210427091034_repair_users_default_actors.exs
new file mode 100644
index 000000000..be4126e23
--- /dev/null
+++ b/priv/repo/migrations/20210427091034_repair_users_default_actors.exs
@@ -0,0 +1,47 @@
+defmodule Mobilizon.Storage.Repo.Migrations.RepairUsersDefaultActors do
+ use Ecto.Migration
+
+ def up do
+ rows = fetch_bad_rows()
+ Enum.each(rows, &process_row/1)
+ end
+
+ def down do
+ # Nothing to do
+ end
+
+ defp fetch_bad_rows() do
+ %Postgrex.Result{rows: rows} =
+ Ecto.Adapters.SQL.query!(
+ Mobilizon.Storage.Repo,
+ "SELECT u.id FROM users u JOIN actors a ON u.default_actor_id = a.id WHERE a.user_id IS NULL"
+ )
+
+ rows
+ end
+
+ defp process_row([user_id]) do
+ user_id
+ |> find_first_actor_id()
+ |> repair_user_default_actor(user_id)
+ end
+
+ defp find_first_actor_id(user_id) do
+ %Postgrex.Result{rows: [[id]]} =
+ Ecto.Adapters.SQL.query!(
+ Mobilizon.Storage.Repo,
+ "SELECT id FROM actors WHERE user_id = $1 AND type = 'Person' AND NOT suspended ORDER BY id LIMIT 1",
+ [user_id]
+ )
+
+ id
+ end
+
+ defp repair_user_default_actor(actor_id, user_id) do
+ Ecto.Adapters.SQL.query!(
+ Mobilizon.Storage.Repo,
+ "UPDATE users SET default_actor_id = $1 WHERE id = $2",
+ [actor_id, user_id]
+ )
+ end
+end
diff --git a/test/federation/activity_pub/activity_pub_test.exs b/test/federation/activity_pub/activity_pub_test.exs
index ac4f697bf..776ba7e23 100644
--- a/test/federation/activity_pub/activity_pub_test.exs
+++ b/test/federation/activity_pub/activity_pub_test.exs
@@ -11,13 +11,12 @@ defmodule Mobilizon.Federation.ActivityPubTest do
import Mox
import Mobilizon.Factory
- alias Mobilizon.{Actors, Discussions, Events}
- alias Mobilizon.Actors.Actor
+ alias Mobilizon.{Discussions, Events}
alias Mobilizon.Resources.Resource
alias Mobilizon.Todos.{Todo, TodoList}
alias Mobilizon.Federation.ActivityPub
- alias Mobilizon.Federation.ActivityPub.{Relay, Utils}
+ alias Mobilizon.Federation.ActivityPub.Utils
alias Mobilizon.Federation.HTTPSignatures.Signature
alias Mobilizon.Service.HTTP.ActivityPub.Mock
@@ -40,116 +39,6 @@ defmodule Mobilizon.Federation.ActivityPubTest do
end
end
- describe "fetching actor from its url" do
- test "returns an actor from nickname" do
- use_cassette "activity_pub/fetch_tcit@framapiaf.org" do
- assert {:ok,
- %Actor{preferred_username: "tcit", domain: "framapiaf.org", visibility: :public} =
- _actor} = ActivityPub.make_actor_from_nickname("tcit@framapiaf.org")
- end
-
- use_cassette "activity_pub/fetch_tcit@framapiaf.org_not_discoverable" do
- assert {:ok,
- %Actor{preferred_username: "tcit", domain: "framapiaf.org", visibility: :unlisted} =
- _actor} = ActivityPub.make_actor_from_nickname("tcit@framapiaf.org")
- end
- end
-
- @actor_url "https://framapiaf.org/users/tcit"
- test "returns an actor from url" do
- # Initial fetch
- use_cassette "activity_pub/fetch_framapiaf.org_users_tcit" do
- # Unlisted because discoverable is not present in the JSON payload
- assert {:ok,
- %Actor{preferred_username: "tcit", domain: "framapiaf.org", visibility: :unlisted}} =
- ActivityPub.get_or_fetch_actor_by_url(@actor_url)
- end
-
- # Fetch uses cache if Actors.needs_update? returns false
- with_mocks([
- {Actors, [:passthrough],
- [
- get_actor_by_url: fn @actor_url, false ->
- {:ok,
- %Actor{
- preferred_username: "tcit",
- domain: "framapiaf.org"
- }}
- end,
- needs_update?: fn _ -> false end
- ]},
- {ActivityPub, [:passthrough],
- make_actor_from_url: fn @actor_url, false ->
- {:ok,
- %Actor{
- preferred_username: "tcit",
- domain: "framapiaf.org"
- }}
- end}
- ]) do
- assert {:ok, %Actor{preferred_username: "tcit", domain: "framapiaf.org"}} =
- ActivityPub.get_or_fetch_actor_by_url(@actor_url)
-
- assert_called(Actors.needs_update?(:_))
- refute called(ActivityPub.make_actor_from_url(@actor_url, false))
- end
-
- # Fetch doesn't use cache if Actors.needs_update? returns true
- with_mocks([
- {Actors, [:passthrough],
- [
- get_actor_by_url: fn @actor_url, false ->
- {:ok,
- %Actor{
- preferred_username: "tcit",
- domain: "framapiaf.org"
- }}
- end,
- needs_update?: fn _ -> true end
- ]},
- {ActivityPub, [:passthrough],
- make_actor_from_url: fn @actor_url, false ->
- {:ok,
- %Actor{
- preferred_username: "tcit",
- domain: "framapiaf.org"
- }}
- end}
- ]) do
- assert {:ok, %Actor{preferred_username: "tcit", domain: "framapiaf.org"}} =
- ActivityPub.get_or_fetch_actor_by_url(@actor_url)
-
- assert_called(ActivityPub.get_or_fetch_actor_by_url(@actor_url))
- assert_called(Actors.get_actor_by_url(@actor_url, false))
- assert_called(Actors.needs_update?(:_))
- assert_called(ActivityPub.make_actor_from_url(@actor_url, false))
- end
- end
-
- @public_url "https://www.w3.org/ns/activitystreams#Public"
- test "activitystreams#Public uri returns Relay actor" do
- assert ActivityPub.get_or_fetch_actor_by_url(@public_url) == {:ok, Relay.get_actor()}
- end
- end
-
- describe "create activities" do
- # test "removes doubled 'to' recipients" do
- # actor = insert(:actor)
- #
- # {:ok, activity, _} =
- # ActivityPub.create(%{
- # to: ["user1", "user1", "user2"],
- # actor: actor,
- # context: "",
- # object: %{}
- # })
- #
- # assert activity.data["to"] == ["user1", "user2"]
- # assert activity.actor == actor.url
- # assert activity.recipients == ["user1", "user2"]
- # end
- end
-
describe "fetching an" do
test "object by url" do
url = "https://framapiaf.org/users/Framasoft/statuses/102093631881522097"
diff --git a/test/federation/activity_pub/actor_test.exs b/test/federation/activity_pub/actor_test.exs
new file mode 100644
index 000000000..69ebc5daa
--- /dev/null
+++ b/test/federation/activity_pub/actor_test.exs
@@ -0,0 +1,120 @@
+defmodule Mobilizon.Federation.ActivityPub.ActorTest do
+ use ExVCR.Mock, adapter: ExVCR.Adapter.Hackney
+ use Mobilizon.DataCase
+
+ import Mock
+
+ alias Mobilizon.Actors
+ alias Mobilizon.Actors.Actor
+
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
+ alias Mobilizon.Federation.ActivityPub.{Fetcher, Relay}
+
+ describe "fetching actor from its url" do
+ test "returns an actor from nickname" do
+ use_cassette "activity_pub/fetch_tcit@framapiaf.org" do
+ assert {:ok,
+ %Actor{preferred_username: "tcit", domain: "framapiaf.org", visibility: :public} =
+ _actor} = ActivityPubActor.make_actor_from_nickname("tcit@framapiaf.org")
+ end
+
+ use_cassette "activity_pub/fetch_tcit@framapiaf.org_not_discoverable" do
+ assert {:ok,
+ %Actor{preferred_username: "tcit", domain: "framapiaf.org", visibility: :unlisted} =
+ _actor} = ActivityPubActor.make_actor_from_nickname("tcit@framapiaf.org")
+ end
+ end
+
+ @actor_url "https://framapiaf.org/users/tcit"
+ test "returns an actor from url" do
+ # Initial fetch
+ use_cassette "activity_pub/fetch_framapiaf.org_users_tcit" do
+ # Unlisted because discoverable is not present in the JSON payload
+ assert {:ok,
+ %Actor{preferred_username: "tcit", domain: "framapiaf.org", visibility: :unlisted}} =
+ ActivityPubActor.get_or_fetch_actor_by_url(@actor_url)
+ end
+
+ # Fetch uses cache if Actors.needs_update? returns false
+ with_mocks([
+ {Actors, [:passthrough],
+ [
+ get_actor_by_url: fn @actor_url, false ->
+ {:ok,
+ %Actor{
+ preferred_username: "tcit",
+ domain: "framapiaf.org"
+ }}
+ end,
+ needs_update?: fn _ -> false end
+ ]},
+ {ActivityPubActor, [:passthrough],
+ make_actor_from_url: fn @actor_url, false ->
+ {:ok,
+ %Actor{
+ preferred_username: "tcit",
+ domain: "framapiaf.org"
+ }}
+ end}
+ ]) do
+ assert {:ok, %Actor{preferred_username: "tcit", domain: "framapiaf.org"}} =
+ ActivityPubActor.get_or_fetch_actor_by_url(@actor_url)
+
+ assert_called(Actors.needs_update?(:_))
+ refute called(ActivityPubActor.make_actor_from_url(@actor_url, false))
+ end
+
+ # Fetch doesn't use cache if Actors.needs_update? returns true
+ with_mocks([
+ {Actors, [:passthrough],
+ [
+ get_actor_by_url: fn @actor_url, false ->
+ {:ok,
+ %Actor{
+ preferred_username: "tcit",
+ domain: "framapiaf.org"
+ }}
+ end,
+ needs_update?: fn _ -> true end
+ ]},
+ {ActivityPubActor, [:passthrough],
+ make_actor_from_url: fn @actor_url, false ->
+ {:ok,
+ %Actor{
+ preferred_username: "tcit",
+ domain: "framapiaf.org"
+ }}
+ end}
+ ]) do
+ assert {:ok, %Actor{preferred_username: "tcit", domain: "framapiaf.org"}} =
+ ActivityPubActor.get_or_fetch_actor_by_url(@actor_url)
+
+ assert_called(ActivityPubActor.get_or_fetch_actor_by_url(@actor_url))
+ assert_called(Actors.get_actor_by_url(@actor_url, false))
+ assert_called(Actors.needs_update?(:_))
+ assert_called(ActivityPubActor.make_actor_from_url(@actor_url, false))
+ end
+ end
+
+ test "handles remote actor being deleted" do
+ with_mocks([
+ {Fetcher, [:passthrough],
+ fetch_and_prepare_actor_from_url: fn @actor_url ->
+ {:error, :actor_deleted}
+ end}
+ ]) do
+ assert match?(
+ {:error, :actor_deleted},
+ ActivityPubActor.make_actor_from_url(@actor_url, false)
+ )
+
+ assert_called(Fetcher.fetch_and_prepare_actor_from_url(@actor_url))
+ end
+ end
+
+ @public_url "https://www.w3.org/ns/activitystreams#Public"
+ test "activitystreams#Public uri returns Relay actor" do
+ assert ActivityPubActor.get_or_fetch_actor_by_url(@public_url) == {:ok, Relay.get_actor()}
+ end
+ end
+end
diff --git a/test/federation/activity_pub/transmogrifier/delete_test.exs b/test/federation/activity_pub/transmogrifier/delete_test.exs
index 30717266a..cefd4d64f 100644
--- a/test/federation/activity_pub/transmogrifier/delete_test.exs
+++ b/test/federation/activity_pub/transmogrifier/delete_test.exs
@@ -3,7 +3,6 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.DeleteTest do
use ExVCR.Mock, adapter: ExVCR.Adapter.Hackney
use Oban.Testing, repo: Mobilizon.Storage.Repo
import Mobilizon.Factory
- import ExUnit.CaptureLog
import Mox
alias Mobilizon.{Actors, Discussions, Events, Posts, Resources}
@@ -78,7 +77,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.DeleteTest do
data
|> Map.put("object", object)
- :error = Transmogrifier.handle_incoming(data)
+ {:error, :unknown_actor} = Transmogrifier.handle_incoming(data)
assert Discussions.get_comment_from_url(comment.url)
end
@@ -119,13 +118,14 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.DeleteTest do
test "it fails for incoming actor deletes with spoofed origin" do
%{url: url} = insert(:actor)
- deleted_actor_url = "https://framapiaf.org/users/admin"
data =
File.read!("test/fixtures/mastodon-delete-user.json")
|> Jason.decode!()
|> Map.put("actor", url)
+ deleted_actor_url = "https://framapiaf.org/users/admin"
+
deleted_actor_data =
File.read!("test/fixtures/mastodon-actor.json")
|> Jason.decode!()
@@ -137,9 +137,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.DeleteTest do
{:ok, %Tesla.Env{status: 200, body: deleted_actor_data}}
end)
- assert capture_log(fn ->
- assert :error == Transmogrifier.handle_incoming(data)
- end) =~ "Object origin check failed"
+ assert :error == Transmogrifier.handle_incoming(data)
assert Actors.get_actor_by_url(url)
end
diff --git a/test/federation/activity_pub/transmogrifier/posts_test.exs b/test/federation/activity_pub/transmogrifier/posts_test.exs
index 2ccbb4fe2..c79b01a0a 100644
--- a/test/federation/activity_pub/transmogrifier/posts_test.exs
+++ b/test/federation/activity_pub/transmogrifier/posts_test.exs
@@ -7,7 +7,6 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.PostsTest do
alias Mobilizon.Federation.ActivityPub.{Activity, Transmogrifier}
alias Mobilizon.Federation.ActivityStream.Convertible
alias Mobilizon.Posts.Post
- alias Mobilizon.Service.HTTP.ActivityPub.Mock
describe "handle incoming posts" do
setup :verify_on_exit!
diff --git a/test/federation/activity_pub/transmogrifier_test.exs b/test/federation/activity_pub/transmogrifier_test.exs
index f04ad5a77..d344b5633 100644
--- a/test/federation/activity_pub/transmogrifier_test.exs
+++ b/test/federation/activity_pub/transmogrifier_test.exs
@@ -21,6 +21,7 @@ defmodule Mobilizon.Federation.ActivityPub.TransmogrifierTest do
alias Mobilizon.Todos.{Todo, TodoList}
alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Federation.ActivityPub.Utils
alias Mobilizon.Federation.ActivityPub.{Activity, Relay, Transmogrifier}
alias Mobilizon.Federation.ActivityStream.Convertible
@@ -89,7 +90,7 @@ defmodule Mobilizon.Federation.ActivityPub.TransmogrifierTest do
preferred_username: "member"
)
- with_mock ActivityPub, [:passthrough],
+ with_mock ActivityPubActor, [:passthrough],
get_or_fetch_actor_by_url: fn url ->
case url do
^group_url -> {:ok, group}
@@ -168,7 +169,7 @@ defmodule Mobilizon.Federation.ActivityPub.TransmogrifierTest do
group = insert(:group, domain: "morebilizon.com", url: @mobilizon_group_url)
%Actor{url: actor_url} = actor = insert(:actor)
- with_mock ActivityPub, [:passthrough],
+ with_mock ActivityPubActor, [:passthrough],
get_or_fetch_actor_by_url: fn url ->
case url do
@mobilizon_group_url -> {:ok, group}
@@ -198,7 +199,7 @@ defmodule Mobilizon.Federation.ActivityPub.TransmogrifierTest do
test "it accepts incoming todo lists and handles group being not found" do
%Actor{url: actor_url} = actor = insert(:actor)
- with_mock ActivityPub, [:passthrough],
+ with_mock ActivityPubActor, [:passthrough],
get_or_fetch_actor_by_url: fn url ->
case url do
@mobilizon_group_url -> {:error, "Not found"}
@@ -274,7 +275,7 @@ defmodule Mobilizon.Federation.ActivityPub.TransmogrifierTest do
group = insert(:group, domain: "morebilizon.com", url: @mobilizon_group_url)
%Actor{url: actor_url} = actor = insert(:actor)
- with_mock ActivityPub, [:passthrough],
+ with_mock ActivityPubActor, [:passthrough],
get_or_fetch_actor_by_url: fn url ->
case url do
@mobilizon_group_url -> {:ok, group}
@@ -304,7 +305,7 @@ defmodule Mobilizon.Federation.ActivityPub.TransmogrifierTest do
test "it accepts incoming todo lists and handles group being not found" do
%Actor{url: actor_url} = actor = insert(:actor)
- with_mock ActivityPub, [:passthrough],
+ with_mock ActivityPubActor, [:passthrough],
get_or_fetch_actor_by_url: fn url ->
case url do
@mobilizon_group_url -> {:error, "Not found"}
diff --git a/test/graphql/api/search_test.exs b/test/graphql/api/search_test.exs
index 74e8a65ea..2d0b1351f 100644
--- a/test/graphql/api/search_test.exs
+++ b/test/graphql/api/search_test.exs
@@ -12,14 +12,15 @@ defmodule Mobilizon.GraphQL.API.SearchTest do
alias Mobilizon.GraphQL.API.Search
alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
test "search an user by username" do
- with_mock ActivityPub,
+ with_mock ActivityPubActor,
find_or_make_actor_from_nickname: fn "toto@domain.tld" -> {:ok, %Actor{id: 42}} end do
assert {:ok, %Page{total: 1, elements: [%Actor{id: 42}]}} ==
Search.search_actors(%{term: "toto@domain.tld"}, 1, 10, :Person)
- assert_called(ActivityPub.find_or_make_actor_from_nickname("toto@domain.tld"))
+ assert_called(ActivityPubActor.find_or_make_actor_from_nickname("toto@domain.tld"))
end
end
diff --git a/test/graphql/resolvers/admin_test.exs b/test/graphql/resolvers/admin_test.exs
index d079568e7..0812caef7 100644
--- a/test/graphql/resolvers/admin_test.exs
+++ b/test/graphql/resolvers/admin_test.exs
@@ -31,17 +31,20 @@ defmodule Mobilizon.GraphQL.Resolvers.AdminTest do
query = """
{
actionLogs {
- action,
- actor {
- preferredUsername
- },
- object {
- ... on Report {
- id,
- status
+ total
+ elements {
+ action,
+ actor {
+ preferredUsername
},
- ... on ReportNote {
- content
+ object {
+ ... on Report {
+ id,
+ status
+ },
+ ... on ReportNote {
+ content
+ }
}
}
}
@@ -62,9 +65,10 @@ defmodule Mobilizon.GraphQL.Resolvers.AdminTest do
assert json_response(res, 200)["errors"] == nil
- assert json_response(res, 200)["data"]["actionLogs"] |> length == 3
+ assert json_response(res, 200)["data"]["actionLogs"]["total"] == 3
+ assert json_response(res, 200)["data"]["actionLogs"]["elements"] |> length == 3
- assert json_response(res, 200)["data"]["actionLogs"] == [
+ assert json_response(res, 200)["data"]["actionLogs"]["elements"] == [
%{
"action" => "NOTE_DELETION",
"actor" => %{"preferredUsername" => moderator_2.preferred_username},
diff --git a/test/graphql/resolvers/comment_test.exs b/test/graphql/resolvers/comment_test.exs
index 395d1ff42..4ded1f48e 100644
--- a/test/graphql/resolvers/comment_test.exs
+++ b/test/graphql/resolvers/comment_test.exs
@@ -228,25 +228,28 @@ defmodule Mobilizon.GraphQL.Resolvers.CommentTest do
query = """
{
actionLogs {
- action,
- actor {
- preferredUsername
- },
- object {
- ... on Report {
- id,
- status
+ total
+ elements {
+ action,
+ actor {
+ preferredUsername
},
- ... on ReportNote {
- content
- }
- ... on Event {
- id,
- title
- },
- ... on Comment {
- id,
- text
+ object {
+ ... on Report {
+ id,
+ status
+ },
+ ... on ReportNote {
+ content
+ }
+ ... on Event {
+ id,
+ title
+ },
+ ... on Comment {
+ id,
+ text
+ }
}
}
}
@@ -260,7 +263,7 @@ defmodule Mobilizon.GraphQL.Resolvers.CommentTest do
refute json_response(res, 200)["errors"]
- assert hd(json_response(res, 200)["data"]["actionLogs"]) == %{
+ assert hd(json_response(res, 200)["data"]["actionLogs"]["elements"]) == %{
"action" => "COMMENT_DELETION",
"actor" => %{"preferredUsername" => actor_moderator.preferred_username},
"object" => %{"text" => comment.text, "id" => to_string(comment.id)}
diff --git a/test/graphql/resolvers/event_test.exs b/test/graphql/resolvers/event_test.exs
index 021347ad7..94db0cd68 100644
--- a/test/graphql/resolvers/event_test.exs
+++ b/test/graphql/resolvers/event_test.exs
@@ -1368,21 +1368,24 @@ defmodule Mobilizon.Web.Resolvers.EventTest do
query = """
{
actionLogs {
- action,
- actor {
- preferredUsername
- },
- object {
- ... on Report {
- id,
- status
+ total
+ elements {
+ action,
+ actor {
+ preferredUsername
},
- ... on ReportNote {
- content
- }
- ... on Event {
- id,
- title
+ object {
+ ... on Report {
+ id,
+ status
+ },
+ ... on ReportNote {
+ content
+ }
+ ... on Event {
+ id,
+ title
+ }
}
}
}
@@ -1394,7 +1397,7 @@ defmodule Mobilizon.Web.Resolvers.EventTest do
|> auth_conn(user_moderator)
|> get("/api", AbsintheHelpers.query_skeleton(query, "actionLogs"))
- assert hd(json_response(res, 200)["data"]["actionLogs"]) == %{
+ assert hd(json_response(res, 200)["data"]["actionLogs"]["elements"]) == %{
"action" => "EVENT_DELETION",
"actor" => %{"preferredUsername" => actor_moderator.preferred_username},
"object" => %{"title" => event.title, "id" => to_string(event.id)}
diff --git a/test/graphql/resolvers/participant_test.exs b/test/graphql/resolvers/participant_test.exs
index b6cba8240..80d3c7b06 100644
--- a/test/graphql/resolvers/participant_test.exs
+++ b/test/graphql/resolvers/participant_test.exs
@@ -792,7 +792,7 @@ defmodule Mobilizon.GraphQL.Resolvers.ParticipantTest do
|> post("/api", AbsintheHelpers.mutation_skeleton(mutation))
assert hd(json_response(res, 200)["errors"])["message"] ==
- "Provided moderator profile doesn't have permission on this event"
+ "Provided profile doesn't have moderator permissions on this event"
end
end
@@ -934,7 +934,7 @@ defmodule Mobilizon.GraphQL.Resolvers.ParticipantTest do
|> post("/api", AbsintheHelpers.mutation_skeleton(mutation))
assert hd(json_response(res, 200)["errors"])["message"] ==
- "Provided moderator profile doesn't have permission on this event"
+ "Provided profile doesn't have moderator permissions on this event"
end
end
diff --git a/test/graphql/resolvers/person_test.exs b/test/graphql/resolvers/person_test.exs
index 8f1bb27b8..a4c2f237f 100644
--- a/test/graphql/resolvers/person_test.exs
+++ b/test/graphql/resolvers/person_test.exs
@@ -685,15 +685,18 @@ defmodule Mobilizon.GraphQL.Resolvers.PersonTest do
@moderation_logs_query """
{
actionLogs {
- action,
- actor {
- id,
- preferredUsername
- },
- object {
- ...on Person {
+ total
+ elements {
+ action,
+ actor {
id,
preferredUsername
+ },
+ object {
+ ...on Person {
+ id,
+ preferredUsername
+ }
}
}
}
@@ -733,7 +736,7 @@ defmodule Mobilizon.GraphQL.Resolvers.PersonTest do
|> auth_conn(modo)
|> AbsintheHelpers.graphql_query(query: @moderation_logs_query)
- actionlog = hd(res["data"]["actionLogs"])
+ actionlog = hd(res["data"]["actionLogs"]["elements"])
refute is_nil(actionlog)
assert actionlog["action"] == "ACTOR_SUSPENSION"
assert actionlog["actor"]["id"] == to_string(modo_actor_id)
diff --git a/test/mobilizon/actors/actors_test.exs b/test/mobilizon/actors/actors_test.exs
index ca4ef2ba7..94abd067e 100644
--- a/test/mobilizon/actors/actors_test.exs
+++ b/test/mobilizon/actors/actors_test.exs
@@ -13,7 +13,7 @@ defmodule Mobilizon.ActorsTest do
alias Mobilizon.Service.Workers
alias Mobilizon.Storage.Page
- alias Mobilizon.Federation.ActivityPub
+ alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.Web.Upload.Uploader
@@ -106,7 +106,7 @@ defmodule Mobilizon.ActorsTest do
preferred_username: preferred_username,
domain: domain,
avatar: %FileModel{name: picture_name} = _picture
- } = _actor} = ActivityPub.get_or_fetch_actor_by_url(@remote_account_url)
+ } = _actor} = ActivityPubActor.get_or_fetch_actor_by_url(@remote_account_url)
assert picture_name == "a28c50ce5f2b13fd.jpg"
@@ -156,7 +156,8 @@ defmodule Mobilizon.ActorsTest do
test "get_actor_by_name_with_preload!/1 returns the remote actor with its organized events" do
use_cassette "actors/remote_actor_mastodon_tcit" do
- with {:ok, %Actor{} = actor} <- ActivityPub.get_or_fetch_actor_by_url(@remote_account_url) do
+ with {:ok, %Actor{} = actor} <-
+ ActivityPubActor.get_or_fetch_actor_by_url(@remote_account_url) do
assert Actors.get_actor_by_name_with_preload(
"#{actor.preferred_username}@#{actor.domain}"
).organized_events == []
@@ -186,7 +187,7 @@ defmodule Mobilizon.ActorsTest do
%{actor: %Actor{id: actor_id}} do
use_cassette "actors/remote_actor_mastodon_tcit" do
with {:ok, %Actor{id: actor2_id}} <-
- ActivityPub.get_or_fetch_actor_by_url(@remote_account_url) do
+ ActivityPubActor.get_or_fetch_actor_by_url(@remote_account_url) do
%Page{total: 2, elements: actors} =
Actors.build_actors_by_username_or_name_page("tcit",
actor_type: [:Person],