From c3aa145148fbb5019e6c89e09f372d1b9fb12802 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 4 Jan 2024 12:19:28 +0100 Subject: [PATCH 01/18] refactor(backend): extract convert_ecto_errors in the Mobilizon.Storage.Ecto module And use it to log refreshing instance errors Signed-off-by: Thomas Citharel --- lib/graphql/error.ex | 27 ++---------------------- lib/mobilizon/storage/ecto.ex | 27 ++++++++++++++++++++++++ lib/service/workers/refresh_instances.ex | 5 +++++ 3 files changed, 34 insertions(+), 25 deletions(-) diff --git a/lib/graphql/error.ex b/lib/graphql/error.ex index 6223fd509..ddcf0df1d 100644 --- a/lib/graphql/error.ex +++ b/lib/graphql/error.ex @@ -5,8 +5,8 @@ defmodule Mobilizon.GraphQL.Error do require Logger alias __MODULE__ - alias Mobilizon.Web.Gettext, as: GettextBackend import Mobilizon.Web.Gettext, only: [dgettext: 2] + import Mobilizon.Storage.Ecto, only: [convert_ecto_errors: 1] @type t :: %{code: atom(), message: String.t(), status_code: pos_integer(), field: atom()} @@ -64,7 +64,7 @@ defmodule Mobilizon.GraphQL.Error do defp handle(%Ecto.Changeset{} = changeset) do changeset - |> Ecto.Changeset.traverse_errors(&translate_error/1) + |> convert_ecto_errors() |> Enum.map(fn {k, v} -> %Error{ code: :validation, @@ -126,27 +126,4 @@ defmodule Mobilizon.GraphQL.Error do Logger.warning("Unhandled error code: #{inspect(code)}") {422, to_string(code)} end - - # Translates an error message using gettext. - defp translate_error({msg, opts}) do - # Because error messages were defined within Ecto, we must - # call the Gettext module passing our Gettext backend. We - # also use the "errors" domain as translations are placed - # in the errors.po file. - # Ecto will pass the :count keyword if the error message is - # meant to be pluralized. - # On your own code and templates, depending on whether you - # need the message to be pluralized or not, this could be - # written simply as: - # - # dngettext "errors", "1 file", "%{count} files", count - # dgettext "errors", "is invalid" - # - - if count = opts[:count] do - Gettext.dngettext(GettextBackend, "errors", msg, msg, count, opts) - else - Gettext.dgettext(GettextBackend, "errors", msg, opts) - end - end end diff --git a/lib/mobilizon/storage/ecto.ex b/lib/mobilizon/storage/ecto.ex index 16421cc0c..43f42f3ad 100644 --- a/lib/mobilizon/storage/ecto.ex +++ b/lib/mobilizon/storage/ecto.ex @@ -7,6 +7,7 @@ defmodule Mobilizon.Storage.Ecto do import Ecto.Changeset, only: [fetch_change: 2, put_change: 3, get_field: 2] alias Ecto.{Changeset, Query} alias Mobilizon.Web.Endpoint + alias Mobilizon.Web.Gettext, as: GettextBackend alias Mobilizon.Web.Router.Helpers, as: Routes @doc """ @@ -56,4 +57,30 @@ defmodule Mobilizon.Storage.Ecto do changeset end end + + def convert_ecto_errors(%Ecto.Changeset{} = changeset), + do: Ecto.Changeset.traverse_errors(changeset, &translate_error/1) + + # Translates an error message using gettext. + defp translate_error({msg, opts}) do + # Because error messages were defined within Ecto, we must + # call the Gettext module passing our Gettext backend. We + # also use the "errors" domain as translations are placed + # in the errors.po file. + # Ecto will pass the :count keyword if the error message is + # meant to be pluralized. + # On your own code and templates, depending on whether you + # need the message to be pluralized or not, this could be + # written simply as: + # + # dngettext "errors", "1 file", "%{count} files", count + # dgettext "errors", "is invalid" + # + + if count = opts[:count] do + Gettext.dngettext(GettextBackend, "errors", msg, msg, count, opts) + else + Gettext.dgettext(GettextBackend, "errors", msg, opts) + end + end end diff --git a/lib/service/workers/refresh_instances.ex b/lib/service/workers/refresh_instances.ex index a1b93cf36..1edf15a29 100644 --- a/lib/service/workers/refresh_instances.ex +++ b/lib/service/workers/refresh_instances.ex @@ -13,6 +13,7 @@ defmodule Mobilizon.Service.Workers.RefreshInstances do alias Mobilizon.Instances.{Instance, InstanceActor} alias Oban.Job require Logger + import Mobilizon.Storage.Ecto, only: [convert_ecto_errors: 1] @impl Oban.Worker @spec perform(Oban.Job.t()) :: :ok @@ -56,6 +57,10 @@ defmodule Mobilizon.Service.Workers.RefreshInstances do Instances.create_instance_actor(args) do Logger.info("Saved instance actor details for domain #{host}") else + {:error, %Ecto.Changeset{} = changeset} -> + Logger.error("Unable to save instance \"#{domain}\" metadata") + Logger.debug(convert_ecto_errors(changeset)) + err -> Logger.error(inspect(err)) end From eb43b7c79c7a2ccf46444f4fcc68caa7f38190bb Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 4 Jan 2024 13:01:22 +0100 Subject: [PATCH 02/18] style(credo): disable credo Credo.Check.Warning.MissedMetadataKeyInLoggerConfig check It's buggy https://github.com/rrrene/credo/issues/1101 Signed-off-by: Thomas Citharel --- .credo.exs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.credo.exs b/.credo.exs index eb8b190a7..e670aab20 100644 --- a/.credo.exs +++ b/.credo.exs @@ -33,7 +33,7 @@ # If you want to enforce a style guide and need a more traditional linting # experience, you can change `strict` to `true` below: # - strict: false, + strict: true, # # If you want to use uncolored output by default, you can change `color` # to `false` below: @@ -160,6 +160,7 @@ # {Credo.Check.Warning.LazyLogging, false}, {Credo.Check.Refactor.MapInto, false}, + {Credo.Check.Warning.MissedMetadataKeyInLoggerConfig, false} ] } ] From f7585cfc759576475133bcc86d2e816b2553626d Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 4 Jan 2024 13:02:05 +0100 Subject: [PATCH 03/18] fix(backend): validate length of instance actor details and set description column to text Closes #1393 Signed-off-by: Thomas Citharel --- lib/mobilizon/instances/instance_actor.ex | 4 ++++ ...ge_actor_instance_description_type_to_text.exs | 15 +++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 priv/repo/migrations/20240104103036_change_actor_instance_description_type_to_text.exs diff --git a/lib/mobilizon/instances/instance_actor.ex b/lib/mobilizon/instances/instance_actor.ex index 376498ad9..a3016995a 100644 --- a/lib/mobilizon/instances/instance_actor.ex +++ b/lib/mobilizon/instances/instance_actor.ex @@ -34,6 +34,10 @@ defmodule Mobilizon.Instances.InstanceActor do instance_actor |> cast(attrs, @attrs) |> validate_required(@required_attrs) + |> validate_length(:domain, max: 254) + |> validate_length(:instance_name, max: 254) + |> validate_length(:software, max: 254) + |> validate_length(:software_version, max: 254) |> unique_constraint(:domain) end end diff --git a/priv/repo/migrations/20240104103036_change_actor_instance_description_type_to_text.exs b/priv/repo/migrations/20240104103036_change_actor_instance_description_type_to_text.exs new file mode 100644 index 000000000..9db48a9a2 --- /dev/null +++ b/priv/repo/migrations/20240104103036_change_actor_instance_description_type_to_text.exs @@ -0,0 +1,15 @@ +defmodule Mobilizon.Storage.Repo.Migrations.ChangeActorInstanceDescriptionTypeToText do + use Ecto.Migration + + def up do + alter table(:instance_actors) do + modify(:instance_description, :text) + end + end + + def down do + alter table(:instance_actors) do + modify(:instance_description, :string) + end + end +end From 428537df1fed01279010d7f61e349c2b78af4630 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 4 Jan 2024 12:55:47 +0100 Subject: [PATCH 04/18] refactor: remove some outdated todos and legacy fallbacks Signed-off-by: Thomas Citharel --- lib/federation/activity_pub/transmogrifier.ex | 4 ---- lib/federation/activity_stream/converter/actor.ex | 13 ++++++------- lib/mobilizon/discussions/discussions.ex | 2 +- lib/service/rich_media/parser.ex | 4 +--- lib/web/email/group.ex | 2 -- lib/web/email/member.ex | 2 -- lib/web/media_proxy.ex | 8 +------- 7 files changed, 9 insertions(+), 26 deletions(-) diff --git a/lib/federation/activity_pub/transmogrifier.ex b/lib/federation/activity_pub/transmogrifier.ex index 4b64483b5..fe35bb6bf 100644 --- a/lib/federation/activity_pub/transmogrifier.ex +++ b/lib/federation/activity_pub/transmogrifier.ex @@ -1163,14 +1163,10 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do end end - # Before 1.0.4 the object of a "Remove" activity was an actor's URL - # instead of the member's URL. - # TODO: Remove in 1.2 @spec get_remove_object(map() | String.t()) :: {:ok, integer()} defp get_remove_object(object) do case object |> Utils.get_url() |> ActivityPub.fetch_object_from_url() do {:ok, %Member{actor: %Actor{id: person_id}}} -> {:ok, person_id} - {:ok, %Actor{id: person_id}} -> {:ok, person_id} _ -> {:error, :remove_object_not_found} end end diff --git a/lib/federation/activity_stream/converter/actor.ex b/lib/federation/activity_stream/converter/actor.ex index c44216116..a53a8485f 100644 --- a/lib/federation/activity_stream/converter/actor.ex +++ b/lib/federation/activity_stream/converter/actor.ex @@ -76,14 +76,13 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Actor do def as_to_model_data(_), do: {:error, :actor_not_allowed_type} defp add_endpoints_to_model(actor, data) do - # TODO: Remove fallbacks in 3.0 endpoints = %{ - members_url: get_in(data, ["endpoints", "members"]) || data["members"], - resources_url: get_in(data, ["endpoints", "resources"]) || data["resources"], - todos_url: get_in(data, ["endpoints", "todos"]) || data["todos"], - events_url: get_in(data, ["endpoints", "events"]) || data["events"], - posts_url: get_in(data, ["endpoints", "posts"]) || data["posts"], - discussions_url: get_in(data, ["endpoints", "discussions"]) || data["discussions"], + members_url: get_in(data, ["endpoints", "members"]), + resources_url: get_in(data, ["endpoints", "resources"]), + todos_url: get_in(data, ["endpoints", "todos"]), + events_url: get_in(data, ["endpoints", "events"]), + posts_url: get_in(data, ["endpoints", "posts"]), + discussions_url: get_in(data, ["endpoints", "discussions"]), shared_inbox_url: data["endpoints"]["sharedInbox"] } diff --git a/lib/mobilizon/discussions/discussions.ex b/lib/mobilizon/discussions/discussions.ex index 646cbb32d..453a40832 100644 --- a/lib/mobilizon/discussions/discussions.ex +++ b/lib/mobilizon/discussions/discussions.ex @@ -77,7 +77,7 @@ defmodule Mobilizon.Discussions do |> join(:left, [c], r in Comment, on: r.origin_comment_id == c.id) |> where([c, _], is_nil(c.in_reply_to_comment_id)) |> where([c], c.visibility in ^@public_visibility) - # TODO: This was added because we don't want to count deleted comments in total_replies. + # This was added because we don't want to count deleted comments in total_replies. # However, it also excludes all top-level comments with deleted replies from being selected # |> where([_, r], is_nil(r.deleted_at)) |> group_by([c], c.id) diff --git a/lib/service/rich_media/parser.ex b/lib/service/rich_media/parser.ex index 6677e2718..43c1e2fcf 100644 --- a/lib/service/rich_media/parser.ex +++ b/lib/service/rich_media/parser.ex @@ -11,9 +11,7 @@ defmodule Mobilizon.Service.RichMedia.Parser do max_body: 2_000_000, timeout: 10_000, recv_timeout: 20_000, - follow_redirect: true, - # TODO: Remove me once Hackney/HTTPoison fixes their issue with TLS1.3 and OTP 23 - ssl: [{:versions, [:"tlsv1.2"]}] + follow_redirect: true ] alias Mobilizon.Config diff --git a/lib/web/email/group.ex b/lib/web/email/group.ex index 7423df301..c62b2aa14 100644 --- a/lib/web/email/group.ex +++ b/lib/web/email/group.ex @@ -87,8 +87,6 @@ defmodule Mobilizon.Web.Email.Group do end end - # TODO : def send_confirmation_to_inviter() - @member_roles [:administrator, :moderator, :member] @spec send_group_suspension_notification(Member.t()) :: :ok def send_group_suspension_notification(%Member{actor: %Actor{user_id: nil}}), do: :ok diff --git a/lib/web/email/member.ex b/lib/web/email/member.ex index ff5273568..9a7de0c51 100644 --- a/lib/web/email/member.ex +++ b/lib/web/email/member.ex @@ -124,6 +124,4 @@ defmodule Mobilizon.Web.Email.Member do :ok end end - - # TODO : def send_confirmation_to_inviter() end diff --git a/lib/web/media_proxy.ex b/lib/web/media_proxy.ex index 9ac3ebe00..a0b21af99 100644 --- a/lib/web/media_proxy.ex +++ b/lib/web/media_proxy.ex @@ -71,13 +71,7 @@ defmodule Mobilizon.Web.MediaProxy do @compile {:no_warn_undefined, {:crypto, :mac, 4}} @compile {:no_warn_undefined, {:crypto, :hmac, 3}} defp sha_hmac(key, url) do - # :crypto.hmac was removed in OTP24, but :crypto.mac was added in OTP 22.1 - # TODO: Remove me when we don't support OTP 21/22 anymore - if function_exported?(:crypto, :mac, 4) do - :crypto.mac(:hmac, :sha, key, url) - else - :crypto.hmac(:sha, key, url) - end + :crypto.mac(:hmac, :sha, key, url) end @spec filename(String.t()) :: String.t() | nil From b3ba45e8a73038dc70286afbb479c1db51b6fbcd Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 4 Jan 2024 12:56:18 +0100 Subject: [PATCH 05/18] fix(back): fix instances filtering Signed-off-by: Thomas Citharel --- lib/mobilizon/instances/instances.ex | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/lib/mobilizon/instances/instances.ex b/lib/mobilizon/instances/instances.ex index 126d2d0b7..db0dafd29 100644 --- a/lib/mobilizon/instances/instances.ex +++ b/lib/mobilizon/instances/instances.ex @@ -4,6 +4,7 @@ defmodule Mobilizon.Instances do """ alias Ecto.Adapters.SQL alias Mobilizon.Actors.{Actor, Follower} + alias Mobilizon.Federation.ActivityPub.Relay alias Mobilizon.Instances.{Instance, InstanceActor} alias Mobilizon.Storage.{Page, Repo} import Ecto.Query @@ -22,11 +23,15 @@ defmodule Mobilizon.Instances do order_by_options = Keyword.new([{direction, order_by}]) + %Actor{id: relay_id} = Relay.get_actor() + query = Instance |> join(:left, [i], ia in InstanceActor, on: i.domain == ia.domain) |> join(:left, [_i, ia], a in Actor, on: ia.actor_id == a.id) + # following |> join(:left, [_i, _ia, a], f1 in Follower, on: f1.target_actor_id == a.id) + # followed |> join(:left, [_i, _ia, a], f2 in Follower, on: f2.actor_id == a.id) |> select([i, ia, a, f1, f2], %{ instance: i, @@ -45,14 +50,27 @@ defmodule Mobilizon.Instances do if is_nil(filter_domain) or filter_domain == "" do query else - where(query, [i], like(i.domain, ^"%#{filter_domain}%")) + where( + query, + [i, ia], + like(i.domain, ^"%#{filter_domain}%") or like(ia.instance_name, ^"%#{filter_domain}%") + ) end query = case follow_status do - :following -> where(query, [i, s], s.following == true) - :followed -> where(query, [i, s], s.follower == true) - :all -> query + :following -> + where(query, [_i, _ia, _a, f1], f1.actor_id == ^relay_id and f1.approved == true) + + :followed -> + where( + query, + [_i, _ia, _a, _f1, f2], + f2.target_actor_id == ^relay_id and f2.approved == true + ) + + :all -> + query end %Page{elements: elements} = paged_instances = Page.build_page(query, page, limit, :domain) From fe0cf9360428185d261dad4065a7bea1dd8d8d59 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 4 Jan 2024 12:58:16 +0100 Subject: [PATCH 06/18] fix(front): fix debouncing instances filtering Signed-off-by: Thomas Citharel --- src/i18n/en_US.json | 3 ++- src/i18n/fr_FR.json | 3 ++- src/views/Admin/InstancesView.vue | 29 ++++++++++++----------------- 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/src/i18n/en_US.json b/src/i18n/en_US.json index 45ecd1415..f0dc97d7a 100644 --- a/src/i18n/en_US.json +++ b/src/i18n/en_US.json @@ -1641,5 +1641,6 @@ "Announcements for {eventTitle}": "Announcements for {eventTitle}", "Visit {instance_domain}": "Visit {instance_domain}", "Software details: {software_details}": "Software details: {software_details}", - "Only instances with an application actor can be followed": "Only instances with an application actor can be followed" + "Only instances with an application actor can be followed": "Only instances with an application actor can be followed", + "Domain or instance name": "Domain or instance name" } \ No newline at end of file diff --git a/src/i18n/fr_FR.json b/src/i18n/fr_FR.json index 0121d0bcc..b3babdb35 100644 --- a/src/i18n/fr_FR.json +++ b/src/i18n/fr_FR.json @@ -1635,5 +1635,6 @@ "Announcements for {eventTitle}": "Annonces pour {eventTitle}", "Visit {instance_domain}": "Visiter {instance_domain}", "Software details: {software_details}": "Détails du logiciel : {software_details}", - "Only instances with an application actor can be followed": "Seules les instances avec un acteur application peuvent être suivies" + "Only instances with an application actor can be followed": "Seules les instances avec un acteur application peuvent être suivies", + "Domain or instance name": "Domaine ou nom de l'instance" } diff --git a/src/views/Admin/InstancesView.vue b/src/views/Admin/InstancesView.vue index f37562736..49a6ceb96 100644 --- a/src/views/Admin/InstancesView.vue +++ b/src/views/Admin/InstancesView.vue @@ -54,15 +54,14 @@ > @@ -223,7 +222,6 @@ import { Paginate } from "@/types/paginate"; import RouteName from "../../router/name"; import { IInstance } from "@/types/instance.model"; import EmptyContent from "@/components/Utils/EmptyContent.vue"; -import debounce from "lodash/debounce"; import { InstanceFilterFollowStatus, InstanceFollowStatus, @@ -254,12 +252,16 @@ const followStatus = useRouteQuery( const { result: instancesResult } = useQuery<{ instances: Paginate; -}>(INSTANCES, () => ({ - page: instancePage.value, - limit: INSTANCES_PAGE_LIMIT, - filterDomain: filterDomain.value, - filterFollowStatus: followStatus.value, -})); +}>( + INSTANCES, + () => ({ + page: instancePage.value, + limit: INSTANCES_PAGE_LIMIT, + filterDomain: filterDomain.value, + filterFollowStatus: followStatus.value, + }), + { debounce: 500 } +); const instances = computed(() => instancesResult.value?.instances); @@ -276,13 +278,6 @@ const newRelayAddress = ref(""); // relayFollowers: Paginate = { elements: [], total: 0 }; -const updateDomainFilter = (event: InputEvent) => { - const newValue = (event.target as HTMLInputElement).value; - filterDomain.value = newValue; -}; - -const debouncedUpdateDomainFilter = debounce(updateDomainFilter, 500); - const hasFilter = computed((): boolean => { return ( followStatus.value !== InstanceFilterFollowStatus.ALL || From d0835232d635aeef02d740502faba61eb09443c7 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 4 Jan 2024 13:35:02 +0100 Subject: [PATCH 07/18] refactor(backend): change naming of function names to avoid the is_ prefix Following Credo.Check.Readability.PredicateFunctionNames check Signed-off-by: Thomas Citharel --- lib/federation/activity_pub/actions/invite.ex | 8 ++--- lib/federation/activity_pub/actions/leave.ex | 4 +-- lib/federation/activity_pub/permission.ex | 12 +++---- lib/federation/activity_pub/publisher.ex | 10 +++--- lib/federation/activity_pub/transmogrifier.ex | 20 ++++++------ lib/federation/activity_pub/types/members.ex | 2 +- lib/federation/activity_pub/visibility.ex | 14 ++++---- .../activity_stream/converter/comment.ex | 2 +- .../activity_stream/converter/event.ex | 6 ++-- lib/federation/node_info.ex | 4 +-- lib/graphql/api/search.ex | 24 +++++++------- lib/graphql/api/utils.ex | 2 +- lib/graphql/resolvers/activity.ex | 2 +- lib/graphql/resolvers/conversation.ex | 10 +++--- lib/graphql/resolvers/discussion.ex | 14 ++++---- lib/graphql/resolvers/event.ex | 14 ++++---- lib/graphql/resolvers/followers.ex | 4 +-- lib/graphql/resolvers/group.ex | 10 +++--- lib/graphql/resolvers/member.ex | 2 +- lib/graphql/resolvers/participant.ex | 2 +- lib/graphql/resolvers/post.ex | 8 ++--- lib/graphql/resolvers/resource.ex | 12 +++---- lib/graphql/resolvers/todos.ex | 20 ++++++------ lib/mobilizon/actors/actor.ex | 4 +-- lib/mobilizon/actors/actors.ex | 16 +++++----- lib/mobilizon/actors/member.ex | 7 ++-- lib/mobilizon/events/events.ex | 12 +++---- lib/mobilizon/events/participant.ex | 4 +-- lib/mobilizon/medias/medias.ex | 10 +++--- lib/service/date_time/date_time.ex | 16 +++++----- lib/service/export/common.ex | 2 +- lib/service/export/feed.ex | 2 +- lib/service/export/icalendar.ex | 2 +- lib/service/http/utils.ex | 4 +-- lib/service/notifier/email.ex | 10 +++--- lib/service/rich_media/parser.ex | 16 +++++----- .../workers/legacy_notifier_builder.ex | 2 +- .../workers/send_activity_recap_worker.ex | 4 +-- lib/web/controllers/page_controller.ex | 32 +++++++++---------- .../email/date/event_tz_date_range.html.heex | 2 +- .../email/date/event_tz_date_range.text.eex | 2 +- lib/web/templates/page/index.html.heex | 2 +- lib/web/views/email_view.ex | 2 +- lib/web/views/page_view.ex | 4 +-- test/tasks/actors/new_test.exs | 2 +- 45 files changed, 182 insertions(+), 181 deletions(-) diff --git a/lib/federation/activity_pub/actions/invite.ex b/lib/federation/activity_pub/actions/invite.ex index 635fda5fe..6ba9eb540 100644 --- a/lib/federation/activity_pub/actions/invite.ex +++ b/lib/federation/activity_pub/actions/invite.ex @@ -25,7 +25,7 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Invite do ) do Logger.debug("Handling #{actor_url} invite to #{group_url} sent to #{target_actor_url}") - if is_able_to_invite?(actor, group) do + if able_to_invite?(actor, group) do with {:ok, %Member{url: member_url} = member} <- Actors.create_member(%{ parent_id: group_id, @@ -64,8 +64,8 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Invite do end end - @spec is_able_to_invite?(Actor.t(), Actor.t()) :: boolean - defp is_able_to_invite?(%Actor{domain: actor_domain, id: actor_id}, %Actor{ + @spec able_to_invite?(Actor.t(), Actor.t()) :: boolean + defp able_to_invite?(%Actor{domain: actor_domain, id: actor_id}, %Actor{ domain: group_domain, id: group_id }) do @@ -76,7 +76,7 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Invite do # If local group, we'll send the invite case Actors.get_member(actor_id, group_id) do {:ok, %Member{} = admin_member} -> - Member.is_administrator(admin_member) + Member.administrator?(admin_member) _ -> false diff --git a/lib/federation/activity_pub/actions/leave.ex b/lib/federation/activity_pub/actions/leave.ex index 4ebeba1f7..07bcb13ac 100644 --- a/lib/federation/activity_pub/actions/leave.ex +++ b/lib/federation/activity_pub/actions/leave.ex @@ -34,7 +34,7 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Leave do local, additional ) do - if Participant.is_not_only_organizer(event_id, actor_id) do + if Participant.not_only_organizer?(event_id, actor_id) do {:error, :is_only_organizer} else case Mobilizon.Events.get_participant( @@ -83,7 +83,7 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Leave do case Actors.get_member(actor_id, group_id) do {:ok, %Member{id: member_id} = member} -> if Map.get(additional, :force_member_removal, false) || group_domain != actor_domain || - !Actors.is_only_administrator?(member_id, group_id) do + !Actors.only_administrator?(member_id, group_id) do with {:ok, %Member{} = member} <- Actors.delete_member(member) do Mobilizon.Service.Activity.Member.insert_activity(member, subject: "member_quit") diff --git a/lib/federation/activity_pub/permission.ex b/lib/federation/activity_pub/permission.ex index 9c8628797..8cb19a1cd 100644 --- a/lib/federation/activity_pub/permission.ex +++ b/lib/federation/activity_pub/permission.ex @@ -44,13 +44,13 @@ defmodule Mobilizon.Federation.ActivityPub.Permission do ) do case object |> Ownable.permissions() |> get_in([:create]) do :member -> - Actors.is_member?(actor_id, group_id) + Actors.member?(actor_id, group_id) :moderator -> - Actors.is_moderator?(actor_id, group_id) + Actors.moderator?(actor_id, group_id) :administrator -> - Actors.is_administrator?(actor_id, group_id) + Actors.administrator?(actor_id, group_id) _ -> false @@ -122,21 +122,21 @@ defmodule Mobilizon.Federation.ActivityPub.Permission do "Checking if activity actor #{actor_url} is a moderator from group from #{object.url}" ) - Actors.is_moderator?(actor_id, group_id) + Actors.moderator?(actor_id, group_id) :administrator -> Logger.debug( "Checking if activity actor #{actor_url} is an administrator from group from #{object.url}" ) - Actors.is_administrator?(actor_id, group_id) + Actors.administrator?(actor_id, group_id) _ -> Logger.debug( "Checking if activity actor #{actor_url} is a member from group from #{object.url}" ) - Actors.is_member?(actor_id, group_id) + Actors.member?(actor_id, group_id) end _ -> diff --git a/lib/federation/activity_pub/publisher.ex b/lib/federation/activity_pub/publisher.ex index 19d645d43..257a2f6be 100644 --- a/lib/federation/activity_pub/publisher.ex +++ b/lib/federation/activity_pub/publisher.ex @@ -21,10 +21,10 @@ defmodule Mobilizon.Federation.ActivityPub.Publisher do Logger.debug("Publishing an activity") Logger.debug(inspect(activity, pretty: true)) - public = Visibility.is_public?(activity) + public = Visibility.public?(activity) Logger.debug("is public ? #{public}") - if public && is_create_activity?(activity) && Config.get([:instance, :allow_relay]) do + if public && create_activity?(activity) && Config.get([:instance, :allow_relay]) do Logger.info(fn -> "Relaying #{activity.data["id"]} out" end) Relay.publish(activity) @@ -125,9 +125,9 @@ defmodule Mobilizon.Federation.ActivityPub.Publisher do 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 + @spec create_activity?(Activity.t()) :: boolean + defp create_activity?(%Activity{data: %{"type" => "Create"}}), do: true + defp create_activity?(_), do: false @spec convert_members_in_recipients(list(String.t())) :: {list(String.t()), list(Actor.t())} defp convert_members_in_recipients(recipients) do diff --git a/lib/federation/activity_pub/transmogrifier.ex b/lib/federation/activity_pub/transmogrifier.ex index fe35bb6bf..5ad5aa634 100644 --- a/lib/federation/activity_pub/transmogrifier.ex +++ b/lib/federation/activity_pub/transmogrifier.ex @@ -285,7 +285,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do object_data when is_map(object_data) <- object |> Converter.Resource.as_to_model_data(), {:member, true} <- - {:member, Actors.is_member?(object_data.creator_id, object_data.actor_id)}, + {:member, Actors.member?(object_data.creator_id, object_data.actor_id)}, {:ok, %Activity{} = activity, %Resource{} = resource} <- Actions.Create.create(:resource, object_data, false) do {:ok, activity, resource} @@ -1005,14 +1005,14 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do end # Comment initiates a whole discussion only if it has full title - @spec is_data_for_comment_or_discussion?(map()) :: boolean() - defp is_data_for_comment_or_discussion?(object_data) do - is_data_a_discussion_initialization?(object_data) and + @spec data_for_comment_or_discussion?(map()) :: boolean() + defp data_for_comment_or_discussion?(object_data) do + data_a_discussion_initialization?(object_data) and is_nil(object_data.discussion_id) end # Comment initiates a whole discussion only if it has full title - defp is_data_a_discussion_initialization?(object_data) do + defp data_a_discussion_initialization?(object_data) do not Map.has_key?(object_data, :title) or is_nil(object_data.title) or object_data.title == "" end @@ -1034,7 +1034,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do @spec transform_object_data_for_discussion(map()) :: map() defp transform_object_data_for_discussion(object_data) do # Basic comment - if is_data_a_discussion_initialization?(object_data) do + if data_a_discussion_initialization?(object_data) do object_data else # Conversation @@ -1138,8 +1138,8 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do end end - defp is_group_object_gone(object_id) do - Logger.debug("is_group_object_gone #{object_id}") + defp group_object_gone_check(object_id) do + Logger.debug("Checking if group object #{object_id} is gone") case ActivityPub.fetch_object_from_url(object_id, force: true) do # comments are just emptied @@ -1192,7 +1192,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do @spec create_comment_or_discussion(map()) :: {:ok, Activity.t(), struct()} | {:error, atom() | Ecto.Changeset.t()} defp create_comment_or_discussion(object_data) do - if is_data_for_comment_or_discussion?(object_data) do + if data_for_comment_or_discussion?(object_data) do Logger.debug("Chosing to create a regular comment") Actions.Create.create(:comment, object_data, false) else @@ -1244,7 +1244,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do end defp handle_group_being_gone(actor, actor_url, object_id) do - case is_group_object_gone(object_id) do + case group_object_gone_check(object_id) do # The group object is no longer there, we can remove the element {:ok, entity} -> if Utils.origin_check_from_id?(actor_url, object_id) || diff --git a/lib/federation/activity_pub/types/members.ex b/lib/federation/activity_pub/types/members.ex index 0c47ceb97..74a5158c5 100644 --- a/lib/federation/activity_pub/types/members.ex +++ b/lib/federation/activity_pub/types/members.ex @@ -93,7 +93,7 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Members do atom() ) :: boolean defp check_admins_left?(member_id, group_id, current_role, updated_role) do - Actors.is_only_administrator?(member_id, group_id) && current_role == :administrator && + Actors.only_administrator?(member_id, group_id) && current_role == :administrator && updated_role != :administrator end end diff --git a/lib/federation/activity_pub/visibility.ex b/lib/federation/activity_pub/visibility.ex index 99337dc2d..06df32cae 100644 --- a/lib/federation/activity_pub/visibility.ex +++ b/lib/federation/activity_pub/visibility.ex @@ -14,17 +14,17 @@ defmodule Mobilizon.Federation.ActivityPub.Visibility do @public "https://www.w3.org/ns/activitystreams#Public" - @spec is_public?(Activity.t() | map()) :: boolean() - def is_public?(%{data: %{"type" => "Tombstone"}}), do: false - def is_public?(%{data: data}), do: is_public?(data) - def is_public?(%Activity{data: data}), do: is_public?(data) + @spec public?(Activity.t() | map()) :: boolean() + def public?(%{data: %{"type" => "Tombstone"}}), do: false + def public?(%{data: data}), do: public?(data) + def public?(%Activity{data: data}), do: public?(data) - def is_public?(data) when is_map(data) do + def public?(data) when is_map(data) do @public in make_list(Map.get(data, "to", [])) end - def is_public?(%Comment{deleted_at: deleted_at}), do: !is_nil(deleted_at) - def is_public?(err), do: raise(ArgumentError, message: "Invalid argument #{inspect(err)}") + def public?(%Comment{deleted_at: deleted_at}), do: !is_nil(deleted_at) + def public?(err), do: raise(ArgumentError, message: "Invalid argument #{inspect(err)}") defp make_list(data) when is_list(data), do: data defp make_list(data), do: [data] diff --git a/lib/federation/activity_stream/converter/comment.ex b/lib/federation/activity_stream/converter/comment.ex index d01030445..39d264ac7 100644 --- a/lib/federation/activity_stream/converter/comment.ex +++ b/lib/federation/activity_stream/converter/comment.ex @@ -62,7 +62,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Comment do tags: fetch_tags(tag_object), mentions: fetch_mentions(tag_object), local: is_nil(actor_domain), - visibility: if(Visibility.is_public?(object), do: :public, else: :private), + visibility: if(Visibility.public?(object), do: :public, else: :private), published_at: object["published"], is_announcement: Map.get(object, "isAnnouncement", false) } diff --git a/lib/federation/activity_stream/converter/event.ex b/lib/federation/activity_stream/converter/event.ex index 76e695383..4aa68fc58 100644 --- a/lib/federation/activity_stream/converter/event.ex +++ b/lib/federation/activity_stream/converter/event.ex @@ -77,7 +77,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do category: Categories.get_category(object["category"]), visibility: visibility, join_options: Map.get(object, "joinMode", "free"), - local: is_local?(object["id"]), + local: local?(object["id"]), external_participation_url: object["externalParticipationUrl"], options: options, metadata: metadata, @@ -305,8 +305,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do ) end - @spec is_local?(String.t()) :: boolean() - defp is_local?(url) do + @spec local?(String.t()) :: boolean() + defp local?(url) do %URI{host: url_domain} = URI.parse(url) %URI{host: local_domain} = URI.parse(Endpoint.url()) url_domain == local_domain diff --git a/lib/federation/node_info.ex b/lib/federation/node_info.ex index 8b227aa00..d34f3fc15 100644 --- a/lib/federation/node_info.ex +++ b/lib/federation/node_info.ex @@ -5,7 +5,7 @@ defmodule Mobilizon.Federation.NodeInfo do alias Mobilizon.Service.HTTP.WebfingerClient require Logger - import Mobilizon.Service.HTTP.Utils, only: [is_content_type?: 2] + import Mobilizon.Service.HTTP.Utils, only: [content_type_matches?: 2] @application_uri "https://www.w3.org/ns/activitystreams#Application" @nodeinfo_rel_2_0 "http://nodeinfo.diaspora.software/ns/schema/2.0" @@ -110,7 +110,7 @@ defmodule Mobilizon.Federation.NodeInfo do {:ok, String.t()} | {:error, :bad_content_type | :body_not_json} defp validate_json_response(body, headers) do cond do - !is_content_type?(headers, "application/json") -> + !content_type_matches?(headers, "application/json") -> {:error, :bad_content_type} !is_map(body) -> diff --git a/lib/graphql/api/search.ex b/lib/graphql/api/search.ex index 03298bb2c..79049c80d 100644 --- a/lib/graphql/api/search.ex +++ b/lib/graphql/api/search.ex @@ -25,8 +25,8 @@ defmodule Mobilizon.GraphQL.API.Search do cond do # Some URLs could be domain.tld/@username, so keep this condition above - # the `is_handle` function - is_url(term) -> + # the `handle?` function + url?(term) -> # skip, if it's not an actor case process_from_url(term) do %Page{total: _total, elements: [%Actor{} = _actor]} = page -> @@ -36,11 +36,11 @@ defmodule Mobilizon.GraphQL.API.Search do {:ok, %{total: 0, elements: []}} end - is_handle(term) -> + handle?(term) -> {:ok, process_from_username(term)} true -> - if is_global_search(args) do + if global_search?(args) do service = GlobalSearch.service() {:ok, service.search_groups(Keyword.new(args, fn {k, v} -> {k, v} end))} @@ -75,7 +75,7 @@ defmodule Mobilizon.GraphQL.API.Search do def search_events(%{term: term} = args, page \\ 1, limit \\ 10) do term = String.trim(term) - if is_url(term) do + if url?(term) do # skip, if it's not an event case process_from_url(term) do %Page{total: _total, elements: [%Event{} = event]} = page -> @@ -89,7 +89,7 @@ defmodule Mobilizon.GraphQL.API.Search do {:ok, %{total: 0, elements: []}} end else - if is_global_search(args) do + if global_search?(args) do service = GlobalSearch.service() {:ok, service.search_events(Keyword.new(args, fn {k, v} -> {k, v} end))} @@ -140,17 +140,17 @@ defmodule Mobilizon.GraphQL.API.Search do end end - @spec is_url(String.t()) :: boolean - defp is_url(search), do: String.starts_with?(search, ["http://", "https://"]) + @spec url?(String.t()) :: boolean + defp url?(search), do: String.starts_with?(search, ["http://", "https://"]) - @spec is_handle(String.t()) :: boolean - defp is_handle(search), do: String.match?(search, ~r/@/) + @spec handle?(String.t()) :: boolean + defp handle?(search), do: String.match?(search, ~r/@/) - defp is_global_search(%{search_target: :global}) do + defp global_search?(%{search_target: :global}) do global_search_enabled?() end - defp is_global_search(_), do: global_search_enabled?() && global_search_default?() + defp global_search?(_), do: global_search_enabled?() && global_search_default?() defp global_search_enabled? do Application.get_env(:mobilizon, :search) |> get_in([:global]) |> get_in([:is_enabled]) diff --git a/lib/graphql/api/utils.ex b/lib/graphql/api/utils.ex index 8318df97e..ccc542301 100644 --- a/lib/graphql/api/utils.ex +++ b/lib/graphql/api/utils.ex @@ -68,6 +68,6 @@ defmodule Mobilizon.GraphQL.API.Utils do @spec check_actor_owns_media?(integer() | String.t(), integer() | String.t()) :: boolean() defp check_actor_owns_media?(actor_id, media_actor_id) do - actor_id == media_actor_id || Mobilizon.Actors.is_member?(media_actor_id, actor_id) + actor_id == media_actor_id || Mobilizon.Actors.member?(media_actor_id, actor_id) end end diff --git a/lib/graphql/resolvers/activity.ex b/lib/graphql/resolvers/activity.ex index 56d5b7adf..cabc78050 100644 --- a/lib/graphql/resolvers/activity.ex +++ b/lib/graphql/resolvers/activity.ex @@ -18,7 +18,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Activity do def group_activity(%Actor{type: :Group, id: group_id}, %{page: page, limit: limit} = args, %{ context: %{current_user: %User{role: role}, current_actor: %Actor{id: actor_id}} }) do - if Actors.is_member?(actor_id, group_id) or is_moderator(role) do + if Actors.member?(actor_id, group_id) or is_moderator(role) do %Page{total: total, elements: elements} = Activities.list_group_activities_for_member( group_id, diff --git a/lib/graphql/resolvers/conversation.ex b/lib/graphql/resolvers/conversation.ex index 5c76683ca..5ee79cf4a 100644 --- a/lib/graphql/resolvers/conversation.ex +++ b/lib/graphql/resolvers/conversation.ex @@ -26,7 +26,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Conversation do } ) when not is_nil(attributed_to_id) do - if Actors.is_member?(actor_id, attributed_to_id) do + if Actors.member?(actor_id, attributed_to_id) do {:ok, event_id |> Conversations.find_conversations_for_event(attributed_to_id, page, limit) @@ -103,7 +103,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Conversation do {:error, :not_found} %ConversationParticipant{actor_id: actor_id} = conversation_participant -> - if actor_id == performing_actor_id or Actors.is_member?(performing_actor_id, actor_id) do + if actor_id == performing_actor_id or Actors.member?(performing_actor_id, actor_id) do {:ok, conversation_participant_to_view(conversation_participant)} else {:error, :not_found} @@ -121,7 +121,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Conversation do } ) do if conversation_actor_id == performing_actor_id or - Actors.is_member?(performing_actor_id, conversation_actor_id) do + Actors.member?(performing_actor_id, conversation_actor_id) do {:ok, Mobilizon.Discussions.get_comments_in_reply_to_comment_id(origin_comment_id, page, limit)} else @@ -184,7 +184,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Conversation do {:valid_actor, true} <- {:valid_actor, actor_id == current_actor_id or - Actors.is_member?(current_actor_id, actor_id)}, + Actors.member?(current_actor_id, actor_id)}, {:ok, %ConversationParticipant{} = conversation_participant} <- Conversations.update_conversation_participant(conversation_participant, %{ unread: !read @@ -269,7 +269,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Conversation do to_string(current_actor_id) in participant_ids or Enum.any?(participant_ids, fn participant_id -> - Actors.is_member?(current_actor_id, participant_id) and + Actors.member?(current_actor_id, participant_id) and attributed_to_id == participant_id end) end diff --git a/lib/graphql/resolvers/discussion.ex b/lib/graphql/resolvers/discussion.ex index ecb07c39e..35798f2b2 100644 --- a/lib/graphql/resolvers/discussion.ex +++ b/lib/graphql/resolvers/discussion.ex @@ -23,7 +23,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do } } ) do - with {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)}, + with {:member, true} <- {:member, Actors.member?(actor_id, group_id)}, {:ok, %Actor{type: :Group} = group} <- Actors.get_group_by_actor_id(group_id) do {:ok, Discussions.find_discussions_for_actor(group, page, limit)} else @@ -45,7 +45,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do }) do case Discussions.get_discussion(id) do %Discussion{actor_id: actor_id} = discussion -> - if Actors.is_member?(creator_id, actor_id) do + if Actors.member?(creator_id, actor_id) do {:ok, discussion} else {:error, :unauthorized} @@ -63,7 +63,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do }) do with %Discussion{actor_id: actor_id} = discussion <- Discussions.get_discussion_by_slug(slug), - {:member, true} <- {:member, Actors.is_member?(creator_id, actor_id)} do + {:member, true} <- {:member, Actors.member?(creator_id, actor_id)} do {:ok, discussion} else nil -> {:error, dgettext("errors", "Discussion not found")} @@ -105,7 +105,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do } } ) do - if Actors.is_member?(creator_id, group_id) do + if Actors.member?(creator_id, group_id) do case Comments.create_discussion(%{ title: title, text: text, @@ -150,7 +150,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do } } = _discussion} <- {:no_discussion, Discussions.get_discussion(discussion_id)}, - {:member, true} <- {:member, Actors.is_member?(creator_id, actor_id)}, + {:member, true} <- {:member, Actors.member?(creator_id, actor_id)}, {:ok, _activity, %Discussion{} = discussion} <- Comments.create_discussion(%{ text: text, @@ -183,7 +183,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do ) do with {:no_discussion, %Discussion{actor_id: actor_id} = discussion} <- {:no_discussion, Discussions.get_discussion(discussion_id)}, - {:member, true} <- {:member, Actors.is_member?(creator_id, actor_id)}, + {:member, true} <- {:member, Actors.member?(creator_id, actor_id)}, {:ok, _activity, %Discussion{} = discussion} <- Actions.Update.update( discussion, @@ -213,7 +213,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do }) do with {:no_discussion, %Discussion{actor_id: actor_id} = discussion} <- {:no_discussion, Discussions.get_discussion(discussion_id)}, - {:member, true} <- {:member, Actors.is_member?(creator_id, actor_id)}, + {:member, true} <- {:member, Actors.member?(creator_id, actor_id)}, {:ok, _activity, %Discussion{} = discussion} <- Actions.Delete.delete(discussion, actor) do {:ok, discussion} diff --git a/lib/graphql/resolvers/event.ex b/lib/graphql/resolvers/event.ex index 16a86aa49..c375f0104 100644 --- a/lib/graphql/resolvers/event.ex +++ b/lib/graphql/resolvers/event.ex @@ -36,7 +36,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Event do when not is_nil(attributed_to_id) do with %Actor{id: group_id} <- Actors.get_actor(attributed_to_id), {:member, true} <- - {:member, Actors.is_member?(actor_id, group_id) or is_moderator(user_role)}, + {:member, Actors.member?(actor_id, group_id) or is_moderator(user_role)}, %Actor{} = actor <- Actors.get_actor(organizer_actor_id) do {:ok, actor} else @@ -176,7 +176,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Event do _args, %{context: %{current_user: %User{id: user_id} = _user}} = _resolution ) do - if Events.is_user_moderator_for_event?(user_id, event_id) do + if Events.user_moderator_for_event?(user_id, event_id) do {:ok, Map.put( stats, @@ -256,7 +256,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Event do {:can_create_event, true} <- can_create_event(args), {:event_external, true} <- edit_event_external_checker(args), {:organizer_group_member, true} <- - {:organizer_group_member, is_organizer_group_member?(args)}, + {:organizer_group_member, organizer_group_member?(args)}, args_with_organizer <- args |> Map.put(:organizer_actor, organizer_actor) |> extract_timezone(user.id), {:askismet, :ham} <- @@ -447,17 +447,17 @@ defmodule Mobilizon.GraphQL.Resolvers.Event do end end - @spec is_organizer_group_member?(map()) :: boolean() - defp is_organizer_group_member?(%{ + @spec organizer_group_member?(map()) :: boolean() + defp organizer_group_member?(%{ attributed_to_id: attributed_to_id, organizer_actor_id: organizer_actor_id }) when not is_nil(attributed_to_id) do - Actors.is_member?(organizer_actor_id, attributed_to_id) && + Actors.member?(organizer_actor_id, attributed_to_id) && Permission.can_create_group_object?(organizer_actor_id, attributed_to_id, %Event{}) end - defp is_organizer_group_member?(_), do: true + defp organizer_group_member?(_), do: true @spec verify_profile_change(map(), Event.t(), User.t(), Actor.t()) :: {:ok, map()} defp verify_profile_change( diff --git a/lib/graphql/resolvers/followers.ex b/lib/graphql/resolvers/followers.ex index 8999c5f5e..c23d7ec77 100644 --- a/lib/graphql/resolvers/followers.ex +++ b/lib/graphql/resolvers/followers.ex @@ -23,7 +23,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Followers do ) do followers = group_followers(group, args) - if Actors.is_moderator?(actor_id, group_id) or is_moderator(user_role) do + if Actors.moderator?(actor_id, group_id) or is_moderator(user_role) do {:ok, followers} else {:ok, %Page{followers | elements: []}} @@ -48,7 +48,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Followers do with %Follower{target_actor: %Actor{type: :Group, id: group_id}} = follower <- Actors.get_follower(follower_id), {:member, true} <- - {:member, Actors.is_moderator?(actor_id, group_id)}, + {:member, Actors.moderator?(actor_id, group_id)}, {:ok, _activity, %Follower{} = follower} <- (if approved do Actions.Accept.accept(:follow, follower) diff --git a/lib/graphql/resolvers/group.ex b/lib/graphql/resolvers/group.ex index 0b556b5d8..ec999e341 100644 --- a/lib/graphql/resolvers/group.ex +++ b/lib/graphql/resolvers/group.ex @@ -36,7 +36,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Group do ) do case ActivityPubActor.find_or_make_group_from_nickname(name) do {:ok, %Actor{id: group_id, suspended: false} = group} -> - if Actors.is_member?(actor_id, group_id) do + if Actors.member?(actor_id, group_id) do {:ok, group} else find_group(parent, args, nil) @@ -72,7 +72,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Group do } }) do with %Actor{suspended: false, id: group_id} = group <- Actors.get_actor_with_preload(id), - true <- Actors.is_member?(actor_id, group_id) do + true <- Actors.member?(actor_id, group_id) do {:ok, group} else _ -> @@ -215,7 +215,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Group do } } ) do - if Actors.is_administrator?(updater_actor.id, group_id) do + if Actors.administrator?(updater_actor.id, group_id) do args = Map.put(args, :updater_actor, updater_actor) case save_attached_pictures(args) do @@ -265,7 +265,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Group do ) do with {:ok, %Actor{} = group} <- Actors.get_group_by_actor_id(group_id), {:ok, %Member{} = member} <- Actors.get_member(actor_id, group.id), - {:is_admin, true} <- {:is_admin, Member.is_administrator(member)}, + {:is_admin, true} <- {:is_admin, Member.administrator?(member)}, {:ok, _activity, group} <- Actions.Delete.delete(group, actor, true) do {:ok, %{id: group.id}} else @@ -448,7 +448,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Group do } } ) do - if Actors.is_member?(actor_id, group_id) do + if Actors.member?(actor_id, group_id) do {:ok, Events.list_organized_events_for_group( group, diff --git a/lib/graphql/resolvers/member.ex b/lib/graphql/resolvers/member.ex index b43428d93..9391fde1d 100644 --- a/lib/graphql/resolvers/member.ex +++ b/lib/graphql/resolvers/member.ex @@ -26,7 +26,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Member do context: %{current_user: %User{role: user_role}, current_actor: %Actor{id: actor_id}} } = _resolution ) do - if Actors.is_member?(actor_id, group_id) or is_moderator(user_role) do + if Actors.member?(actor_id, group_id) or is_moderator(user_role) do roles = case roles do "" -> diff --git a/lib/graphql/resolvers/participant.ex b/lib/graphql/resolvers/participant.ex index 6b3efa5d0..fb8803b71 100644 --- a/lib/graphql/resolvers/participant.ex +++ b/lib/graphql/resolvers/participant.ex @@ -384,7 +384,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Participant do with {:member, true} <- {:member, to_string(current_actor_id) == to_string(actor_id) or - Actors.is_member?(current_actor_id, actor_id)}, + Actors.member?(current_actor_id, actor_id)}, {:ok, _activity, %Conversation{} = conversation} <- Comments.create_conversation(args) do {:ok, conversation_to_view(conversation, Actors.get_actor(actor_id))} else diff --git a/lib/graphql/resolvers/post.ex b/lib/graphql/resolvers/post.ex index 70ad40cdc..2d5f7a8fc 100644 --- a/lib/graphql/resolvers/post.ex +++ b/lib/graphql/resolvers/post.ex @@ -32,7 +32,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Post do } } = _resolution ) do - if Actors.is_member?(actor_id, group_id) or is_moderator(user_role) do + if Actors.member?(actor_id, group_id) or is_moderator(user_role) do %Page{} = page = Posts.get_posts_for_group(group, page, limit) {:ok, page} else @@ -111,7 +111,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Post do } } = _resolution ) do - with {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)}, + with {:member, true} <- {:member, Actors.member?(actor_id, group_id)}, %Actor{} = group <- Actors.get_actor(group_id), args <- Map.update(args, :picture, nil, fn picture -> @@ -160,7 +160,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Post do process_picture(picture, group) end), args <- extract_pictures_from_post_body(args, actor_id), - {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)}, + {:member, true} <- {:member, Actors.member?(actor_id, group_id)}, {:ok, _, %Post{} = post} <- Actions.Update.update(post, args, true, %{"actor" => actor_url}) do {:ok, post} @@ -194,7 +194,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Post do with {:uuid, {:ok, _uuid}} <- {:uuid, Ecto.UUID.cast(post_id)}, {:post, %Post{attributed_to: %Actor{id: group_id}} = post} <- {:post, Posts.get_post_with_preloads(post_id)}, - {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)}, + {:member, true} <- {:member, Actors.member?(actor_id, group_id)}, {:ok, _, %Post{} = post} <- Actions.Delete.delete(post, actor) do {:ok, post} diff --git a/lib/graphql/resolvers/resource.ex b/lib/graphql/resolvers/resource.ex index d86fff8cf..bd9390f58 100644 --- a/lib/graphql/resolvers/resource.ex +++ b/lib/graphql/resolvers/resource.ex @@ -32,7 +32,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Resource do } } = _resolution ) do - with {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)}, + with {:member, true} <- {:member, Actors.member?(actor_id, group_id)}, %Page{} = page <- Resources.get_resources_for_group(group, page, limit) do {:ok, page} else @@ -60,7 +60,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Resource do } } = _resolution ) do - with {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)}, + with {:member, true} <- {:member, Actors.member?(actor_id, group_id)}, %Page{} = page <- Resources.get_resources_for_folder(parent, page, limit) do {:ok, page} end @@ -83,7 +83,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Resource do Logger.debug("Getting resource for group with username #{username}") with {:group, %Actor{id: group_id}} <- {:group, Actors.get_actor_by_name(username, :Group)}, - {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)}, + {:member, true} <- {:member, Actors.member?(actor_id, group_id)}, {:resource, %Resource{} = resource} <- {:resource, Resources.get_resource_by_group_and_path_with_preloads(group_id, path)} do {:ok, resource} @@ -109,7 +109,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Resource do } } = _resolution ) do - if Actors.is_member?(actor_id, group_id) do + if Actors.member?(actor_id, group_id) do parent = get_eventual_parent(args) if check_resource_owned_by_group(parent, group_id) do @@ -155,7 +155,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Resource do ) do case Resources.get_resource_with_preloads(resource_id) do %Resource{actor_id: group_id} = resource -> - if Actors.is_member?(actor_id, group_id) do + if Actors.member?(actor_id, group_id) do case Actions.Update.update(resource, args, true, %{"actor" => actor_url}) do {:ok, _, %Resource{} = resource} -> {:ok, resource} @@ -192,7 +192,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Resource do ) do with {:resource, %Resource{parent_id: _parent_id, actor_id: group_id} = resource} <- {:resource, Resources.get_resource_with_preloads(resource_id)}, - {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)}, + {:member, true} <- {:member, Actors.member?(actor_id, group_id)}, {:ok, _, %Resource{} = resource} <- Actions.Delete.delete(resource, actor) do {:ok, resource} diff --git a/lib/graphql/resolvers/todos.ex b/lib/graphql/resolvers/todos.ex index 502dda86d..7085feecc 100644 --- a/lib/graphql/resolvers/todos.ex +++ b/lib/graphql/resolvers/todos.ex @@ -26,7 +26,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Todos do context: %{current_actor: %Actor{id: actor_id}} } = _resolution ) do - with {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)}, + with {:member, true} <- {:member, Actors.member?(actor_id, group_id)}, %Page{} = page <- Todos.get_todo_lists_for_group(group, page, limit) do {:ok, page} else @@ -50,7 +50,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Todos do context: %{current_actor: %Actor{id: actor_id}} } = _resolution ) do - with {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)}, + with {:member, true} <- {:member, Actors.member?(actor_id, group_id)}, %Page{} = page <- Todos.get_todos_for_todo_list(todo_list, page, limit) do {:ok, page} else @@ -70,7 +70,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Todos do ) do with {:todo, %TodoList{actor_id: group_id} = todo} <- {:todo, Todos.get_todo_list(todo_list_id)}, - {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)} do + {:member, true} <- {:member, Actors.member?(actor_id, group_id)} do {:ok, todo} else {:todo, nil} -> @@ -93,7 +93,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Todos do context: %{current_actor: %Actor{id: actor_id}} } = _resolution ) do - with {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)}, + with {:member, true} <- {:member, Actors.member?(actor_id, group_id)}, {:ok, _, %TodoList{} = todo_list} <- Actions.Create.create( :todo_list, @@ -121,7 +121,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Todos do # with {:is_owned, %Actor{} = actor} <- User.owns_actor(user, actor_id), # {:todo_list, %TodoList{actor_id: group_id} = todo_list} <- # {:todo_list, Todos.get_todo_list(todo_list_id)}, - # {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)}, + # {:member, true} <- {:member, Actors.member?(actor_id, group_id)}, # {:ok, _, %TodoList{} = todo} <- # Actions.Update.update_todo_list(todo_list, actor, true, %{}) do # {:ok, todo} @@ -144,7 +144,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Todos do # with {:is_owned, %Actor{} = actor} <- User.owns_actor(user, actor_id), # {:todo_list, %TodoList{actor_id: group_id} = todo_list} <- # {:todo_list, Todos.get_todo_list(todo_list_id)}, - # {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)}, + # {:member, true} <- {:member, Actors.member?(actor_id, group_id)}, # {:ok, _, %TodoList{} = todo} <- # Actions.Delete.delete_todo_list(todo_list, actor, true, %{}) do # {:ok, todo} @@ -169,7 +169,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Todos do {:todo, Todos.get_todo(todo_id)}, {:todo_list, %TodoList{actor_id: group_id}} <- {:todo_list, Todos.get_todo_list(todo_list_id)}, - {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)} do + {:member, true} <- {:member, Actors.member?(actor_id, group_id)} do {:ok, todo} else {:todo, nil} -> @@ -194,7 +194,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Todos do ) do with {:todo_list, %TodoList{actor_id: group_id} = _todo_list} <- {:todo_list, Todos.get_todo_list(todo_list_id)}, - {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)}, + {:member, true} <- {:member, Actors.member?(actor_id, group_id)}, {:ok, _, %Todo{} = todo} <- Actions.Create.create( :todo, @@ -228,7 +228,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Todos do {:todo, Todos.get_todo(todo_id)}, {:todo_list, %TodoList{actor_id: group_id}} <- {:todo_list, Todos.get_todo_list(todo_list_id)}, - {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)}, + {:member, true} <- {:member, Actors.member?(actor_id, group_id)}, {:ok, _, %Todo{} = todo} <- Actions.Update.update(todo, args, true, %{}) do {:ok, todo} @@ -259,7 +259,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Todos do # {:todo, Todos.get_todo(todo_id)}, # {:todo_list, %TodoList{actor_id: group_id}} <- # {:todo_list, Todos.get_todo_list(todo_list_id)}, - # {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)}, + # {:member, true} <- {:member, Actors.member?(actor_id, group_id)}, # {:ok, _, %Todo{} = todo} <- # Actions.Delete.delete_todo(todo, actor, true, %{}) do # {:ok, todo} diff --git a/lib/mobilizon/actors/actor.ex b/lib/mobilizon/actors/actor.ex index 14432ec1a..d62f41288 100644 --- a/lib/mobilizon/actors/actor.ex +++ b/lib/mobilizon/actors/actor.ex @@ -209,8 +209,8 @@ defmodule Mobilizon.Actors.Actor do @doc """ Checks whether actor visibility is public. """ - @spec is_public_visibility?(t) :: boolean - def is_public_visibility?(%__MODULE__{visibility: visibility}) do + @spec public_visibility?(t) :: boolean + def public_visibility?(%__MODULE__{visibility: visibility}) do visibility in [:public, :unlisted] end diff --git a/lib/mobilizon/actors/actors.ex b/lib/mobilizon/actors/actors.ex index 73a6d6269..3fd5d8de3 100644 --- a/lib/mobilizon/actors/actors.ex +++ b/lib/mobilizon/actors/actors.ex @@ -710,8 +710,8 @@ defmodule Mobilizon.Actors do @doc """ Returns whether the `actor_id` is a confirmed member for the group `parent_id` """ - @spec is_member?(integer | String.t(), integer | String.t()) :: boolean() - def is_member?(actor_id, parent_id) do + @spec member?(integer | String.t(), integer | String.t()) :: boolean() + def member?(actor_id, parent_id) do match?( {:ok, %Member{}}, get_member(actor_id, parent_id, @member_roles) @@ -721,8 +721,8 @@ defmodule Mobilizon.Actors do @doc """ Returns whether the `actor_id` is a moderator for the group `parent_id` """ - @spec is_moderator?(integer | String.t(), integer | String.t()) :: boolean() - def is_moderator?(actor_id, parent_id) do + @spec moderator?(integer | String.t(), integer | String.t()) :: boolean() + def moderator?(actor_id, parent_id) do match?( {:ok, %Member{}}, get_member(actor_id, parent_id, @moderator_roles) @@ -732,8 +732,8 @@ defmodule Mobilizon.Actors do @doc """ Returns whether the `actor_id` is an administrator for the group `parent_id` """ - @spec is_administrator?(integer | String.t(), integer | String.t()) :: boolean() - def is_administrator?(actor_id, parent_id) do + @spec administrator?(integer | String.t(), integer | String.t()) :: boolean() + def administrator?(actor_id, parent_id) do match?( {:ok, %Member{}}, get_member(actor_id, parent_id, @administrator_roles) @@ -922,8 +922,8 @@ defmodule Mobilizon.Actors do @doc """ Returns whether the member is the last administrator for a group """ - @spec is_only_administrator?(integer | String.t(), integer | String.t()) :: boolean() - def is_only_administrator?(member_id, group_id) do + @spec only_administrator?(integer | String.t(), integer | String.t()) :: boolean() + def only_administrator?(member_id, group_id) do Member |> where( [m], diff --git a/lib/mobilizon/actors/member.ex b/lib/mobilizon/actors/member.ex index 8b510983f..112596381 100644 --- a/lib/mobilizon/actors/member.ex +++ b/lib/mobilizon/actors/member.ex @@ -55,9 +55,10 @@ defmodule Mobilizon.Actors.Member do @doc """ Checks whether the member is an administrator (admin or creator) of the group. """ - def is_administrator(%__MODULE__{role: :administrator}), do: true - def is_administrator(%__MODULE__{role: :creator}), do: true - def is_administrator(%__MODULE__{}), do: false + @spec administrator?(t()) :: boolean() + def administrator?(%__MODULE__{role: :administrator}), do: true + def administrator?(%__MODULE__{role: :creator}), do: true + def administrator?(%__MODULE__{}), do: false @doc false @spec changeset(t | Ecto.Schema.t(), map) :: Ecto.Changeset.t() diff --git a/lib/mobilizon/events/events.ex b/lib/mobilizon/events/events.ex index 3fa4cbaf9..91e683dbf 100644 --- a/lib/mobilizon/events/events.ex +++ b/lib/mobilizon/events/events.ex @@ -515,8 +515,8 @@ defmodule Mobilizon.Events do |> Page.build_page(page, limit) end - @spec is_user_moderator_for_event?(integer | String.t(), integer | String.t()) :: boolean - def is_user_moderator_for_event?(user_id, event_id) do + @spec user_moderator_for_event?(integer | String.t(), integer | String.t()) :: boolean + def user_moderator_for_event?(user_id, event_id) do Participant |> join(:inner, [p], a in Actor, on: p.actor_id == a.id) |> where([p, _a], p.event_id == ^event_id) @@ -1492,14 +1492,14 @@ defmodule Mobilizon.Events do end @spec filter_online(Ecto.Query.t(), map()) :: Ecto.Query.t() - defp filter_online(query, %{type: :online}), do: is_online_fragment(query, true) + defp filter_online(query, %{type: :online}), do: online_fragment_check(query, true) - defp filter_online(query, %{type: :in_person}), do: is_online_fragment(query, false) + defp filter_online(query, %{type: :in_person}), do: online_fragment_check(query, false) defp filter_online(query, _), do: query - @spec is_online_fragment(Ecto.Query.t(), boolean()) :: Ecto.Query.t() - defp is_online_fragment(query, value) do + @spec online_fragment_check(Ecto.Query.t(), boolean()) :: Ecto.Query.t() + defp online_fragment_check(query, value) do where(query, [q], fragment("(?->>'is_online')::bool = ?", q.options, ^value)) end diff --git a/lib/mobilizon/events/participant.ex b/lib/mobilizon/events/participant.ex index 086b72898..958be297b 100644 --- a/lib/mobilizon/events/participant.ex +++ b/lib/mobilizon/events/participant.ex @@ -49,8 +49,8 @@ defmodule Mobilizon.Events.Participant do We start by fetching the list of organizers and if there's only one of them and that it's the actor requesting leaving the event we return true. """ - @spec is_not_only_organizer(integer | String.t(), integer | String.t()) :: boolean - def is_not_only_organizer(event_id, actor_id) do + @spec not_only_organizer?(integer | String.t(), integer | String.t()) :: boolean + def not_only_organizer?(event_id, actor_id) do case Events.list_organizers_participants_for_event(event_id) do [%__MODULE__{actor: %Actor{id: participant_actor_id}}] -> participant_actor_id == actor_id diff --git a/lib/mobilizon/medias/medias.ex b/lib/mobilizon/medias/medias.ex index fb946e4d0..29cccd780 100644 --- a/lib/mobilizon/medias/medias.ex +++ b/lib/mobilizon/medias/medias.ex @@ -214,7 +214,7 @@ defmodule Mobilizon.Medias do query |> Repo.all(timeout: :infinity) |> Enum.filter(fn %Media{file: %File{url: url}} -> - !url_is_also_a_profile_file?(url) && is_all_media_orphan?(url, expiration_date) + !url_is_also_a_profile_file?(url) && all_media_orphan?(url, expiration_date) end) |> Enum.chunk_by(fn %Media{file: %File{url: url}} -> url @@ -223,14 +223,14 @@ defmodule Mobilizon.Medias do end) end - defp is_all_media_orphan?(url, expiration_date) do + defp all_media_orphan?(url, expiration_date) do url |> get_all_media_by_url() - |> Enum.all?(&is_media_orphan?(&1, expiration_date)) + |> Enum.all?(&media_orphan?(&1, expiration_date)) end - @spec is_media_orphan?(Media.t(), DateTime.t()) :: boolean() - defp is_media_orphan?(%Media{id: media_id}, expiration_date) do + @spec media_orphan?(Media.t(), DateTime.t()) :: boolean() + defp media_orphan?(%Media{id: media_id}, expiration_date) do media_query = from(m in Media, as: :media, diff --git a/lib/service/date_time/date_time.ex b/lib/service/date_time/date_time.ex index dbceb7cc4..7929a1224 100644 --- a/lib/service/date_time/date_time.ex +++ b/lib/service/date_time/date_time.ex @@ -55,14 +55,14 @@ defmodule Mobilizon.Service.DateTime do ) end - @spec is_first_day_of_week(Date.t(), String.t()) :: boolean() - defp is_first_day_of_week(%Date{} = date, locale) do + @spec first_day_of_week?(Date.t(), String.t()) :: boolean() + defp first_day_of_week?(%Date{} = date, locale) do Date.day_of_week(date) == Cldr.Calendar.first_day_for_locale(locale) end @spec calculate_first_day_of_week(Date.t(), String.t()) :: Date.t() def calculate_first_day_of_week(%Date{} = date, locale \\ "en") do - if is_first_day_of_week(date, locale), + if first_day_of_week?(date, locale), do: date, else: calculate_first_day_of_week(Date.add(date, -1), locale) end @@ -204,11 +204,11 @@ defmodule Mobilizon.Service.DateTime do compare_to_day = Keyword.get(options, :compare_to_day, Date.utc_today()) locale = Keyword.get(options, :locale, "en") - is_first_day_of_week(compare_to_day, locale) && is_between_hours?(options) + first_day_of_week?(compare_to_day, locale) && is_between_hours?(options) end - @spec is_delay_ok_since_last_notification_sent?(DateTime.t(), pos_integer()) :: boolean() - def is_delay_ok_since_last_notification_sent?( + @spec delay_ok_since_last_notification_sent?(DateTime.t(), pos_integer()) :: boolean() + def delay_ok_since_last_notification_sent?( %DateTime{} = last_notification_sent, delay \\ 3_600 ) do @@ -216,8 +216,8 @@ defmodule Mobilizon.Service.DateTime do :lt end - @spec is_same_day?(DateTime.t(), DateTime.t()) :: boolean() - def is_same_day?(%DateTime{} = one, %DateTime{} = two) do + @spec same_day?(DateTime.t(), DateTime.t()) :: boolean() + def same_day?(%DateTime{} = one, %DateTime{} = two) do DateTime.to_date(one) == DateTime.to_date(two) end diff --git a/lib/service/export/common.ex b/lib/service/export/common.ex index 149055e31..6ffc96987 100644 --- a/lib/service/export/common.ex +++ b/lib/service/export/common.ex @@ -16,7 +16,7 @@ defmodule Mobilizon.Service.Export.Common do def fetch_actor_event_feed(name, limit) do case Actors.get_actor_by_name(name) do %Actor{} = actor -> - if Actor.is_public_visibility?(actor) do + if Actor.public_visibility?(actor) do %Page{elements: events} = Events.list_public_upcoming_events_for_actor(actor, 1, limit) %Page{elements: posts} = Posts.get_public_posts_for_group(actor, 1, limit) {:ok, actor, events, posts} diff --git a/lib/service/export/feed.ex b/lib/service/export/feed.ex index cc1a0294a..04f4fb3f6 100644 --- a/lib/service/export/feed.ex +++ b/lib/service/export/feed.ex @@ -265,7 +265,7 @@ defmodule Mobilizon.Service.Export.Feed do end defp clear_actor_feed(%Actor{preferred_username: preferred_username} = actor) do - if Actor.is_public_visibility?(actor) do + if Actor.public_visibility?(actor) do Cachex.del(:feed, "actor_#{preferred_username}") end end diff --git a/lib/service/export/icalendar.ex b/lib/service/export/icalendar.ex index 9d89e9547..d72cdb0b2 100644 --- a/lib/service/export/icalendar.ex +++ b/lib/service/export/icalendar.ex @@ -216,7 +216,7 @@ defmodule Mobilizon.Service.Export.ICalendar do end defp clear_actor_feed(%Actor{preferred_username: preferred_username} = actor) do - if Actor.is_public_visibility?(actor) do + if Actor.public_visibility?(actor) do Cachex.del(:ics, "actor_#{preferred_username}") end end diff --git a/lib/service/http/utils.ex b/lib/service/http/utils.ex index 8adbc5c24..64bd24ce1 100644 --- a/lib/service/http/utils.ex +++ b/lib/service/http/utils.ex @@ -13,8 +13,8 @@ defmodule Mobilizon.Service.HTTP.Utils do end end - @spec is_content_type?(Enum.t(), String.t() | list(String.t())) :: boolean - def is_content_type?(headers, content_type) do + @spec content_type_matches?(Enum.t(), String.t() | list(String.t())) :: boolean + def content_type_matches?(headers, content_type) do headers |> get_header("Content-Type") |> content_type_header_matches(content_type) diff --git a/lib/service/notifier/email.ex b/lib/service/notifier/email.ex index 71fead11d..62a246a4e 100644 --- a/lib/service/notifier/email.ex +++ b/lib/service/notifier/email.ex @@ -12,8 +12,8 @@ defmodule Mobilizon.Service.Notifier.Email do import Mobilizon.Service.DateTime, only: [ - is_delay_ok_since_last_notification_sent?: 1, - is_delay_ok_since_last_notification_sent?: 2 + delay_ok_since_last_notification_sent?: 1, + delay_ok_since_last_notification_sent?: 2 ] require Logger @@ -129,7 +129,7 @@ defmodule Mobilizon.Service.Notifier.Email do # Delay ok since last notification defp match_group_notifications_setting(:one_hour, _, %DateTime{} = last_notification_sent, _) do - is_delay_ok_since_last_notification_sent?(last_notification_sent) + delay_ok_since_last_notification_sent?(last_notification_sent) end # Delay ok since last notification @@ -139,7 +139,7 @@ defmodule Mobilizon.Service.Notifier.Email do %DateTime{} = last_notification_sent, options ) do - is_delay_ok_since_last_notification_sent?(last_notification_sent, 3_600 * 23) and + delay_ok_since_last_notification_sent?(last_notification_sent, 3_600 * 23) and Keyword.get(options, :recap, false) != false end @@ -149,7 +149,7 @@ defmodule Mobilizon.Service.Notifier.Email do %DateTime{} = last_notification_sent, options ) do - is_delay_ok_since_last_notification_sent?(last_notification_sent, 3_600 * 24 * 6) and + delay_ok_since_last_notification_sent?(last_notification_sent, 3_600 * 24 * 6) and Keyword.get(options, :recap, false) != false end diff --git a/lib/service/rich_media/parser.ex b/lib/service/rich_media/parser.ex index 43c1e2fcf..d6cf5da51 100644 --- a/lib/service/rich_media/parser.ex +++ b/lib/service/rich_media/parser.ex @@ -73,7 +73,7 @@ defmodule Mobilizon.Service.RichMedia.Parser do opts: @options )}, {:is_html, _response_headers, true} <- - {:is_html, response_headers, is_html?(response_headers)} do + {:is_html, response_headers, html?(response_headers)} do body |> convert_utf8(response_headers) |> maybe_parse() @@ -106,21 +106,21 @@ defmodule Mobilizon.Service.RichMedia.Parser do defp get_data_for_media(response_headers, url) do data = %{title: get_filename_from_headers(response_headers) || get_filename_from_url(url)} - if is_image?(response_headers) do + if image?(response_headers) do Map.put(data, :image_remote_url, url) else data end end - @spec is_html?(Enum.t()) :: boolean - defp is_html?(headers) do - is_content_type?(headers, ["text/html", "application/xhtml"]) + @spec html?(Enum.t()) :: boolean + defp html?(headers) do + content_type_matches?(headers, ["text/html", "application/xhtml"]) end - @spec is_image?(Enum.t()) :: boolean - defp is_image?(headers) do - is_content_type?(headers, ["image/"]) + @spec image?(Enum.t()) :: boolean + defp image?(headers) do + content_type_matches?(headers, ["image/"]) end @spec get_filename_from_headers(Enum.t()) :: String.t() | nil diff --git a/lib/service/workers/legacy_notifier_builder.ex b/lib/service/workers/legacy_notifier_builder.ex index 3516eb890..47df3c57f 100644 --- a/lib/service/workers/legacy_notifier_builder.ex +++ b/lib/service/workers/legacy_notifier_builder.ex @@ -81,7 +81,7 @@ defmodule Mobilizon.Service.Workers.LegacyNotifierBuilder do options ) do mentionned_actor_ids - |> Enum.filter(&Actors.is_member?(&1, Keyword.fetch!(options, :group_id))) + |> Enum.filter(&Actors.member?(&1, Keyword.fetch!(options, :group_id))) |> users_from_actor_ids(Keyword.fetch!(options, :author_id)) end diff --git a/lib/service/workers/send_activity_recap_worker.ex b/lib/service/workers/send_activity_recap_worker.ex index b11b2f9dc..f51e692c5 100644 --- a/lib/service/workers/send_activity_recap_worker.ex +++ b/lib/service/workers/send_activity_recap_worker.ex @@ -16,7 +16,7 @@ defmodule Mobilizon.Service.Workers.SendActivityRecapWorker do only: [ is_between_hours?: 1, is_between_hours_on_first_day?: 1, - is_delay_ok_since_last_notification_sent?: 1 + delay_ok_since_last_notification_sent?: 1 ] @impl Oban.Worker @@ -108,7 +108,7 @@ defmodule Mobilizon.Service.Workers.SendActivityRecapWorker do "Testing if it's less than an hour since the last time we sent an activity recap" ) - is_delay_ok_since_last_notification_sent?(last_notification_sent) + delay_ok_since_last_notification_sent?(last_notification_sent) end # If we're between notification hours diff --git a/lib/web/controllers/page_controller.ex b/lib/web/controllers/page_controller.ex index 104097c20..486791eef 100644 --- a/lib/web/controllers/page_controller.ex +++ b/lib/web/controllers/page_controller.ex @@ -173,26 +173,26 @@ defmodule Mobilizon.Web.PageController do end end - @spec is_visible?(map) :: boolean() - defp is_visible?(%{visibility: v}), do: v in [:public, :unlisted] - defp is_visible?(%Tombstone{}), do: true - defp is_visible?(_), do: true + @spec visible?(map) :: boolean() + defp visible?(%{visibility: v}), do: v in [:public, :unlisted] + defp visible?(%Tombstone{}), do: true + defp visible?(_), do: true @spec ok_status?(cache_status) :: boolean() defp ok_status?(status), do: status in [:ok, :commit] @typep cache_status :: :ok | :commit | :ignore - @spec ok_status_and_is_visible?(Plug.Conn.t(), cache_status, map()) :: boolean() - defp ok_status_and_is_visible?(_conn, status, o), - do: ok_status?(status) and is_visible?(o) + @spec ok_status_and_visible?(Plug.Conn.t(), cache_status, map()) :: boolean() + defp ok_status_and_visible?(_conn, status, o), + do: ok_status?(status) and visible?(o) defp checks?(conn, status, o) do cond do - ok_status_and_is_visible?(conn, status, o) -> - if is_local?(o) == :remote && get_format(conn) == "activity-json", do: :remote, else: true + ok_status_and_visible?(conn, status, o) -> + if local?(o) == :remote && get_format(conn) == "activity-json", do: :remote, else: true - is_person?(o) && get_format(conn) == "activity-json" -> + person?(o) && get_format(conn) == "activity-json" -> true true -> @@ -200,9 +200,9 @@ defmodule Mobilizon.Web.PageController do end end - @spec is_local?(map()) :: boolean | :remote - defp is_local?(%{local: local}), do: if(local, do: true, else: :remote) - defp is_local?(_), do: false + @spec local?(map()) :: boolean | :remote + defp local?(%{local: local}), do: if(local, do: true, else: :remote) + defp local?(_), do: false @spec maybe_add_noindex_header(Plug.Conn.t(), map()) :: Plug.Conn.t() defp maybe_add_noindex_header(conn, %{visibility: visibility}) @@ -212,9 +212,9 @@ defmodule Mobilizon.Web.PageController do defp maybe_add_noindex_header(conn, _), do: conn - @spec is_person?(Actor.t()) :: boolean() - defp is_person?(%Actor{type: :Person}), do: true - defp is_person?(_), do: false + @spec person?(Actor.t()) :: boolean() + defp person?(%Actor{type: :Person}), do: true + defp person?(_), do: false defp maybe_add_content_type_header(conn) do case get_format(conn) do diff --git a/lib/web/templates/email/date/event_tz_date_range.html.heex b/lib/web/templates/email/date/event_tz_date_range.html.heex index c5a22096a..733cb0fca 100644 --- a/lib/web/templates/email/date/event_tz_date_range.html.heex +++ b/lib/web/templates/email/date/event_tz_date_range.html.heex @@ -6,7 +6,7 @@ timezone: @timezone, locale: @locale ) %> - <% is_same_day?(@start_date, @end_date) -> %> + <% same_day?(@start_date, @end_date) -> %> <%= gettext("On %{date} from %{start_time} to %{end_time}", date: datetime_to_date_string(@start_date, @locale), diff --git a/lib/web/templates/email/date/event_tz_date_range.text.eex b/lib/web/templates/email/date/event_tz_date_range.text.eex index 82cdf3479..679a400fe 100644 --- a/lib/web/templates/email/date/event_tz_date_range.text.eex +++ b/lib/web/templates/email/date/event_tz_date_range.text.eex @@ -1 +1 @@ -<%= cond do %><% @end_date == nil -> %><%= render("date/event_tz_date.text", date: @start_date, event: @event, timezone: @timezone, locale: @locale) %><% is_same_day?(@start_date, @end_date) -> %><%= gettext "On %{date} from %{start_time} to %{end_time}", date: datetime_to_date_string(@start_date, @locale), start_time: datetime_to_time_string(@start_date, @locale), end_time: datetime_to_time_string(@end_date, @locale) %><%= if @event.options.timezone != @timezone do %> <%= gettext "🌐 %{timezone} %{offset}", timezone: @event.options.timezone, offset: Cldr.DateTime.Formatter.zone_gmt(@start_date) %><% end %><% true -> %><%= gettext "From the %{start} to the %{end}", start: datetime_to_string(@start_date, @locale, :short), end: datetime_to_string(@end_date, @locale, :short) %><%= if @event.options.timezone != @timezone do %> <%= gettext "🌐 %{timezone} %{offset}", timezone: @event.options.timezone, offset: Cldr.DateTime.Formatter.zone_gmt(@start_date) %><% end %><% end %> +<%= cond do %><% @end_date == nil -> %><%= render("date/event_tz_date.text", date: @start_date, event: @event, timezone: @timezone, locale: @locale) %><% same_day?(@start_date, @end_date) -> %><%= gettext "On %{date} from %{start_time} to %{end_time}", date: datetime_to_date_string(@start_date, @locale), start_time: datetime_to_time_string(@start_date, @locale), end_time: datetime_to_time_string(@end_date, @locale) %><%= if @event.options.timezone != @timezone do %> <%= gettext "🌐 %{timezone} %{offset}", timezone: @event.options.timezone, offset: Cldr.DateTime.Formatter.zone_gmt(@start_date) %><% end %><% true -> %><%= gettext "From the %{start} to the %{end}", start: datetime_to_string(@start_date, @locale, :short), end: datetime_to_string(@end_date, @locale, :short) %><%= if @event.options.timezone != @timezone do %> <%= gettext "🌐 %{timezone} %{offset}", timezone: @event.options.timezone, offset: Cldr.DateTime.Formatter.zone_gmt(@start_date) %><% end %><% end %> diff --git a/lib/web/templates/page/index.html.heex b/lib/web/templates/page/index.html.heex index f3764f3ec..620bb39fd 100644 --- a/lib/web/templates/page/index.html.heex +++ b/lib/web/templates/page/index.html.heex @@ -15,7 +15,7 @@ document.documentElement.classList.remove('dark') } - <%= if is_root(assigns) do %> + <%= if root?(assigns) do %> diff --git a/lib/web/views/email_view.ex b/lib/web/views/email_view.ex index 6890b7afe..25827a513 100644 --- a/lib/web/views/email_view.ex +++ b/lib/web/views/email_view.ex @@ -25,7 +25,7 @@ defmodule Mobilizon.Web.EmailView do defdelegate datetime_tz_convert(datetime, timezone), to: DateTimeRenderer defdelegate datetime_relative(datetime, locale \\ "en"), to: DateTimeRenderer defdelegate render_address(address), to: Address - defdelegate is_same_day?(one, two), to: DateTimeRenderer + defdelegate same_day?(one, two), to: DateTimeRenderer defdelegate display_name(actor), to: Actor defdelegate preferred_username_and_domain(actor), to: Actor diff --git a/lib/web/views/page_view.ex b/lib/web/views/page_view.ex index 660dcb59f..288b8a4fc 100644 --- a/lib/web/views/page_view.ex +++ b/lib/web/views/page_view.ex @@ -87,8 +87,8 @@ defmodule Mobilizon.Web.PageView do assigns |> Map.get(:locale, "en") |> get_language_direction() end - @spec is_root(map()) :: boolean() - def is_root(assigns) do + @spec root?(map()) :: boolean() + def root?(assigns) do assigns |> Map.get(:conn, %{request_path: "/"}) |> Map.get(:request_path, "/") == "/" end end diff --git a/test/tasks/actors/new_test.exs b/test/tasks/actors/new_test.exs index ff93a2388..a2f907094 100644 --- a/test/tasks/actors/new_test.exs +++ b/test/tasks/actors/new_test.exs @@ -179,7 +179,7 @@ defmodule Mix.Tasks.Mobilizon.Actors.NewTest do assert %Actor{name: @group_name, preferred_username: @group_username, id: group_id} = Actors.get_group_by_title(@group_username) - assert Actors.is_administrator?(admin_id, group_id) + assert Actors.administrator?(admin_id, group_id) end end end From fb173414c9f2a77fb7ad21de70ccca2f7e3a9d0c Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 4 Jan 2024 13:41:21 +0100 Subject: [PATCH 08/18] style(lint): add Elixir lint on pre-commit Signed-off-by: Thomas Citharel --- package.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/package.json b/package.json index e584780da..da13e01f2 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,10 @@ "**/*.{js,ts,vue}": [ "eslint --fix", "prettier --write" + ], + "**/*.{ex,exs,eex,heex}": [ + "mix format", + "mix credo" ] }, "dependencies": { From 57d0372ce8b29952caff8bbf7c902c7862a77b49 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 4 Jan 2024 14:02:13 +0100 Subject: [PATCH 09/18] fix(front): fix reporting group Item was hidden unless anonymous reporting was enabled Signed-off-by: Thomas Citharel --- src/views/Group/GroupView.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/views/Group/GroupView.vue b/src/views/Group/GroupView.vue index b47cac552..285951d1f 100644 --- a/src/views/Group/GroupView.vue +++ b/src/views/Group/GroupView.vue @@ -1086,7 +1086,10 @@ const physicalAddress = computed((): Address | null => { }); const ableToReport = computed((): boolean => { - return anonymousReportsConfig.value?.allowed === true; + return ( + currentActor.value?.id !== undefined || + anonymousReportsConfig.value?.allowed === true + ); }); const organizedEvents = computed((): Paginate => { From 08f80341c29850b1761fec0bf182fcaa465c2429 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 4 Jan 2024 15:20:17 +0100 Subject: [PATCH 10/18] build(docker): change docker-compose to docker compose in Makefile Signed-off-by: Thomas Citharel --- Makefile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index c8b79d041..c4be98db4 100644 --- a/Makefile +++ b/Makefile @@ -4,25 +4,25 @@ init: setup: stop @bash docker/message.sh "Compiling everything" - docker-compose run --rm api bash -c 'mix deps.get; npm ci; npm run build:pictures; mix ecto.create; mix ecto.migrate' + docker compose run --rm api bash -c 'mix deps.get; npm ci; npm run build:pictures; mix ecto.create; mix ecto.migrate' migrate: - docker-compose run --rm api mix ecto.migrate + docker compose run --rm api mix ecto.migrate logs: - docker-compose logs -f + docker compose logs -f start: stop @bash docker/message.sh "Starting Mobilizon with Docker" - docker-compose up -d api + docker compose up -d api @bash docker/message.sh "Docker server started" stop: @bash docker/message.sh "Stopping Mobilizon" - docker-compose down + docker compose down @bash docker/message.sh "Mobilizon is stopped" test: stop @bash docker/message.sh "Running tests" - docker-compose -f docker-compose.yml -f docker-compose.test.yml run api mix prepare_test - docker-compose -f docker-compose.yml -f docker-compose.test.yml run api mix test $(only) + docker compose -f docker compose.yml -f docker compose.test.yml run api mix prepare_test + docker compose -f docker compose.yml -f docker compose.test.yml run api mix test $(only) @bash docker/message.sh "Done running tests" format: - docker-compose run --rm api bash -c "mix format && mix credo --strict" + docker compose run --rm api bash -c "mix format && mix credo --strict" @bash docker/message.sh "Code is now ready to commit :)" target: init From 602798da0f922ea15b09b66256e3ca33bcd53e67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Mesk=C3=B3?= Date: Thu, 18 Jan 2024 11:43:48 +0000 Subject: [PATCH 11/18] Translated using Weblate (Hungarian) Currently translated at 92.3% (1518 of 1644 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hu/ --- src/i18n/hu.json | 81 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 78 insertions(+), 3 deletions(-) diff --git a/src/i18n/hu.json b/src/i18n/hu.json index 670d2eb30..62a87615a 100644 --- a/src/i18n/hu.json +++ b/src/i18n/hu.json @@ -47,6 +47,17 @@ "Accept": "Elfogadás", "Accept follow": "Követés elfogadása", "Accepted": "Elfogadva", + "Access followed groups": "Követett csoportok elérése", + "Access group activities": "Csoport tevékenységeinek elérése", + "Access group discussions": "Csoport témáinak elérése", + "Access group events": "Csoport eseményeinek elérése", + "Access group followers": "Csoport követőinek elérése", + "Access group members": "Csoport tagjainak elérése", + "Access group memberships": "Csoporttagságok elérése", + "Access group todo-lists": "Csoport teendőlistáinak elérése", + "Access organized events": "Szervezett események elérése", + "Access participations": "Résztvevők elérése", + "Access your group's resources": "Csoport bejegyzéseinek elérése", "Accessibility": "Akadálymentesítés", "Accessible only by link": "Csak hivatkozáson keresztül érhető el", "Accessible only to members": "Csak tagoknak érhető el", @@ -99,6 +110,7 @@ "An event from one of my groups has been published": "Az egyik csoportomtól származó esemény közzé lett téve", "An event from one of my groups has been updated or deleted": "Az egyik csoportomtól származó esemény frissítve vagy törölve lett", "An instance is an installed version of the Mobilizon software running on a server. An instance can be run by anyone using the {mobilizon_software} or other federated apps, aka the “fediverse”. This instance's name is {instance_name}. Mobilizon is a federated network of multiple instances (just like email servers), users registered on different instances may communicate even though they didn't register on the same instance.": "A példány a kiszolgálón futó Mobilizon szoftvernek egy telepített verziója. Egy példányt bárki futtathat a {mobilizon_software} vagy egyéb föderált alkalmazások (vagy más néven „födiverzum”) használatával. Ennek a példánynak a neve {instance_name}. A Mobilizon több példány föderált hálózata (hasonlóan a levelezési kiszolgálókhoz). A különböző példányokon regisztrált felhasználók még akkor is kommunikálhatnak egymással, ha nem regisztráltak ugyanarra a példányra.", + "An “application programming interface” or “API” is a communication protocol that allows software components to communicate with each other. The Mobilizon API, for example, can allow third-party software tools to communicate with Mobilizon instances to carry out certain actions, such as posting events, automatically and remotely.": "Egy „alkalmazásprogramozási interfész” vagy „API” egy kommunikációs protokoll, amellyel a szoftverösszetevők kommunikálhatnak egymással. A Mobilizon API-val, például, harmadik féltől származó szoftvereszközök is kommunikálhatnak a Mobilizon példányokkal, és így végrehajthatnak bizonyos műveleteket, mint az események automatikus létrehozása távolról.", "And {number} comments": "és {number} hozzászólást tettek közzé", "Announcements and mentions notifications are always sent straight away.": "A közlemények és az említések értesítései mindig azonnal elküldésre kerülnek.", "Anonymous participant": "Névtelen részvétel", @@ -112,8 +124,11 @@ "Anyone can request being a member, but an administrator needs to approve the membership.": "Bárki kérheti, hogy tag lehessen, de egy adminisztrátornak jóvá kell hagynia a tagságot.", "Anyone wanting to be a member from your group will be able to from your group page.": "Bárki, aki a csoportja tagja szeretne lenni, a csoportja oldaláról lesz képes csatlakozni.", "Application": "Alkalmazás", + "Application not found": "Az alkalmazás nem található", + "Application was revoked": "Az alkalmazás vissza lett vonva", "Apply filters": "Szűrők alkalmazása", "Approve member": "Tag jóváhagyása", + "Apps": "Alkalmazások", "Are you really sure you want to delete your whole account? You'll lose everything. Identities, settings, events created, messages and participations will be gone forever.": "Egészen biztos abban, hogy a teljes fiókot törölni szeretné? Mindent el fog veszíteni! A személyazonosságok, a beállítások, a létrehozott események, az üzenetek és a részvételek örökre eltűnnek.", "Are you sure you want to completely delete this group? All members - including remote ones - will be notified and removed from the group, and all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed.": "Biztosan teljesen törölni szeretné ezt a csoportot? Az összes tag – beleértve a távoliakat is – értesítve lesz, és eltávolításra kerül a csoportból, valamint az összes csoportadat (események, bejegyzések, megbeszélések, tennivalók…) visszavonhatatlanul meg lesznek semmisítve.", "Are you sure you want to delete this comment? This action cannot be undone.": "Biztosan törölni szeretné ezt a hozzászólást? Ezt a műveletet nem lehet visszavonni.", @@ -131,7 +146,11 @@ "Ask your instance admin to {enable_feature}.": "Kérje meg a példány adminisztrátorát, hogy {enable_feature}.", "Assigned to": "Hozzárendelve ehhez", "Atom feed for events and posts": "Atom hírforrás az eseményekhez és a bejegyzésekhez", - "Attending": "Részvétel", + "Attending": "Részt vesz", + "Authorize": "Engedélyezés", + "Authorize application": "Alkalmazás engedélyezése", + "Authorized on {authorization_date}": "Engedélyezve: {authorization_date}", + "Autorize this application to access your account?": "Engedélyezi, hogy ez az alkalmazás hozzáférjen a fiókjához?", "Avatar": "Profilkép", "Back to group list": "Vissza a csoportokhoz", "Back to homepage": "Vissza a kezdőlapra", @@ -214,6 +233,7 @@ "Confirmed: Will happen": "Megerősítve: meg fog történni", "Congratulations, your account is now created!": "Gratulálunk, a fiókja most létrejött!", "Contact": "Kapcsolat", + "Continue": "Folytatás", "Continue editing": "Szerkesztés folytatása", "Cookies and Local storage": "Sütik és helyi tároló", "Copy URL to clipboard": "URL másolás a vágólapra", @@ -227,6 +247,7 @@ "Create a new group": "Új csoport létrehozása", "Create a new identity": "Új személyazonosság létrehozása", "Create a new list": "Új lista létrehozása", + "Create a new metadata element": "Új metaadatelem létrehozása", "Create a new profile": "Új profil létrehozása", "Create a pad": "Dokumentum létrehozása", "Create a videoconference": "Videokonferencia létrehozása", @@ -234,11 +255,14 @@ "Create discussion": "Megbeszélés létrehozása", "Create event": "Esemény létrehozása", "Create group": "Csoport létrehozása", + "Create group discussions": "Csoport témáinak létrehozása", + "Create group resources": "Csoport bejegyzéseinek létrehozása", "Create identity": "Személyazonosság létrehozása", "Create my event": "Saját esemény létrehozása", "Create my group": "Saját csoport létrehozása", "Create my profile": "Saját profil létrehozása", "Create new links": "Új hivatkozások létrehozása", + "Create new profiles": "Új profilok létrehozása", "Create resource": "Erőforrás létrehozása", "Create the discussion": "A megbeszélés létrehozása", "Create to-do lists for all the tasks you need to do, assign them and set due dates.": "Hozzon létre tennivalólistákat az összes elvégzendő feladathoz, rendelje hozzá őket, és állítson be a határidőket.", @@ -265,13 +289,19 @@ "Default Mobilizon terms": "Alapértelmezett Mobilizon használati feltételek", "Delete": "Törlés", "Delete account": "Fiók törlése", + "Delete comments": "Hozzászólások törlése", "Delete conversation": "Beszélgetés törlése", "Delete discussion": "Megbeszélés törlése", "Delete event": "Esemény törlése", + "Delete events": "Események törlése", "Delete everything": "Minden törlése", "Delete group": "Csoport törlése", + "Delete group discussions": "Csoport témáinak törlése", + "Delete group posts": "Csoport bejegyzéseinek törlése", + "Delete group resources": "Csoport erőforrásainak törlése", "Delete my account": "Saját fiók törlése", "Delete post": "Bejegyzés törlése", + "Delete profiles": "Profilok törlése", "Delete this discussion": "A megbeszélés törlése", "Delete this identity": "A személyazonosság törlése", "Delete your identity": "Az Ön személyazonosságának törlése", @@ -285,6 +315,7 @@ "Describe your event": "Írja le az eseményt", "Description": "Leírás", "Details": "Részletek", + "Device activation": "Eszköz aktiválása", "Didn't receive the instructions?": "Nem kapta meg az utasításokat?", "Disabled": "Letiltva", "Discussions": "Megbeszélések", @@ -323,6 +354,7 @@ "Emails usually don't contain capitals, make sure you haven't made a typo.": "Az e-mail-címek általában nem tartalmaznak nagybetűt. Győződjön meg arról, hogy nem írta-e el.", "Enabled": "Engedélyezve", "Ends on…": "Befejeződik…", + "Enter the code displayed on your device": "Adja meg az eszközén megjelenített kódot", "Enter the link URL": "Adja meg a hivatkozás URL-ét", "Enter your email address below, and we'll email you instructions on how to change your password.": "Adja meg lent az e-mail-címét, és elküldjük e-mailben az utasításokat, hogy hogyan változtathatja meg a jelszavát.", "Enter your own privacy policy. HTML tags allowed. The {mobilizon_privacy_policy} is provided as template.": "Adja meg a saját adatvédelmi irányelveit. A HTML címkék engedélyezettek. A {mobilizon_privacy_policy} meg van adva sablonként.", @@ -537,6 +569,7 @@ "Last published events": "Legutóbb közzétett események", "Last seen on": "Legutóbb látva:", "Last sign-in": "Utolsó bejelentkezés", + "Last used on {last_used_date}": "Legutóbb használva: {last_used_date}", "Last week": "Múlt hét", "Latest posts": "Legutóbbi bejegyzések", "Learn more": "Tudjon meg többet", @@ -572,7 +605,12 @@ "Login status": "Bejelentkezési állapot", "Main languages you/your moderators speak": "Fő nyelvek, amelyeken Ön vagy a moderátorai beszélnek", "Make sure that all words are spelled correctly.": "Győződjön meg róla, hogy minden szót helyesen írt le.", + "Manage activity settings": "Tevékenységbeállítások kezelése", + "Manage event participations": "Eseményrészvételek kezelése", + "Manage group members": "Csoport tagjainak kezelése", + "Manage group memberships": "Csoporttagságok kezelése", "Manage participations": "Részvételek kezelése", + "Manage push notification settings": "Leküldéses értesítések beállításainak kezelése", "Manually approve new followers": "Új követők kézi jóváhagyása", "Manually invite new members": "Új tagok meghívása kézzel", "Map": "Térkép", @@ -603,6 +641,7 @@ "Moderation log": "Moderálási napló", "Moderation logs": "Moderálási naplók", "Moderator": "Moderátor", + "Modify all of your account's data": "Az összes fiókadatának módosítása", "More options": "További lehetőségek", "Most recently published": "Legújabban közzétéve", "Move": "Áthelyezés", @@ -617,6 +656,7 @@ "NOTE! The default terms have not been checked over by a lawyer and thus are unlikely to provide full legal protection for all situations for an instance admin using them. They are also not specific to all countries and jurisdictions. If you are unsure, please check with a lawyer.": "MEGJEGYZÉS! Az alapértelmezett használati feltételek nem lettek jogász által ellenőrizve, és ennélfogva nem valószínű, hogy minden helyzetben teljes jogi védelmet biztosít az azt használó példány adminisztrátorának. Továbbá nem tér ki az összes országra és igazságszolgáltatásra. Ha nem biztos a dolgában, akkor ellenőriztesse egy jogásszal.", "Name": "Név", "Navigated to {pageTitle}": "Navigálva ide: {pageTitle}", + "Never used": "Sosem volt használva", "New discussion": "Új megbeszélés", "New email": "Új e-mail", "New folder": "Új mappa", @@ -786,6 +826,7 @@ "Post a comment": "Hozzászólás beküldése", "Post a reply": "Válasz beküldése", "Post body": "Bejegyzés törzse", + "Post comments": "Hozzászólások közzététele", "Post {eventTitle} reported": "A(z) {eventTitle} bejegyzés jelentve", "Postal Code": "Irányítószám", "Posts": "Bejegyzések", @@ -816,6 +857,8 @@ "Public preview": "Nyilvános előnézet", "Publication date": "Közzététel dátuma", "Publish": "Közzététel", + "Publish events": "Események közzététele", + "Publish group posts": "Csoport bejegyzéseinek közzététele", "Published by {name}": "Közzétette: {name}", "Published events with {comments} comments and {participations} confirmed participations": "Közzétett események {comments} hozzászólással és {participations} megerősített részvétellel", "Published events with {comments} comments and {participations} confirmed participations": "Események közzétéve {comments} hozzászólással és {participations} megerősített résztvevővel", @@ -823,6 +866,7 @@ "Quote": "Idézet", "RSS/Atom Feed": "RSS/Atom hírforrás", "Radius": "Sugár", + "Read all of your account's data": "Az összes fiókadatának olvasása", "Recap every week": "Rövid összegzés minden héten", "Receive one email for each activity": "Egy e-mail fogadása minden tevékenységnél", "Receive one email per request": "Egy levél fogadása kérésenként", @@ -848,6 +892,7 @@ "Remember my participation in this browser": "Emlékezzen a részvételemre ebben a böngészőben", "Remove": "Eltávolítás", "Remove link": "Hivatkozás eltávolítása", + "Remove uploaded media": "Feltöltött média eltávolítása", "Rename": "Átnevezés", "Rename resource": "Erőforrás átnevezése", "Reopen": "Újranyitás", @@ -855,6 +900,9 @@ "Reply": "Válasz", "Report": "Jelentés", "Report #{reportNumber}": "#{reportNumber} jelentés", + "Report as ham": "Jelentés nem kéretlenként", + "Report as spam": "Jelentés kéretlenként", + "Report as undetected spam": "Jelentés nem észlelt kéretlen tartalomként", "Report reason": "Jelentés oka", "Report status": "Állapotjelentés", "Report this comment": "Hozzászólás jelentése", @@ -883,6 +931,7 @@ "Resources": "Erőforrások", "Restricted": "Korlátozott", "Return to the group page": "Visszatérés a csoport oldalára", + "Revoke": "Visszavonás", "Right now": "Épp most", "Role": "Szerep", "Rules": "Szabályok", @@ -892,7 +941,7 @@ "Save draft": "Piszkozat mentése", "Schedule": "Ütemterv", "Search": "Keresés", - "Search events, groups, etc.": "Események, csoportok stb. keresése", + "Search events, groups, etc.": "Események, csoportok és egyebek keresése", "Search target": "Cél keresése", "Searching…": "Keresés…", "Select a category": "Válasszon egy kategóriát", @@ -943,6 +992,7 @@ "Stop following instance": "Példány követésének leállítása", "Street": "Utca", "Submit": "Elküldés", + "Submit to Akismet": "Beküldés az Akismetnek", "Subtitles": "Feliratok", "Suggestions:": "Javaslatok:", "Suspend": "Felfüggesztés", @@ -973,6 +1023,7 @@ "The actual number of participants may differ, as this event is hosted on another instance.": "A résztvevők tényleges száma eltérhet, mivel ez az esemény egy másik példányon van kiszolgálva.", "The calc will be created on {service}": "A táblázat itt lesz létrehozva: {service}", "The content came from another server. Transfer an anonymous copy of the report?": "A tartalom egy másik kiszolgálóról érkezik. Átviszi a jelentés egy névtelen másolatát?", + "The device code is incorrect or no longer valid.": "Az eszköz kódja érvénytelen, vagy már nem érvényes.", "The draft event has been updated": "A piszkozatesemény frissítve lett", "The event has a sign language interpreter": "Az eseménynek van jelnyelvi tolmácsa", "The event has been created as a draft": "Az esemény létre lett hozva piszkozatként", @@ -1015,6 +1066,8 @@ "The post {post} was created by {profile}.": "A(z) {post} bejegyzést {profile} hozta létre.", "The post {post} was deleted by {profile}.": "A(z) {post} bejegyzést {profile} törölte.", "The post {post} was updated by {profile}.": "A(z) {post} bejegyzést {profile} frissítette.", + "The provided application was not found.": "A megadott alkalmazás nem található.", + "The report contents (eventual comments and event) and the reported profile details will be transmitted to Akismet.": "A jelentés tartalma (a hozzászólások és az esemény) és a jelentett profil részletei el lesznek küldve az Akismetnek.", "The report will be sent to the moderators of your instance. You can explain why you report this content below.": "A jelentés el lesz küldve a példánya moderátorainak. Elmagyarázhatja alább, hogy miért jelenti ezt a tartalmat.", "The selected picture is too heavy. You need to select a file smaller than {size}.": "A kiválasztott kép túl nagy. Egy {size} méretűnél kisebb fájlt kell kiválasztania.", "The technical details of the error can help developers solve the problem more easily. Please add them to your feedback.": "A hiba műszaki részletei segítenek a fejlesztőknek, hogy könnyebben megoldják a problémát. Adja hozzá a visszajelzéséhez.", @@ -1033,6 +1086,15 @@ "This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "Ez a Mobilizon példány és ez az eseményszervező megengedi a névtelen részvételeket, de ellenőrzés szükséges e-mailen keresztüli megerősítéssel.", "This URL doesn't seem to be valid": "Ez az URL nem tűnik érvényesnek", "This URL is not supported": "Ez az URL nem támogatott", + "This application will be able to access all of your informations and post content. Make sure you only approve applications you trust.": "Ez az alkalmazás hozzá fog férni az összes információjához és a bejegyzései tartalmához. Győződjön meg arról, hogy csak azokat az alkalmazásokat engedélyezi, melyekben megbízik.", + "This application will be allowed to delete events": "Az alkalmazás törölheti az eseményeket", + "This application will be allowed to delete group posts": "Az alkalmazás törölheti a bejegyzéseket a csoportokból", + "This application will be allowed to publish events": "Az alkalmazás közzétehet eseményeket", + "This application will be allowed to publish group posts": "Az alkalmazás közzétehet bejegyzéseket a csoportokban", + "This application will be allowed to remove uploaded media": "Az alkalmazás törölheti a feltöltött médiafájlokat", + "This application will be allowed to update events": "Az alkalmazás frissítheti az eseményeket", + "This application will be allowed to update group posts": "Az alkalmazás frissítheti a bejegyzéseket a csoportokban", + "This application will be allowed to upload media": "Az alkalmazás tölthet fel médiafájlokat", "This event has been cancelled.": "Ezt az eseményt törölték.", "This event is accessible only through it's link. Be careful where you post this link.": "Ez az esemény csak a hivatkozásán keresztül érhető el. Legyen óvatos, hogy hova küldi be ezt a hivatkozást.", "This group doesn't have a description yet.": "Ennek a csoportnak még nincs leírása.", @@ -1061,7 +1123,7 @@ "This user was not found": "Ez a felhasználó nem található", "This website isn't moderated and the data that you enter will be automatically destroyed every day at 00:01 (Paris timezone).": "Ez a weboldal nincs moderálva, és a beírt adatok automatikusan meg lesznek semmisítve minden nap 00:01-kor (Párizs időzóna).", "This week": "Ez a hét", - "This weekend": "Ez a hétvége", + "This weekend": "Ezen a hétvégén", "This will delete / anonymize all content (events, comments, messages, participations…) created from this identity.": "Ez törölni vagy névteleníteni fogja az ezzel a személyazonossággal létrehozott összes tartalmat (eseményeket, hozzászólásokat, üzeneteket, részvételeket…).", "Time in your timezone ({timezone})": "Az idő az Ön időzónájában ({timezone})", "Times in your timezone ({timezone})": "Az idők az Ön időzónájában ({timezone})", @@ -1116,12 +1178,19 @@ "Upcoming events from your groups": "Közelgő események a csoportjaitól", "Update": "Frissítés", "Update app": "Alkalmazás frissítése", + "Update comments": "Hozzászólások frissítése", "Update discussion title": "Megbeszélés címének frissítése", "Update event {name}": "A(z) {name} esemény frissítése", + "Update events": "Események frissítése", "Update group": "Csoport frissítése", + "Update group discussions": "Csoport témáinak frissítése", + "Update group posts": "Csoport bejegyzéseinek frissítése", + "Update group resources": "Csoport erőforrásainak frissítése", "Update my event": "Saját esemény frissítése", "Update post": "Bejegyzés frissítése", + "Update profiles": "Profilok frissítése", "Updated": "Frissítve", + "Upload media": "Média feltöltése", "Uploaded media size": "Feltöltött média mérete", "Uploaded media total size": "Feltöltött média összmérete", "Use my location": "Saját hely használata", @@ -1208,6 +1277,7 @@ "You can add resources by using the button above.": "A fenti gombbal adhat hozzá erőforrásokat.", "You can add tags by hitting the Enter key or by adding a comma": "Hozzáadhat címkéket az Enter billentyű lenyomásával vagy egy vessző hozzáadásával", "You can pick your timezone into your preferences.": "Kiválaszthatja az időzónát a beállításaiban.", + "You can put any arbitrary content in this element. URLs will be clickable.": "Tetszőleges tartalmat tehet ebbe az elembe. A webcím kattintható lesz.", "You can try another search term or drag and drop the marker on the map": "Megpróbálhat egy másik keresési kifejezést, vagy fogd és vidd módon tegye a jelölőt a térképre", "You can't change your password because you are registered through {provider}.": "Nem tudja megváltoztatni a jelszavát, mert {provider} használatával regisztrált.", "You can't use push notifications in this browser.": "Nem tudja használni a leküldéses értesítéseket ebben a böngészőben.", @@ -1249,6 +1319,7 @@ "You moved the resource {resource} into {new_path}.": "Ön áthelyezte a(z) {resource} erőforrást erre a helyre: {new_path}.", "You moved the resource {resource} to the root folder.": "Ön áthelyezte a(z) {resource} erőforrást a gyökérmappába.", "You need to login.": "Be kell jelentkeznie.", + "You need to provide the following code to your application. It will only be valid for a few minutes.": "Meg kell adnia a következő kódot az alkalmazásának. Csak néhány percig érvényes.", "You posted a comment on the event {event}.": "Ön hozzászólást küldött a(z) {event} eseményhez.", "You promoted the member {member} to an unknown role.": "Ön előléptette {member} tagot egy ismeretlen szerepre.", "You promoted {member} to administrator.": "Ön előléptette {member} tagot adminisztrátorrá.", @@ -1275,6 +1346,7 @@ "You will find here all the events you have created or of which you are a participant, as well as events organized by groups you follow or are a member of.": "Itt megtalálja az összes eseményt, amelyeket létrehozott vagy amelyeknél Ön résztvevő, illetve az olyan csoportok által szervezett eseményeket, amelyeket Ön követ vagy amelyeknek tagja.", "You will receive notifications about this group's public activity depending on %{notification_settings}.": "Értesítéseket fog kapni ennek a csoportnak a nyilvános tevékenységéről az %{notification_settings} függően.", "You wish to participate to the following event": "Részt kíván venni a következő eseményen", + "You'll be able to revoke access for this application in your account settings.": "Az alkalmazás hozzáférését a fiókbeállításokban vonhatja vissza.", "You'll get a weekly recap every Monday for upcoming events, if you have any.": "Heti rövid összegzést fog kapni minden hétfőn a közelgő eseményekről, ha van ilyen.", "You'll need to change the URLs where there were previously entered.": "Meg kell majd változtatnia az URL-eket, ahol korábban meg lettek adva.", "You'll need to transmit the group URL so people may access the group's profile. The group won't be findable in Mobilizon's search or regular search engines.": "Át kell küldenie a csoport URL-jét, hogy az emberek hozzáférhessenek a csoport profiljához. A csoport nem lesz megtalálható a Mobilizon keresőjében vagy a szokásos keresőmotorokban.", @@ -1285,6 +1357,7 @@ "Your account has been validated": "A fiókja ellenőrizve lett", "Your account is being validated": "A fiókja ellenőrizés alatt van", "Your account is nearly ready, {username}": "A fiókja majdnem készen, {username}", + "Your application code": "Az alkalmazáskódja", "Your city or region and the radius will only be used to suggest you events nearby. The event radius will consider the administrative center of the area.": "A települése vagy a régiója és a sugár csak a közeli események ajánlásához lesz használva. Az esemény sugara a terület adminisztratív középpontját veszi figyelembe.", "Your current email is {email}. You use it to log in.": "A jelenlegi e-mail-címe {email}. Használja ezt a bejelentkezéshez.", "Your email": "Az e-mail címe", @@ -1328,6 +1401,7 @@ "create an event": "eseményt létrehozni", "default Mobilizon privacy policy": "alapértelmezett Mobilizon adatvédelmi irányelv", "default Mobilizon terms": "alapértelmezett Mobilizon használati feltételek", + "detail": " ", "e.g. 10 Rue Jangot": "például Budapest, I. kerület", "e.g. Accessibility, Twitch, PeerTube": "például akadálymentesítés, Twitch, PeerTube", "e.g. Nantes, Berlin, Cork, …": "például Nantes, Berlin, Cork…", @@ -1351,6 +1425,7 @@ "return to the homepage": "visszatérhet a kezdőlapra", "terms of service": "szolgáltatás feltételeit", "tool designed to serve you": "eszköz, amelyet arra terveztek, hogy Önt szolgálja", + "translation": " ", "with another identity…": "egy másik személyazonossággal…", "your notification settings": "értesítési beállításaitól", "{'@'}{username}": "{'@'}{username}", From 25bbab3827e093d42420fbc5ac1112088f8fc427 Mon Sep 17 00:00:00 2001 From: drkfrd Date: Fri, 19 Jan 2024 09:38:15 +0000 Subject: [PATCH 12/18] Translated using Weblate (Swedish) Currently translated at 94.5% (86 of 91 strings) Translation: Mobilizon/Activity Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/sv/ --- priv/gettext/sv/LC_MESSAGES/activity.po | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/priv/gettext/sv/LC_MESSAGES/activity.po b/priv/gettext/sv/LC_MESSAGES/activity.po index e754302af..083303aee 100644 --- a/priv/gettext/sv/LC_MESSAGES/activity.po +++ b/priv/gettext/sv/LC_MESSAGES/activity.po @@ -8,15 +8,15 @@ ## to merge POT files into PO files. msgid "" msgstr "" -"PO-Revision-Date: 2022-12-19 04:14+0000\n" -"Last-Translator: Kristoffer Grundström \n" +"PO-Revision-Date: 2024-01-19 09:47+0000\n" +"Last-Translator: drkfrd \n" "Language-Team: Swedish \n" "Language: sv\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.14.1\n" +"X-Generator: Weblate 5.3.1\n" #: lib/web/templates/email/activity/_member_activity_item.html.heex:14 #: lib/web/templates/email/activity/_member_activity_item.text.eex:12 @@ -478,12 +478,12 @@ msgstr "%{profile} lade till medlemmen %{member}." #: lib/web/templates/email/activity/_event_activity_item.text.eex:31 #, elixir-autogen, elixir-format msgid "%{profile} joined your event %{event}." -msgstr "" +msgstr "%{profile} gick med i ditt evenemang %{event}." #: lib/web/views/email_view.ex:61 #, elixir-autogen, elixir-format msgid "An anonymous profile" -msgstr "" +msgstr "En anonym profil" #: lib/web/templates/email/email_anonymous_activity.html.heex:107 #: lib/web/templates/email/email_anonymous_activity.text.eex:14 @@ -510,7 +510,7 @@ msgstr "%{profile} nämnde dig i en kommentar under händelsen %{event}." #: lib/service/activity/renderer/conversation.ex:36 #, elixir-autogen, elixir-format msgid "%{profile} replied to your message" -msgstr "" +msgstr "%{profil} svarade på ditt meddelande" #: lib/web/templates/email/activity/_conversation_activity_item.html.heex:10 #, elixir-autogen, elixir-format, fuzzy @@ -520,31 +520,35 @@ msgstr "%{profile} svarade på diskussionen %{discussion}." #: lib/web/templates/email/activity/_conversation_activity_item.text.eex:6 #, elixir-autogen, elixir-format msgid "%{profile} replied you in a conversation." -msgstr "" +msgstr "%{profile} svarade dig i en konversation." #: lib/service/activity/renderer/conversation.ex:49 #, elixir-autogen, elixir-format msgid "%{profile} sent a private message about event %{event}" -msgstr "" +msgstr "%{profile} skickade ett privat meddelande om händelsen %{event}" #: lib/service/activity/renderer/conversation.ex:23 #, elixir-autogen, elixir-format msgid "%{profile} sent you a message" -msgstr "" +msgstr "%{profil} skickade ett meddelande till dig" #: lib/web/email/activity.ex:52 #, elixir-autogen, elixir-format msgid "Informations about your event %{event}" -msgstr "" +msgstr "Information om ditt evenemang %{event}" #: lib/web/templates/email/email_anonymous_activity.html.heex:118 #: lib/web/templates/email/email_anonymous_activity.text.eex:20 #, elixir-autogen, elixir-format msgid "It might give details on how to join the event, so make sure to read it appropriately." msgstr "" +"Den kan innehålla information om hur du går med i evenemanget, så se till " +"att läsa den ordentligt." #: lib/web/templates/email/email_anonymous_activity.html.heex:156 #: lib/web/templates/email/email_anonymous_activity.text.eex:28 #, elixir-autogen, elixir-format msgid "This information is sent privately to you as a person who registered for this event. Share the informations above with other people with caution." msgstr "" +"Denna information skickas privat till dig som registrerat dig för detta " +"evenemang. Dela informationen ovan med andra personer med försiktighet." From eb8d65d1c854041e79aabf51cd351dbaaa2fc61b Mon Sep 17 00:00:00 2001 From: drkfrd Date: Fri, 19 Jan 2024 10:00:31 +0000 Subject: [PATCH 13/18] Translated using Weblate (Swedish) Currently translated at 51.5% (848 of 1644 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sv/ --- src/i18n/sv.json | 457 ++++++++++++++++++++++++----------------------- 1 file changed, 229 insertions(+), 228 deletions(-) diff --git a/src/i18n/sv.json b/src/i18n/sv.json index c40007a5f..9f2269557 100644 --- a/src/i18n/sv.json +++ b/src/i18n/sv.json @@ -1,35 +1,35 @@ { "#{tag}": "#{tag}", "(Masked)": "(Maskerad)", - "(this folder)": "", - "(this link)": "", - "+ Add a resource": "", + "(this folder)": "(denna mapp)", + "(this link)": "(denna länk)", + "+ Add a resource": "+ Lägg till en resurs", "+ Create a post": "", - "+ Create an event": "", - "+ Start a discussion": "", - "{contact} will be displayed as contact.": "", - "@{group}": "@{grupp}", - "@{username} ({role})": "@{användarnamn} ({roll})", + "+ Create an event": "+ Skapa ett evenemang", + "+ Start a discussion": "+ Starta en diskussion", + "{contact} will be displayed as contact.": "{contact} kommer att visas som kontakt.|{contact} kommer att visas som kontakter.", + "@{group}": "@{group}", + "@{username} ({role})": "@{username} ({role})", "@{username}'s follow request was accepted": "", - "@{username}'s follow request was rejected": "", - "A cookie is a small file containing information that is sent to your computer when you visit a website. When you visit the site again, the cookie allows that site to recognize your browser. Cookies may store user preferences and other information. You can configure your browser to refuse all cookies. However, this may result in some website features or services partially working. Local storage works the same way but allows you to store more data.": "", + "@{username}'s follow request was rejected": "@{username}s begäran om att följa avvisades", + "A cookie is a small file containing information that is sent to your computer when you visit a website. When you visit the site again, the cookie allows that site to recognize your browser. Cookies may store user preferences and other information. You can configure your browser to refuse all cookies. However, this may result in some website features or services partially working. Local storage works the same way but allows you to store more data.": "En cookie är en liten fil med information som skickas till din dator när du besöker en webbplats. När du besöker webbplatsen igen gör cookien det möjligt för webbplatsen att känna igen din webbläsare. Cookies kan lagra användarinställningar och annan information. Du kan konfigurera din webbläsare så att alla cookies nekas. Detta kan dock leda till att vissa funktioner eller tjänster på webbplatsen inte fungerar fullt ut. Lokal lagring fungerar på samma sätt men gör att du kan lagra mer data.", "A discussion has been created or updated": "", - "A federated software": "", + "A federated software": "En federerad programvara", "A fediverse account URL to follow for event updates": "", "A link to a page presenting the event schedule": "", "A link to a page presenting the price options": "", "A member has been updated": "", "A member requested to join one of my groups": "", "A new version is available.": "", - "A place for your code of conduct, rules or guidelines. You can use HTML tags.": "", - "A place to explain who you are and the things that set your instance apart. You can use HTML tags.": "", - "A place to publish something to the whole world, your community or just your group members.": "", - "A place to store links to documents or resources of any type.": "", + "A place for your code of conduct, rules or guidelines. You can use HTML tags.": "En plats för din uppförandekod, dina regler eller riktlinjer. Du kan använda HTML-taggar.", + "A place to explain who you are and the things that set your instance apart. You can use HTML tags.": "En plats där du kan förklara vem du är och vad som utmärker din instans. Du kan använda HTML-taggar.", + "A place to publish something to the whole world, your community or just your group members.": "En plats där du kan publicera något för hela världen, din community eller bara dina gruppmedlemmar.", + "A place to store links to documents or resources of any type.": "En plats för att lagra länkar till dokument eller resurser av alla slag.", "A post has been published": "", "A post has been updated": "", - "A practical tool": "", + "A practical tool": "Ett praktiskt verktyg", "A resource has been created or updated": "", - "A short tagline for your instance homepage. Defaults to \"Gather ⋅ Organize ⋅ Mobilize\"": "", + "A short tagline for your instance homepage. Defaults to \"Gather ⋅ Organize ⋅ Mobilize\"": "En kort slogan för din instans hemsida. Standardinställningen är \"Samla ⋅ Organisera ⋅ Mobilisera\"", "A twitter account handle to follow for event updates": "", "A user-friendly, emancipatory and ethical tool for gathering, organising, and mobilising.": "Ett användarvänligt, frigörande och etiskt verktyg för att samlas, organisera och mobilisera.", "A validation email was sent to {email}": "Ett valideringsmail skickades till {email}", @@ -37,17 +37,17 @@ "Abandon editing": "Överge redigering", "About": "Om", "About Mobilizon": "Om Mobilizon", - "About anonymous participation": "", + "About anonymous participation": "Om anonymt deltagande", "About instance": "", "About this event": "Om det här evenemanget", "About this instance": "Om den här instansen", - "About {instance}": "", + "About {instance}": "Om {instance}", "Accept": "Acceptera", "Accepted": "Accepterad", "Accessibility": "", "Accessible only by link": "", - "Accessible only to members": "", - "Accessible through link": "", + "Accessible only to members": "Endast tillgängligt för medlemmar", + "Accessible through link": "Tillgänglig via länk", "Account": "Konto", "Account settings": "Kontoinställningar", "Actions": "Åtgärder", @@ -58,7 +58,7 @@ "Actor": "Skådespelare", "Add": "Lägg till", "Add / Remove…": "Lägg till / Ta bort…", - "Add a contact": "", + "Add a contact": "Lägg till en kontakt", "Add a new post": "Skapa ett nytt inlägg", "Add a note": "Lägg till en kommentar", "Add a todo": "Lägg till en att-göra", @@ -79,12 +79,12 @@ "All activities": "", "All good, let's continue!": "Toppen, vi fortsätter!", "All the places have already been taken": "Alla platser är redan upptagna", - "Allow all comments from users with accounts": "", + "Allow all comments from users with accounts": "Tillåt alla kommentarer från inloggade användare", "Allow registrations": "Tillåt kontoregistrering", "An URL to an external ticketing platform": "", "An error has occured while refreshing the page.": "", - "An error has occured. Sorry about that. You may try to reload the page.": "", - "An ethical alternative": "", + "An error has occured. Sorry about that. You may try to reload the page.": "Ett fel har uppstått. Vi beklagar detta. Du kan försöka ladda om sidan.", + "An ethical alternative": "Ett etiskt alternativ", "An event I'm going to has been updated": "", "An event I'm going to has posted an announcement": "", "An event I'm organizing has a new comment": "", @@ -93,6 +93,7 @@ "An event from one of my groups has been published": "", "An event from one of my groups has been updated or deleted": "", "An instance is an installed version of the Mobilizon software running on a server. An instance can be run by anyone using the {mobilizon_software} or other federated apps, aka the “fediverse”. This instance's name is {instance_name}. Mobilizon is a federated network of multiple instances (just like email servers), users registered on different instances may communicate even though they didn't register on the same instance.": "En instans är en Mobilizon-mjukvara som installerats och körs på en server. En instans kan drivas av vem som helst som använder {mobilizon_software} eller andra federerade appar ur det s.k. \"fediverse\". Den här instansen heter {instance_name}. Mobilizon är ett federerat nätverk av flera instanser (precis som mejlservrar!), och användare kan kommunicera med varandra även om de är registrerade på olika instanser.", + "An “application programming interface” or “API” is a communication protocol that allows software components to communicate with each other. The Mobilizon API, for example, can allow third-party software tools to communicate with Mobilizon instances to carry out certain actions, such as posting events, automatically and remotely.": "Ett \"application programming interface\" eller \"API\" är ett kommunikationsprotokoll som gör det möjligt för programvarukomponenter att kommunicera med varandra. Mobilizon API kan t.ex. göra det möjligt för tredjepartsverktyg att kommunicera med Mobilizon-instanser för att utföra vissa åtgärder, såsom att lägga upp evenemang, automatiskt och på distans.", "And {number} comments": "Och {number} kommentarer", "Announcements and mentions notifications are always sent straight away.": "", "Anonymous participant": "Anonym deltagare", @@ -100,17 +101,17 @@ "Anonymous participations": "Anonyma deltagare", "Any day": "Alla dagar", "Any type": "", - "Anyone can join freely": "", + "Anyone can join freely": "Alla kan ansluta sig fritt", "Anyone can request being a member, but an administrator needs to approve the membership.": "", - "Anyone wanting to be a member from your group will be able to from your group page.": "", + "Anyone wanting to be a member from your group will be able to from your group page.": "Alla som vill bli medlemmar i din grupp kan göra det från din gruppsida.", "Application": "Applikation", "Approve member": "", "Are you really sure you want to delete your whole account? You'll lose everything. Identities, settings, events created, messages and participations will be gone forever.": "Är du verkligen säker på att du vill ta bort hela ditt konto? Du förlorar allt. Identiteter, inställningar, skapade händelser, meddelanden och deltagande försvinner för alltid.", - "Are you sure you want to completely delete this group? All members - including remote ones - will be notified and removed from the group, and all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed.": "", + "Are you sure you want to completely delete this group? All members - including remote ones - will be notified and removed from the group, and all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed.": "Är du säker på att du vill fullständigt radera den här gruppen? Alla medlemmar - även fjärrmedlemmar - kommer att meddelas och tas bort från gruppen, och alla gruppdata (händelser, inlägg, diskussioner, todos...) kommer oåterkalleligen att förstöras.", "Are you sure you want to delete this comment? This action cannot be undone.": "Är du säker på att du vill radera den här kommentaren? Detta kan inte ångras.", "Are you sure you want to delete this event? This action cannot be undone. You may want to engage the discussion with the event creator or edit its event instead.": "Är du säker på att du vill radera det här evenemanget? Denna åtgärd kan inte ångras. Du kanske vill delta i diskussionen med evenemangsskaparen eller redigera det istället.", - "Are you sure you want to suspend this group? All members - including remote ones - will be notified and removed from the group, and all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed.": "", - "Are you sure you want to suspend this group? As this group originates from instance {instance}, this will only remove local members and delete the local data, as well as rejecting all the future data.": "", + "Are you sure you want to suspend this group? All members - including remote ones - will be notified and removed from the group, and all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed.": "Är du säker på att du vill stänga den här gruppen? Alla medlemmar - även fjärrmedlemmar - kommer att meddelas och tas bort från gruppen, och alla gruppdata (händelser, inlägg, diskussioner, todos...) kommer oåterkalleligen att förstöras.", + "Are you sure you want to suspend this group? As this group originates from instance {instance}, this will only remove local members and delete the local data, as well as rejecting all the future data.": "Är du säker på att du vill stänga ned denna grupp? Eftersom denna grupp härstammar från instans {instance}, kommer detta endast att ta bort lokala medlemmar och radera lokala data, samt avvisa alla framtida data.", "Are you sure you want to cancel the event creation? You'll lose all modifications.": "Är du säker på att du vill avbryta evenemangskapandet? Du kommer förlora alla ändringar.", "Are you sure you want to cancel the event edition? You'll lose all modifications.": "Är du säker på att du vill avbryta evenemangredigeringen? Du kommer förlora alla ändringar.", "Are you sure you want to cancel your participation at event \"{title}\"?": "Är du säker på att du vill avsluta ditt deltagande i evenemanget \"{title}\"?", @@ -118,10 +119,10 @@ "Are you sure you want to delete this event? This action cannot be reverted.": "Är du säker på att du vill radera det här evenemanget? Den här handlingen kan inte ångras.", "Are you sure you want to delete this post? This action cannot be reverted.": "", "Are you sure you want to leave the group {groupName}? You'll loose access to this group's private content. This action cannot be undone.": "", - "As the event organizer has chosen to manually validate participation requests, your participation will be really confirmed only once you receive an email stating it's being accepted.": "", + "As the event organizer has chosen to manually validate participation requests, your participation will be really confirmed only once you receive an email stating it's being accepted.": "Eftersom organisatören har valt att manuellt validera förfrågningar om deltagande, kommer ditt deltagande att bekräftas först när du får ett e-postmeddelande om att det har accepterats.", "Ask your instance admin to {enable_feature}.": "", "Assigned to": "Tilldelad till", - "Atom feed for events and posts": "", + "Atom feed for events and posts": "Atom-flöde för händelser och inlägg", "Attending": "", "Avatar": "Avatar", "Back to group list": "", @@ -129,7 +130,7 @@ "Back to profile list": "", "Back to top": "", "Back to user list": "", - "Banner": "", + "Banner": "Banner", "Before you can login, you need to click on the link inside it to validate your account.": "Innan du loggar in måste du klicka på länken inuti det för att validera ditt konto.", "Begins on": "Börjar den", "Big Blue Button": "", @@ -141,7 +142,7 @@ "By others": "", "By {group}": "Av {group}", "By {username}": "Av {username}", - "Can be an email or a link, or just plain text.": "", + "Can be an email or a link, or just plain text.": "Kan vara en e-postadress eller en länk, eller bara vanlig text.", "Cancel": "Avbryt", "Cancel anonymous participation": "Avbryt anonymt deltagande", "Cancel creation": "Avbryt skapandet", @@ -151,24 +152,24 @@ "Cancel membership request": "", "Cancel my participation request…": "Avbryt min ansökan om att delta…", "Cancel my participation…": "Avsluta mitt deltagande…", - "Cancelled": "", + "Cancelled": "Inställt", "Cancelled: Won't happen": "Inställt: Kommer inte ske", "Change": "Ändra", "Change my email": "Ändra min e-postadress", "Change my identity…": "Ändra min identitet…", "Change my password": "Ändra mitt lösenord", "Change timezone": "Ändra tidszon", - "Check your inbox (and your junk mail folder).": "", + "Check your inbox (and your junk mail folder).": "Kontrollera din inkorg (och din skräppostmapp).", "Choose the source of the instance's Privacy Policy": "", "Choose the source of the instance's Terms": "", - "City or region": "", + "City or region": "Stad eller region", "Clear": "Rensa", "Clear address field": "", "Clear date filter field": "", - "Clear participation data for all events": "", - "Clear participation data for this event": "", + "Clear participation data for all events": "Rensa deltagaruppgifter för alla evenemang", + "Clear participation data for this event": "Rensa deltagaruppgifter för detta evenemang", "Clear timezone field": "", - "Click for more information": "", + "Click for more information": "Klicka för mer information", "Click to upload": "Klicka för att ladda upp", "Close": "Stäng", "Close comments for all (except for admins)": "Stäng kommentarerna för alla (förutom administratörer)", @@ -178,24 +179,24 @@ "Comment from {'@'}{username} reported": "Kommentaren från {'@'}{username} rapporterades", "Comment text can't be empty": "", "Comments": "Kommentarer", - "Comments are closed for everybody else.": "", + "Comments are closed for everybody else.": "Kommentarer är stängda för alla andra.", "Confirm my participation": "Bekräfta mitt deltagande", "Confirm my particpation": "Bekräfta mitt deltagande", "Confirm participation": "", "Confirmed": "Bekräftad", "Confirmed at": "Bekräftades vid", "Confirmed: Will happen": "Fastställt: Kommer ske", - "Congratulations, your account is now created!": "", + "Congratulations, your account is now created!": "Grattis, ditt konto är nu skapat!", "Contact": "Kontakta", "Continue editing": "Fortsätt redigera", "Cookies and Local storage": "Kakor och lokal lagring", "Copy URL to clipboard": "", - "Copy details to clipboard": "", + "Copy details to clipboard": "Kopiera detaljer till urklipp", "Country": "Land", "Create": "Skapa", "Create a calc": "Skapa en kalkyl", "Create a discussion": "Skapa en diskussion", - "Create a folder": "", + "Create a folder": "Skapa en mapp", "Create a new event": "Skapa ett nytt evenemang", "Create a new group": "Skapa en ny grupp", "Create a new identity": "Skapa en ny identitet", @@ -203,9 +204,9 @@ "Create a new profile": "", "Create a pad": "Skapa en padda", "Create a videoconference": "Skapa en videokonferens", - "Create an account": "", + "Create an account": "Skapa ett konto", "Create discussion": "", - "Create event": "", + "Create event": "Skapa evenemang", "Create group": "Skapa grupp", "Create identity": "", "Create my event": "Skapa mitt evenemang", @@ -214,10 +215,10 @@ "Create new links": "", "Create resource": "Skapa en resurs", "Create the discussion": "Skapa diskussionen", - "Create to-do lists for all the tasks you need to do, assign them and set due dates.": "", + "Create to-do lists for all the tasks you need to do, assign them and set due dates.": "Skapa att göra-listor för alla uppgifter du behöver göra, tilldela dem och ange förfallodatum.", "Create token": "Skapa token", - "Created by {name}": "", - "Created by {username}": "", + "Created by {name}": "Skapad av {name}", + "Created by {username}": "Skapad av {användarnamn}", "Current identity has been changed to {identityName} in order to manage this event.": "Aktiv identitet har ändrats till {identityName} för att hantera det här evenemanget.", "Current page": "Nuvarande sida", "Custom": "Anpassad", @@ -240,7 +241,7 @@ "Delete discussion": "", "Delete event": "Radera evenemang", "Delete everything": "Radera allting", - "Delete group": "", + "Delete group": "Radera grupp", "Delete my account": "Radera mitt konto", "Delete post": "Radera inlägg", "Delete this discussion": "", @@ -252,20 +253,20 @@ "Deleting event": "Raderar evenemang", "Deleting my account will delete all of my identities.": "Genom att radera mitt konto, tas även mina identiteter bort.", "Deleting your Mobilizon account": "Radera ditt Mobilizon-konto", - "Demote": "", + "Demote": "Degradera", "Description": "Beskrivning", "Details": "", - "Didn't receive the instructions?": "", + "Didn't receive the instructions?": "Fick inte instruktionerna?", "Disabled": "avaktiverad", "Discussions": "Diskussioner", "Discussions list": "", "Display name": "Visa namn", "Display participation price": "Visa pris för deltagande", - "Displayed nickname": "", - "Displayed on homepage and meta tags. Describe what Mobilizon is and what makes this instance special in a single paragraph.": "", + "Displayed nickname": "Visat smeknamn", + "Displayed on homepage and meta tags. Describe what Mobilizon is and what makes this instance special in a single paragraph.": "Visas på hemsida och metataggar. Beskriv vad Mobilizon är och vad som gör denna instans speciell i ett enda stycke.", "Do not receive any mail": "Motta inga mejl", - "Do you wish to {create_event} or {explore_events}?": "", - "Do you wish to {create_group} or {explore_groups}?": "", + "Do you wish to {create_event} or {explore_events}?": "Vill du {create_event} eller {explore_events}?", + "Do you wish to {create_group} or {explore_groups}?": "Vill du {skapa_grupp} eller {utforska_grupper}?", "Does the event needs to be confirmed later or is it cancelled?": "", "Domain": "Domän", "Draft": "Utkast", @@ -294,22 +295,22 @@ "Enter your email address below, and we'll email you instructions on how to change your password.": "Fyll i din mejladress nedan, så mejlar vi dig instruktioner för hu du återställer ditt lösenord.", "Enter your own privacy policy. HTML tags allowed. The {mobilizon_privacy_policy} is provided as template.": "Ange din egen integritetspolicy. HTML-taggar tillåtna. {mobilizon_privacy_policy} tillhandahålls som mall.", "Enter your own terms. HTML tags allowed. The {mobilizon_terms} are provided as template.": "Ange dina egna nyckelord. HTML-taggar är tillåtna. {mobilizon_terms} tillhandhålls som mall.", - "Error": "", - "Error details copied!": "", - "Error message": "", - "Error stacktrace": "", + "Error": "Fel", + "Error details copied!": "Felmeddelandedetaljer kopierade!", + "Error message": "Felmeddelande", + "Error stacktrace": "Stacktrace för fel", "Error while changing email": "Fel vid byte av e-post", "Error while loading the preview": "", "Error while login with {provider}. Retry or login another way.": "Fel vid inloggning med {provider}. Försök igen eller logga in på annat sätt.", "Error while login with {provider}. This login provider doesn't exist.": "Fel vid inloggning med {provider}. Den som ska tillhandahålla inloggningen finns inte.", - "Error while reporting group {groupTitle}": "", + "Error while reporting group {groupTitle}": "Fel vid anmälning av grupp {groupTitle}", "Error while subscribing to push notifications": "", "Error while suspending group": "", "Error while updating participation status inside this browser": "", "Error while validating account": "Fel vid validering av konto", "Error while validating participation request": "Fel vid validering av deltagandeförfrågan", "Etherpad notes": "", - "Ethical alternative to Facebook events, groups and pages, Mobilizon is a tool designed to serve you. Period.": "", + "Ethical alternative to Facebook events, groups and pages, Mobilizon is a tool designed to serve you. Period.": "Etiska alternativ till Facebookevenemang, grupper och sidor. Mobilizon är ett verktyg utformat för att tjäna dig. Punkt.", "Event": "Evenemang", "Event URL": "", "Event already passed": "Evenemanget är över", @@ -325,7 +326,7 @@ "Event {eventTitle} deleted": "Evenemang {eventTitle} raderat", "Event {eventTitle} reported": "Evenemang {eventTitle} rapporterat", "Events": "Evenemang", - "Events nearby": "", + "Events nearby": "Evenemang i närheten", "Events tagged with {tag}": "Event taggade med {tag}", "Everything": "Allt", "Ex: mobilizon.fr": "T.ex: mobilizon.fr", @@ -336,7 +337,7 @@ "Failed to get location.": "", "Failed to save admin settings": "Det gick inte att spara admininställningar", "Featured events": "Utvalda evenemang", - "Federated Group Name": "", + "Federated Group Name": "Federerat Gruppnamn", "Federation": "Federation", "Fediverse account": "", "Fetch more": "Hämta fler", @@ -345,16 +346,16 @@ "Filter by profile or group name": "", "Find an address": "Hitta en adress", "Find an instance": "Hitta en instans", - "Find another instance": "", + "Find another instance": "Hitta en annan instans", "Find or add an element": "", "First steps": "", "Follow": "", - "Follower": "", + "Follower": "Följare", "Followers": "Följare", - "Followers will receive new public events and posts.": "", + "Followers will receive new public events and posts.": "Följare kommer att få nya offentliga händelser och inlägg.", "Following the group will allow you to be informed of the {group_upcoming_public_events}, whereas joining the group means you will {access_to_group_private_content_as_well}, including group discussions, group resources and members-only posts.": "", "Followings": "Följer", - "For instance: London": "", + "For instance: London": "Till exempel: London", "For instance: London, Taekwondo, Architecture…": "Till exempel: London, Taekwondo, Arkitektur …", "Forgot your password ?": "Glömt ditt lösenord?", "Forgot your password?": "Glömt ditt lösenord?", @@ -371,30 +372,30 @@ "General settings": "", "Geolocation was not determined in time.": "", "Getting location": "Hämtar plats", - "Getting there": "", + "Getting there": "Ta sig dit", "Glossary": "Ordlista", "Go": "Gå", - "Go to the event page": "", + "Go to the event page": "Gå till evenemangssidan", "Google Meet": "", "Group": "", - "Group Followers": "", + "Group Followers": "Gruppföljare", "Group Members": "Gruppmedlemmar", "Group URL": "", "Group activity": "", "Group address": "Gruppadress", "Group description body": "", - "Group display name": "", + "Group display name": "Gruppens visningsnamn", "Group name": "Gruppnamn", "Group profiles": "", "Group settings": "Gruppinställningar", - "Group settings saved": "", + "Group settings saved": "Gruppinställningar sparade", "Group short description": "Kort gruppbeskrivning", "Group visibility": "Gruppsynlighet", "Group {displayName} created": "Gruppen {displayName} har skapats", - "Group {groupTitle} reported": "", + "Group {groupTitle} reported": "Grupp {groupTitle} anmäld", "Groups": "Grupper", - "Groups are not enabled on this instance.": "", - "Groups are spaces for coordination and preparation to better organize events and manage your community.": "", + "Groups are not enabled on this instance.": "Grupper är inte aktiverade på denna instans.", + "Groups are spaces for coordination and preparation to better organize events and manage your community.": "Grupper är utrymmen för samordning och förberedelser för att bättre organisera evenemang och hantera ditt community.", "Heading Level 1": "", "Heading Level 2": "", "Heading Level 3": "", @@ -414,8 +415,8 @@ "I want to approve every participation request": "Jag vill godkänna varje deltagande", "I've been mentionned in a comment under an event": "", "I've been mentionned in a group discussion": "", - "ICS feed for events": "", - "ICS/WebCal Feed": "", + "ICS feed for events": "ICS-flöde för evenemang", + "ICS/WebCal Feed": "ICS/WebCal-flöde", "Identities": "", "Identity {displayName} created": "Identiteten {displayName} skapad", "Identity {displayName} deleted": "Identiteten {displayName} raderad", @@ -423,8 +424,8 @@ "If allowed by organizer": "Om organisatören tillåter", "If an account with this email exists, we just sent another confirmation email to {email}": "Om ett konto med den här e-postadressen finns skickade vi precis ett till meddelande till {email}", "If this identity is the only administrator of some groups, you need to delete them before being able to delete this identity.": "Om den här identiteten är den enda administratören av vissa grupper måste du radera dem innan du kan radera den här identiteten.", - "If you are being asked for your federated indentity, it's composed of your username and your instance. For instance, the federated identity for your first profile is:": "", - "If you have opted for manual validation of participants, Mobilizon will send you an email to inform you of new participations to be processed. You can choose the frequency of these notifications below.": "", + "If you are being asked for your federated indentity, it's composed of your username and your instance. For instance, the federated identity for your first profile is:": "Om du blir tillfrågad om din federerade identitet består den av ditt användarnamn och din instans. Den federerade identiteten för din första profil är t.ex:", + "If you have opted for manual validation of participants, Mobilizon will send you an email to inform you of new participations to be processed. You can choose the frequency of these notifications below.": "Om du har valt manuell validering av deltagare kommer Mobilizon att skicka ett e-postmeddelande till dig för att informera dig om nya deltagare som ska behandlas. Du kan välja frekvens för dessa meddelanden nedan.", "If you want, you may send a message to the event organizer here.": "Om du vill så kan du skicka ett meddelande till händelsens organisatör här.", "Ignore": "", "In person": "", @@ -435,49 +436,49 @@ "Instance Long Description": "Kort beskrivning av instansen", "Instance Name": "Instansnamn", "Instance Privacy Policy": "Instansens integritetspolicy", - "Instance Privacy Policy Source": "", + "Instance Privacy Policy Source": "Instans Integritetspolicy Källa", "Instance Privacy Policy URL": "URL för instansens integritetspolicy", "Instance Rules": "Instansregler", "Instance Short Description": "Kort beskrivning av instansen", - "Instance Slogan": "", + "Instance Slogan": "Instansens slogan", "Instance Terms": "Instansvillkor", "Instance Terms Source": "Källa för instansens villkor", "Instance Terms URL": "Instansvillkor URL", "Instance administrator": "Instansadministratör", "Instance configuration": "Instanskonfiguration", "Instance feeds": "", - "Instance languages": "", + "Instance languages": "Instansens språk", "Instance rules": "Instansregler", "Instance settings": "Instansinställningar", "Instances": "Instanser", - "Instances following you": "", - "Instances you follow": "", + "Instances following you": "Instanser som följer dig", + "Instances you follow": "Instanser du följer", "Integrate this event with 3rd-party tools and show metadata for the event.": "", "Interact": "", "Interact with a remote content": "", "Invite a new member": "Bjud in en ny medlem", "Invite member": "Bjud in en medlem", "Invited": "Inbjudna", - "It is possible that the content is not accessible on this instance, because this instance has blocked the profiles or groups behind this content.": "", + "It is possible that the content is not accessible on this instance, because this instance has blocked the profiles or groups behind this content.": "Det är möjligt att innehållet inte är tillgängligt på denna instans, eftersom denna instans har blockerat profilerna eller grupperna bakom detta innehåll.", "Italic": "Kursiv", "Jitsi Meet": "", - "Join {instance}, a Mobilizon instance": "Gå med i {instans}, en Mobilizon instans", - "Join group": "", + "Join {instance}, a Mobilizon instance": "Gå med i {instance}, en Mobilizon instans", + "Join group": "Gå med i grupp", "Join group {group}": "", - "Keep the entire conversation about a specific topic together on a single page.": "", + "Keep the entire conversation about a specific topic together on a single page.": "Håll hela diskussionen om ett specifikt ämne samlad på en enda sida.", "Key words": "Nyckelord", "Language": "Språk", - "Last IP adress": "", - "Last group created": "", + "Last IP adress": "Senaste IP-adress", + "Last group created": "Senaste grupp skapad", "Last published event": "Senast publicerade evenemang", - "Last published events": "", - "Last sign-in": "", + "Last published events": "Senast publicerade evenemang", + "Last sign-in": "Senaste inloggning", "Last week": "Senaste veckan", "Latest posts": "Senaste inläggen", "Learn more": "Lär dig mer", "Learn more about Mobilizon": "Lär dig mer om Mobilizon", - "Learn more about {instance}": "", - "Leave": "", + "Learn more about {instance}": "Läs mer om {instance}", + "Leave": "Lämna", "Leave event": "Lämna evenemang", "Leave group": "", "Leaving event \"{title}\"": "Lämnar evenemanget \"{title}\"", @@ -489,7 +490,7 @@ "Live": "", "Load more": "Ladda fler", "Load more activities": "", - "Loading comments…": "", + "Loading comments…": "Laddar kommentarer…", "Local": "Lokalt", "Local time ({timezone})": "", "Locality": "Plats", @@ -500,10 +501,10 @@ "Login on Mobilizon!": "Logga in på Mobilizon!", "Login on {instance}": "Logga in på {instance}", "Login status": "Inloggningsstatus", - "Main languages you/your moderators speak": "", + "Main languages you/your moderators speak": "Språk som du eller dina moderatorer behärskar", "Manage participations": "Hantera deltaganden", - "Manually approve new followers": "", - "Manually invite new members": "", + "Manually approve new followers": "Manuellt godkänn nya följare", + "Manually invite new members": "Manuellt bjuda in nya medlemmar", "Mark as resolved": "Markera som löst", "Member": "Medlem", "Members": "Medlemmar", @@ -513,11 +514,11 @@ "Microsoft Teams": "", "Mobilizon": "Mobilizon", "Mobilizon is a federated network. You can interact with this event from a different server.": "Mobilizon är ett federerat nätverk. Du kan interagera med den här händelsen från en annan server.", - "Mobilizon is a federated software, meaning you can interact - depending on your admin's federation settings - with content from other instances, such as joining groups or events that were created elsewhere.": "", - "Mobilizon is a tool that helps you find, create and organise events.": "", - "Mobilizon is not a giant platform, but a multitude of interconnected Mobilizon websites.": "", + "Mobilizon is a federated software, meaning you can interact - depending on your admin's federation settings - with content from other instances, such as joining groups or events that were created elsewhere.": "Mobilizon är en federerad programvara, vilket innebär att du - beroende på dina federationsinställningar - kan interagera med innehåll från andra instanser, t.ex. gå med i grupper eller evenemang som skapats någon annanstans.", + "Mobilizon is a tool that helps you find, create and organise events.": "Mobilizon är ett verktyg som hjälper dig att hitta, skapa och organisera evenemang.", + "Mobilizon is not a giant platform, but a multitude of interconnected Mobilizon websites.": "Mobilizon är inte en gigantisk plattform, utan en mängd sammankopplade Mobilizon-webbplatser.", "Mobilizon software": "Mobilizon-mjukvara", - "Mobilizon uses a system of profiles to compartiment your activities. You will be able to create as many profiles as you want.": "", + "Mobilizon uses a system of profiles to compartiment your activities. You will be able to create as many profiles as you want.": "Mobilizon använder ett system med profiler för att jämföra dina aktiviteter. Du kommer att kunna skapa så många profiler som du vill.", "Mobilizon version": "Mobilizon-version", "Mobilizon will send you an email when the events you are attending have important changes: date and time, address, confirmation or cancellation, etc.": "Mobilizon skickar dig ett mejl när evenemangen du deltar i har viktiga ändringar: datum och tid, plats, bekräftelse eller avbokning, etc.", "Moderate new members": "", @@ -527,9 +528,9 @@ "Moderation logs": "", "Moderator": "Moderator", "Move": "Flytta", - "Move \"{resourceName}\"": "", + "Move \"{resourceName}\"": "Flytta \"{resourceName}\"", "Move resource to the root folder": "", - "Move resource to {folder}": "", + "Move resource to {folder}": "Flytta resurs till {mapp}", "My account": "Mitt konto", "My events": "Mina evenemang", "My groups": "Mina grupper", @@ -541,12 +542,12 @@ "New email": "Nytt e-postmeddelande", "New folder": "Ny mapp", "New link": "Ny länk", - "New members": "", + "New members": "Nya medlemmar", "New note": "Ny anteckning", "New password": "Nytt lösenord", "New post": "", "New profile": "Ny profil", - "Next": "", + "Next": "Nästa", "Next month": "Nästa månad", "Next page": "Nästa sida", "Next week": "Nästa vecka", @@ -557,7 +558,7 @@ "No discussions yet": "Inga diskussioner ännu", "No end date": "Inget slutdatum", "No events found": "Inga evenemang hittade", - "No follower matches the filters": "", + "No follower matches the filters": "Ingen följare matchar filtren", "No group found": "Ingen grupp hittades", "No group matches the filters": "", "No group member found": "", @@ -567,13 +568,13 @@ "No instance to approve|Approve instance|Approve {number} instances": "Ingen instans att godkänna|Godkänn instans|Godkänn {number} instanser", "No instance to reject|Reject instance|Reject {number} instances": "Ingen instans att avvisa|Avvisa instans|Avvisa {number} instanser", "No instance to remove|Remove instance|Remove {number} instances": "Inga instanser att ta bort|Ta bort instans|Ta bort {number} instanser", - "No languages found": "", + "No languages found": "Inga språk hittades", "No member matches the filters": "Ingen medlem matchar filtren", "No members found": "", "No memberships found": "", "No message": "Inget meddelande", "No moderation logs yet": "Inga modereringsloggar än", - "No more activity to display.": "", + "No more activity to display.": "Ingen mer aktivitet att visa.", "No one is participating|One person participating|{going} people participating": "Ingen deltar|En person deltar|{going} personer deltar", "No open reports yet": "Inga öppna rapporter än", "No organized events found": "", @@ -582,14 +583,14 @@ "No participant to approve|Approve participant|Approve {number} participants": "Ingen deltagare att godkänna|Godkänn deltagare|Godkänn {number} deltagare", "No participant to reject|Reject participant|Reject {number} participants": "Ingen deltagare att avvisa|Avvisa deltagare|Avvisa {number} deltagare", "No participations listed": "", - "No posts found": "", + "No posts found": "Inga inlägg hittades", "No posts yet": "Inga inlägg ännu", "No profile matches the filters": "Ingen profil matchar filtren", "No public upcoming events": "Inga publika kommande evenemang", "No resolved reports yet": "Inga lösta rapporter än", - "No resources in this folder": "", + "No resources in this folder": "Inga resurser i denna mapp", "No resources selected": "Ingen resurs vald|En resurs vald|{count} resurser valda", - "No resources yet": "", + "No resources yet": "Inga resurser ännu", "No results for \"{queryText}\"": "Inga resultat för \"{queryText}\"", "No results for {search}": "", "No rules defined yet.": "Inga regler definierade ännu.", @@ -604,7 +605,7 @@ "Notifications": "", "Notifications for manually approved participations to an event": "Notifieringar för manuellt godkända deltaganden i ett evenemang", "Notify participants": "", - "Now, create your first profile:": "", + "Now, create your first profile:": "Skapa nu din första profil:", "Number of places": "Antalet platser", "OK": "OK", "Old password": "Gammalt lösenord", @@ -619,13 +620,13 @@ "Only accessible through link (private)": "Endast tillgänglig via länk (privat)", "Only accessible to members of the group": "Endast tillgängligt för gruppmedlemmar", "Only alphanumeric lowercased characters and underscores are supported.": "Endast alfanumeriska små tecken och understreck stöds.", - "Only group members can access discussions": "", + "Only group members can access discussions": "Endast gruppmedlemmar har tillgång till diskussioner", "Only group moderators can create, edit and delete events.": "", - "Only group moderators can create, edit and delete posts.": "", + "Only group moderators can create, edit and delete posts.": "Endast gruppmoderatorer kan skapa, redigera och ta bort inlägg.", "Only registered users may fetch remote events from their URL.": "", "Open": "Öppna", - "Open a topic on our forum": "", - "Open an issue on our bug tracker (advanced users)": "", + "Open a topic on our forum": "Öppna ett ämne i vårt forum", + "Open an issue on our bug tracker (advanced users)": "Öppna ett problem i vår bugtracker (avancerade användare)", "Opened reports": "Öppnade rapporter", "Or": "Eller", "Ordered list": "", @@ -643,7 +644,7 @@ "Page": "Sida", "Page limited to my group (asks for auth)": "Sida begränsad till min grupp (frågar efter autentisering)", "Page not found": "Sidan hittades inte", - "Parent folder": "", + "Parent folder": "Föräldramapp", "Partially accessible with a wheelchair": "", "Participant": "Deltagare", "Participants": "Deltagare", @@ -664,17 +665,17 @@ "PeerTube replay": "", "Pending": "Avvaktande", "Personal feeds": "", - "Pick": "", - "Pick a profile or a group": "", + "Pick": "Välj", + "Pick a profile or a group": "Välj en profil eller en grupp", "Pick an identity": "Välj en identitet", - "Pick an instance": "", - "Please add as many details as possible to help identify the problem.": "", + "Pick an instance": "Välj en instans", + "Please add as many details as possible to help identify the problem.": "Lägg till så många detaljer som möjligt för att hjälpa till att identifiera problemet.", "Please check your spam folder if you didn't receive the email.": "Vänligen kontrollera din skräppost-mapp om du inte fick e-postmeddelandet.", "Please contact this instance's Mobilizon admin if you think this is a mistake.": "Vänligen kontakta den här instansens Mobilizon-administratör om du tror det här är ett misstag.", "Please do not use it in any real way.": "Använd det inte på riktigt.", "Please enter your password to confirm this action.": "Vänligen fyll i ditt lösenord för att bekräfta den här åtgärden.", "Please make sure the address is correct and that the page hasn't been moved.": "Vänligen se till att adressen är korrekt och att sidan inte har blivit flyttad.", - "Please read the {fullRules} published by {instance}'s administrators.": "", + "Please read the {fullRules} published by {instance}'s administrators.": "Läs de {fullständiga regler} som publicerats av {instans}s administratörer.", "Post": "Publicera", "Post URL": "", "Post a comment": "Skriv en kommentar", @@ -684,9 +685,9 @@ "Postal Code": "Postkod", "Posts": "Inlägg", "Powered by Mobilizon": "", - "Powered by {mobilizon}. © 2018 - {date} The Mobilizon Contributors - Made with the financial support of {contributors}.": "", + "Powered by {mobilizon}. © 2018 - {date} The Mobilizon Contributors - Made with the financial support of {contributors}.": "Drivs av {mobilizon}. © 2018 - {datum} Mobilizon bidragsgivare - Gjord med ekonomiskt stöd av {bidragsgivare}.", "Preferences": "Egenskaper", - "Previous": "", + "Previous": "Föregående", "Previous month": "", "Previous page": "Föregående sida", "Price sheet": "", @@ -698,8 +699,8 @@ "Profile": "", "Profile feeds": "", "Profiles": "Profiler", - "Profiles and federation": "", - "Promote": "", + "Profiles and federation": "Profiler och federation", + "Promote": "Befordra", "Public": "Publik", "Public RSS/Atom Feed": "Publikt RSS/Atom-flöde", "Public comment moderation": "Publik kommentarmoderering", @@ -707,7 +708,7 @@ "Public feeds": "Publika flöden", "Public iCal Feed": "Publika iCal-flöde", "Public preview": "", - "Publication date": "", + "Publication date": "Publiceringsdatum", "Publish": "Publicera", "Published by {name}": "", "Published events with {comments} comments and {participations} confirmed participations": "Publicera evenemang med {comments}kommentarer och {participations} bekräftade deltaganden", @@ -720,9 +721,9 @@ "Receive one email per request": "Ta emot ett mejl per förfrågan", "Redirecting in progress…": "", "Redirecting to Mobilizon": "", - "Redirecting to content…": "", + "Redirecting to content…": "Omdirigerar till innehåll…", "Redo": "", - "Refresh profile": "", + "Refresh profile": "Uppdatera profil", "Regenerate new links": "", "Region": "Region", "Register": "Registrera", @@ -732,11 +733,11 @@ "Registration is closed.": "Registrering är stängd.", "Registration is currently closed.": "Registrering är för närvarande stängt.", "Registrations": "Registreringar", - "Registrations are restricted by allowlisting.": "", + "Registrations are restricted by allowlisting.": "Registreringar begränsas av vitlisting.", "Reject": "Avfärda", "Reject member": "", "Rejected": "Avvisades", - "Remember my participation in this browser": "", + "Remember my participation in this browser": "Kom ihåg mitt deltagande i denna webbläsare", "Remove": "Ta bort", "Remove link": "", "Rename": "Byt namn på", @@ -745,20 +746,20 @@ "Replay": "", "Reply": "Svara", "Report": "Rapportera", - "Report #{reportNumber}": "", + "Report #{reportNumber}": "Rapport #{reportNumber}", "Report this comment": "Rapportera den här kommentaren", "Report this event": "Rapportera det här evenemanget", - "Report this group": "", + "Report this group": "Anmäl denna grupp", "Report this post": "", "Reported": "Rapporterad", "Reported by": "Rapporterades av", "Reported by someone on {domain}": "Rapporterades av någon på {domain}", "Reported by {reporter}": "Rapporterades av {reporter}", - "Reported group": "", + "Reported group": "Anmäld grupp", "Reported identity": "Rapporterad identitet", "Reports": "Rapporter", "Reports list": "", - "Request for participation confirmation sent": "", + "Request for participation confirmation sent": "Begäran om bekräftelse på deltagande skickad", "Resend confirmation email": "Skicka bekräftelsemailet igen", "Resent confirmation email": "", "Reset": "", @@ -768,7 +769,7 @@ "Resource provided is not an URL": "Resursen är inte en URL", "Resources": "Resurser", "Restricted": "Begränsad", - "Return to the group page": "", + "Return to the group page": "Återgå till gruppsidan", "Right now": "Just nu", "Role": "Roll", "Rules": "Regler", @@ -781,9 +782,9 @@ "Search events, groups, etc.": "Sök evenemang, grupper, etc.", "Searching…": "Söker…", "Select a language": "Välj språk", - "Select a radius": "", + "Select a radius": "Välj en radie", "Select a timezone": "Välj en tidszon", - "Select languages": "", + "Select languages": "Välj språk", "Select the activities for which you wish to receive an email or a push notification.": "", "Send": "", "Send email": "Skicka e-post", @@ -798,7 +799,7 @@ "Share this event": "Dela det här evenemanget", "Share this group": "", "Share this post": "", - "Short bio": "", + "Short bio": "Kort biografi", "Show map": "Visa karta", "Show me where I am": "", "Show remaining number of places": "Visa antal lediga platser", @@ -819,12 +820,12 @@ "Submit": "Skicka", "Subtitles": "", "Suspend": "Stäng av", - "Suspend group": "", + "Suspend group": "Stäng av grupp", "Suspended": "Avstängd", "Tag search": "", "Task lists": "Uppgiftslistor", - "Technical details": "", - "Tentative": "", + "Technical details": "Tekniska detaljer", + "Tentative": "Preliminär", "Tentative: Will be confirmed later": "Preliminär: Kommer bekräftas senare", "Terms": "Användarvillkor", "Terms of service": "Användarvillkor", @@ -856,13 +857,13 @@ "The event organizer didn't add any description.": "Evenemangets organisatör lade inte till någon beskrivning.", "The event organizer manually approves participations. Since you've chosen to participate without an account, please explain why you want to participate to this event.": "Evenemangsarrangören godkänner deltagarna manuellt. Eftersom du har valt att delta utan konto, förklara varför du vill delta i det här evenemanget.", "The event title will be ellipsed.": "Evenemangets titel kommer förkortas med en ellipsis.", - "The event will show as attributed to this group.": "", + "The event will show as attributed to this group.": "Händelsen kommer att visas som attribut till denna grupp.", "The event will show as attributed to this profile.": "", - "The event will show as attributed to your personal profile.": "", - "The event {event} was created by {profile}.": "", - "The event {event} was deleted by {profile}.": "", - "The event {event} was updated by {profile}.": "", - "The events you created are not shown here.": "", + "The event will show as attributed to your personal profile.": "Händelsen kommer att visas som attribut i din personliga profil.", + "The event {event} was created by {profile}.": "Evenemanget {event} skapades av {profile}.", + "The event {event} was deleted by {profile}.": "Evenemanget {event} togs bort av {profile}.", + "The event {event} was updated by {profile}.": "Evenemanget {event} uppdaterades av {profile}.", + "The events you created are not shown here.": "De händelser du skapade visas inte här.", "The geolocation prompt was denied.": "", "The group can now be joined by anyone, but new members need to be approved by an administrator.": "", "The group can now be joined by anyone.": "", @@ -874,51 +875,51 @@ "The group's short description was changed.": "", "The instance administrator is the person or entity that runs this Mobilizon instance.": "Instansadministratören är den person eller enhet som driver den här Mobilizon-instansen.", "The member was approved": "", - "The member was removed from the group {group}": "", + "The member was removed from the group {group}": "Medlemmen har tagits bort från gruppen {group}", "The membership request from {profile} was rejected": "", - "The only way for your group to get new members is if an admininistrator invites them.": "", - "The organiser has chosen to close comments.": "", + "The only way for your group to get new members is if an admininistrator invites them.": "Det enda sättet för din grupp att få nya medlemmar är om en administratör bjuder in dem.", + "The organiser has chosen to close comments.": "Arrangören har valt att stänga kommentarerna.", "The page you're looking for doesn't exist.": "Sidan du letar efter existerar inte.", "The password was successfully changed": "Lösenordet ändrades", - "The post {post} was created by {profile}.": "", - "The post {post} was deleted by {profile}.": "", - "The post {post} was updated by {profile}.": "", + "The post {post} was created by {profile}.": "Inlägget {post} skapades av {profile}.", + "The post {post} was deleted by {profile}.": "Inlägget {post} togs bort av {profile}.", + "The post {post} was updated by {profile}.": "Inlägget {post} uppdaterades av {profile}.", "The report will be sent to the moderators of your instance. You can explain why you report this content below.": "Rapporten kommer skickas till moderatorerna på din instans. Du kan förklara varför du rapporterade det här innehållet här under.", "The selected picture is too heavy. You need to select a file smaller than {size}.": "", - "The technical details of the error can help developers solve the problem more easily. Please add them to your feedback.": "", + "The technical details of the error can help developers solve the problem more easily. Please add them to your feedback.": "De tekniska detaljerna om felet kan hjälpa utvecklare att lösa problemet lättare. Lägg till dem i din feedback.", "The {default_privacy_policy} will be used. They will be translated in the user's language.": "{default_privacy_policy} kommer att användas. De kommer att översättas till användarens språk.", "The {default_terms} will be used. They will be translated in the user's language.": "{default_terms} kommer att användas. De kommer att översättas till användarens språk.", "There are {participants} participants.": "Det är {participants} deltagare.", - "There is no activity yet. Start doing some things to see activity appear here.": "", + "There is no activity yet. Start doing some things to see activity appear here.": "Det finns ingen aktivitet ännu. Börja göra några saker för att se aktivitet visas här.", "There will be no way to recover your data.": "Det kommer inte att finnas något sätt för att återställa din data.", - "There's no discussions yet": "", + "There's no discussions yet": "Det finns inga diskussioner ännu", "These events may interest you": "Dessa evenemang kanske intresserar dig", "These feeds contain event data for the events for which any of your profiles is a participant or creator. You should keep these private. You can find feeds for specific profiles on each profile edition page.": "", "These feeds contain event data for the events for which this specific profile is a participant or creator. You should keep these private. You can find feeds for all of your profiles into your notification settings.": "", "This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "Den här Mobilizon-instansen och evenemangsarrangören tillåter anonymt deltagande, men kräver bekräftelse-validering via e-post.", "This URL doesn't seem to be valid": "", - "This URL is not supported": "", + "This URL is not supported": "Denna URL stöds inte", "This event has been cancelled.": "Det här evenemanget har blivit inställt.", "This event is accessible only through it's link. Be careful where you post this link.": "Det här evenemanget går bara att komma åt genom dess länk. Tänk efter rörande var du publicerar länken.", - "This group doesn't have a description yet.": "", + "This group doesn't have a description yet.": "Denna grupp har ännu ingen beskrivning.", "This group is accessible only through it's link. Be careful where you post this link.": "", - "This group is invite-only": "", + "This group is invite-only": "Denna grupp är endast öppen för inbjudna", "This group was not found": "", - "This identifier is unique to your profile. It allows others to find you.": "", + "This identifier is unique to your profile. It allows others to find you.": "Denna identifierare är unik för din profil. Den gör det möjligt för andra att hitta dig.", "This information is saved only on your computer. Click for details": "Denna information sparas endast på din dator. Klicka för detaljer", "This instance hasn't got push notifications enabled.": "", "This instance isn't opened to registrations, but you can register on other instances.": "Den här isntansen är inte öppen för registrering, men du kan registrera på andra instanser.", - "This instance, {instanceName} ({domain}), hosts your profile, so remember its name.": "", + "This instance, {instanceName} ({domain}), hosts your profile, so remember its name.": "Den här instansen, {instanceName} ({domain}), är värd för din profil, så kom ihåg dess namn.", "This is a demonstration site to test Mobilizon.": "Det här är en demonstrationssida för att testa Mobilizon.", - "This is like your federated username ({username}) for groups. It will allow the group to be found on the federation, and is guaranteed to be unique.": "", + "This is like your federated username ({username}) for groups. It will allow the group to be found on the federation, and is guaranteed to be unique.": "Detta är som ditt federerade användarnamn ({username}) för grupper. Det gör att gruppen kan hittas i federationen och är garanterat unikt.", "This month": "Den här månaden", "This post is accessible only for members. You have access to it for moderation purposes only because you are an instance moderator.": "", "This post is accessible only through it's link. Be careful where you post this link.": "", "This profile is from another instance, the informations shown here may be incomplete.": "", "This profile was not found": "", - "This setting will be used to display the website and send you emails in the correct language.": "", + "This setting will be used to display the website and send you emails in the correct language.": "Denna inställning kommer att användas för att visa webbplatsen och skicka e-post till dig på rätt språk.", "This user was not found": "", - "This website isn't moderated and the data that you enter will be automatically destroyed every day at 00:01 (Paris timezone).": "", + "This website isn't moderated and the data that you enter will be automatically destroyed every day at 00:01 (Paris timezone).": "Denna webbplats är inte modererad och de uppgifter som du anger kommer att raderas automatiskt varje dag kl. 00.01 (Paris tidszon).", "This week": "Den här veckan", "This weekend": "I helgen", "This will delete / anonymize all content (events, comments, messages, participations…) created from this identity.": "Det här kommer radera / anonymisera allt innehåll (evenemang, kommentarer, meddelanden, deltaganden...) skapade av den här identiteten.", @@ -930,11 +931,11 @@ "To activate more notifications, head over to the notification settings.": "För att slå på fler notifieringar, gå in i notifieringsinställningarna.", "To confirm, type your event title \"{eventTitle}\"": "För att bekräfta, skriv in evenemangets titel \"{eventTitle}\"", "To confirm, type your identity username \"{preferredUsername}\"": "För att bekräfta, skriv in din identitets användarnamn \"{preferredUsername}\"", - "To create and manage multiples identities from a same account": "", - "To create and manage your events": "", - "To create or join an group and start organizing with other people": "", + "To create and manage multiples identities from a same account": "För att skapa och hantera flera identiteter från ett och samma konto", + "To create and manage your events": "För att skapa och hantera dina evenemang", + "To create or join an group and start organizing with other people": "För att skapa eller gå med i en grupp och börja organisera med andra människor", "To follow groups and be informed of their latest events": "", - "To register for an event by choosing one of your identities": "", + "To register for an event by choosing one of your identities": "För att registrera dig för ett evenemang genom att välja en av dina identiteter", "Today": "Idag", "Tomorrow": "Imorgon", "Tools": "", @@ -944,15 +945,15 @@ "Twitch replay": "", "Twitter account": "", "Type": "Typ", - "Type or select a date…": "", + "Type or select a date…": "Ange eller välj ett datum…", "URL": "Länk", - "URL copied to clipboard": "", - "Unable to copy to clipboard": "", + "URL copied to clipboard": "URL kopierad till urklipp", + "Unable to copy to clipboard": "Kunde inte kopiera till urklipp", "Unable to create the group. One of the pictures may be too heavy.": "", "Unable to create the profile. The avatar picture may be too heavy.": "", - "Unable to detect timezone.": "", - "Unable to load event for participation. The error details are provided below:": "", - "Unable to save your participation in this browser.": "", + "Unable to detect timezone.": "Kan inte identifiera tidszon.", + "Unable to load event for participation. The error details are provided below:": "Det gick inte att ladda evenemanget för deltagande. Information om felet finns nedan:", + "Unable to save your participation in this browser.": "Det går inte att spara ditt deltagande i denna webbläsare.", "Unable to update the profile. The avatar picture may be too heavy.": "", "Underline": "", "Undo": "", @@ -977,7 +978,7 @@ "Update my event": "Uppdatera mitt evenemang", "Update post": "Uppdatera inlägg", "Updated": "Uppdaterad", - "Uploaded media size": "", + "Uploaded media size": "Storlek på uppladdad media", "Use my location": "Använd min plats", "User": "Användare", "User settings": "", @@ -988,9 +989,9 @@ "Video Conference": "", "View a reply": "Visa inga svar|Visa ett svar|Visa {totalReplies} svar", "View account on {hostname} (in a new window)": "", - "View all": "", - "View all events": "", - "View all posts": "", + "View all": "Visa alla", + "View all events": "Se alla evenemang", + "View all posts": "Visa alla inlägg", "View event page": "Visa evenemangsidan", "View everything": "Visa allt", "View full profile": "", @@ -1005,11 +1006,11 @@ "Waiting for organization team approval.": "Väntar på godkännande från organisationsteamet.", "Warning": "Varning", "We couldn't save your participation inside this browser. Not to worry, you have successfully confirmed your participation, we just couldn't save it's status in this browser because of a technical issue.": "", - "We improve this software thanks to your feedback. To let us know about this issue, two possibilities (both unfortunately require user account creation):": "", + "We improve this software thanks to your feedback. To let us know about this issue, two possibilities (both unfortunately require user account creation):": "Vi förbättrar denna programvara tack vare din feedback. För att meddela oss om detta problem finns det två möjligheter (båda kräver tyvärr att ett användarkonto skapas):", "We just sent an email to {email}": "Vi skickade precis ett mail till {email}", "We use your timezone to make sure you get notifications for an event at the correct time.": "Vi använder din tidszon för att se till att du får notifieringar om ett event vid rätt tid.", "We will redirect you to your instance in order to interact with this event": "Vi kommer att omdirigera dig till din instans för att du ska kunna interagera med det här evenemanget", - "We will redirect you to your instance in order to interact with this group": "", + "We will redirect you to your instance in order to interact with this group": "Vi kommer att omdirigera dig till din instans för att du ska kunna interagera med den här gruppen", "We'll send you an email one hour before the event begins, to be sure you won't forget about it.": "Vi skickar dig ett e-postmeddelande en timme innan evenemanget börjar för att se till att du inte glömmer det.", "We'll use your timezone settings to send a recap of the morning of the event.": "Vi kommer att använda dina inställningar för tidszon för att skicka en sammanfattning av evenemangets morgon.", "Website": "Hemsida", @@ -1018,9 +1019,9 @@ "Welcome back {username}!": "Välkommen tillbaka {username}!", "Welcome back!": "Välkommen tillbaka!", "Welcome to Mobilizon, {username}!": "Välkommen till Mobilizon, {username}!", - "What can I do to help?": "", + "What can I do to help?": "Vad kan jag göra för att hjälpa till?", "Wheelchair accessibility": "", - "When a moderator from the group creates an event and attributes it to the group, it will show up here.": "", + "When a moderator from the group creates an event and attributes it to the group, it will show up here.": "När en moderator från gruppen skapar ett evenemang och attribuerar det till gruppen kommer det att visas här.", "When the event is private, you'll need to share the link around.": "", "When the post is private, you'll need to share the link around.": "", "Whether the event is accessible with a wheelchair": "", @@ -1030,16 +1031,16 @@ "Who can view this event and participate": "Vem kan se och delta i detta evenemang", "Who can view this post": "Vilka kan se det här inlägget", "Who published {number} events": "Som publicerade {number} events", - "Why create an account?": "", - "Will allow to display and manage your participation status on the event page when using this device. Uncheck if you're using a public device.": "", - "Within {number} kilometers of {place}": "", - "Yesterday": "", + "Why create an account?": "Varför skapa ett konto?", + "Will allow to display and manage your participation status on the event page when using this device. Uncheck if you're using a public device.": "Gör det möjligt att visa och hantera din deltagarstatus på evenemangssidan när du använder den här enheten. Avmarkera om du använder en offentlig enhet.", + "Within {number} kilometers of {place}": "|Inom en kilometer från {place}|Inom {number} kilometer från {place}", + "Yesterday": "Igår", "You accepted the invitation to join the group.": "", "You added the member {member}.": "", "You approved {member}'s membership.": "", "You archived the discussion {discussion}.": "", - "You are not an administrator for this group.": "", - "You are not part of any group.": "", + "You are not an administrator for this group.": "Du är inte en administratör för den här gruppen.", + "You are not part of any group.": "Du är inte en del av någon grupp.", "You are offline": "", "You are participating in this event anonymously": "Du deltar i det här evenemanget anonymt", "You are participating in this event anonymously but didn't confirm participation": "Du deltar i detta evenemanget anonymt, men har inte bekräftat deltagande", @@ -1050,20 +1051,20 @@ "You can't use push notifications in this browser.": "", "You changed your email or password": "", "You created the discussion {discussion}.": "", - "You created the event {event}.": "", + "You created the event {event}.": "Du skapade evenemanget {event}.", "You created the folder {resource}.": "", "You created the group {group}.": "", - "You created the post {post}.": "", + "You created the post {post}.": "Du skapade inlägget {post}.", "You created the resource {resource}.": "", "You deleted the discussion {discussion}.": "", - "You deleted the event {event}.": "", + "You deleted the event {event}.": "Du har raderat evenemanget {event}.", "You deleted the folder {resource}.": "", - "You deleted the post {post}.": "", + "You deleted the post {post}.": "Du raderade inlägget {post}.", "You deleted the resource {resource}.": "", "You demoted the member {member} to an unknown role.": "", "You demoted {member} to moderator.": "", "You demoted {member} to simple member.": "", - "You didn't create or join any event yet.": "", + "You didn't create or join any event yet.": "Du har inte skapat eller gått med i något evenemang ännu.", "You don't follow any instances yet.": "Du följer inga instanser ännu.", "You don't have any upcoming events. Maybe try another filter?": "", "You excluded member {member}.": "", @@ -1075,8 +1076,8 @@ "You have one event today.": "Du har inga evenemang idag|Du har ett evenemang idag.|Du har {count} evenemang idag", "You have one event tomorrow.": "Du har inga evenemang imorgon|Du har ett evenemang imorgon|Du har {count} evenemang imorgon", "You invited {member}.": "", - "You may clear all participation information for this device with the buttons below.": "", - "You may now close this window, or {return_to_event}.": "", + "You may clear all participation information for this device with the buttons below.": "Du kan rensa all deltagarinformation för den här enheten med knapparna nedan.", + "You may now close this window, or {return_to_event}.": "Du kan nu stänga detta fönster, eller {return_to_event}.", "You may show some members as contacts.": "", "You moved the folder {resource} into {new_path}.": "", "You moved the folder {resource} to the root folder.": "", @@ -1086,7 +1087,7 @@ "You posted a comment on the event {event}.": "", "You promoted the member {member} to an unknown role.": "", "You promoted {member} to administrator.": "", - "You promoted {member} to moderator.": "", + "You promoted {member} to moderator.": "Du befordrade {member} till moderator.", "You rejected {member}'s membership request.": "", "You renamed the discussion from {old_discussion} to {discussion}.": "", "You renamed the folder from {old_resource_title} to {resource}.": "", @@ -1094,24 +1095,24 @@ "You replied to a comment on the event {event}.": "", "You replied to the discussion {discussion}.": "", "You requested to join the group.": "", - "You updated the event {event}.": "", + "You updated the event {event}.": "Du uppdaterade evenemanget {event}.", "You updated the group {group}.": "", "You updated the member {member}.": "", - "You updated the post {post}.": "", + "You updated the post {post}.": "Du uppdaterade inlägget {post}.", "You were demoted to an unknown role by {profile}.": "", "You were demoted to moderator by {profile}.": "", "You were demoted to simple member by {profile}.": "", "You were promoted to administrator by {profile}.": "", "You were promoted to an unknown role by {profile}.": "", "You were promoted to moderator by {profile}.": "", - "You will be able to add an avatar and set other options in your account settings.": "", + "You will be able to add an avatar and set other options in your account settings.": "Du kommer att kunna lägga till en avatar och ställa in andra alternativ i dina kontoinställningar.", "You will be redirected to the original instance": "Du kommer att omdirigeras till den ursprungliga instansen", - "You will find here all the events you have created or of which you are a participant, as well as events organized by groups you follow or are a member of.": "", + "You will find here all the events you have created or of which you are a participant, as well as events organized by groups you follow or are a member of.": "Här hittar du alla evenemang som du har skapat eller som du deltar i, samt evenemang som anordnas av grupper som du följer eller är medlem i.", "You will receive notifications about this group's public activity depending on %{notification_settings}.": "", "You wish to participate to the following event": "Du önskar att delta i det följande evenemanget", "You'll get a weekly recap every Monday for upcoming events, if you have any.": "Du får en veckovis sammanfattning varje måndag för kommande evenemang, om du har några.", "You'll need to change the URLs where there were previously entered.": "", - "You'll need to transmit the group URL so people may access the group's profile. The group won't be findable in Mobilizon's search or regular search engines.": "", + "You'll need to transmit the group URL so people may access the group's profile. The group won't be findable in Mobilizon's search or regular search engines.": "Du behöver skicka gruppens URL så att andra kan komma åt gruppens profil. Gruppen kommer inte att kunna hittas i Mobilizons sökmotor eller vanliga sökmotorer.", "You'll receive a confirmation email.": "Du får en bekräftelse via e-post.", "YouTube live": "", "YouTube replay": "", @@ -1119,9 +1120,9 @@ "Your account has been validated": "Ditt konto har validerats", "Your account is being validated": "Ditt konto håller på att valideras", "Your account is nearly ready, {username}": "Ditt konto är nästan redo, {username}", - "Your city or region and the radius will only be used to suggest you events nearby. The event radius will consider the administrative center of the area.": "", + "Your city or region and the radius will only be used to suggest you events nearby. The event radius will consider the administrative center of the area.": "Din stad eller region och radien kommer endast att användas för att föreslå evenemang i närheten. Evenemangets radie kommer att ta hänsyn till områdets administrativa centrum.", "Your current email is {email}. You use it to log in.": "Din nuvarande e-postadress är {email}. Du använder den för att logga in.", - "Your email": "", + "Your email": "Din e-post", "Your email address was automatically set based on your {provider} account.": "Din mejladress fylldes i automatiskt baserat på ditt {provider}-konto.", "Your email has been changed": "Din e-postadress har ändrats", "Your email is being changed": "Din e-postadress håller på att ändras", @@ -1134,16 +1135,16 @@ "Your participation request has been validated": "Ditt deltagande har bekräftats", "Your participation request is being validated": "Ditt deltagande valideras", "Your participation status has been changed": "Din deltagarstatus har ändrats", - "Your participation status is saved only on this device and will be deleted one month after the event's passed.": "", - "Your participation still has to be approved by the organisers.": "", - "Your participation will be validated once you click the confirmation link into the email, and after the organizer manually validates your participation.": "", - "Your participation will be validated once you click the confirmation link into the email.": "", + "Your participation status is saved only on this device and will be deleted one month after the event's passed.": "Din deltagarstatus sparas endast på denna enhet och raderas en månad efter att evenemanget har avslutats.", + "Your participation still has to be approved by the organisers.": "Ditt deltagande måste fortfarande godkännas av arrangörerna.", + "Your participation will be validated once you click the confirmation link into the email, and after the organizer manually validates your participation.": "Ditt deltagande kommer att valideras när du klickar på bekräftelselänken i e-postmeddelandet och efter att organisatören manuellt validerar ditt deltagande.", + "Your participation will be validated once you click the confirmation link into the email.": "Ditt deltagande kommer att bekräftas när du klickar på bekräftelselänken i e-postmeddelandet.", "Your position was not available.": "", - "Your profile will be shown as contact.": "", + "Your profile will be shown as contact.": "Din profil kommer att visas som kontakt.", "Your timezone is currently set to {timezone}.": "Din tidszon är för närvarande inställd på {tidszon}.", "Your timezone was detected as {timezone}.": "Din tidszon verkar vara {timezone}.", - "Your timezone {timezone} isn't supported.": "", - "Your upcoming events": "", + "Your timezone {timezone} isn't supported.": "Din tidszon {tidszon} stöds inte.", + "Your upcoming events": "Dina kommande evenemang", "Zoom": "", "Zoom in": "", "Zoom out": "", @@ -1152,47 +1153,47 @@ "[deleted]": "[togs bort]", "a non-existent report": "en icke-existerande rapport", "access to the group's private content as well": "", - "and {number} groups": "", + "and {number} groups": "och {number} grupper", "any distance": "alla avstånd", "as {identity}": "som {identitet}", - "contact uninformed": "", - "create a group": "", - "create an event": "", + "contact uninformed": "kontakta oinformerade", + "create a group": "skapa en grupp", + "create an event": "skapa ett evenemang", "default Mobilizon privacy policy": "Standard-integritetspolicy för Mobilizon", "default Mobilizon terms": "standardvillkor för Mobilizon", "e.g. 10 Rue Jangot": "e.g. 10 Rue Jangot", "e.g. Accessibility, Twitch, PeerTube": "", "enable the feature": "", "explore the events": "utforska evenemang", - "explore the groups": "", + "explore the groups": "utforska grupperna", "full rules": "fullständiga regler", "group's upcoming public events": "", "https://mensuel.framapad.org/p/some-secret-token": "", "iCal Feed": "iCal-feed", "instance rules": "instansregler", - "more than 1360 contributors": "", + "more than 1360 contributors": "mer än 1360 bidragsgivare", "profile@instance": "profil@instans", "report #{report_number}": "rapport #{report_number}", - "return to the event's page": "", + "return to the event's page": "återgå till evenemangets sida", "terms of service": "servicevillkor", "with another identity…": "med en annan identitet…", "your notification settings": "", - "{'@'}{username}": "", + "{'@'}{username}": "{'@'}{username}", "{approved} / {total} seats": "{approved} / {total} platser", "{available}/{capacity} available places": "Inga platser kvar|{available}/{capacity} tillgängliga platser", - "{count} km": "", + "{count} km": "{count} km", "{count} members": "", "{count} members or followers": "", "{count} participants": "Inga deltagande ännu|En deltagande|{count} deltagande", "{count} requests waiting": "{count} förfrågningar väntar", "{folder} - Resources": "", - "{group} activity timeline": "", + "{group} activity timeline": "{group} aktivitetstidslinje", "{group} events": "", "{group} posts": "", - "{group}'s events": "", + "{group}'s events": "{grupp}s evenemang", "{group}'s todolists": "", "{instanceName} is an instance of the {mobilizon} software.": "{instanceName} är en {mobilizon}-instans.", - "{instanceName} is an instance of {mobilizon_link}, a free software built with the community.": "", + "{instanceName} is an instance of {mobilizon_link}, a free software built with the community.": "{instanceName} är en instans av {mobilizon_link}, en fri programvara som byggts tillsammans med gemenskapen.", "{member} accepted the invitation to join the group.": "", "{member} joined the group.": "", "{member} rejected the invitation to join the group.": "", @@ -1212,11 +1213,11 @@ "{moderator} suspended group {profile}": "", "{moderator} suspended profile {profile}": "{moderator} stängde av profilen {profile}", "{nb} km": "{nb} km", - "{number} members": "", + "{number} members": "{antal} medlemmar", "{number} memberships": "", "{number} organized events": "Inga organiserade evenemang|Ett organiserat evenemang|{number} organiserade evenemang", "{number} participations": "Inga deltaganden|Ett deltagande|{number} deltaganden", - "{number} posts": "", + "{number} posts": "Inga inlägg|Ett inlägg|{antal} inlägg", "{number} seats left": "", "{old_group_name} was renamed to {group}.": "", "{profile} (by default)": "{profile} (som standard)", @@ -1253,6 +1254,6 @@ "{profile} updated the member {member}.": "", "{timezoneLongName} ({timezoneShortName})": "", "{title} ({count} todos)": "{title} ({count} att-göra)", - "{username} was invited to {group}": "", + "{username} was invited to {group}": "{användarnamn} blev inbjuden till {grupp}", "© The OpenStreetMap Contributors": "© Alla bidragsgivare till OpenStreetMap" } From 51c7dfc59325590aa35f86787d03ccd45d6f8dca Mon Sep 17 00:00:00 2001 From: drkfrd Date: Fri, 19 Jan 2024 12:57:27 +0000 Subject: [PATCH 14/18] Translated using Weblate (Swedish) Currently translated at 53.1% (874 of 1644 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sv/ --- src/i18n/sv.json | 50 +++++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/src/i18n/sv.json b/src/i18n/sv.json index 9f2269557..a9608c69a 100644 --- a/src/i18n/sv.json +++ b/src/i18n/sv.json @@ -105,6 +105,7 @@ "Anyone can request being a member, but an administrator needs to approve the membership.": "", "Anyone wanting to be a member from your group will be able to from your group page.": "Alla som vill bli medlemmar i din grupp kan göra det från din gruppsida.", "Application": "Applikation", + "Apply filters": "Tillämpa filter", "Approve member": "", "Are you really sure you want to delete your whole account? You'll lose everything. Identities, settings, events created, messages and participations will be gone forever.": "Är du verkligen säker på att du vill ta bort hela ditt konto? Du förlorar allt. Identiteter, inställningar, skapade händelser, meddelanden och deltagande försvinner för alltid.", "Are you sure you want to completely delete this group? All members - including remote ones - will be notified and removed from the group, and all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed.": "Är du säker på att du vill fullständigt radera den här gruppen? Alla medlemmar - även fjärrmedlemmar - kommer att meddelas och tas bort från gruppen, och alla gruppdata (händelser, inlägg, diskussioner, todos...) kommer oåterkalleligen att förstöras.", @@ -430,7 +431,7 @@ "Ignore": "", "In person": "", "In the following context, an application is a software, either provided by the Mobilizon team or by a 3rd-party, used to interact with your instance.": "I den här kontexten är en applikation mjukvara som tillhanahålls av Mobilizon-teamet eller av tredje part, och som använd för att interagera med din instans.", - "In the past": "", + "In the past": "I det förflutna", "Increase": "", "Instance": "Instans", "Instance Long Description": "Kort beskrivning av instansen", @@ -478,6 +479,7 @@ "Learn more": "Lär dig mer", "Learn more about Mobilizon": "Lär dig mer om Mobilizon", "Learn more about {instance}": "Läs mer om {instance}", + "Least recently published": "Äldst publicerad", "Leave": "Lämna", "Leave event": "Lämna evenemang", "Leave group": "", @@ -1036,7 +1038,7 @@ "Within {number} kilometers of {place}": "|Inom en kilometer från {place}|Inom {number} kilometer från {place}", "Yesterday": "Igår", "You accepted the invitation to join the group.": "", - "You added the member {member}.": "", + "You added the member {member}.": "Du lade till medlemmen {member}.", "You approved {member}'s membership.": "", "You archived the discussion {discussion}.": "", "You are not an administrator for this group.": "Du är inte en administratör för den här gruppen.", @@ -1061,13 +1063,13 @@ "You deleted the folder {resource}.": "", "You deleted the post {post}.": "Du raderade inlägget {post}.", "You deleted the resource {resource}.": "", - "You demoted the member {member} to an unknown role.": "", - "You demoted {member} to moderator.": "", - "You demoted {member} to simple member.": "", + "You demoted the member {member} to an unknown role.": "Du degraderade medlemmen {member} till en okänd roll.", + "You demoted {member} to moderator.": "Du degraderade {member} till moderator.", + "You demoted {member} to simple member.": "Du degraderade {member} till enkel medlem.", "You didn't create or join any event yet.": "Du har inte skapat eller gått med i något evenemang ännu.", "You don't follow any instances yet.": "Du följer inga instanser ännu.", "You don't have any upcoming events. Maybe try another filter?": "", - "You excluded member {member}.": "", + "You excluded member {member}.": "Du uteslöt medlem {member}.", "You have attended {count} events in the past.": "", "You have been invited by {invitedBy} to the following group:": "Du har blivit inbjuden av {invitedBy} till följande grupp:", "You have been removed from this group's members.": "Du har blivit borttagen som gruppmedlem.", @@ -1075,7 +1077,7 @@ "You have one event in {days} days.": "Du har inga evenemang under nästa {days} dagar|Du har ett evenemang under nästa {days} dagar.|Du har {count} under nästa {days} dagar", "You have one event today.": "Du har inga evenemang idag|Du har ett evenemang idag.|Du har {count} evenemang idag", "You have one event tomorrow.": "Du har inga evenemang imorgon|Du har ett evenemang imorgon|Du har {count} evenemang imorgon", - "You invited {member}.": "", + "You invited {member}.": "Du bjöd in {member}.", "You may clear all participation information for this device with the buttons below.": "Du kan rensa all deltagarinformation för den här enheten med knapparna nedan.", "You may now close this window, or {return_to_event}.": "Du kan nu stänga detta fönster, eller {return_to_event}.", "You may show some members as contacts.": "", @@ -1085,8 +1087,8 @@ "You moved the resource {resource} to the root folder.": "", "You need to login.": "Du måste logga in.", "You posted a comment on the event {event}.": "", - "You promoted the member {member} to an unknown role.": "", - "You promoted {member} to administrator.": "", + "You promoted the member {member} to an unknown role.": "Du befordrade medlemmen {member} till en okänd roll.", + "You promoted {member} to administrator.": "Du befordrade {member} till administratör.", "You promoted {member} to moderator.": "Du befordrade {member} till moderator.", "You rejected {member}'s membership request.": "", "You renamed the discussion from {old_discussion} to {discussion}.": "", @@ -1094,10 +1096,10 @@ "You renamed the resource from {old_resource_title} to {resource}.": "", "You replied to a comment on the event {event}.": "", "You replied to the discussion {discussion}.": "", - "You requested to join the group.": "", + "You requested to join the group.": "Du har begärt att få ansluta dig till gruppen.", "You updated the event {event}.": "Du uppdaterade evenemanget {event}.", "You updated the group {group}.": "", - "You updated the member {member}.": "", + "You updated the member {member}.": "Du uppdaterade medlemmen {member}.", "You updated the post {post}.": "Du uppdaterade inlägget {post}.", "You were demoted to an unknown role by {profile}.": "", "You were demoted to moderator by {profile}.": "", @@ -1194,11 +1196,11 @@ "{group}'s todolists": "", "{instanceName} is an instance of the {mobilizon} software.": "{instanceName} är en {mobilizon}-instans.", "{instanceName} is an instance of {mobilizon_link}, a free software built with the community.": "{instanceName} är en instans av {mobilizon_link}, en fri programvara som byggts tillsammans med gemenskapen.", - "{member} accepted the invitation to join the group.": "", - "{member} joined the group.": "", - "{member} rejected the invitation to join the group.": "", - "{member} requested to join the group.": "", - "{member} was invited by {profile}.": "", + "{member} accepted the invitation to join the group.": "{member} accepterade inbjudan att gå med i gruppen.", + "{member} joined the group.": "{member} gick med i gruppen.", + "{member} rejected the invitation to join the group.": "{member} tackade nej till inbjudan att bli medlem i gruppen.", + "{member} requested to join the group.": "{member} bad att få gå med i gruppen.", + "{member} was invited by {profile}.": "{member} bjöds in av {profile}.", "{moderator} added a note on {report}": "{moderator} la till en anteckning rörande {report}", "{moderator} closed {report}": "{moderator} avslutade {report}", "{moderator} deleted an event named \"{title}\"": "{moderator} tog bort evenemanget \"{title}\"", @@ -1221,7 +1223,7 @@ "{number} seats left": "", "{old_group_name} was renamed to {group}.": "", "{profile} (by default)": "{profile} (som standard)", - "{profile} added the member {member}.": "", + "{profile} added the member {member}.": "{profile} la till medlemmen {member}.", "{profile} approved {member}'s membership.": "", "{profile} archived the discussion {discussion}.": "", "{profile} created the discussion {discussion}.": "", @@ -1231,18 +1233,18 @@ "{profile} deleted the discussion {discussion}.": "", "{profile} deleted the folder {resource}.": "", "{profile} deleted the resource {resource}.": "", - "{profile} demoted {member} to an unknown role.": "", - "{profile} demoted {member} to moderator.": "", - "{profile} demoted {member} to simple member.": "", + "{profile} demoted {member} to an unknown role.": "{profile} degraderade {member} till en okänd roll.", + "{profile} demoted {member} to moderator.": "{profile} degraderade {member} till moderator.", + "{profile} demoted {member} to simple member.": "{profile} degraderade {member} till enkel medlem.", "{profile} excluded member {member}.": "", "{profile} moved the folder {resource} into {new_path}.": "", "{profile} moved the folder {resource} to the root folder.": "", "{profile} moved the resource {resource} into {new_path}.": "", "{profile} moved the resource {resource} to the root folder.": "", "{profile} posted a comment on the event {event}.": "", - "{profile} promoted {member} to administrator.": "", - "{profile} promoted {member} to an unknown role.": "", - "{profile} promoted {member} to moderator.": "", + "{profile} promoted {member} to administrator.": "{profile} befordrade {member} till administratör.", + "{profile} promoted {member} to an unknown role.": "{profile} befordrade {member} till en okänd roll.", + "{profile} promoted {member} to moderator.": "{profile} befordrade {member} till moderator.", "{profile} quit the group.": "", "{profile} rejected {member}'s membership request.": "", "{profile} renamed the discussion from {old_discussion} to {discussion}.": "", @@ -1251,7 +1253,7 @@ "{profile} replied to a comment on the event {event}.": "", "{profile} replied to the discussion {discussion}.": "", "{profile} updated the group {group}.": "", - "{profile} updated the member {member}.": "", + "{profile} updated the member {member}.": "{profile} uppdaterade medlemmen {member}.", "{timezoneLongName} ({timezoneShortName})": "", "{title} ({count} todos)": "{title} ({count} att-göra)", "{username} was invited to {group}": "{användarnamn} blev inbjuden till {grupp}", From ee49f57ee7c9762bb74a315b2e13ab7feaae0179 Mon Sep 17 00:00:00 2001 From: drkfrd Date: Fri, 19 Jan 2024 13:21:51 +0000 Subject: [PATCH 15/18] Translated using Weblate (Swedish) Currently translated at 61.0% (1003 of 1644 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sv/ --- src/i18n/sv.json | 260 +++++++++++++++++++++++------------------------ 1 file changed, 130 insertions(+), 130 deletions(-) diff --git a/src/i18n/sv.json b/src/i18n/sv.json index a9608c69a..4d68f4276 100644 --- a/src/i18n/sv.json +++ b/src/i18n/sv.json @@ -10,10 +10,10 @@ "{contact} will be displayed as contact.": "{contact} kommer att visas som kontakt.|{contact} kommer att visas som kontakter.", "@{group}": "@{group}", "@{username} ({role})": "@{username} ({role})", - "@{username}'s follow request was accepted": "", + "@{username}'s follow request was accepted": "@{username}s följförfrågan accepterades", "@{username}'s follow request was rejected": "@{username}s begäran om att följa avvisades", "A cookie is a small file containing information that is sent to your computer when you visit a website. When you visit the site again, the cookie allows that site to recognize your browser. Cookies may store user preferences and other information. You can configure your browser to refuse all cookies. However, this may result in some website features or services partially working. Local storage works the same way but allows you to store more data.": "En cookie är en liten fil med information som skickas till din dator när du besöker en webbplats. När du besöker webbplatsen igen gör cookien det möjligt för webbplatsen att känna igen din webbläsare. Cookies kan lagra användarinställningar och annan information. Du kan konfigurera din webbläsare så att alla cookies nekas. Detta kan dock leda till att vissa funktioner eller tjänster på webbplatsen inte fungerar fullt ut. Lokal lagring fungerar på samma sätt men gör att du kan lagra mer data.", - "A discussion has been created or updated": "", + "A discussion has been created or updated": "En diskussion har skapats eller uppdaterats", "A federated software": "En federerad programvara", "A fediverse account URL to follow for event updates": "", "A link to a page presenting the event schedule": "", @@ -25,10 +25,10 @@ "A place to explain who you are and the things that set your instance apart. You can use HTML tags.": "En plats där du kan förklara vem du är och vad som utmärker din instans. Du kan använda HTML-taggar.", "A place to publish something to the whole world, your community or just your group members.": "En plats där du kan publicera något för hela världen, din community eller bara dina gruppmedlemmar.", "A place to store links to documents or resources of any type.": "En plats för att lagra länkar till dokument eller resurser av alla slag.", - "A post has been published": "", - "A post has been updated": "", + "A post has been published": "Ett inlägg har publicerats", + "A post has been updated": "Ett inlägg har uppdaterats", "A practical tool": "Ett praktiskt verktyg", - "A resource has been created or updated": "", + "A resource has been created or updated": "En resurs har skapats eller uppdaterats", "A short tagline for your instance homepage. Defaults to \"Gather ⋅ Organize ⋅ Mobilize\"": "En kort slogan för din instans hemsida. Standardinställningen är \"Samla ⋅ Organisera ⋅ Mobilisera\"", "A twitter account handle to follow for event updates": "", "A user-friendly, emancipatory and ethical tool for gathering, organising, and mobilising.": "Ett användarvänligt, frigörande och etiskt verktyg för att samlas, organisera och mobilisera.", @@ -54,7 +54,7 @@ "Activate browser push notifications": "", "Activated": "Aktiverad", "Active": "Aktiv", - "Activity": "", + "Activity": "Aktivitet", "Actor": "Skådespelare", "Add": "Lägg till", "Add / Remove…": "Lägg till / Ta bort…", @@ -76,7 +76,7 @@ "Admin settings successfully saved.": "Administratörsinställningarna har sparats.", "Administration": "Administration", "Administrator": "Administratör", - "All activities": "", + "All activities": "Alla aktiviteter", "All good, let's continue!": "Toppen, vi fortsätter!", "All the places have already been taken": "Alla platser är redan upptagna", "Allow all comments from users with accounts": "Tillåt alla kommentarer från inloggade användare", @@ -85,13 +85,13 @@ "An error has occured while refreshing the page.": "", "An error has occured. Sorry about that. You may try to reload the page.": "Ett fel har uppstått. Vi beklagar detta. Du kan försöka ladda om sidan.", "An ethical alternative": "Ett etiskt alternativ", - "An event I'm going to has been updated": "", - "An event I'm going to has posted an announcement": "", - "An event I'm organizing has a new comment": "", - "An event I'm organizing has a new participation": "", - "An event I'm organizing has a new pending participation": "", - "An event from one of my groups has been published": "", - "An event from one of my groups has been updated or deleted": "", + "An event I'm going to has been updated": "Ett evenemang jag ska gå på har uppdaterats", + "An event I'm going to has posted an announcement": "Ett evenemang som jag ska gå på har publicerat ett tillkännagivande", + "An event I'm organizing has a new comment": "Ett evenemang som jag organiserar har fått en ny kommentar", + "An event I'm organizing has a new participation": "Ett evenemang som jag organiserar har ett nytt deltagande", + "An event I'm organizing has a new pending participation": "Ett evenemang som jag organiserar har ett nytt väntande deltagande", + "An event from one of my groups has been published": "Ett evenemang från en av mina grupper har publicerats", + "An event from one of my groups has been updated or deleted": "Ett evenemang från en av mina grupper har uppdaterats eller tagits bort", "An instance is an installed version of the Mobilizon software running on a server. An instance can be run by anyone using the {mobilizon_software} or other federated apps, aka the “fediverse”. This instance's name is {instance_name}. Mobilizon is a federated network of multiple instances (just like email servers), users registered on different instances may communicate even though they didn't register on the same instance.": "En instans är en Mobilizon-mjukvara som installerats och körs på en server. En instans kan drivas av vem som helst som använder {mobilizon_software} eller andra federerade appar ur det s.k. \"fediverse\". Den här instansen heter {instance_name}. Mobilizon är ett federerat nätverk av flera instanser (precis som mejlservrar!), och användare kan kommunicera med varandra även om de är registrerade på olika instanser.", "An “application programming interface” or “API” is a communication protocol that allows software components to communicate with each other. The Mobilizon API, for example, can allow third-party software tools to communicate with Mobilizon instances to carry out certain actions, such as posting events, automatically and remotely.": "Ett \"application programming interface\" eller \"API\" är ett kommunikationsprotokoll som gör det möjligt för programvarukomponenter att kommunicera med varandra. Mobilizon API kan t.ex. göra det möjligt för tredjepartsverktyg att kommunicera med Mobilizon-instanser för att utföra vissa åtgärder, såsom att lägga upp evenemang, automatiskt och på distans.", "And {number} comments": "Och {number} kommentarer", @@ -116,7 +116,7 @@ "Are you sure you want to cancel the event creation? You'll lose all modifications.": "Är du säker på att du vill avbryta evenemangskapandet? Du kommer förlora alla ändringar.", "Are you sure you want to cancel the event edition? You'll lose all modifications.": "Är du säker på att du vill avbryta evenemangredigeringen? Du kommer förlora alla ändringar.", "Are you sure you want to cancel your participation at event \"{title}\"?": "Är du säker på att du vill avsluta ditt deltagande i evenemanget \"{title}\"?", - "Are you sure you want to delete this entire discussion?": "", + "Are you sure you want to delete this entire discussion?": "Är du säker på att du vill radera hela den här diskussionen?", "Are you sure you want to delete this event? This action cannot be reverted.": "Är du säker på att du vill radera det här evenemanget? Den här handlingen kan inte ångras.", "Are you sure you want to delete this post? This action cannot be reverted.": "", "Are you sure you want to leave the group {groupName}? You'll loose access to this group's private content. This action cannot be undone.": "", @@ -138,9 +138,9 @@ "Bold": "Fet", "Booking": "", "Breadcrumbs": "", - "Browser notifications": "", + "Browser notifications": "Webbläsarnotifikationer", "Bullet list": "", - "By others": "", + "By others": "Av andra", "By {group}": "Av {group}", "By {username}": "Av {username}", "Can be an email or a link, or just plain text.": "Kan vara en e-postadress eller en länk, eller bara vanlig text.", @@ -178,7 +178,7 @@ "Comment body": "", "Comment deleted": "Kommentar raderad", "Comment from {'@'}{username} reported": "Kommentaren från {'@'}{username} rapporterades", - "Comment text can't be empty": "", + "Comment text can't be empty": "Kommentartexten kan inte vara tom", "Comments": "Kommentarer", "Comments are closed for everybody else.": "Kommentarer är stängda för alla andra.", "Confirm my participation": "Bekräfta mitt deltagande", @@ -202,7 +202,7 @@ "Create a new group": "Skapa en ny grupp", "Create a new identity": "Skapa en ny identitet", "Create a new list": "Skapa en ny lista", - "Create a new profile": "", + "Create a new profile": "Skapa en ny profil", "Create a pad": "Skapa en padda", "Create a videoconference": "Skapa en videokonferens", "Create an account": "Skapa ett konto", @@ -213,7 +213,7 @@ "Create my event": "Skapa mitt evenemang", "Create my group": "Skapa min grupp", "Create my profile": "Skapa min profil", - "Create new links": "", + "Create new links": "Skapa nya länkar", "Create resource": "Skapa en resurs", "Create the discussion": "Skapa diskussionen", "Create to-do lists for all the tasks you need to do, assign them and set due dates.": "Skapa att göra-listor för alla uppgifter du behöver göra, tilldela dem och ange förfallodatum.", @@ -239,13 +239,13 @@ "Delete": "Radera", "Delete account": "Radera konto", "Delete conversation": "Ta bort konversationen", - "Delete discussion": "", + "Delete discussion": "Radera diskussion", "Delete event": "Radera evenemang", "Delete everything": "Radera allting", "Delete group": "Radera grupp", "Delete my account": "Radera mitt konto", "Delete post": "Radera inlägg", - "Delete this discussion": "", + "Delete this discussion": "Radera denna diskussion", "Delete this identity": "Radera den här identiteten", "Delete your identity": "Radera din identitet", "Delete {eventTitle}": "Radera {eventTitle}", @@ -276,7 +276,7 @@ "Duplicate": "Kopiera", "Edit": "Redigera", "Edit post": "Redigera inlägg", - "Edit profile {profile}": "", + "Edit profile {profile}": "Redigera profil {profile}", "Edited {ago}": "Redigera {ago}", "Edited {relative_time} ago": "", "Eg: Stockholm, Dance, Chess…": "E.g.: Stockholm, Dans, Schack…", @@ -301,12 +301,12 @@ "Error message": "Felmeddelande", "Error stacktrace": "Stacktrace för fel", "Error while changing email": "Fel vid byte av e-post", - "Error while loading the preview": "", + "Error while loading the preview": "Fel vid laddning av förhandsgranskningen", "Error while login with {provider}. Retry or login another way.": "Fel vid inloggning med {provider}. Försök igen eller logga in på annat sätt.", "Error while login with {provider}. This login provider doesn't exist.": "Fel vid inloggning med {provider}. Den som ska tillhandahålla inloggningen finns inte.", "Error while reporting group {groupTitle}": "Fel vid anmälning av grupp {groupTitle}", "Error while subscribing to push notifications": "", - "Error while suspending group": "", + "Error while suspending group": "Fel vid avstängning av grupp", "Error while updating participation status inside this browser": "", "Error while validating account": "Fel vid validering av konto", "Error while validating participation request": "Fel vid validering av deltagandeförfrågan", @@ -365,12 +365,12 @@ "From the {startDate} at {startTime} to the {endDate}": "Från {startDate} klockan {startTime} till {endDate}", "From the {startDate} at {startTime} to the {endDate} at {endTime}": "Från {startDate} klockan {startTime} till {endDate} klockan {endTime}", "From the {startDate} to the {endDate}": "Från {startDate} till {endDate}", - "From yourself": "", + "From yourself": "Från dig själv", "Fully accessible with a wheelchair": "", "Gather ⋅ Organize ⋅ Mobilize": "Samlas ⋅ Organisera ⋅ Mobilisera", "General": "Allmänt", "General information": "Generell information", - "General settings": "", + "General settings": "Allmänna inställningar", "Geolocation was not determined in time.": "", "Getting location": "Hämtar plats", "Getting there": "Ta sig dit", @@ -378,11 +378,11 @@ "Go": "Gå", "Go to the event page": "Gå till evenemangssidan", "Google Meet": "", - "Group": "", + "Group": "Grupp", "Group Followers": "Gruppföljare", "Group Members": "Gruppmedlemmar", "Group URL": "", - "Group activity": "", + "Group activity": "Gruppaktivitet", "Group address": "Gruppadress", "Group description body": "", "Group display name": "Gruppens visningsnamn", @@ -414,11 +414,11 @@ "I participate": "Jag deltar", "I want to allow people to participate without an account.": "Jag vill låta personer utan ett konto delta.", "I want to approve every participation request": "Jag vill godkänna varje deltagande", - "I've been mentionned in a comment under an event": "", - "I've been mentionned in a group discussion": "", + "I've been mentionned in a comment under an event": "Jag har blivit omnämnd i en kommentar under ett evenemang", + "I've been mentionned in a group discussion": "Jag har blivit omnämnd i en gruppdiskussion", "ICS feed for events": "ICS-flöde för evenemang", "ICS/WebCal Feed": "ICS/WebCal-flöde", - "Identities": "", + "Identities": "Identiteter", "Identity {displayName} created": "Identiteten {displayName} skapad", "Identity {displayName} deleted": "Identiteten {displayName} raderad", "Identity {displayName} updated": "Identiteten {displayName} uppdaterad", @@ -447,7 +447,7 @@ "Instance Terms URL": "Instansvillkor URL", "Instance administrator": "Instansadministratör", "Instance configuration": "Instanskonfiguration", - "Instance feeds": "", + "Instance feeds": "Instansflöden", "Instance languages": "Instansens språk", "Instance rules": "Instansregler", "Instance settings": "Instansinställningar", @@ -456,7 +456,7 @@ "Instances you follow": "Instanser du följer", "Integrate this event with 3rd-party tools and show metadata for the event.": "", "Interact": "", - "Interact with a remote content": "", + "Interact with a remote content": "Interagera med distansinnehåll", "Invite a new member": "Bjud in en ny medlem", "Invite member": "Bjud in en medlem", "Invited": "Inbjudna", @@ -491,7 +491,7 @@ "List title": "Listrubrik", "Live": "", "Load more": "Ladda fler", - "Load more activities": "", + "Load more activities": "Ladda fler aktiviteter", "Loading comments…": "Laddar kommentarer…", "Local": "Lokalt", "Local time ({timezone})": "", @@ -511,7 +511,7 @@ "Member": "Medlem", "Members": "Medlemmar", "Members-only post": "", - "Mentions": "", + "Mentions": "Omnämnanden", "Message": "Meddelande", "Microsoft Teams": "", "Mobilizon": "Mobilizon", @@ -547,7 +547,7 @@ "New members": "Nya medlemmar", "New note": "Ny anteckning", "New password": "Nytt lösenord", - "New post": "", + "New post": "Nytt inlägg", "New profile": "Ny profil", "Next": "Nästa", "Next month": "Nästa månad", @@ -562,29 +562,29 @@ "No events found": "Inga evenemang hittade", "No follower matches the filters": "Ingen följare matchar filtren", "No group found": "Ingen grupp hittades", - "No group matches the filters": "", + "No group matches the filters": "Ingen grupp matchar filtren", "No group member found": "", "No groups found": "Inga grupper hittades", - "No information": "", + "No information": "Ingen information", "No instance follows your instance yet.": "Ingen instans följer din instans än.", "No instance to approve|Approve instance|Approve {number} instances": "Ingen instans att godkänna|Godkänn instans|Godkänn {number} instanser", "No instance to reject|Reject instance|Reject {number} instances": "Ingen instans att avvisa|Avvisa instans|Avvisa {number} instanser", "No instance to remove|Remove instance|Remove {number} instances": "Inga instanser att ta bort|Ta bort instans|Ta bort {number} instanser", "No languages found": "Inga språk hittades", "No member matches the filters": "Ingen medlem matchar filtren", - "No members found": "", - "No memberships found": "", + "No members found": "Inga medlemmar hittades", + "No memberships found": "Inga medlemskap hittades", "No message": "Inget meddelande", "No moderation logs yet": "Inga modereringsloggar än", "No more activity to display.": "Ingen mer aktivitet att visa.", "No one is participating|One person participating|{going} people participating": "Ingen deltar|En person deltar|{going} personer deltar", "No open reports yet": "Inga öppna rapporter än", - "No organized events found": "", - "No organized events listed": "", + "No organized events found": "Inga organiserade evenemang hittades", + "No organized events listed": "Inga organiserade evenemang listade", "No participant matches the filters": "Ingen deltagare matchar filtren", "No participant to approve|Approve participant|Approve {number} participants": "Ingen deltagare att godkänna|Godkänn deltagare|Godkänn {number} deltagare", "No participant to reject|Reject participant|Reject {number} participants": "Ingen deltagare att avvisa|Avvisa deltagare|Avvisa {number} deltagare", - "No participations listed": "", + "No participations listed": "Inga deltaganden listade", "No posts found": "Inga inlägg hittades", "No posts yet": "Inga inlägg ännu", "No profile matches the filters": "Ingen profil matchar filtren", @@ -603,10 +603,10 @@ "Notes": "Anteckningar", "Notification before the event": "Avisering för evenemanget", "Notification on the day of the event": "Avisering under dagen för evenemanget", - "Notification settings": "", - "Notifications": "", + "Notification settings": "Notifikationsinställningar", + "Notifications": "Notifikationer", "Notifications for manually approved participations to an event": "Notifieringar för manuellt godkända deltaganden i ett evenemang", - "Notify participants": "", + "Notify participants": "Meddela deltagare", "Now, create your first profile:": "Skapa nu din första profil:", "Number of places": "Antalet platser", "OK": "OK", @@ -666,7 +666,7 @@ "PeerTube live": "", "PeerTube replay": "", "Pending": "Avvaktande", - "Personal feeds": "", + "Personal feeds": "Personliga flöden", "Pick": "Välj", "Pick a profile or a group": "Välj en profil eller en grupp", "Pick an identity": "Välj en identitet", @@ -698,8 +698,8 @@ "Privacy policy": "Integritetspolicy", "Private event": "Privat evenemang", "Private feeds": "Privata flöden", - "Profile": "", - "Profile feeds": "", + "Profile": "Profil", + "Profile feeds": "Profilflöden", "Profiles": "Profiler", "Profiles and federation": "Profiler och federation", "Promote": "Befordra", @@ -714,7 +714,7 @@ "Publish": "Publicera", "Published by {name}": "", "Published events with {comments} comments and {participations} confirmed participations": "Publicera evenemang med {comments}kommentarer och {participations} bekräftade deltaganden", - "Push": "", + "Push": "Push", "Quote": "", "RSS/Atom Feed": "RSS/Atom-flöde", "Radius": "Avstånd", @@ -726,7 +726,7 @@ "Redirecting to content…": "Omdirigerar till innehåll…", "Redo": "", "Refresh profile": "Uppdatera profil", - "Regenerate new links": "", + "Regenerate new links": "Återskapa nya länkar", "Region": "Region", "Register": "Registrera", "Register an account on {instanceName}!": "Registrera ett konto på {instanceName}!", @@ -787,7 +787,7 @@ "Select a radius": "Välj en radie", "Select a timezone": "Välj en tidszon", "Select languages": "Välj språk", - "Select the activities for which you wish to receive an email or a push notification.": "", + "Select the activities for which you wish to receive an email or a push notification.": "Välj de aktiviteter för vilka du vill få ett e-postmeddelande eller en push-avisering.", "Send": "", "Send email": "Skicka e-post", "Send notification e-mails": "", @@ -860,7 +860,7 @@ "The event organizer manually approves participations. Since you've chosen to participate without an account, please explain why you want to participate to this event.": "Evenemangsarrangören godkänner deltagarna manuellt. Eftersom du har valt att delta utan konto, förklara varför du vill delta i det här evenemanget.", "The event title will be ellipsed.": "Evenemangets titel kommer förkortas med en ellipsis.", "The event will show as attributed to this group.": "Händelsen kommer att visas som attribut till denna grupp.", - "The event will show as attributed to this profile.": "", + "The event will show as attributed to this profile.": "Evenemanget kommer att visas som attribuerad denna profil.", "The event will show as attributed to your personal profile.": "Händelsen kommer att visas som attribut i din personliga profil.", "The event {event} was created by {profile}.": "Evenemanget {event} skapades av {profile}.", "The event {event} was deleted by {profile}.": "Evenemanget {event} togs bort av {profile}.", @@ -868,13 +868,13 @@ "The events you created are not shown here.": "De händelser du skapade visas inte här.", "The geolocation prompt was denied.": "", "The group can now be joined by anyone, but new members need to be approved by an administrator.": "", - "The group can now be joined by anyone.": "", - "The group can now only be joined with an invite.": "", + "The group can now be joined by anyone.": "Vem som helst kan nu ansluta sig till gruppen.", + "The group can now only be joined with an invite.": "En inbjudan krävs nu för att gå med i gruppen.", "The group will be publicly listed in search results and may be suggested in the explore section. Only public informations will be shown on it's page.": "Gruppen visas i sökresultat och kan rekommenderas i Utforska-delen. Endast offentlig information visas på sidan.", - "The group's avatar was changed.": "", - "The group's banner was changed.": "", - "The group's physical address was changed.": "", - "The group's short description was changed.": "", + "The group's avatar was changed.": "Gruppens avatar ändrades.", + "The group's banner was changed.": "Gruppens banner ändrades.", + "The group's physical address was changed.": "Gruppens fysiska adress ändrades.", + "The group's short description was changed.": "Gruppens korta beskrivning ändrades.", "The instance administrator is the person or entity that runs this Mobilizon instance.": "Instansadministratören är den person eller enhet som driver den här Mobilizon-instansen.", "The member was approved": "", "The member was removed from the group {group}": "Medlemmen har tagits bort från gruppen {group}", @@ -887,7 +887,7 @@ "The post {post} was deleted by {profile}.": "Inlägget {post} togs bort av {profile}.", "The post {post} was updated by {profile}.": "Inlägget {post} uppdaterades av {profile}.", "The report will be sent to the moderators of your instance. You can explain why you report this content below.": "Rapporten kommer skickas till moderatorerna på din instans. Du kan förklara varför du rapporterade det här innehållet här under.", - "The selected picture is too heavy. You need to select a file smaller than {size}.": "", + "The selected picture is too heavy. You need to select a file smaller than {size}.": "Den valda bilden är för stor. Du måste välja en fil som är mindre än {size}.", "The technical details of the error can help developers solve the problem more easily. Please add them to your feedback.": "De tekniska detaljerna om felet kan hjälpa utvecklare att lösa problemet lättare. Lägg till dem i din feedback.", "The {default_privacy_policy} will be used. They will be translated in the user's language.": "{default_privacy_policy} kommer att användas. De kommer att översättas till användarens språk.", "The {default_terms} will be used. They will be translated in the user's language.": "{default_terms} kommer att användas. De kommer att översättas till användarens språk.", @@ -896,8 +896,8 @@ "There will be no way to recover your data.": "Det kommer inte att finnas något sätt för att återställa din data.", "There's no discussions yet": "Det finns inga diskussioner ännu", "These events may interest you": "Dessa evenemang kanske intresserar dig", - "These feeds contain event data for the events for which any of your profiles is a participant or creator. You should keep these private. You can find feeds for specific profiles on each profile edition page.": "", - "These feeds contain event data for the events for which this specific profile is a participant or creator. You should keep these private. You can find feeds for all of your profiles into your notification settings.": "", + "These feeds contain event data for the events for which any of your profiles is a participant or creator. You should keep these private. You can find feeds for specific profiles on each profile edition page.": "Dessa flöden innehåller evenemangsdata för de evenemang där någon av dina profiler är deltagare eller skapare. Du bör hålla dessa privata. Du hittar flöden för specifika profiler på varje profilutgåvas sida.", + "These feeds contain event data for the events for which this specific profile is a participant or creator. You should keep these private. You can find feeds for all of your profiles into your notification settings.": "Dessa flöden innehåller evenemangsdata för de evenemang där denna specifika profil är en deltagare eller skapare. Du bör hålla dessa privata. Du kan hitta flöden för alla dina profiler i dina aviseringsinställningar.", "This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "Den här Mobilizon-instansen och evenemangsarrangören tillåter anonymt deltagande, men kräver bekräftelse-validering via e-post.", "This URL doesn't seem to be valid": "", "This URL is not supported": "Denna URL stöds inte", @@ -942,7 +942,7 @@ "Tomorrow": "Imorgon", "Tools": "", "Transfer to {outsideDomain}": "Överför till {outsideDomain}", - "Triggered profile refreshment": "", + "Triggered profile refreshment": "Triggade uppdatering av profil", "Twitch live": "", "Twitch replay": "", "Twitter account": "", @@ -951,12 +951,12 @@ "URL": "Länk", "URL copied to clipboard": "URL kopierad till urklipp", "Unable to copy to clipboard": "Kunde inte kopiera till urklipp", - "Unable to create the group. One of the pictures may be too heavy.": "", - "Unable to create the profile. The avatar picture may be too heavy.": "", + "Unable to create the group. One of the pictures may be too heavy.": "Det gick inte att skapa gruppen. En av bilderna kan vara för stor.", + "Unable to create the profile. The avatar picture may be too heavy.": "Det går inte att skapa profilen. Avatarbilden kan vara för stor.", "Unable to detect timezone.": "Kan inte identifiera tidszon.", "Unable to load event for participation. The error details are provided below:": "Det gick inte att ladda evenemanget för deltagande. Information om felet finns nedan:", "Unable to save your participation in this browser.": "Det går inte att spara ditt deltagande i denna webbläsare.", - "Unable to update the profile. The avatar picture may be too heavy.": "", + "Unable to update the profile. The avatar picture may be too heavy.": "Det går inte att uppdatera profilen. Avatarbilden kan vara för stor.", "Underline": "", "Undo": "", "Unfollow": "", @@ -964,7 +964,7 @@ "Unknown": "Okänd", "Unknown actor": "Okänd skådespelare", "Unknown error.": "Okänt fel.", - "Unknown value for the openness setting.": "", + "Unknown value for the openness setting.": "Okänt värde för inställningen öppenhet.", "Unlogged participation": "", "Unsaved changes": "Osparade ändringar", "Unsubscribe to browser push notifications": "", @@ -1000,9 +1000,9 @@ "View less": "", "View more": "", "View page on {hostname} (in a new window)": "Visa sidan hos {hostname} (öppnas i ett nytt fönster)", - "Visibility was set to an unknown value.": "", - "Visibility was set to private.": "", - "Visibility was set to public.": "", + "Visibility was set to an unknown value.": "Synlighet sattes till ett okänt värde.", + "Visibility was set to private.": "Synlighet sattes till privat.", + "Visibility was set to public.": "Synlighet sattes till publik.", "Visible everywhere on the web": "Synligt för hela webben", "Visible everywhere on the web (public)": "Synlig överallt på internet (publikt)", "Waiting for organization team approval.": "Väntar på godkännande från organisationsteamet.", @@ -1037,13 +1037,13 @@ "Will allow to display and manage your participation status on the event page when using this device. Uncheck if you're using a public device.": "Gör det möjligt att visa och hantera din deltagarstatus på evenemangssidan när du använder den här enheten. Avmarkera om du använder en offentlig enhet.", "Within {number} kilometers of {place}": "|Inom en kilometer från {place}|Inom {number} kilometer från {place}", "Yesterday": "Igår", - "You accepted the invitation to join the group.": "", + "You accepted the invitation to join the group.": "Du accepterade inbjudan att gå med i gruppen.", "You added the member {member}.": "Du lade till medlemmen {member}.", "You approved {member}'s membership.": "", - "You archived the discussion {discussion}.": "", + "You archived the discussion {discussion}.": "Du arkiverade diskussionen {discussion}.", "You are not an administrator for this group.": "Du är inte en administratör för den här gruppen.", "You are not part of any group.": "Du är inte en del av någon grupp.", - "You are offline": "", + "You are offline": "Du är offline", "You are participating in this event anonymously": "Du deltar i det här evenemanget anonymt", "You are participating in this event anonymously but didn't confirm participation": "Du deltar i detta evenemanget anonymt, men har inte bekräftat deltagande", "You can add tags by hitting the Enter key or by adding a comma": "Du kan lägga till taggar genom att trycka Enter eller skriva ett komma", @@ -1052,17 +1052,17 @@ "You can't change your password because you are registered through {provider}.": "Du kan inte ändra ditt lösenord eftersom att du är registrerad genom {provider}.", "You can't use push notifications in this browser.": "", "You changed your email or password": "", - "You created the discussion {discussion}.": "", + "You created the discussion {discussion}.": "Du skapade diskussionen {discussion}.", "You created the event {event}.": "Du skapade evenemanget {event}.", - "You created the folder {resource}.": "", - "You created the group {group}.": "", + "You created the folder {resource}.": "Du skapade mappen {resource}.", + "You created the group {group}.": "Du skapade gruppen {group}.", "You created the post {post}.": "Du skapade inlägget {post}.", - "You created the resource {resource}.": "", - "You deleted the discussion {discussion}.": "", + "You created the resource {resource}.": "Du skapade resursen {resource}.", + "You deleted the discussion {discussion}.": "Du raderade diskussionen {discussion}.", "You deleted the event {event}.": "Du har raderat evenemanget {event}.", - "You deleted the folder {resource}.": "", + "You deleted the folder {resource}.": "Du raderade mappen {resource}.", "You deleted the post {post}.": "Du raderade inlägget {post}.", - "You deleted the resource {resource}.": "", + "You deleted the resource {resource}.": "Du tog bort resursen {resource}.", "You demoted the member {member} to an unknown role.": "Du degraderade medlemmen {member} till en okänd roll.", "You demoted {member} to moderator.": "Du degraderade {member} till moderator.", "You demoted {member} to simple member.": "Du degraderade {member} till enkel medlem.", @@ -1080,40 +1080,40 @@ "You invited {member}.": "Du bjöd in {member}.", "You may clear all participation information for this device with the buttons below.": "Du kan rensa all deltagarinformation för den här enheten med knapparna nedan.", "You may now close this window, or {return_to_event}.": "Du kan nu stänga detta fönster, eller {return_to_event}.", - "You may show some members as contacts.": "", - "You moved the folder {resource} into {new_path}.": "", - "You moved the folder {resource} to the root folder.": "", - "You moved the resource {resource} into {new_path}.": "", - "You moved the resource {resource} to the root folder.": "", + "You may show some members as contacts.": "Du kan visa vissa medlemmar som kontakter.", + "You moved the folder {resource} into {new_path}.": "Du flyttade mappen {resource} till {new_path}.", + "You moved the folder {resource} to the root folder.": "Du flyttade mappen {resource} till rotmappen.", + "You moved the resource {resource} into {new_path}.": "Du flyttade resursen {resource} till {new_path}.", + "You moved the resource {resource} to the root folder.": "Du flyttade resursen {resource} till rotmappen.", "You need to login.": "Du måste logga in.", - "You posted a comment on the event {event}.": "", + "You posted a comment on the event {event}.": "Du publicerade en kommentar om evenemanget {event}.", "You promoted the member {member} to an unknown role.": "Du befordrade medlemmen {member} till en okänd roll.", "You promoted {member} to administrator.": "Du befordrade {member} till administratör.", "You promoted {member} to moderator.": "Du befordrade {member} till moderator.", "You rejected {member}'s membership request.": "", - "You renamed the discussion from {old_discussion} to {discussion}.": "", - "You renamed the folder from {old_resource_title} to {resource}.": "", - "You renamed the resource from {old_resource_title} to {resource}.": "", - "You replied to a comment on the event {event}.": "", - "You replied to the discussion {discussion}.": "", + "You renamed the discussion from {old_discussion} to {discussion}.": "Du döpte om diskussionen från {old_discussion} till {discussion}.", + "You renamed the folder from {old_resource_title} to {resource}.": "Du har bytt namn på mappen från {old_resource_title} till {resource}.", + "You renamed the resource from {old_resource_title} to {resource}.": "Du har bytt namn på resursen från {old_resource_title} till {resource}.", + "You replied to a comment on the event {event}.": "Du svarade på en kommentar om evenemanget {event}.", + "You replied to the discussion {discussion}.": "Du svarade på diskussionen {discussion}.", "You requested to join the group.": "Du har begärt att få ansluta dig till gruppen.", "You updated the event {event}.": "Du uppdaterade evenemanget {event}.", - "You updated the group {group}.": "", + "You updated the group {group}.": "Du uppdaterade gruppen {group}.", "You updated the member {member}.": "Du uppdaterade medlemmen {member}.", "You updated the post {post}.": "Du uppdaterade inlägget {post}.", - "You were demoted to an unknown role by {profile}.": "", - "You were demoted to moderator by {profile}.": "", - "You were demoted to simple member by {profile}.": "", - "You were promoted to administrator by {profile}.": "", - "You were promoted to an unknown role by {profile}.": "", - "You were promoted to moderator by {profile}.": "", + "You were demoted to an unknown role by {profile}.": "Du degraderades till en okänd roll av {profile}.", + "You were demoted to moderator by {profile}.": "Du degraderades till moderator av {profile}.", + "You were demoted to simple member by {profile}.": "Du degraderades till enkel medlem av {profile}.", + "You were promoted to administrator by {profile}.": "Du befordrades till administratör av {profile}.", + "You were promoted to an unknown role by {profile}.": "Du befordrades till en okänd roll av {profile}.", + "You were promoted to moderator by {profile}.": "Du befordrades till moderator av {profile}.", "You will be able to add an avatar and set other options in your account settings.": "Du kommer att kunna lägga till en avatar och ställa in andra alternativ i dina kontoinställningar.", "You will be redirected to the original instance": "Du kommer att omdirigeras till den ursprungliga instansen", "You will find here all the events you have created or of which you are a participant, as well as events organized by groups you follow or are a member of.": "Här hittar du alla evenemang som du har skapat eller som du deltar i, samt evenemang som anordnas av grupper som du följer eller är medlem i.", "You will receive notifications about this group's public activity depending on %{notification_settings}.": "", "You wish to participate to the following event": "Du önskar att delta i det följande evenemanget", "You'll get a weekly recap every Monday for upcoming events, if you have any.": "Du får en veckovis sammanfattning varje måndag för kommande evenemang, om du har några.", - "You'll need to change the URLs where there were previously entered.": "", + "You'll need to change the URLs where there were previously entered.": "Du måste ändra webbadresserna där de tidigare angetts.", "You'll need to transmit the group URL so people may access the group's profile. The group won't be findable in Mobilizon's search or regular search engines.": "Du behöver skicka gruppens URL så att andra kan komma åt gruppens profil. Gruppen kommer inte att kunna hittas i Mobilizons sökmotor eller vanliga sökmotorer.", "You'll receive a confirmation email.": "Du får en bekräftelse via e-post.", "YouTube live": "", @@ -1188,9 +1188,9 @@ "{count} members or followers": "", "{count} participants": "Inga deltagande ännu|En deltagande|{count} deltagande", "{count} requests waiting": "{count} förfrågningar väntar", - "{folder} - Resources": "", + "{folder} - Resources": "{folder} - Resurser", "{group} activity timeline": "{group} aktivitetstidslinje", - "{group} events": "", + "{group} events": "{group} händelser", "{group} posts": "", "{group}'s events": "{grupp}s evenemang", "{group}'s todolists": "", @@ -1204,55 +1204,55 @@ "{moderator} added a note on {report}": "{moderator} la till en anteckning rörande {report}", "{moderator} closed {report}": "{moderator} avslutade {report}", "{moderator} deleted an event named \"{title}\"": "{moderator} tog bort evenemanget \"{title}\"", - "{moderator} has deleted a comment from {author}": "", - "{moderator} has deleted a comment from {author} under the event {event}": "", + "{moderator} has deleted a comment from {author}": "{moderator} har raderat en kommentar från {author}", + "{moderator} has deleted a comment from {author} under the event {event}": "{moderator} har raderat en kommentar från {author} under evenemanget {event}", "{moderator} has deleted user {user}": "{moderator} har tagit bort användaren {user}", - "{moderator} has done an unknown action": "", - "{moderator} has unsuspended group {profile}": "", + "{moderator} has done an unknown action": "{moderator} har gjort en okänd åtgärd", + "{moderator} has unsuspended group {profile}": "{moderator} har ångrat avstängningen av grupp {profile}", "{moderator} has unsuspended profile {profile}": "{moderator} har upphävt avstängning av profilen {profile}", "{moderator} marked {report} as resolved": "{moderator} markerade {report} som löst", "{moderator} reopened {report}": "{moderator} åter-öppnade {report}", - "{moderator} suspended group {profile}": "", + "{moderator} suspended group {profile}": "{moderator} stängde av gruppen {profile}", "{moderator} suspended profile {profile}": "{moderator} stängde av profilen {profile}", "{nb} km": "{nb} km", "{number} members": "{antal} medlemmar", - "{number} memberships": "", + "{number} memberships": "{number} medlemskap", "{number} organized events": "Inga organiserade evenemang|Ett organiserat evenemang|{number} organiserade evenemang", "{number} participations": "Inga deltaganden|Ett deltagande|{number} deltaganden", "{number} posts": "Inga inlägg|Ett inlägg|{antal} inlägg", "{number} seats left": "", - "{old_group_name} was renamed to {group}.": "", + "{old_group_name} was renamed to {group}.": "{old_group_name} döptes om till {group}.", "{profile} (by default)": "{profile} (som standard)", "{profile} added the member {member}.": "{profile} la till medlemmen {member}.", "{profile} approved {member}'s membership.": "", - "{profile} archived the discussion {discussion}.": "", - "{profile} created the discussion {discussion}.": "", - "{profile} created the folder {resource}.": "", - "{profile} created the group {group}.": "", - "{profile} created the resource {resource}.": "", - "{profile} deleted the discussion {discussion}.": "", - "{profile} deleted the folder {resource}.": "", - "{profile} deleted the resource {resource}.": "", + "{profile} archived the discussion {discussion}.": "{profile} arkiverade diskussionen {discussion}.", + "{profile} created the discussion {discussion}.": "{profile} skapade diskussionen {discussion}.", + "{profile} created the folder {resource}.": "{profile} skapade mappen {resource}.", + "{profile} created the group {group}.": "{profile} skapade gruppen {group}.", + "{profile} created the resource {resource}.": "{profile} skapade resursen {resource}.", + "{profile} deleted the discussion {discussion}.": "{profile} tog bort diskussionen {discussion}.", + "{profile} deleted the folder {resource}.": "{profile} raderade mappen {resource}.", + "{profile} deleted the resource {resource}.": "{profile} tog bort resursen {resource}.", "{profile} demoted {member} to an unknown role.": "{profile} degraderade {member} till en okänd roll.", "{profile} demoted {member} to moderator.": "{profile} degraderade {member} till moderator.", "{profile} demoted {member} to simple member.": "{profile} degraderade {member} till enkel medlem.", - "{profile} excluded member {member}.": "", - "{profile} moved the folder {resource} into {new_path}.": "", - "{profile} moved the folder {resource} to the root folder.": "", - "{profile} moved the resource {resource} into {new_path}.": "", - "{profile} moved the resource {resource} to the root folder.": "", - "{profile} posted a comment on the event {event}.": "", + "{profile} excluded member {member}.": "{profile} exkluderade medlemmen {member}.", + "{profile} moved the folder {resource} into {new_path}.": "{profile} flyttade mappen {resource} till {new_path}.", + "{profile} moved the folder {resource} to the root folder.": "{profile} flyttade mappen {resource} till rotmappen.", + "{profile} moved the resource {resource} into {new_path}.": "{profile} flyttade resursen {resource} till {new_path}.", + "{profile} moved the resource {resource} to the root folder.": "{profile} flyttade resursen {resource} till rotmappen.", + "{profile} posted a comment on the event {event}.": "{profile} publicerade en kommentar om evenemanget {event}.", "{profile} promoted {member} to administrator.": "{profile} befordrade {member} till administratör.", "{profile} promoted {member} to an unknown role.": "{profile} befordrade {member} till en okänd roll.", "{profile} promoted {member} to moderator.": "{profile} befordrade {member} till moderator.", - "{profile} quit the group.": "", + "{profile} quit the group.": "{profile} lämnade gruppen.", "{profile} rejected {member}'s membership request.": "", - "{profile} renamed the discussion from {old_discussion} to {discussion}.": "", - "{profile} renamed the folder from {old_resource_title} to {resource}.": "", - "{profile} renamed the resource from {old_resource_title} to {resource}.": "", - "{profile} replied to a comment on the event {event}.": "", - "{profile} replied to the discussion {discussion}.": "", - "{profile} updated the group {group}.": "", + "{profile} renamed the discussion from {old_discussion} to {discussion}.": "{profile} döpte om diskussionen från {old_discussion} till {discussion}.", + "{profile} renamed the folder from {old_resource_title} to {resource}.": "{profile} döpte om mappen från %{old_resource_title} till {resource}.", + "{profile} renamed the resource from {old_resource_title} to {resource}.": "{profile} döpte om resursen från {old_resource_title} till {resource}.", + "{profile} replied to a comment on the event {event}.": "{profile} svarade på en kommentar om evenemanget {event}.", + "{profile} replied to the discussion {discussion}.": "{profile} svarade på diskussionen {discussion}.", + "{profile} updated the group {group}.": "{profile} uppdaterade gruppen {group}.", "{profile} updated the member {member}.": "{profile} uppdaterade medlemmen {member}.", "{timezoneLongName} ({timezoneShortName})": "", "{title} ({count} todos)": "{title} ({count} att-göra)", From 5d409d802926a2e93baed019f96d2190200e70d8 Mon Sep 17 00:00:00 2001 From: drkfrd Date: Fri, 19 Jan 2024 13:33:26 +0000 Subject: [PATCH 16/18] Translated using Weblate (Swedish) Currently translated at 69.8% (1149 of 1644 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sv/ --- src/i18n/sv.json | 296 ++++++++++++++++++++++++----------------------- 1 file changed, 150 insertions(+), 146 deletions(-) diff --git a/src/i18n/sv.json b/src/i18n/sv.json index 4d68f4276..3d544e794 100644 --- a/src/i18n/sv.json +++ b/src/i18n/sv.json @@ -4,7 +4,7 @@ "(this folder)": "(denna mapp)", "(this link)": "(denna länk)", "+ Add a resource": "+ Lägg till en resurs", - "+ Create a post": "", + "+ Create a post": "+ Skapa ett inlägg", "+ Create an event": "+ Skapa ett evenemang", "+ Start a discussion": "+ Starta en diskussion", "{contact} will be displayed as contact.": "{contact} kommer att visas som kontakt.|{contact} kommer att visas som kontakter.", @@ -15,12 +15,12 @@ "A cookie is a small file containing information that is sent to your computer when you visit a website. When you visit the site again, the cookie allows that site to recognize your browser. Cookies may store user preferences and other information. You can configure your browser to refuse all cookies. However, this may result in some website features or services partially working. Local storage works the same way but allows you to store more data.": "En cookie är en liten fil med information som skickas till din dator när du besöker en webbplats. När du besöker webbplatsen igen gör cookien det möjligt för webbplatsen att känna igen din webbläsare. Cookies kan lagra användarinställningar och annan information. Du kan konfigurera din webbläsare så att alla cookies nekas. Detta kan dock leda till att vissa funktioner eller tjänster på webbplatsen inte fungerar fullt ut. Lokal lagring fungerar på samma sätt men gör att du kan lagra mer data.", "A discussion has been created or updated": "En diskussion har skapats eller uppdaterats", "A federated software": "En federerad programvara", - "A fediverse account URL to follow for event updates": "", - "A link to a page presenting the event schedule": "", - "A link to a page presenting the price options": "", - "A member has been updated": "", - "A member requested to join one of my groups": "", - "A new version is available.": "", + "A fediverse account URL to follow for event updates": "URLen till ett Fediverse-konto att följa för uppdateringar om evenemanget", + "A link to a page presenting the event schedule": "En länk till en sida som presenterar evenemangets schema", + "A link to a page presenting the price options": "En länk till en sida där prisalternativen presenteras", + "A member has been updated": "En medlem har uppdaterats", + "A member requested to join one of my groups": "En medlem begärde att få gå med i en av mina grupper", + "A new version is available.": "En ny version är tillgänglig.", "A place for your code of conduct, rules or guidelines. You can use HTML tags.": "En plats för din uppförandekod, dina regler eller riktlinjer. Du kan använda HTML-taggar.", "A place to explain who you are and the things that set your instance apart. You can use HTML tags.": "En plats där du kan förklara vem du är och vad som utmärker din instans. Du kan använda HTML-taggar.", "A place to publish something to the whole world, your community or just your group members.": "En plats där du kan publicera något för hela världen, din community eller bara dina gruppmedlemmar.", @@ -30,7 +30,7 @@ "A practical tool": "Ett praktiskt verktyg", "A resource has been created or updated": "En resurs har skapats eller uppdaterats", "A short tagline for your instance homepage. Defaults to \"Gather ⋅ Organize ⋅ Mobilize\"": "En kort slogan för din instans hemsida. Standardinställningen är \"Samla ⋅ Organisera ⋅ Mobilisera\"", - "A twitter account handle to follow for event updates": "", + "A twitter account handle to follow for event updates": "Ett Twitter-konto att följa för uppdateringar om evenemanget", "A user-friendly, emancipatory and ethical tool for gathering, organising, and mobilising.": "Ett användarvänligt, frigörande och etiskt verktyg för att samlas, organisera och mobilisera.", "A validation email was sent to {email}": "Ett valideringsmail skickades till {email}", "API": "API", @@ -44,14 +44,14 @@ "About {instance}": "Om {instance}", "Accept": "Acceptera", "Accepted": "Accepterad", - "Accessibility": "", + "Accessibility": "Tillgänglighet", "Accessible only by link": "", "Accessible only to members": "Endast tillgängligt för medlemmar", "Accessible through link": "Tillgänglig via länk", "Account": "Konto", "Account settings": "Kontoinställningar", "Actions": "Åtgärder", - "Activate browser push notifications": "", + "Activate browser push notifications": "Aktivera push-aviseringar i webbläsaren", "Activated": "Aktiverad", "Active": "Aktiv", "Activity": "Aktivitet", @@ -64,9 +64,9 @@ "Add a todo": "Lägg till en att-göra", "Add an address": "Lägg till en adress", "Add an instance": "Lägg till en instans", - "Add link": "", - "Add new…": "", - "Add picture": "", + "Add link": "Lägg till länk", + "Add new…": "Lägg till ny…", + "Add picture": "Lägg till bild", "Add some tags": "Lägg till några taggar", "Add to my calendar": "Lägg till i min kalender", "Additional comments": "Yttligare kommentarer", @@ -81,8 +81,8 @@ "All the places have already been taken": "Alla platser är redan upptagna", "Allow all comments from users with accounts": "Tillåt alla kommentarer från inloggade användare", "Allow registrations": "Tillåt kontoregistrering", - "An URL to an external ticketing platform": "", - "An error has occured while refreshing the page.": "", + "An URL to an external ticketing platform": "En URL till en extern biljettplattform", + "An error has occured while refreshing the page.": "Ett fel uppstod när sidan uppdaterades.", "An error has occured. Sorry about that. You may try to reload the page.": "Ett fel har uppstått. Vi beklagar detta. Du kan försöka ladda om sidan.", "An ethical alternative": "Ett etiskt alternativ", "An event I'm going to has been updated": "Ett evenemang jag ska gå på har uppdaterats", @@ -95,7 +95,7 @@ "An instance is an installed version of the Mobilizon software running on a server. An instance can be run by anyone using the {mobilizon_software} or other federated apps, aka the “fediverse”. This instance's name is {instance_name}. Mobilizon is a federated network of multiple instances (just like email servers), users registered on different instances may communicate even though they didn't register on the same instance.": "En instans är en Mobilizon-mjukvara som installerats och körs på en server. En instans kan drivas av vem som helst som använder {mobilizon_software} eller andra federerade appar ur det s.k. \"fediverse\". Den här instansen heter {instance_name}. Mobilizon är ett federerat nätverk av flera instanser (precis som mejlservrar!), och användare kan kommunicera med varandra även om de är registrerade på olika instanser.", "An “application programming interface” or “API” is a communication protocol that allows software components to communicate with each other. The Mobilizon API, for example, can allow third-party software tools to communicate with Mobilizon instances to carry out certain actions, such as posting events, automatically and remotely.": "Ett \"application programming interface\" eller \"API\" är ett kommunikationsprotokoll som gör det möjligt för programvarukomponenter att kommunicera med varandra. Mobilizon API kan t.ex. göra det möjligt för tredjepartsverktyg att kommunicera med Mobilizon-instanser för att utföra vissa åtgärder, såsom att lägga upp evenemang, automatiskt och på distans.", "And {number} comments": "Och {number} kommentarer", - "Announcements and mentions notifications are always sent straight away.": "", + "Announcements and mentions notifications are always sent straight away.": "Tillkännagivanden och omnämnanden skickas alltid direkt.", "Anonymous participant": "Anonym deltagare", "Anonymous participants will be asked to confirm their participation through e-mail.": "Anonyma deltagare måste bekräfta sitt deltagande via e-post.", "Anonymous participations": "Anonyma deltagare", @@ -121,7 +121,7 @@ "Are you sure you want to delete this post? This action cannot be reverted.": "", "Are you sure you want to leave the group {groupName}? You'll loose access to this group's private content. This action cannot be undone.": "", "As the event organizer has chosen to manually validate participation requests, your participation will be really confirmed only once you receive an email stating it's being accepted.": "Eftersom organisatören har valt att manuellt validera förfrågningar om deltagande, kommer ditt deltagande att bekräftas först när du får ett e-postmeddelande om att det har accepterats.", - "Ask your instance admin to {enable_feature}.": "", + "Ask your instance admin to {enable_feature}.": "Be din instansadministratör att {enable_feature}.", "Assigned to": "Tilldelad till", "Atom feed for events and posts": "Atom-flöde för händelser och inlägg", "Attending": "", @@ -134,12 +134,12 @@ "Banner": "Banner", "Before you can login, you need to click on the link inside it to validate your account.": "Innan du loggar in måste du klicka på länken inuti det för att validera ditt konto.", "Begins on": "Börjar den", - "Big Blue Button": "", + "Big Blue Button": "Big Blue Button", "Bold": "Fet", - "Booking": "", - "Breadcrumbs": "", + "Booking": "Bokning", + "Breadcrumbs": "Brödsmulor", "Browser notifications": "Webbläsarnotifikationer", - "Bullet list": "", + "Bullet list": "Punktlista", "By others": "Av andra", "By {group}": "Av {group}", "By {username}": "Av {username}", @@ -147,7 +147,7 @@ "Cancel": "Avbryt", "Cancel anonymous participation": "Avbryt anonymt deltagande", "Cancel creation": "Avbryt skapandet", - "Cancel discussion title edition": "", + "Cancel discussion title edition": "Avbryt diskussion titel utgåva", "Cancel edition": "Avbryt redigeringen", "Cancel follow request": "", "Cancel membership request": "", @@ -161,11 +161,11 @@ "Change my password": "Ändra mitt lösenord", "Change timezone": "Ändra tidszon", "Check your inbox (and your junk mail folder).": "Kontrollera din inkorg (och din skräppostmapp).", - "Choose the source of the instance's Privacy Policy": "", - "Choose the source of the instance's Terms": "", + "Choose the source of the instance's Privacy Policy": "Välj källan till instansens Integritetspolicy", + "Choose the source of the instance's Terms": "Välj källan till instansens Villkor", "City or region": "Stad eller region", "Clear": "Rensa", - "Clear address field": "", + "Clear address field": "Radera adressfält", "Clear date filter field": "", "Clear participation data for all events": "Rensa deltagaruppgifter för alla evenemang", "Clear participation data for this event": "Rensa deltagaruppgifter för detta evenemang", @@ -175,7 +175,7 @@ "Close": "Stäng", "Close comments for all (except for admins)": "Stäng kommentarerna för alla (förutom administratörer)", "Closed": "Stängd", - "Comment body": "", + "Comment body": "Kommentarskropp", "Comment deleted": "Kommentar raderad", "Comment from {'@'}{username} reported": "Kommentaren från {'@'}{username} rapporterades", "Comment text can't be empty": "Kommentartexten kan inte vara tom", @@ -191,7 +191,7 @@ "Contact": "Kontakta", "Continue editing": "Fortsätt redigera", "Cookies and Local storage": "Kakor och lokal lagring", - "Copy URL to clipboard": "", + "Copy URL to clipboard": "Kopiera URL till urklipp", "Copy details to clipboard": "Kopiera detaljer till urklipp", "Country": "Land", "Create": "Skapa", @@ -232,7 +232,7 @@ "Date and time settings": "Datum- och tidsinställningar", "Date parameters": "Datumparametrar", "Decline": "Neka", - "Decrease": "", + "Decrease": "Minska", "Default": "Standard", "Default Mobilizon privacy policy": "Standard-integritetsvillkor för Mobilizon", "Default Mobilizon terms": "Standardvillkor för Mobilizon", @@ -256,7 +256,7 @@ "Deleting your Mobilizon account": "Radera ditt Mobilizon-konto", "Demote": "Degradera", "Description": "Beskrivning", - "Details": "", + "Details": "Detaljer", "Didn't receive the instructions?": "Fick inte instruktionerna?", "Disabled": "avaktiverad", "Discussions": "Diskussioner", @@ -268,7 +268,7 @@ "Do not receive any mail": "Motta inga mejl", "Do you wish to {create_event} or {explore_events}?": "Vill du {create_event} eller {explore_events}?", "Do you wish to {create_group} or {explore_groups}?": "Vill du {skapa_grupp} eller {utforska_grupper}?", - "Does the event needs to be confirmed later or is it cancelled?": "", + "Does the event needs to be confirmed later or is it cancelled?": "Måste evenemanget bekräftas senare eller är det inställt?", "Domain": "Domän", "Draft": "Utkast", "Drafts": "Utkast", @@ -278,14 +278,14 @@ "Edit post": "Redigera inlägg", "Edit profile {profile}": "Redigera profil {profile}", "Edited {ago}": "Redigera {ago}", - "Edited {relative_time} ago": "", + "Edited {relative_time} ago": "Redigerad {relative_time} sedan", "Eg: Stockholm, Dance, Chess…": "E.g.: Stockholm, Dans, Schack…", "Either on the {instance} instance or on another instance.": "Antingen på instansen {instance}, eller någon annan.", "Either the account is already validated, either the validation token is incorrect.": "Antingen är kontot redan validerat eller så är valideringstoken inkorrekt.", "Either the email has already been changed, either the validation token is incorrect.": "Antingen så har emailadressen redan ändrats eller så är valideringstoken felaktigt.", "Either the participation request has already been validated, either the validation token is incorrect.": "Antingen har begäran om deltagande redan validerats eller så är valideringstoken felaktig.", - "Element title": "", - "Element value": "", + "Element title": "Elementtitel", + "Element value": "Elementvärde", "Email": "E-post", "Email address": "Mejladress", "Email validate": "", @@ -305,22 +305,22 @@ "Error while login with {provider}. Retry or login another way.": "Fel vid inloggning med {provider}. Försök igen eller logga in på annat sätt.", "Error while login with {provider}. This login provider doesn't exist.": "Fel vid inloggning med {provider}. Den som ska tillhandahålla inloggningen finns inte.", "Error while reporting group {groupTitle}": "Fel vid anmälning av grupp {groupTitle}", - "Error while subscribing to push notifications": "", + "Error while subscribing to push notifications": "Fel vid prenumeration på push-aviseringar", "Error while suspending group": "Fel vid avstängning av grupp", - "Error while updating participation status inside this browser": "", + "Error while updating participation status inside this browser": "Fel vid uppdatering av deltagarstatus i denna webbläsare", "Error while validating account": "Fel vid validering av konto", "Error while validating participation request": "Fel vid validering av deltagandeförfrågan", - "Etherpad notes": "", + "Etherpad notes": "Etherpad-anteckningar", "Ethical alternative to Facebook events, groups and pages, Mobilizon is a tool designed to serve you. Period.": "Etiska alternativ till Facebookevenemang, grupper och sidor. Mobilizon är ett verktyg utformat för att tjäna dig. Punkt.", "Event": "Evenemang", - "Event URL": "", + "Event URL": "Evenemangs-URL", "Event already passed": "Evenemanget är över", "Event cancelled": "Evenemanget är inställt", "Event creation": "Evenemangskapande", "Event description body": "", "Event edition": "Evenemangredigerande", "Event list": "Evenemanglista", - "Event metadata": "", + "Event metadata": "Evenemangsmetadata", "Event page settings": "Evenemangsidans inställningar", "Event timezone will default to the timezone of the event's address if there is one, or to your own timezone setting.": "", "Event to be confirmed": "Evenemang ska bekräftas", @@ -334,21 +334,21 @@ "Ex: someone@mobilizon.org": "Till exempel: någon@mobilizon.org", "Explore": "Utforska", "Explore events": "Utforska evenemang", - "Export": "", - "Failed to get location.": "", + "Export": "Exportera", + "Failed to get location.": "Lyckades inte hitta platsen.", "Failed to save admin settings": "Det gick inte att spara admininställningar", "Featured events": "Utvalda evenemang", "Federated Group Name": "Federerat Gruppnamn", "Federation": "Federation", - "Fediverse account": "", + "Fediverse account": "Fediverse-konto", "Fetch more": "Hämta fler", - "Filter": "", - "Filter by name": "", - "Filter by profile or group name": "", + "Filter": "Filter", + "Filter by name": "Filtrera efter namn", + "Filter by profile or group name": "Filtrera efter profil- eller gruppnamn", "Find an address": "Hitta en adress", "Find an instance": "Hitta en instans", "Find another instance": "Hitta en annan instans", - "Find or add an element": "", + "Find or add an element": "Hitta eller lägg till ett element", "First steps": "", "Follow": "", "Follower": "Följare", @@ -360,28 +360,28 @@ "For instance: London, Taekwondo, Architecture…": "Till exempel: London, Taekwondo, Arkitektur …", "Forgot your password ?": "Glömt ditt lösenord?", "Forgot your password?": "Glömt ditt lösenord?", - "Framadate poll": "", + "Framadate poll": "Framadate-poll", "From my groups": "", "From the {startDate} at {startTime} to the {endDate}": "Från {startDate} klockan {startTime} till {endDate}", "From the {startDate} at {startTime} to the {endDate} at {endTime}": "Från {startDate} klockan {startTime} till {endDate} klockan {endTime}", "From the {startDate} to the {endDate}": "Från {startDate} till {endDate}", "From yourself": "Från dig själv", - "Fully accessible with a wheelchair": "", + "Fully accessible with a wheelchair": "Fullt tillgänglig med rullstol", "Gather ⋅ Organize ⋅ Mobilize": "Samlas ⋅ Organisera ⋅ Mobilisera", "General": "Allmänt", "General information": "Generell information", "General settings": "Allmänna inställningar", - "Geolocation was not determined in time.": "", + "Geolocation was not determined in time.": "Geolokalisering fastställdes inte i tid.", "Getting location": "Hämtar plats", "Getting there": "Ta sig dit", "Glossary": "Ordlista", "Go": "Gå", "Go to the event page": "Gå till evenemangssidan", - "Google Meet": "", + "Google Meet": "Google Meet", "Group": "Grupp", "Group Followers": "Gruppföljare", "Group Members": "Gruppmedlemmar", - "Group URL": "", + "Group URL": "Grupp-URL", "Group activity": "Gruppaktivitet", "Group address": "Gruppadress", "Group description body": "", @@ -397,9 +397,9 @@ "Groups": "Grupper", "Groups are not enabled on this instance.": "Grupper är inte aktiverade på denna instans.", "Groups are spaces for coordination and preparation to better organize events and manage your community.": "Grupper är utrymmen för samordning och förberedelser för att bättre organisera evenemang och hantera ditt community.", - "Heading Level 1": "", - "Heading Level 2": "", - "Heading Level 3": "", + "Heading Level 1": "Rubrik Nivå 1", + "Heading Level 2": "Rubrik Nivå 2", + "Heading Level 3": "Rubrik Nivå 3", "Headline picture": "Huvudbild", "Hide replies": "Dölj svar", "Home": "Hem", @@ -428,11 +428,11 @@ "If you are being asked for your federated indentity, it's composed of your username and your instance. For instance, the federated identity for your first profile is:": "Om du blir tillfrågad om din federerade identitet består den av ditt användarnamn och din instans. Den federerade identiteten för din första profil är t.ex:", "If you have opted for manual validation of participants, Mobilizon will send you an email to inform you of new participations to be processed. You can choose the frequency of these notifications below.": "Om du har valt manuell validering av deltagare kommer Mobilizon att skicka ett e-postmeddelande till dig för att informera dig om nya deltagare som ska behandlas. Du kan välja frekvens för dessa meddelanden nedan.", "If you want, you may send a message to the event organizer here.": "Om du vill så kan du skicka ett meddelande till händelsens organisatör här.", - "Ignore": "", + "Ignore": "Ignorera", "In person": "", "In the following context, an application is a software, either provided by the Mobilizon team or by a 3rd-party, used to interact with your instance.": "I den här kontexten är en applikation mjukvara som tillhanahålls av Mobilizon-teamet eller av tredje part, och som använd för att interagera med din instans.", "In the past": "I det förflutna", - "Increase": "", + "Increase": "Öka", "Instance": "Instans", "Instance Long Description": "Kort beskrivning av instansen", "Instance Name": "Instansnamn", @@ -454,7 +454,7 @@ "Instances": "Instanser", "Instances following you": "Instanser som följer dig", "Instances you follow": "Instanser du följer", - "Integrate this event with 3rd-party tools and show metadata for the event.": "", + "Integrate this event with 3rd-party tools and show metadata for the event.": "Integrera detta evenemang med tredjepartsverktyg och visa metadata för evenemanget.", "Interact": "", "Interact with a remote content": "Interagera med distansinnehåll", "Invite a new member": "Bjud in en ny medlem", @@ -462,10 +462,10 @@ "Invited": "Inbjudna", "It is possible that the content is not accessible on this instance, because this instance has blocked the profiles or groups behind this content.": "Det är möjligt att innehållet inte är tillgängligt på denna instans, eftersom denna instans har blockerat profilerna eller grupperna bakom detta innehåll.", "Italic": "Kursiv", - "Jitsi Meet": "", + "Jitsi Meet": "Jitsi Meet", "Join {instance}, a Mobilizon instance": "Gå med i {instance}, en Mobilizon instans", "Join group": "Gå med i grupp", - "Join group {group}": "", + "Join group {group}": "Gå med i grupp {group}", "Keep the entire conversation about a specific topic together on a single page.": "Håll hela diskussionen om ett specifikt ämne samlad på en enda sida.", "Key words": "Nyckelord", "Language": "Språk", @@ -489,12 +489,13 @@ "License": "Licens", "Limited number of places": "Begränsat antal platser", "List title": "Listrubrik", - "Live": "", + "Live": "Direktsändning", "Load more": "Ladda fler", "Load more activities": "Ladda fler aktiviteter", "Loading comments…": "Laddar kommentarer…", "Local": "Lokalt", - "Local time ({timezone})": "", + "Local time ({timezone})": "Lokal tid ({timezone})", + "Local times ({timezone})": "Lokala tider ({timezone})", "Locality": "Plats", "Location": "Plats", "Log in": "Logga in", @@ -510,10 +511,10 @@ "Mark as resolved": "Markera som löst", "Member": "Medlem", "Members": "Medlemmar", - "Members-only post": "", + "Members-only post": "Inlägg endast för medlemmar", "Mentions": "Omnämnanden", "Message": "Meddelande", - "Microsoft Teams": "", + "Microsoft Teams": "Microsoft Teams", "Mobilizon": "Mobilizon", "Mobilizon is a federated network. You can interact with this event from a different server.": "Mobilizon är ett federerat nätverk. Du kan interagera med den här händelsen från en annan server.", "Mobilizon is a federated software, meaning you can interact - depending on your admin's federation settings - with content from other instances, such as joining groups or events that were created elsewhere.": "Mobilizon är en federerad programvara, vilket innebär att du - beroende på dina federationsinställningar - kan interagera med innehåll från andra instanser, t.ex. gå med i grupper eller evenemang som skapats någon annanstans.", @@ -531,7 +532,7 @@ "Moderator": "Moderator", "Move": "Flytta", "Move \"{resourceName}\"": "Flytta \"{resourceName}\"", - "Move resource to the root folder": "", + "Move resource to the root folder": "Flytta resurs till rotmappen", "Move resource to {folder}": "Flytta resurs till {mapp}", "My account": "Mitt konto", "My events": "Mina evenemang", @@ -594,10 +595,10 @@ "No resources selected": "Ingen resurs vald|En resurs vald|{count} resurser valda", "No resources yet": "Inga resurser ännu", "No results for \"{queryText}\"": "Inga resultat för \"{queryText}\"", - "No results for {search}": "", + "No results for {search}": "Inga resultat för {search}", "No rules defined yet.": "Inga regler definierade ännu.", "None": "Ingen", - "Not accessible with a wheelchair": "", + "Not accessible with a wheelchair": "Ej tillgänglig med rullstol", "Not approved": "Ej godkända", "Not confirmed": "Obekräftade", "Notes": "Anteckningar", @@ -615,15 +616,15 @@ "On {date} ending at {endTime}": "På {date}, slutar vid {endTime}", "On {date} from {startTime} to {endTime}": "På {date} från {startTime} till {endTime}", "On {date} starting at {startTime}": "På {date} startar vid {startTime}", - "On {instance} and other federated instances": "", + "On {instance} and other federated instances": "På {instance} och andra federerade instanser", "Online": "", - "Online ticketing": "", + "Online ticketing": "Biljettförsäljning online", "Only accessible through link": "Endast tillgängligt via länk", "Only accessible through link (private)": "Endast tillgänglig via länk (privat)", "Only accessible to members of the group": "Endast tillgängligt för gruppmedlemmar", "Only alphanumeric lowercased characters and underscores are supported.": "Endast alfanumeriska små tecken och understreck stöds.", "Only group members can access discussions": "Endast gruppmedlemmar har tillgång till diskussioner", - "Only group moderators can create, edit and delete events.": "", + "Only group moderators can create, edit and delete events.": "Endast gruppmoderatorer kan skapa, redigera och ta bort inlägg.", "Only group moderators can create, edit and delete posts.": "Endast gruppmoderatorer kan skapa, redigera och ta bort inlägg.", "Only registered users may fetch remote events from their URL.": "", "Open": "Öppna", @@ -631,7 +632,7 @@ "Open an issue on our bug tracker (advanced users)": "Öppna ett problem i vår bugtracker (avancerade användare)", "Opened reports": "Öppnade rapporter", "Or": "Eller", - "Ordered list": "", + "Ordered list": "Ordnad lista", "Organized": "Organiserad", "Organized by": "Organiseras av", "Organized by {name}": "Organiserades av {namn}", @@ -639,7 +640,7 @@ "Organizer notifications": "Organisatörsnotifieringar", "Organizers": "Organisatörer", "Other": "Annan", - "Other actions": "", + "Other actions": "Andra åtgärder", "Other notification options:": "Andra notifieringsinställningar:", "Other software may also support this.": "Annan mjukvara kanske också stöttar det här.", "Otherwise this identity will just be removed from the group administrators.": "Annars kommer den här identiteten bara raderas från gruppens administratörer.", @@ -647,7 +648,7 @@ "Page limited to my group (asks for auth)": "Sida begränsad till min grupp (frågar efter autentisering)", "Page not found": "Sidan hittades inte", "Parent folder": "Föräldramapp", - "Partially accessible with a wheelchair": "", + "Partially accessible with a wheelchair": "Delvis tillgänglig med rullstol", "Participant": "Deltagare", "Participants": "Deltagare", "Participate": "Delta", @@ -663,8 +664,8 @@ "Password (confirmation)": "Lösenord (bekräftelse)", "Password reset": "Återställ lösenord", "Past events": "Tidigare evenemang", - "PeerTube live": "", - "PeerTube replay": "", + "PeerTube live": "PeerTube live", + "PeerTube replay": "PeerTube-återuppspelning", "Pending": "Avvaktande", "Personal feeds": "Personliga flöden", "Pick": "Välj", @@ -690,9 +691,9 @@ "Powered by {mobilizon}. © 2018 - {date} The Mobilizon Contributors - Made with the financial support of {contributors}.": "Drivs av {mobilizon}. © 2018 - {datum} Mobilizon bidragsgivare - Gjord med ekonomiskt stöd av {bidragsgivare}.", "Preferences": "Egenskaper", "Previous": "Föregående", - "Previous month": "", + "Previous month": "Föregående månad", "Previous page": "Föregående sida", - "Price sheet": "", + "Price sheet": "Prislista", "Privacy": "", "Privacy Policy": "Integritetspolicy", "Privacy policy": "Integritetspolicy", @@ -709,22 +710,22 @@ "Public event": "Publikt evenemang", "Public feeds": "Publika flöden", "Public iCal Feed": "Publika iCal-flöde", - "Public preview": "", + "Public preview": "Publik förhandsvisning", "Publication date": "Publiceringsdatum", "Publish": "Publicera", "Published by {name}": "", "Published events with {comments} comments and {participations} confirmed participations": "Publicera evenemang med {comments}kommentarer och {participations} bekräftade deltaganden", "Push": "Push", - "Quote": "", + "Quote": "Citat", "RSS/Atom Feed": "RSS/Atom-flöde", "Radius": "Avstånd", "Recap every week": "Sammanfatta varje vecka", - "Receive one email for each activity": "", + "Receive one email for each activity": "Få ett e-postmeddelande för varje aktivitet", "Receive one email per request": "Ta emot ett mejl per förfrågan", - "Redirecting in progress…": "", + "Redirecting in progress…": "Omdirigering pågår…", "Redirecting to Mobilizon": "", "Redirecting to content…": "Omdirigerar till innehåll…", - "Redo": "", + "Redo": "Gör om", "Refresh profile": "Uppdatera profil", "Regenerate new links": "Återskapa nya länkar", "Region": "Region", @@ -741,11 +742,11 @@ "Rejected": "Avvisades", "Remember my participation in this browser": "Kom ihåg mitt deltagande i denna webbläsare", "Remove": "Ta bort", - "Remove link": "", + "Remove link": "Ta bort länk", "Rename": "Byt namn på", "Rename resource": "Byt namn på resursen", "Reopen": "Öppna igen", - "Replay": "", + "Replay": "Repris", "Reply": "Svara", "Report": "Rapportera", "Report #{reportNumber}": "Rapport #{reportNumber}", @@ -764,7 +765,7 @@ "Request for participation confirmation sent": "Begäran om bekräftelse på deltagande skickad", "Resend confirmation email": "Skicka bekräftelsemailet igen", "Resent confirmation email": "", - "Reset": "", + "Reset": "Återställ", "Reset my password": "Återställ mitt lösenord", "Reset password": "", "Resolved": "Löst", @@ -779,7 +780,7 @@ "SSL/TLS": "SSL/TLS", "Save": "Spara", "Save draft": "Spara utkast", - "Schedule": "", + "Schedule": "Schema", "Search": "Sök", "Search events, groups, etc.": "Sök evenemang, grupper, etc.", "Searching…": "Söker…", @@ -790,37 +791,39 @@ "Select the activities for which you wish to receive an email or a push notification.": "Välj de aktiviteter för vilka du vill få ett e-postmeddelande eller en push-avisering.", "Send": "", "Send email": "Skicka e-post", - "Send notification e-mails": "", + "Send notification e-mails": "Skicka e-postnotifikationer", "Send password reset": "", "Send the confirmation email again": "Skicka bekräftelsemejlet igen", "Send the report": "Skicka rapporten", "Set an URL to a page with your own privacy policy.": "Ange en URL till en sida med din egen integritetspolicy.", "Set an URL to a page with your own terms.": "Ange en URL till en sida med dina egna villkor.", "Settings": "Inställningar", - "Share": "", + "Share": "Dela", "Share this event": "Dela det här evenemanget", - "Share this group": "", + "Share this group": "Dela denna grupp", "Share this post": "", "Short bio": "Kort biografi", "Show map": "Visa karta", - "Show me where I am": "", + "Show me where I am": "Visa mig var jag är", "Show remaining number of places": "Visa antal lediga platser", "Show the time when the event begins": "Visa vilken tid evenemanget börjar", "Show the time when the event ends": "Visa vilken tid evenemanget slutar", "Showing events before": "", "Showing events starting on": "", - "Sign Language": "", + "Sign Language": "Teckenspråk", "Sign in with": "Logga in med", "Sign up": "Gå med", "Since you are a new member, private content can take a few minutes to appear.": "Eftersom att du är ny i gruppen kan privat innehåll behöva några minuter innan det dyker upp.", "Skip to main content": "", - "Social": "", + "Smoke free": "Rökfri", + "Smoking allowed": "Rökning tillåten", + "Social": "Socialt", "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary here to help you understand them better:": "Vissa begrepp som används i texten nedan kan vara svåra att greppa. Vi tillhandahåller en ordlista här för att underlätta:", "Starts on…": "Börjar…", "Status": "Status", "Street": "Gata", "Submit": "Skicka", - "Subtitles": "", + "Subtitles": "Undertexter", "Suspend": "Stäng av", "Suspend group": "Stäng av grupp", "Suspended": "Avstängd", @@ -833,28 +836,28 @@ "Terms of service": "Användarvillkor", "Text": "Text", "That you follow or of which you are a member": "", - "The Big Blue Button video teleconference URL": "", - "The Google Meet video teleconference URL": "", - "The Jitsi Meet video teleconference URL": "", - "The Microsoft Teams video teleconference URL": "", - "The URL of a pad where notes are being taken collaboratively": "", - "The URL of a poll where the choice for the event date is happening": "", - "The URL where the event can be watched live": "", - "The URL where the event live can be watched again after it has ended": "", - "The Zoom video teleconference URL": "", + "The Big Blue Button video teleconference URL": "URL för Big Blue Button videokonferens", + "The Google Meet video teleconference URL": "URL för Google Meet-videokonferens", + "The Jitsi Meet video teleconference URL": "Jitsi Meet videokonferens-URLen", + "The Microsoft Teams video teleconference URL": "URL för Microsoft Teams videotelekonferens", + "The URL of a pad where notes are being taken collaboratively": "URLen till ett block där anteckningar görs gemensamt", + "The URL of a poll where the choice for the event date is happening": "URLen till en omröstning där valet av datum för evenemanget sker", + "The URL where the event can be watched live": "URLen där evenemanget kan ses live", + "The URL where the event live can be watched again after it has ended": "URL:en där evenemangets live kan ses igen efter att det har avslutats", + "The Zoom video teleconference URL": "URL för Zoom-videokonferens", "The account's email address was changed. Check your emails to verify it.": "Kontots e-postadress ändrades. Kontrollera din e-post för att verifiera den.", "The actual number of participants may differ, as this event is hosted on another instance.": "Det faktiska antalet deltagare kan skilja sig åt, eftersom evenemanget hålls i en annan instans.", "The content came from another server. Transfer an anonymous copy of the report?": "Innehållet kom rån en annan server. Överför en anonym kopia av rapporten?", "The draft event has been updated": "Utkastet har uppdaterats", - "The event has a sign language interpreter": "", + "The event has a sign language interpreter": "Evenemanget har en teckenspråkstolk", "The event has been created as a draft": "Evenemanget har skapats som ett utkast", "The event has been published": "Evenemanget har publicerats", "The event has been updated": "Evenemanget har uppdaterats", "The event has been updated and published": "Evenemanget har uppdaterats och publicerats", - "The event hasn't got a sign language interpreter": "", + "The event hasn't got a sign language interpreter": "Evenemanget har ingen teckenspråkstolk", "The event is fully online": "", - "The event live video contains subtitles": "", - "The event live video does not contain subtitles": "", + "The event live video contains subtitles": "Livevideon från evenemanget innehåller undertexter", + "The event live video does not contain subtitles": "Livevideon från evenemanget innehåller inga undertexter", "The event organiser has chosen to validate manually participations. Do you want to add a little note to explain why you want to participate to this event?": "Evenemangets arrangör har valt att validera manuellt deltagande. Vill du lägga till en liten anteckning för att förklara varför du vill delta i det här evenemanget?", "The event organizer didn't add any description.": "Evenemangets organisatör lade inte till någon beskrivning.", "The event organizer manually approves participations. Since you've chosen to participate without an account, please explain why you want to participate to this event.": "Evenemangsarrangören godkänner deltagarna manuellt. Eftersom du har valt att delta utan konto, förklara varför du vill delta i det här evenemanget.", @@ -866,7 +869,7 @@ "The event {event} was deleted by {profile}.": "Evenemanget {event} togs bort av {profile}.", "The event {event} was updated by {profile}.": "Evenemanget {event} uppdaterades av {profile}.", "The events you created are not shown here.": "De händelser du skapade visas inte här.", - "The geolocation prompt was denied.": "", + "The geolocation prompt was denied.": "Begäran om geolokalisering nekades.", "The group can now be joined by anyone, but new members need to be approved by an administrator.": "", "The group can now be joined by anyone.": "Vem som helst kan nu ansluta sig till gruppen.", "The group can now only be joined with an invite.": "En inbjudan krävs nu för att gå med i gruppen.", @@ -899,23 +902,23 @@ "These feeds contain event data for the events for which any of your profiles is a participant or creator. You should keep these private. You can find feeds for specific profiles on each profile edition page.": "Dessa flöden innehåller evenemangsdata för de evenemang där någon av dina profiler är deltagare eller skapare. Du bör hålla dessa privata. Du hittar flöden för specifika profiler på varje profilutgåvas sida.", "These feeds contain event data for the events for which this specific profile is a participant or creator. You should keep these private. You can find feeds for all of your profiles into your notification settings.": "Dessa flöden innehåller evenemangsdata för de evenemang där denna specifika profil är en deltagare eller skapare. Du bör hålla dessa privata. Du kan hitta flöden för alla dina profiler i dina aviseringsinställningar.", "This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "Den här Mobilizon-instansen och evenemangsarrangören tillåter anonymt deltagande, men kräver bekräftelse-validering via e-post.", - "This URL doesn't seem to be valid": "", + "This URL doesn't seem to be valid": "Denna URL verkar inte vara giltig", "This URL is not supported": "Denna URL stöds inte", "This event has been cancelled.": "Det här evenemanget har blivit inställt.", "This event is accessible only through it's link. Be careful where you post this link.": "Det här evenemanget går bara att komma åt genom dess länk. Tänk efter rörande var du publicerar länken.", "This group doesn't have a description yet.": "Denna grupp har ännu ingen beskrivning.", - "This group is accessible only through it's link. Be careful where you post this link.": "", + "This group is accessible only through it's link. Be careful where you post this link.": "Det här evenemanget går bara att komma åt genom dess länk. Tänk på var du publicerar länken.", "This group is invite-only": "Denna grupp är endast öppen för inbjudna", "This group was not found": "", "This identifier is unique to your profile. It allows others to find you.": "Denna identifierare är unik för din profil. Den gör det möjligt för andra att hitta dig.", "This information is saved only on your computer. Click for details": "Denna information sparas endast på din dator. Klicka för detaljer", - "This instance hasn't got push notifications enabled.": "", + "This instance hasn't got push notifications enabled.": "Denna instans har inte aktiverat push-aviseringar.", "This instance isn't opened to registrations, but you can register on other instances.": "Den här isntansen är inte öppen för registrering, men du kan registrera på andra instanser.", "This instance, {instanceName} ({domain}), hosts your profile, so remember its name.": "Den här instansen, {instanceName} ({domain}), är värd för din profil, så kom ihåg dess namn.", "This is a demonstration site to test Mobilizon.": "Det här är en demonstrationssida för att testa Mobilizon.", "This is like your federated username ({username}) for groups. It will allow the group to be found on the federation, and is guaranteed to be unique.": "Detta är som ditt federerade användarnamn ({username}) för grupper. Det gör att gruppen kan hittas i federationen och är garanterat unikt.", "This month": "Den här månaden", - "This post is accessible only for members. You have access to it for moderation purposes only because you are an instance moderator.": "", + "This post is accessible only for members. You have access to it for moderation purposes only because you are an instance moderator.": "Detta inlägg är endast tillgängligt för medlemmar. Du har tillgång till det enbart i modereringssyfte eftersom du är en instansmoderator.", "This post is accessible only through it's link. Be careful where you post this link.": "", "This profile is from another instance, the informations shown here may be incomplete.": "", "This profile was not found": "", @@ -925,8 +928,8 @@ "This week": "Den här veckan", "This weekend": "I helgen", "This will delete / anonymize all content (events, comments, messages, participations…) created from this identity.": "Det här kommer radera / anonymisera allt innehåll (evenemang, kommentarer, meddelanden, deltaganden...) skapade av den här identiteten.", - "Time in your timezone ({timezone})": "", - "Times in your timezone ({timezone})": "", + "Time in your timezone ({timezone})": "Tid i din tidszon ({timezone})", + "Times in your timezone ({timezone})": "Tider i din tidszon ({timezone})", "Timezone": "Tidszon", "Timezone detected as {timezone}.": "Tidszon har identifierats som {timezone}.", "Title": "Titel", @@ -940,12 +943,12 @@ "To register for an event by choosing one of your identities": "För att registrera dig för ett evenemang genom att välja en av dina identiteter", "Today": "Idag", "Tomorrow": "Imorgon", - "Tools": "", + "Tools": "Verktyg", "Transfer to {outsideDomain}": "Överför till {outsideDomain}", "Triggered profile refreshment": "Triggade uppdatering av profil", - "Twitch live": "", - "Twitch replay": "", - "Twitter account": "", + "Twitch live": "Twitch live", + "Twitch replay": "Twitch-återuppspelning", + "Twitter account": "Twitter-konto", "Type": "Typ", "Type or select a date…": "Ange eller välj ett datum…", "URL": "Länk", @@ -957,8 +960,8 @@ "Unable to load event for participation. The error details are provided below:": "Det gick inte att ladda evenemanget för deltagande. Information om felet finns nedan:", "Unable to save your participation in this browser.": "Det går inte att spara ditt deltagande i denna webbläsare.", "Unable to update the profile. The avatar picture may be too heavy.": "Det går inte att uppdatera profilen. Avatarbilden kan vara för stor.", - "Underline": "", - "Undo": "", + "Underline": "Understrykning", + "Undo": "Ångra", "Unfollow": "", "Unfortunately, your participation request was rejected by the organizers.": "Tyvärr blev ditt deltagande avfärdat av organisatörerna.", "Unknown": "Okänd", @@ -967,14 +970,14 @@ "Unknown value for the openness setting.": "Okänt värde för inställningen öppenhet.", "Unlogged participation": "", "Unsaved changes": "Osparade ändringar", - "Unsubscribe to browser push notifications": "", + "Unsubscribe to browser push notifications": "Avsluta prenumerationen på push-notiser från webbläsaren", "Unsuspend": "Återkalla avstängning", "Upcoming": "Kommande", "Upcoming events": "Kommande evenemang", "Upcoming events from your groups": "", "Update": "Uppdatera", - "Update app": "", - "Update discussion title": "", + "Update app": "Uppdatera app", + "Update discussion title": "Uppdatera diskussionsrubrik", "Update event {name}": "Uppdatera evenemang {name}", "Update group": "Uppdatera grupp", "Update my event": "Uppdatera mitt evenemang", @@ -983,22 +986,22 @@ "Uploaded media size": "Storlek på uppladdad media", "Use my location": "Använd min plats", "User": "Användare", - "User settings": "", + "User settings": "Användarinställningar", "Username": "Användarnamn", "Users": "Användare", "Validating account": "", "Validating email": "", - "Video Conference": "", + "Video Conference": "Videokonferens", "View a reply": "Visa inga svar|Visa ett svar|Visa {totalReplies} svar", - "View account on {hostname} (in a new window)": "", + "View account on {hostname} (in a new window)": "Visa konto på {hostname} (i ett nytt fönster)", "View all": "Visa alla", "View all events": "Se alla evenemang", "View all posts": "Visa alla inlägg", "View event page": "Visa evenemangsidan", "View everything": "Visa allt", "View full profile": "", - "View less": "", - "View more": "", + "View less": "Visa mindre", + "View more": "Visa mer", "View page on {hostname} (in a new window)": "Visa sidan hos {hostname} (öppnas i ett nytt fönster)", "Visibility was set to an unknown value.": "Synlighet sattes till ett okänt värde.", "Visibility was set to private.": "Synlighet sattes till privat.", @@ -1007,7 +1010,7 @@ "Visible everywhere on the web (public)": "Synlig överallt på internet (publikt)", "Waiting for organization team approval.": "Väntar på godkännande från organisationsteamet.", "Warning": "Varning", - "We couldn't save your participation inside this browser. Not to worry, you have successfully confirmed your participation, we just couldn't save it's status in this browser because of a technical issue.": "", + "We couldn't save your participation inside this browser. Not to worry, you have successfully confirmed your participation, we just couldn't save it's status in this browser because of a technical issue.": "Vi kunde inte spara ditt deltagande i den här webbläsaren. Oroa dig inte, du har bekräftat ditt deltagande, vi kunde bara inte spara dess status i den här webbläsaren på grund av ett tekniskt problem.", "We improve this software thanks to your feedback. To let us know about this issue, two possibilities (both unfortunately require user account creation):": "Vi förbättrar denna programvara tack vare din feedback. För att meddela oss om detta problem finns det två möjligheter (båda kräver tyvärr att ett användarkonto skapas):", "We just sent an email to {email}": "Vi skickade precis ett mail till {email}", "We use your timezone to make sure you get notifications for an event at the correct time.": "Vi använder din tidszon för att se till att du får notifieringar om ett event vid rätt tid.", @@ -1017,19 +1020,20 @@ "We'll use your timezone settings to send a recap of the morning of the event.": "Vi kommer att använda dina inställningar för tidszon för att skicka en sammanfattning av evenemangets morgon.", "Website": "Hemsida", "Website / URL": "Hemsida / URL", - "Weekly email summary": "", + "Weekly email summary": "Veckovis sammanfattning via e-post", "Welcome back {username}!": "Välkommen tillbaka {username}!", "Welcome back!": "Välkommen tillbaka!", "Welcome to Mobilizon, {username}!": "Välkommen till Mobilizon, {username}!", "What can I do to help?": "Vad kan jag göra för att hjälpa till?", - "Wheelchair accessibility": "", + "Wheelchair accessibility": "Tillgänglighet för rullstolar", "When a moderator from the group creates an event and attributes it to the group, it will show up here.": "När en moderator från gruppen skapar ett evenemang och attribuerar det till gruppen kommer det att visas här.", - "When the event is private, you'll need to share the link around.": "", - "When the post is private, you'll need to share the link around.": "", - "Whether the event is accessible with a wheelchair": "", - "Whether the event is interpreted in sign language": "", - "Whether the event live video is subtitled": "", - "Who can post a comment?": "", + "When the event is private, you'll need to share the link around.": "När evenemanget är privat måste du dela länken med andra.", + "When the post is private, you'll need to share the link around.": "När inlägget är privat måste du dela länken med andra.", + "Whether smoking is prohibited during the event": "Om rökning är förbjuden under evenemanget", + "Whether the event is accessible with a wheelchair": "Om evenemanget är tillgängligt med rullstol", + "Whether the event is interpreted in sign language": "Om evenemanget tolkas på teckenspråk", + "Whether the event live video is subtitled": "Om livevideon från evenemanget är textad", + "Who can post a comment?": "Vem kan skriva en kommentar?", "Who can view this event and participate": "Vem kan se och delta i detta evenemang", "Who can view this post": "Vilka kan se det här inlägget", "Who published {number} events": "Som publicerade {number} events", @@ -1050,8 +1054,8 @@ "You can pick your timezone into your preferences.": "Du kan välja din tidszon i dina inställningar.", "You can try another search term or drag and drop the marker on the map": "Du kan försöka med ett annat sökord eller dra och släpp markören på kartan", "You can't change your password because you are registered through {provider}.": "Du kan inte ändra ditt lösenord eftersom att du är registrerad genom {provider}.", - "You can't use push notifications in this browser.": "", - "You changed your email or password": "", + "You can't use push notifications in this browser.": "Du kan inte använda pushnotiser i den här webbläsaren.", + "You changed your email or password": "Du har ändrat din e-postadress eller lösenord", "You created the discussion {discussion}.": "Du skapade diskussionen {discussion}.", "You created the event {event}.": "Du skapade evenemanget {event}.", "You created the folder {resource}.": "Du skapade mappen {resource}.", @@ -1116,8 +1120,8 @@ "You'll need to change the URLs where there were previously entered.": "Du måste ändra webbadresserna där de tidigare angetts.", "You'll need to transmit the group URL so people may access the group's profile. The group won't be findable in Mobilizon's search or regular search engines.": "Du behöver skicka gruppens URL så att andra kan komma åt gruppens profil. Gruppen kommer inte att kunna hittas i Mobilizons sökmotor eller vanliga sökmotorer.", "You'll receive a confirmation email.": "Du får en bekräftelse via e-post.", - "YouTube live": "", - "YouTube replay": "", + "YouTube live": "YouTube live", + "YouTube replay": "YouTube-repris", "Your account has been successfully deleted": "Borttagningen av ditt konto lyckades", "Your account has been validated": "Ditt konto har validerats", "Your account is being validated": "Ditt konto håller på att valideras", @@ -1141,15 +1145,15 @@ "Your participation still has to be approved by the organisers.": "Ditt deltagande måste fortfarande godkännas av arrangörerna.", "Your participation will be validated once you click the confirmation link into the email, and after the organizer manually validates your participation.": "Ditt deltagande kommer att valideras när du klickar på bekräftelselänken i e-postmeddelandet och efter att organisatören manuellt validerar ditt deltagande.", "Your participation will be validated once you click the confirmation link into the email.": "Ditt deltagande kommer att bekräftas när du klickar på bekräftelselänken i e-postmeddelandet.", - "Your position was not available.": "", + "Your position was not available.": "Din position var inte tillgänglig.", "Your profile will be shown as contact.": "Din profil kommer att visas som kontakt.", "Your timezone is currently set to {timezone}.": "Din tidszon är för närvarande inställd på {tidszon}.", "Your timezone was detected as {timezone}.": "Din tidszon verkar vara {timezone}.", "Your timezone {timezone} isn't supported.": "Din tidszon {tidszon} stöds inte.", "Your upcoming events": "Dina kommande evenemang", - "Zoom": "", - "Zoom in": "", - "Zoom out": "", + "Zoom": "Zoom", + "Zoom in": "Zooma in", + "Zoom out": "Zooma ut", "[This comment has been deleted by it's author]": "[Den här kommentaren har tagits bort av den som skrev den]", "[This comment has been deleted]": "[Den här kommentaren har tagits bort]", "[deleted]": "[togs bort]", @@ -1164,13 +1168,13 @@ "default Mobilizon privacy policy": "Standard-integritetspolicy för Mobilizon", "default Mobilizon terms": "standardvillkor för Mobilizon", "e.g. 10 Rue Jangot": "e.g. 10 Rue Jangot", - "e.g. Accessibility, Twitch, PeerTube": "", - "enable the feature": "", + "e.g. Accessibility, Twitch, PeerTube": "t.ex. Accessibility, Twitch, PeerTube", + "enable the feature": "aktivera funktionen", "explore the events": "utforska evenemang", "explore the groups": "utforska grupperna", "full rules": "fullständiga regler", "group's upcoming public events": "", - "https://mensuel.framapad.org/p/some-secret-token": "", + "https://mensuel.framapad.org/p/some-secret-token": "https://mensuel.framapad.org/p/en-hemlig-token", "iCal Feed": "iCal-feed", "instance rules": "instansregler", "more than 1360 contributors": "mer än 1360 bidragsgivare", @@ -1184,7 +1188,7 @@ "{approved} / {total} seats": "{approved} / {total} platser", "{available}/{capacity} available places": "Inga platser kvar|{available}/{capacity} tillgängliga platser", "{count} km": "{count} km", - "{count} members": "", + "{count} members": "Inga medlemmar|En medlem|{count} medlemmar", "{count} members or followers": "", "{count} participants": "Inga deltagande ännu|En deltagande|{count} deltagande", "{count} requests waiting": "{count} förfrågningar väntar", From fe09e43be20bb748b5431fe826208561538a94e6 Mon Sep 17 00:00:00 2001 From: drkfrd Date: Fri, 19 Jan 2024 13:43:55 +0000 Subject: [PATCH 17/18] Translated using Weblate (Swedish) Currently translated at 70.1% (1153 of 1644 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sv/ --- src/i18n/sv.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/i18n/sv.json b/src/i18n/sv.json index 3d544e794..c06d7faf2 100644 --- a/src/i18n/sv.json +++ b/src/i18n/sv.json @@ -169,7 +169,7 @@ "Clear date filter field": "", "Clear participation data for all events": "Rensa deltagaruppgifter för alla evenemang", "Clear participation data for this event": "Rensa deltagaruppgifter för detta evenemang", - "Clear timezone field": "", + "Clear timezone field": "Rensa fältet för tidszon", "Click for more information": "Klicka för mer information", "Click to upload": "Klicka för att ladda upp", "Close": "Stäng", @@ -317,12 +317,12 @@ "Event already passed": "Evenemanget är över", "Event cancelled": "Evenemanget är inställt", "Event creation": "Evenemangskapande", - "Event description body": "", + "Event description body": "Evenemangsbeskrivning kropp", "Event edition": "Evenemangredigerande", "Event list": "Evenemanglista", "Event metadata": "Evenemangsmetadata", "Event page settings": "Evenemangsidans inställningar", - "Event timezone will default to the timezone of the event's address if there is one, or to your own timezone setting.": "", + "Event timezone will default to the timezone of the event's address if there is one, or to your own timezone setting.": "Tidszon för evenemanget kommer som standard att vara tidszonen för evenemangets adress om det finns en sådan, eller din egen tidszoninställning.", "Event to be confirmed": "Evenemang ska bekräftas", "Event {eventTitle} deleted": "Evenemang {eventTitle} raderat", "Event {eventTitle} reported": "Evenemang {eventTitle} rapporterat", @@ -384,7 +384,7 @@ "Group URL": "Grupp-URL", "Group activity": "Gruppaktivitet", "Group address": "Gruppadress", - "Group description body": "", + "Group description body": "Gruppbeskrivning kropp", "Group display name": "Gruppens visningsnamn", "Group name": "Gruppnamn", "Group profiles": "", @@ -528,7 +528,7 @@ "Moderated comments (shown after approval)": "Modererade kommentarer (visas när de godkänts)", "Moderation": "Moderering", "Moderation log": "Moderationslogg", - "Moderation logs": "", + "Moderation logs": "Moderationsloggar", "Moderator": "Moderator", "Move": "Flytta", "Move \"{resourceName}\"": "Flytta \"{resourceName}\"", @@ -683,7 +683,7 @@ "Post URL": "", "Post a comment": "Skriv en kommentar", "Post a reply": "Skriv ett svar", - "Post body": "", + "Post body": "Inläggskropp", "Post {eventTitle} reported": "", "Postal Code": "Postkod", "Posts": "Inlägg", From 08bf4a90daeb49689be943173b22b63cf76133bd Mon Sep 17 00:00:00 2001 From: drkfrd Date: Fri, 19 Jan 2024 15:58:30 +0000 Subject: [PATCH 18/18] Translated using Weblate (Swedish) Currently translated at 98.7% (1623 of 1644 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sv/ --- src/i18n/sv.json | 560 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 468 insertions(+), 92 deletions(-) diff --git a/src/i18n/sv.json b/src/i18n/sv.json index c06d7faf2..c335eaea6 100644 --- a/src/i18n/sv.json +++ b/src/i18n/sv.json @@ -7,6 +7,7 @@ "+ Create a post": "+ Skapa ett inlägg", "+ Create an event": "+ Skapa ett evenemang", "+ Start a discussion": "+ Starta en diskussion", + "0 Bytes": "0 Byte", "{contact} will be displayed as contact.": "{contact} kommer att visas som kontakt.|{contact} kommer att visas som kontakter.", "@{group}": "@{group}", "@{username} ({role})": "@{username} ({role})", @@ -16,6 +17,7 @@ "A discussion has been created or updated": "En diskussion har skapats eller uppdaterats", "A federated software": "En federerad programvara", "A fediverse account URL to follow for event updates": "URLen till ett Fediverse-konto att följa för uppdateringar om evenemanget", + "A few lines about your group": "Några rader om din grupp", "A link to a page presenting the event schedule": "En länk till en sida som presenterar evenemangets schema", "A link to a page presenting the price options": "En länk till en sida där prisalternativen presenteras", "A member has been updated": "En medlem har uppdaterats", @@ -38,29 +40,46 @@ "About": "Om", "About Mobilizon": "Om Mobilizon", "About anonymous participation": "Om anonymt deltagande", - "About instance": "", + "About instance": "Om instans", "About this event": "Om det här evenemanget", "About this instance": "Om den här instansen", "About {instance}": "Om {instance}", "Accept": "Acceptera", + "Accept follow": "Acceptera följning", "Accepted": "Accepterad", + "Access drafts events": "Åtkomst till evenemangsutkast", + "Access followed groups": "Tillgång till följda grupper", + "Access group activities": "Tillgång till gruppaktiviteter", + "Access group discussions": "Få tillgång till gruppdiskussioner", + "Access group events": "Få tillgång till grupphändelser", + "Access group followers": "Tillgång till gruppföljare", + "Access group members": "Åtkomst till gruppmedlemmar", + "Access group memberships": "Tillgång till gruppmedlemskap", + "Access group suggested events": "Åtkomst till gruppföreslagna evenemang", + "Access group todo-lists": "Tillgång till gruppens att-göra listor", + "Access organized events": "Tillgång till organiserade evenemang", + "Access participations": "Tillgång till deltaganden", + "Access your group's resources": "Få tillgång till din grupps resurser", "Accessibility": "Tillgänglighet", - "Accessible only by link": "", + "Accessible only by link": "Tillgänglig endast via länk", "Accessible only to members": "Endast tillgängligt för medlemmar", "Accessible through link": "Tillgänglig via länk", "Account": "Konto", "Account settings": "Kontoinställningar", "Actions": "Åtgärder", "Activate browser push notifications": "Aktivera push-aviseringar i webbläsaren", + "Activate notifications": "Aktivera aviseringar", "Activated": "Aktiverad", "Active": "Aktiv", "Activity": "Aktivitet", "Actor": "Skådespelare", + "Adapt to system theme": "Anpassa till systemets tema", "Add": "Lägg till", "Add / Remove…": "Lägg till / Ta bort…", "Add a contact": "Lägg till en kontakt", "Add a new post": "Skapa ett nytt inlägg", "Add a note": "Lägg till en kommentar", + "Add a recipient": "Lägg till en mottagare", "Add a todo": "Lägg till en att-göra", "Add an address": "Lägg till en adress", "Add an instance": "Lägg till en instans", @@ -71,17 +90,19 @@ "Add to my calendar": "Lägg till i min kalender", "Additional comments": "Yttligare kommentarer", "Admin": "Administratör", - "Admin dashboard": "", - "Admin settings": "", + "Admin dashboard": "Administratörspanel", + "Admin settings": "Admin-inställningar", "Admin settings successfully saved.": "Administratörsinställningarna har sparats.", "Administration": "Administration", "Administrator": "Administratör", + "All": "Alla", "All activities": "Alla aktiviteter", "All good, let's continue!": "Toppen, vi fortsätter!", "All the places have already been taken": "Alla platser är redan upptagna", "Allow all comments from users with accounts": "Tillåt alla kommentarer från inloggade användare", "Allow registrations": "Tillåt kontoregistrering", "An URL to an external ticketing platform": "En URL till en extern biljettplattform", + "An anonymous profile joined the event {event}.": "En anonym profil gick med i evenemanget {event}.", "An error has occured while refreshing the page.": "Ett fel uppstod när sidan uppdaterades.", "An error has occured. Sorry about that. You may try to reload the page.": "Ett fel har uppstått. Vi beklagar detta. Du kan försöka ladda om sidan.", "An ethical alternative": "Ett etiskt alternativ", @@ -93,54 +114,76 @@ "An event from one of my groups has been published": "Ett evenemang från en av mina grupper har publicerats", "An event from one of my groups has been updated or deleted": "Ett evenemang från en av mina grupper har uppdaterats eller tagits bort", "An instance is an installed version of the Mobilizon software running on a server. An instance can be run by anyone using the {mobilizon_software} or other federated apps, aka the “fediverse”. This instance's name is {instance_name}. Mobilizon is a federated network of multiple instances (just like email servers), users registered on different instances may communicate even though they didn't register on the same instance.": "En instans är en Mobilizon-mjukvara som installerats och körs på en server. En instans kan drivas av vem som helst som använder {mobilizon_software} eller andra federerade appar ur det s.k. \"fediverse\". Den här instansen heter {instance_name}. Mobilizon är ett federerat nätverk av flera instanser (precis som mejlservrar!), och användare kan kommunicera med varandra även om de är registrerade på olika instanser.", + "An “application programming interface” or “API” is a communication protocol that allows software components to communicate with each other. The Mobilizon API, for example, can allow third-party software tools to communicate with Mobilizon instances to carry out certain actions, such as posting events on your behalf, automatically and remotely.": "Ett \"application programming interface\" eller \"API\" är ett kommunikationsprotokoll som gör det möjligt för programvarukomponenter att kommunicera med varandra. Mobilizon APIet kan t.ex. göra det möjligt för tredjepartsverktyg att kommunicera med Mobilizon-instanser för att utföra vissa åtgärder, såsom att lägga upp evenemang, automatiskt och på distans.", "An “application programming interface” or “API” is a communication protocol that allows software components to communicate with each other. The Mobilizon API, for example, can allow third-party software tools to communicate with Mobilizon instances to carry out certain actions, such as posting events, automatically and remotely.": "Ett \"application programming interface\" eller \"API\" är ett kommunikationsprotokoll som gör det möjligt för programvarukomponenter att kommunicera med varandra. Mobilizon API kan t.ex. göra det möjligt för tredjepartsverktyg att kommunicera med Mobilizon-instanser för att utföra vissa åtgärder, såsom att lägga upp evenemang, automatiskt och på distans.", "And {number} comments": "Och {number} kommentarer", + "Announcements": "Tillkännagivanden", "Announcements and mentions notifications are always sent straight away.": "Tillkännagivanden och omnämnanden skickas alltid direkt.", + "Announcements for {eventTitle}": "Meddelanden för {eventTitle}", "Anonymous participant": "Anonym deltagare", "Anonymous participants will be asked to confirm their participation through e-mail.": "Anonyma deltagare måste bekräfta sitt deltagande via e-post.", "Anonymous participations": "Anonyma deltagare", + "Any category": "Alla kategorier", "Any day": "Alla dagar", - "Any type": "", + "Any distance": "Alla avstånd", + "Any type": "Vilken typ som helst", "Anyone can join freely": "Alla kan ansluta sig fritt", - "Anyone can request being a member, but an administrator needs to approve the membership.": "", + "Anyone can request being a member, but an administrator needs to approve the membership.": "Vem som helst kan ansöka om att bli medlem, men en administratör måste godkänna medlemskapet.", "Anyone wanting to be a member from your group will be able to from your group page.": "Alla som vill bli medlemmar i din grupp kan göra det från din gruppsida.", "Application": "Applikation", + "Application authorized": "Applikationen auktoriserad", + "Application not found": "Applikationen hittades inte", + "Application was revoked": "Applikationen återkallades", "Apply filters": "Tillämpa filter", - "Approve member": "", + "Approve member": "Godkänn medlem", + "Apps": "Appar", "Are you really sure you want to delete your whole account? You'll lose everything. Identities, settings, events created, messages and participations will be gone forever.": "Är du verkligen säker på att du vill ta bort hela ditt konto? Du förlorar allt. Identiteter, inställningar, skapade händelser, meddelanden och deltagande försvinner för alltid.", "Are you sure you want to completely delete this group? All members - including remote ones - will be notified and removed from the group, and all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed.": "Är du säker på att du vill fullständigt radera den här gruppen? Alla medlemmar - även fjärrmedlemmar - kommer att meddelas och tas bort från gruppen, och alla gruppdata (händelser, inlägg, diskussioner, todos...) kommer oåterkalleligen att förstöras.", + "Are you sure you want to delete this comment? This action cannot be undone.": "Är du säker på att du vill radera den här kommentaren? Detta kan inte ångras.", "Are you sure you want to delete this comment? This action cannot be undone.": "Är du säker på att du vill radera den här kommentaren? Detta kan inte ångras.", + "Are you sure you want to delete this event? This action cannot be undone. You may want to engage the discussion with the event creator and ask them to edit their event instead.": "Är du säker på att du vill ta bort detta evenemang? Denna åtgärd kan inte ångras. Du kanske vill ta upp diskussionen med den som skapade evenemanget och be dem att redigera sitt evenemang istället.", "Are you sure you want to delete this event? This action cannot be undone. You may want to engage the discussion with the event creator or edit its event instead.": "Är du säker på att du vill radera det här evenemanget? Denna åtgärd kan inte ångras. Du kanske vill delta i diskussionen med evenemangsskaparen eller redigera det istället.", "Are you sure you want to suspend this group? All members - including remote ones - will be notified and removed from the group, and all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed.": "Är du säker på att du vill stänga den här gruppen? Alla medlemmar - även fjärrmedlemmar - kommer att meddelas och tas bort från gruppen, och alla gruppdata (händelser, inlägg, diskussioner, todos...) kommer oåterkalleligen att förstöras.", "Are you sure you want to suspend this group? As this group originates from instance {instance}, this will only remove local members and delete the local data, as well as rejecting all the future data.": "Är du säker på att du vill stänga ned denna grupp? Eftersom denna grupp härstammar från instans {instance}, kommer detta endast att ta bort lokala medlemmar och radera lokala data, samt avvisa alla framtida data.", "Are you sure you want to cancel the event creation? You'll lose all modifications.": "Är du säker på att du vill avbryta evenemangskapandet? Du kommer förlora alla ändringar.", "Are you sure you want to cancel the event edition? You'll lose all modifications.": "Är du säker på att du vill avbryta evenemangredigeringen? Du kommer förlora alla ändringar.", "Are you sure you want to cancel your participation at event \"{title}\"?": "Är du säker på att du vill avsluta ditt deltagande i evenemanget \"{title}\"?", + "Are you sure you want to delete this entire conversation?": "Är du säker på att du vill radera hela den här konversationen?", "Are you sure you want to delete this entire discussion?": "Är du säker på att du vill radera hela den här diskussionen?", "Are you sure you want to delete this event? This action cannot be reverted.": "Är du säker på att du vill radera det här evenemanget? Den här handlingen kan inte ångras.", - "Are you sure you want to delete this post? This action cannot be reverted.": "", - "Are you sure you want to leave the group {groupName}? You'll loose access to this group's private content. This action cannot be undone.": "", + "Are you sure you want to delete this post? This action cannot be reverted.": "Är du säker på att du vill radera detta inlägget? Den här handlingen kan inte ångras.", + "Are you sure you want to leave the group {groupName}? You'll loose access to this group's private content. This action cannot be undone.": "Är du säker på att du vill lämna gruppen {groupName}? Då förlorar du åtkomsten till gruppens privata innehåll. Denna åtgärd kan inte ångras.", "As the event organizer has chosen to manually validate participation requests, your participation will be really confirmed only once you receive an email stating it's being accepted.": "Eftersom organisatören har valt att manuellt validera förfrågningar om deltagande, kommer ditt deltagande att bekräftas först när du får ett e-postmeddelande om att det har accepterats.", "Ask your instance admin to {enable_feature}.": "Be din instansadministratör att {enable_feature}.", "Assigned to": "Tilldelad till", "Atom feed for events and posts": "Atom-flöde för händelser och inlägg", - "Attending": "", + "Attending": "Deltagande", + "Authorize": "Auktorisera", + "Authorize application": "Auktorisera applikation", + "Authorized on {authorization_date}": "Godkänd den {authorization_date}", + "Autorize this application to access your account?": "Auktorisera denna applikation att komma åt ditt konto?", "Avatar": "Avatar", - "Back to group list": "", + "Back to group list": "Tillbaka till grupplistan", + "Back to homepage": "Tillbaka till hemsidan", "Back to previous page": "Tillbaka till föregående sida", - "Back to profile list": "", - "Back to top": "", - "Back to user list": "", + "Back to profile list": "Tillbaka till profillistan", + "Back to top": "Tillbaka till toppen", + "Back to user list": "Tillbaka till användarlistan", "Banner": "Banner", + "Become part of the community and start organizing events": "Bli en del av gänget och börja organisera evenemang", "Before you can login, you need to click on the link inside it to validate your account.": "Innan du loggar in måste du klicka på länken inuti det för att validera ditt konto.", "Begins on": "Börjar den", + "Best match": "Bästa träff", "Big Blue Button": "Big Blue Button", "Bold": "Fet", "Booking": "Bokning", "Breadcrumbs": "Brödsmulor", "Browser notifications": "Webbläsarnotifikationer", "Bullet list": "Punktlista", + "By bike": "Med cykel", + "By car": "Med bil", "By others": "Av andra", + "By transit": "Med kollektivtrafik", "By {group}": "Av {group}", "By {username}": "Av {username}", "Can be an email or a link, or just plain text.": "Kan vara en e-postadress eller en länk, eller bara vanlig text.", @@ -149,24 +192,35 @@ "Cancel creation": "Avbryt skapandet", "Cancel discussion title edition": "Avbryt diskussion titel utgåva", "Cancel edition": "Avbryt redigeringen", - "Cancel follow request": "", - "Cancel membership request": "", + "Cancel follow request": "Avbryt följningsbegäran", + "Cancel membership request": "Avbryt begäran om medlemskap", "Cancel my participation request…": "Avbryt min ansökan om att delta…", "Cancel my participation…": "Avsluta mitt deltagande…", + "Cancel participation": "Avbryt deltagande", "Cancelled": "Inställt", "Cancelled: Won't happen": "Inställt: Kommer inte ske", + "Categories": "Kategorier", + "Category": "Kategori", + "Category illustrations credits": "Erkännande kategoriillustrationer", + "Category list": "Kategorilista", "Change": "Ändra", + "Change email": "Byt e-postadress", "Change my email": "Ändra min e-postadress", "Change my identity…": "Ändra min identitet…", "Change my password": "Ändra mitt lösenord", + "Change role": "Ändra roll", + "Change the filters.": "Byt filtren.", "Change timezone": "Ändra tidszon", + "Change user email": "Ändra användarens e-postadress", + "Change user role": "Ändra användarens roll", + "Check your device to continue. You may now close this window.": "Kontrollera din enhet för att fortsätta. Du kan nu stänga detta fönster.", "Check your inbox (and your junk mail folder).": "Kontrollera din inkorg (och din skräppostmapp).", "Choose the source of the instance's Privacy Policy": "Välj källan till instansens Integritetspolicy", "Choose the source of the instance's Terms": "Välj källan till instansens Villkor", "City or region": "Stad eller region", "Clear": "Rensa", "Clear address field": "Radera adressfält", - "Clear date filter field": "", + "Clear date filter field": "Rensa fältet för datumfilter", "Clear participation data for all events": "Rensa deltagaruppgifter för alla evenemang", "Clear participation data for this event": "Rensa deltagaruppgifter för detta evenemang", "Clear timezone field": "Rensa fältet för tidszon", @@ -174,22 +228,32 @@ "Click to upload": "Klicka för att ladda upp", "Close": "Stäng", "Close comments for all (except for admins)": "Stäng kommentarerna för alla (förutom administratörer)", + "Close map": "Stäng karta", "Closed": "Stängd", "Comment body": "Kommentarskropp", "Comment deleted": "Kommentar raderad", + "Comment deleted and report resolved": "Kommentar raderad och anmälan löst", + "Comment from a private conversation": "Kommentar från en privat konversation", + "Comment from an event announcement": "Kommentar från ett evenemangsmeddelande", "Comment from {'@'}{username} reported": "Kommentaren från {'@'}{username} rapporterades", "Comment text can't be empty": "Kommentartexten kan inte vara tom", + "Comment under event {eventTitle}": "Kommentar under evenemang {eventTitle}", "Comments": "Kommentarer", "Comments are closed for everybody else.": "Kommentarer är stängda för alla andra.", + "Confirm": "Bekräfta", "Confirm my participation": "Bekräfta mitt deltagande", "Confirm my particpation": "Bekräfta mitt deltagande", - "Confirm participation": "", + "Confirm participation": "Bekräfta deltagande", + "Confirm user": "Bekräfta användare", "Confirmed": "Bekräftad", "Confirmed at": "Bekräftades vid", "Confirmed: Will happen": "Fastställt: Kommer ske", "Congratulations, your account is now created!": "Grattis, ditt konto är nu skapat!", "Contact": "Kontakta", + "Continue": "Fortsätt", "Continue editing": "Fortsätt redigera", + "Conversation with {participants}": "Konversation med {participants}", + "Conversations": "Konversationer", "Cookies and Local storage": "Kakor och lokal lagring", "Copy URL to clipboard": "Kopiera URL till urklipp", "Copy details to clipboard": "Kopiera detaljer till urklipp", @@ -202,18 +266,23 @@ "Create a new group": "Skapa en ny grupp", "Create a new identity": "Skapa en ny identitet", "Create a new list": "Skapa en ny lista", + "Create a new metadata element": "Skapa ett nytt metadataelement", "Create a new profile": "Skapa en ny profil", "Create a pad": "Skapa en padda", "Create a videoconference": "Skapa en videokonferens", "Create an account": "Skapa ett konto", - "Create discussion": "", + "Create discussion": "Skapa diskussion", "Create event": "Skapa evenemang", + "Create feed tokens": "Skapa flödes-tokens", "Create group": "Skapa grupp", - "Create identity": "", + "Create group discussions": "Skapa gruppdiskussioner", + "Create group resources": "Skapa gruppresurser", + "Create identity": "Skapa identitet", "Create my event": "Skapa mitt evenemang", "Create my group": "Skapa min grupp", "Create my profile": "Skapa min profil", "Create new links": "Skapa nya länkar", + "Create new profiles": "Skapa nya profiler", "Create resource": "Skapa en resurs", "Create the discussion": "Skapa diskussionen", "Create to-do lists for all the tasks you need to do, assign them and set due dates.": "Skapa att göra-listor för alla uppgifter du behöver göra, tilldela dem och ange förfallodatum.", @@ -226,11 +295,13 @@ "Custom URL": "Anpassad länk", "Custom text": "Anpassad text", "Daily email summary": "Daglig mejlsammanfattning", + "Dark": "Mörkt", "Dashboard": "Kontrollpanel", "Date": "Datum", "Date and time": "Datum och tid", "Date and time settings": "Datum- och tidsinställningar", "Date parameters": "Datumparametrar", + "Deactivate notifications": "Avaktivera aviseringar", "Decline": "Neka", "Decrease": "Minska", "Default": "Standard", @@ -238,13 +309,24 @@ "Default Mobilizon terms": "Standardvillkor för Mobilizon", "Delete": "Radera", "Delete account": "Radera konto", + "Delete comment": "Radera kommentar", + "Delete comment and resolve report": "Radera kommentar och stäng anmälan", + "Delete comments": "Radera kommentarer", "Delete conversation": "Ta bort konversationen", "Delete discussion": "Radera diskussion", "Delete event": "Radera evenemang", + "Delete event and resolve report": "Radera evenemang och stäng anmälan", + "Delete events": "Radera evenemang", "Delete everything": "Radera allting", + "Delete feed tokens": "Radera flödes-tokens", "Delete group": "Radera grupp", + "Delete group discussions": "Radera gruppdiskussioner", + "Delete group posts": "Ta bort gruppinlägg", + "Delete group resources": "Radera gruppresurser", "Delete my account": "Radera mitt konto", "Delete post": "Radera inlägg", + "Delete profiles": "Radera profiler", + "Delete this conversation": "Radera denna konversation", "Delete this discussion": "Radera denna diskussion", "Delete this identity": "Radera den här identiteten", "Delete your identity": "Radera din identitet", @@ -255,21 +337,28 @@ "Deleting my account will delete all of my identities.": "Genom att radera mitt konto, tas även mina identiteter bort.", "Deleting your Mobilizon account": "Radera ditt Mobilizon-konto", "Demote": "Degradera", + "Describe your event": "Beskriv ditt evenemang", "Description": "Beskrivning", "Details": "Detaljer", + "Device activation": "Enhetsaktivering", "Didn't receive the instructions?": "Fick inte instruktionerna?", "Disabled": "avaktiverad", "Discussions": "Diskussioner", - "Discussions list": "", + "Discussions list": "Diskussionslista", "Display name": "Visa namn", "Display participation price": "Visa pris för deltagande", "Displayed nickname": "Visat smeknamn", "Displayed on homepage and meta tags. Describe what Mobilizon is and what makes this instance special in a single paragraph.": "Visas på hemsida och metataggar. Beskriv vad Mobilizon är och vad som gör denna instans speciell i ett enda stycke.", + "Distance": "Avstånd", "Do not receive any mail": "Motta inga mejl", + "Do you really want to suspend the account « {emailAccount} » ?": "Vill du verkligen stänga av kontot « {emailAccount} » ?", + "Do you really want to suspend this account? All of the user's profiles will be deleted.": "Vill du verkligen stänga av det här kontot? Alla användarens profiler kommer att raderas.", + "Do you really want to suspend this profile? All of the profiles content will be deleted.": "Vill du verkligen stänga av den här profilen? Allt innehåll i profilen kommer att raderas.", "Do you wish to {create_event} or {explore_events}?": "Vill du {create_event} eller {explore_events}?", "Do you wish to {create_group} or {explore_groups}?": "Vill du {skapa_grupp} eller {utforska_grupper}?", "Does the event needs to be confirmed later or is it cancelled?": "Måste evenemanget bekräftas senare eller är det inställt?", "Domain": "Domän", + "Domain or instance name": "Domän- eller instansnamn", "Draft": "Utkast", "Drafts": "Utkast", "Due on": "Förfaller den", @@ -277,6 +366,7 @@ "Edit": "Redigera", "Edit post": "Redigera inlägg", "Edit profile {profile}": "Redigera profil {profile}", + "Edit user email": "Redigera användarens e-post", "Edited {ago}": "Redigera {ago}", "Edited {relative_time} ago": "Redigerad {relative_time} sedan", "Eg: Stockholm, Dance, Chess…": "E.g.: Stockholm, Dans, Schack…", @@ -284,14 +374,16 @@ "Either the account is already validated, either the validation token is incorrect.": "Antingen är kontot redan validerat eller så är valideringstoken inkorrekt.", "Either the email has already been changed, either the validation token is incorrect.": "Antingen så har emailadressen redan ändrats eller så är valideringstoken felaktigt.", "Either the participation request has already been validated, either the validation token is incorrect.": "Antingen har begäran om deltagande redan validerats eller så är valideringstoken felaktig.", + "Either your participation has already been cancelled, either the validation token is incorrect.": "Antingen har ditt deltagande redan avbokats, eller så är valideringstoken felaktig.", "Element title": "Elementtitel", "Element value": "Elementvärde", "Email": "E-post", "Email address": "Mejladress", - "Email validate": "", - "Emails usually don't contain capitals, make sure you haven't made a typo.": "", + "Email validate": "E-post validera", + "Emails usually don't contain capitals, make sure you haven't made a typo.": "E-postmeddelanden innehåller vanligtvis inte versaler, se till att du inte har gjort ett stavfel.", "Enabled": "Aktiverad", "Ends on…": "Slutar…", + "Enter the code displayed on your device": "Ange koden som visas på din enhet", "Enter the link URL": "Skriv in länken", "Enter your email address below, and we'll email you instructions on how to change your password.": "Fyll i din mejladress nedan, så mejlar vi dig instruktioner för hu du återställer ditt lösenord.", "Enter your own privacy policy. HTML tags allowed. The {mobilizon_privacy_policy} is provided as template.": "Ange din egen integritetspolicy. HTML-taggar tillåtna. {mobilizon_privacy_policy} tillhandahålls som mall.", @@ -300,6 +392,7 @@ "Error details copied!": "Felmeddelandedetaljer kopierade!", "Error message": "Felmeddelande", "Error stacktrace": "Stacktrace för fel", + "Error while cancelling your participation": "Fel vid avbokning av ditt deltagande", "Error while changing email": "Fel vid byte av e-post", "Error while loading the preview": "Fel vid laddning av förhandsgranskningen", "Error while login with {provider}. Retry or login another way.": "Fel vid inloggning med {provider}. Försök igen eller logga in på annat sätt.", @@ -312,29 +405,40 @@ "Error while validating participation request": "Fel vid validering av deltagandeförfrågan", "Etherpad notes": "Etherpad-anteckningar", "Ethical alternative to Facebook events, groups and pages, Mobilizon is a tool designed to serve you. Period.": "Etiska alternativ till Facebookevenemang, grupper och sidor. Mobilizon är ett verktyg utformat för att tjäna dig. Punkt.", + "Ethical alternative to Facebook events, groups and pages, Mobilizon is a {tool_designed_to_serve_you}. Period.": "Etiskt alternativ till Facebooks evenemang, grupper och sidor. Mobilizon är ett {tool_designed_to_serve_you}. Punkt.", "Event": "Evenemang", "Event URL": "Evenemangs-URL", "Event already passed": "Evenemanget är över", "Event cancelled": "Evenemanget är inställt", "Event creation": "Evenemangskapande", + "Event date": "Evenemangsdatum", + "Event deleted": "Evenemang raderat", + "Event deleted and report resolved": "Evenemanget raderat och anmälan stängd", "Event description body": "Evenemangsbeskrivning kropp", "Event edition": "Evenemangredigerande", "Event list": "Evenemanglista", "Event metadata": "Evenemangsmetadata", "Event page settings": "Evenemangsidans inställningar", + "Event status": "Evenemangsstatus", "Event timezone will default to the timezone of the event's address if there is one, or to your own timezone setting.": "Tidszon för evenemanget kommer som standard att vara tidszonen för evenemangets adress om det finns en sådan, eller din egen tidszoninställning.", "Event to be confirmed": "Evenemang ska bekräftas", "Event {eventTitle} deleted": "Evenemang {eventTitle} raderat", "Event {eventTitle} reported": "Evenemang {eventTitle} rapporterat", "Events": "Evenemang", + "Events close to you": "Evenemang nära dig", "Events nearby": "Evenemang i närheten", + "Events nearby {position}": "Evenemang i närheten av {position}", "Events tagged with {tag}": "Event taggade med {tag}", "Everything": "Allt", "Ex: mobilizon.fr": "T.ex: mobilizon.fr", "Ex: someone@mobilizon.org": "Till exempel: någon@mobilizon.org", + "Ex: someone{'@'}mobilizon.org": "Ex: någon{'@'}mobilizon.org", "Explore": "Utforska", "Explore events": "Utforska evenemang", + "Explore!": "Utforska!", "Export": "Exportera", + "External provider URL": "URL för extern leverantör", + "External registration": "Extern registrering", "Failed to get location.": "Lyckades inte hitta platsen.", "Failed to save admin settings": "Det gick inte att spara admininställningar", "Featured events": "Utvalda evenemang", @@ -349,19 +453,29 @@ "Find an instance": "Hitta en instans", "Find another instance": "Hitta en annan instans", "Find or add an element": "Hitta eller lägg till ett element", - "First steps": "", - "Follow": "", + "First steps": "De första stegen", + "Follow": "Följ", + "Follow a new instance": "Följ en ny instans", + "Follow instance": "Följ instans", + "Follow request pending approval": "Följbegäran väntar på godkännande", + "Follow requests will be approved by a group moderator": "Följningsförfrågningar kommer att godkännas av en gruppmoderator", + "Follow status": "Följstatus", + "Followed": "Följer", + "Followed, pending response": "Följt, väntar på svar", "Follower": "Följare", "Followers": "Följare", "Followers will receive new public events and posts.": "Följare kommer att få nya offentliga händelser och inlägg.", - "Following the group will allow you to be informed of the {group_upcoming_public_events}, whereas joining the group means you will {access_to_group_private_content_as_well}, including group discussions, group resources and members-only posts.": "", + "Following": "Följer", + "Following the group will allow you to be informed of the {group_upcoming_public_events}, whereas joining the group means you will {access_to_group_private_content_as_well}, including group discussions, group resources and members-only posts.": "Genom att följa gruppen kan du få information om {group_upcoming_public_events}, medans genom att gå med i gruppen får du {access_to_group_private_content_as_well}, inklusive gruppdiskussioner, gruppresurser och inlägg som endast är tillgängliga för medlemmar.", "Followings": "Följer", + "Follows us": "Följer oss", + "Follows us, pending approval": "Följer oss, väntar på godkännande", "For instance: London": "Till exempel: London", "For instance: London, Taekwondo, Architecture…": "Till exempel: London, Taekwondo, Arkitektur …", "Forgot your password ?": "Glömt ditt lösenord?", "Forgot your password?": "Glömt ditt lösenord?", "Framadate poll": "Framadate-poll", - "From my groups": "", + "From my groups": "Från mina grupper", "From the {startDate} at {startTime} to the {endDate}": "Från {startDate} klockan {startTime} till {endDate}", "From the {startDate} at {startTime} to the {endDate} at {endTime}": "Från {startDate} klockan {startTime} till {endDate} klockan {endTime}", "From the {startDate} to the {endDate}": "Från {startDate} till {endDate}", @@ -371,12 +485,16 @@ "General": "Allmänt", "General information": "Generell information", "General settings": "Allmänna inställningar", + "Geolocate me": "Geolokalisera mig", "Geolocation was not determined in time.": "Geolokalisering fastställdes inte i tid.", + "Get informed of the upcoming public events": "Få information om kommande offentliga evenemang", "Getting location": "Hämtar plats", "Getting there": "Ta sig dit", "Glossary": "Ordlista", "Go": "Gå", + "Go to booking": "Gå till bokning", "Go to the event page": "Gå till evenemangssidan", + "Go!": "Kör!", "Google Meet": "Google Meet", "Group": "Grupp", "Group Followers": "Gruppföljare", @@ -386,8 +504,9 @@ "Group address": "Gruppadress", "Group description body": "Gruppbeskrivning kropp", "Group display name": "Gruppens visningsnamn", + "Group members": "Gruppmedlemmar", "Group name": "Gruppnamn", - "Group profiles": "", + "Group profiles": "Grupprofiler", "Group settings": "Gruppinställningar", "Group settings saved": "Gruppinställningar sparade", "Group short description": "Kort gruppbeskrivning", @@ -401,23 +520,29 @@ "Heading Level 2": "Rubrik Nivå 2", "Heading Level 3": "Rubrik Nivå 3", "Headline picture": "Huvudbild", + "Hide filters": "Dölj filter", "Hide replies": "Dölj svar", "Home": "Hem", "Home to {number} users": "Hem för {number} användare", - "Homepage": "", + "Homepage": "Hemsida", "Hourly email summary": "Timvis mejlsammanfattning", "I agree to the {instanceRules} and {termsOfService}": "Jag godkänner {instanceRules} och {termsOfService}", "I create an identity": "Jag skapar en identitet", "I don't have a Mobilizon account": "Jag har inget Mobilizon konto", "I have a Mobilizon account": "Jag har ett Mobilizon konto", "I have an account on another Mobilizon instance.": "Jag har ett konto i en annan Mobilizon instans.", + "I have an account on {instance}.": "Jag har ett konto på {instance}.", "I participate": "Jag deltar", "I want to allow people to participate without an account.": "Jag vill låta personer utan ett konto delta.", "I want to approve every participation request": "Jag vill godkänna varje deltagande", + "I want to manage the registration with an external provider": "Jag vill hantera registreringen med en extern leverantör", "I've been mentionned in a comment under an event": "Jag har blivit omnämnd i en kommentar under ett evenemang", + "I've been mentionned in a conversation": "Jag har nämnts i en konversation", "I've been mentionned in a group discussion": "Jag har blivit omnämnd i en gruppdiskussion", + "I've clicked on X, then on Y": "Jag har klickat på X, sedan på Y", "ICS feed for events": "ICS-flöde för evenemang", "ICS/WebCal Feed": "ICS/WebCal-flöde", + "IP Address": "IP-adress", "Identities": "Identiteter", "Identity {displayName} created": "Identiteten {displayName} skapad", "Identity {displayName} deleted": "Identiteten {displayName} raderad", @@ -429,15 +554,17 @@ "If you have opted for manual validation of participants, Mobilizon will send you an email to inform you of new participations to be processed. You can choose the frequency of these notifications below.": "Om du har valt manuell validering av deltagare kommer Mobilizon att skicka ett e-postmeddelande till dig för att informera dig om nya deltagare som ska behandlas. Du kan välja frekvens för dessa meddelanden nedan.", "If you want, you may send a message to the event organizer here.": "Om du vill så kan du skicka ett meddelande till händelsens organisatör här.", "Ignore": "Ignorera", - "In person": "", + "Illustration picture for “{category}” by {author} on {source} ({license})": "Illustrationsbild för \"{category}\" av {author} på {source} ({license})", + "In person": "Personligen", "In the following context, an application is a software, either provided by the Mobilizon team or by a 3rd-party, used to interact with your instance.": "I den här kontexten är en applikation mjukvara som tillhanahålls av Mobilizon-teamet eller av tredje part, och som använd för att interagera med din instans.", "In the past": "I det förflutna", + "In this instance's network": "På den här instansens nätverk", "Increase": "Öka", "Instance": "Instans", "Instance Long Description": "Kort beskrivning av instansen", "Instance Name": "Instansnamn", "Instance Privacy Policy": "Instansens integritetspolicy", - "Instance Privacy Policy Source": "Instans Integritetspolicy Källa", + "Instance Privacy Policy Source": "Källa till instansens Integritetspolicy", "Instance Privacy Policy URL": "URL för instansens integritetspolicy", "Instance Rules": "Instansregler", "Instance Short Description": "Kort beskrivning av instansen", @@ -455,7 +582,7 @@ "Instances following you": "Instanser som följer dig", "Instances you follow": "Instanser du följer", "Integrate this event with 3rd-party tools and show metadata for the event.": "Integrera detta evenemang med tredjepartsverktyg och visa metadata för evenemanget.", - "Interact": "", + "Interact": "Interagera", "Interact with a remote content": "Interagera med distansinnehåll", "Invite a new member": "Bjud in en ny medlem", "Invite member": "Bjud in en medlem", @@ -463,17 +590,23 @@ "It is possible that the content is not accessible on this instance, because this instance has blocked the profiles or groups behind this content.": "Det är möjligt att innehållet inte är tillgängligt på denna instans, eftersom denna instans har blockerat profilerna eller grupperna bakom detta innehåll.", "Italic": "Kursiv", "Jitsi Meet": "Jitsi Meet", + "Join": "Delta", "Join {instance}, a Mobilizon instance": "Gå med i {instance}, en Mobilizon instans", "Join group": "Gå med i grupp", "Join group {group}": "Gå med i grupp {group}", + "Join {instance}, a Mobilizon instance": "Gå med i {instance}, en Mobilizon-instans", "Keep the entire conversation about a specific topic together on a single page.": "Håll hela diskussionen om ett specifikt ämne samlad på en enda sida.", "Key words": "Nyckelord", + "Keyword, event title, group name, etc.": "Nyckelord, evenemangsrubrik, gruppnamn, etc.", "Language": "Språk", + "Languages": "Språk", "Last IP adress": "Senaste IP-adress", "Last group created": "Senaste grupp skapad", "Last published event": "Senast publicerade evenemang", "Last published events": "Senast publicerade evenemang", + "Last seen on": "Senast sedd den", "Last sign-in": "Senaste inloggning", + "Last used on {last_used_date}": "Senast använd den {last_used_date}", "Last week": "Senaste veckan", "Latest posts": "Senaste inläggen", "Learn more": "Lär dig mer", @@ -482,17 +615,21 @@ "Least recently published": "Äldst publicerad", "Leave": "Lämna", "Leave event": "Lämna evenemang", - "Leave group": "", + "Leave group": "Lämna grupp", "Leaving event \"{title}\"": "Lämnar evenemanget \"{title}\"", "Legal": "Juridisk information", "Let's define a few settings": "Dags att fixa några inställningar", "License": "Licens", + "Light": "Ljust", "Limited number of places": "Begränsat antal platser", + "List": "Lista", + "List of conversations": "Lista över konversationer", "List title": "Listrubrik", "Live": "Direktsändning", "Load more": "Ladda fler", "Load more activities": "Ladda fler aktiviteter", "Loading comments…": "Laddar kommentarer…", + "Loading map": "Laddar karta", "Local": "Lokalt", "Local time ({timezone})": "Lokal tid ({timezone})", "Local times ({timezone})": "Lokala tider ({timezone})", @@ -505,42 +642,63 @@ "Login on {instance}": "Logga in på {instance}", "Login status": "Inloggningsstatus", "Main languages you/your moderators speak": "Språk som du eller dina moderatorer behärskar", + "Make sure that all words are spelled correctly.": "Se till att alla ord är korrekt stavade.", + "Manage activity settings": "Hantera aktivitetsinställningar", + "Manage event participations": "Hantera deltagande i evenemang", + "Manage group members": "Hantera gruppmedlemmar", + "Manage group memberships": "Hantera gruppmedlemskap", "Manage participations": "Hantera deltaganden", + "Manage push notification settings": "Hantera inställningar för push-notiser", "Manually approve new followers": "Manuellt godkänn nya följare", + "Manually enter address": "Ange adress manuellt", "Manually invite new members": "Manuellt bjuda in nya medlemmar", + "Map": "Karta", "Mark as resolved": "Markera som löst", + "Maybe the content was removed by the author or a moderator": "Kanske har innehållet tagits bort av författaren eller en moderator", "Member": "Medlem", "Members": "Medlemmar", + "Members will also access private sections like discussions, resources and restricted posts.": "Medlemmar har också tillgång till privata sektioner som diskussioner, resurser och begränsade inlägg.", "Members-only post": "Inlägg endast för medlemmar", + "Membership requests will be approved by a group moderator": "Medlemskapsförfrågningar kommer att godkännas av en gruppmoderator", + "Memberships": "Medlemskap", "Mentions": "Omnämnanden", "Message": "Meddelande", + "Message body": "Meddelandets huvuddel", "Microsoft Teams": "Microsoft Teams", "Mobilizon": "Mobilizon", "Mobilizon is a federated network. You can interact with this event from a different server.": "Mobilizon är ett federerat nätverk. Du kan interagera med den här händelsen från en annan server.", "Mobilizon is a federated software, meaning you can interact - depending on your admin's federation settings - with content from other instances, such as joining groups or events that were created elsewhere.": "Mobilizon är en federerad programvara, vilket innebär att du - beroende på dina federationsinställningar - kan interagera med innehåll från andra instanser, t.ex. gå med i grupper eller evenemang som skapats någon annanstans.", "Mobilizon is a tool that helps you find, create and organise events.": "Mobilizon är ett verktyg som hjälper dig att hitta, skapa och organisera evenemang.", + "Mobilizon is a tool that helps you {find_create_organize_events}.": "Mobilizon är ett verktyg som hjälper dig att {find_create_organize_events}.", "Mobilizon is not a giant platform, but a multitude of interconnected Mobilizon websites.": "Mobilizon är inte en gigantisk plattform, utan en mängd sammankopplade Mobilizon-webbplatser.", + "Mobilizon is not a giant platform, but a {multitude_of_interconnected_mobilizon_websites}.": "Mobilizon är inte en gigantisk plattform, utan en {multitude_of_interconnected_mobilizon_websites}.", "Mobilizon software": "Mobilizon-mjukvara", "Mobilizon uses a system of profiles to compartiment your activities. You will be able to create as many profiles as you want.": "Mobilizon använder ett system med profiler för att jämföra dina aktiviteter. Du kommer att kunna skapa så många profiler som du vill.", "Mobilizon version": "Mobilizon-version", "Mobilizon will send you an email when the events you are attending have important changes: date and time, address, confirmation or cancellation, etc.": "Mobilizon skickar dig ett mejl när evenemangen du deltar i har viktiga ändringar: datum och tid, plats, bekräftelse eller avbokning, etc.", - "Moderate new members": "", + "Moderate new members": "Moderera nya medlemmar", "Moderated comments (shown after approval)": "Modererade kommentarer (visas när de godkänts)", "Moderation": "Moderering", "Moderation log": "Moderationslogg", "Moderation logs": "Moderationsloggar", "Moderator": "Moderator", + "Modify all of your account's data": "Ändra alla data för ditt konto", + "More options": "Fler alternativ", + "Most recently published": "Senast publicerade", "Move": "Flytta", "Move \"{resourceName}\"": "Flytta \"{resourceName}\"", "Move resource to the root folder": "Flytta resurs till rotmappen", "Move resource to {folder}": "Flytta resurs till {mapp}", "My account": "Mitt konto", "My events": "Mina evenemang", + "My federated identity ends in {domain}": "Min federerade identitet slutar på {domain}", "My groups": "Mina grupper", "My identities": "Mina identiteter", "NOTE! The default terms have not been checked over by a lawyer and thus are unlikely to provide full legal protection for all situations for an instance admin using them. They are also not specific to all countries and jurisdictions. If you are unsure, please check with a lawyer.": "OBS! Standardvillkoren har inte kollats av en jurist, och är inte anpassade för alla länder eller jurisdiktioner. Om du är osäker, stäm av dem med en jurist.", "Name": "Namn", - "Navigated to {pageTitle}": "", + "Navigated to {pageTitle}": "Navigerade till {pageTitle}", + "Never used": "Aldrig använd", + "New announcement": "Nytt tillkännagivande", "New discussion": "Ny diskussion", "New email": "Nytt e-postmeddelande", "New folder": "Ny mapp", @@ -549,28 +707,37 @@ "New note": "Ny anteckning", "New password": "Nytt lösenord", "New post": "Nytt inlägg", + "New private message": "Nytt privat meddelande", "New profile": "Ny profil", "Next": "Nästa", "Next month": "Nästa månad", "Next page": "Nästa sida", "Next week": "Nästa vecka", "No address defined": "Ingen adress fastställd", + "No apps authorized yet": "Inga appar godkända ännu", + "No categories with public upcoming events on this instance were found.": "Inga kategorier med offentliga kommande evenemang på denna instans hittades.", "No closed reports yet": "Inga stängda rapporter än", "No comment": "Ingen kommentar", "No comments yet": "Inga kommentarer än", + "No content found": "Inget innehåll hittades", "No discussions yet": "Inga diskussioner ännu", "No end date": "Inget slutdatum", + "No event found at this address": "Inga evenemang hittades på denna adress", "No events found": "Inga evenemang hittade", + "No events found for {search}": "Inga händelser hittades för {search}", "No follower matches the filters": "Ingen följare matchar filtren", "No group found": "Ingen grupp hittades", "No group matches the filters": "Ingen grupp matchar filtren", - "No group member found": "", + "No group member found": "Ingen gruppmedlem hittades", "No groups found": "Inga grupper hittades", + "No groups found for {search}": "Inga grupper hittades för {search}", "No information": "Ingen information", "No instance follows your instance yet.": "Ingen instans följer din instans än.", + "No instance found.": "Ingen instans hittades.", "No instance to approve|Approve instance|Approve {number} instances": "Ingen instans att godkänna|Godkänn instans|Godkänn {number} instanser", "No instance to reject|Reject instance|Reject {number} instances": "Ingen instans att avvisa|Avvisa instans|Avvisa {number} instanser", "No instance to remove|Remove instance|Remove {number} instances": "Inga instanser att ta bort|Ta bort instans|Ta bort {number} instanser", + "No instances match this filter. Try resetting filter fields?": "Inga instanser matchar detta filter. Försök återställa filterfälten?", "No languages found": "Inga språk hittades", "No member matches the filters": "Ingen medlem matchar filtren", "No members found": "Inga medlemmar hittades", @@ -596,7 +763,11 @@ "No resources yet": "Inga resurser ännu", "No results for \"{queryText}\"": "Inga resultat för \"{queryText}\"", "No results for {search}": "Inga resultat för {search}", + "No results found": "Inga träffar", + "No results found for {search}": "Inga resultat hittades för {search}", "No rules defined yet.": "Inga regler definierade ännu.", + "No user matches the filter": "Ingen användare matchar filtret", + "No user matches the filters": "Ingen användare matchar filtren", "None": "Ingen", "Not accessible with a wheelchair": "Ej tillgänglig med rullstol", "Not approved": "Ej godkända", @@ -608,17 +779,23 @@ "Notifications": "Notifikationer", "Notifications for manually approved participations to an event": "Notifieringar för manuellt godkända deltaganden i ett evenemang", "Notify participants": "Meddela deltagare", + "Notify the user of the change": "Meddela användaren om ändringen", "Now, create your first profile:": "Skapa nu din första profil:", + "Number of members": "Antal medlemmar", "Number of places": "Antalet platser", "OK": "OK", "Old password": "Gammalt lösenord", + "On foot": "Till fots", + "On the Fediverse": "På Fediverse", "On {date}": "På {date}", "On {date} ending at {endTime}": "På {date}, slutar vid {endTime}", "On {date} from {startTime} to {endTime}": "På {date} från {startTime} till {endTime}", "On {date} starting at {startTime}": "På {date} startar vid {startTime}", "On {instance} and other federated instances": "På {instance} och andra federerade instanser", - "Online": "", + "Online": "Online", + "Online events": "Online-evenemang", "Online ticketing": "Biljettförsäljning online", + "Online upcoming events": "Kommande evenemang online", "Only accessible through link": "Endast tillgängligt via länk", "Only accessible through link (private)": "Endast tillgänglig via länk (privat)", "Only accessible to members of the group": "Endast tillgängligt för gruppmedlemmar", @@ -626,16 +803,21 @@ "Only group members can access discussions": "Endast gruppmedlemmar har tillgång till diskussioner", "Only group moderators can create, edit and delete events.": "Endast gruppmoderatorer kan skapa, redigera och ta bort inlägg.", "Only group moderators can create, edit and delete posts.": "Endast gruppmoderatorer kan skapa, redigera och ta bort inlägg.", - "Only registered users may fetch remote events from their URL.": "", + "Only instances with an application actor can be followed": "Endast instanser med en applikationsaktör kan följas", + "Only registered users may fetch remote events from their URL.": "Endast registrerade användare kan hämta fjärrhändelser från sin URL.", "Open": "Öppna", "Open a topic on our forum": "Öppna ett ämne i vårt forum", "Open an issue on our bug tracker (advanced users)": "Öppna ett problem i vår bugtracker (avancerade användare)", + "Open conversations": "Öppna konversationer", + "Open main menu": "Öppna huvudmenyn", + "Open user menu": "Öppna användarmenyn", "Opened reports": "Öppnade rapporter", "Or": "Eller", "Ordered list": "Ordnad lista", "Organized": "Organiserad", "Organized by": "Organiseras av", "Organized by {name}": "Organiserades av {namn}", + "Organized events": "Organiserade evenemang", "Organizer": "Organisatör", "Organizer notifications": "Organisatörsnotifieringar", "Organizers": "Organisatörer", @@ -643,7 +825,10 @@ "Other actions": "Andra åtgärder", "Other notification options:": "Andra notifieringsinställningar:", "Other software may also support this.": "Annan mjukvara kanske också stöttar det här.", + "Other users with the same IP address": "Andra användare med samma IP-adress", + "Other users with the same email domain": "Andra användare med samma e-postdomän", "Otherwise this identity will just be removed from the group administrators.": "Annars kommer den här identiteten bara raderas från gruppens administratörer.", + "Owncast": "Owncast", "Page": "Sida", "Page limited to my group (asks for auth)": "Sida begränsad till min grupp (frågar efter autentisering)", "Page not found": "Sidan hittades inte", @@ -651,14 +836,15 @@ "Partially accessible with a wheelchair": "Delvis tillgänglig med rullstol", "Participant": "Deltagare", "Participants": "Deltagare", + "Participants to {eventTitle}": "Deltagare till {eventTitle}", "Participate": "Delta", "Participate using your email address": "Delta genom att använda din e-postadress", "Participation approval": "Godkännande för att delta", "Participation confirmation": "Bekräftelse för att delta", "Participation notifications": "Deltagarnotifieringar", "Participation requested!": "Du har ansökt om deltagande!", - "Participation with account": "", - "Participation without account": "", + "Participation with account": "Deltagande med konto", + "Participation without account": "Deltagande utan konto", "Participations": "Deltaganden", "Password": "Lösenord", "Password (confirmation)": "Lösenord (bekräftelse)", @@ -668,6 +854,7 @@ "PeerTube replay": "PeerTube-återuppspelning", "Pending": "Avvaktande", "Personal feeds": "Personliga flöden", + "Photo by {author} on {source}": "Foto av {author} på {source}", "Pick": "Välj", "Pick a profile or a group": "Välj en profil eller en grupp", "Pick an identity": "Välj en identitet", @@ -679,28 +866,33 @@ "Please enter your password to confirm this action.": "Vänligen fyll i ditt lösenord för att bekräfta den här åtgärden.", "Please make sure the address is correct and that the page hasn't been moved.": "Vänligen se till att adressen är korrekt och att sidan inte har blivit flyttad.", "Please read the {fullRules} published by {instance}'s administrators.": "Läs de {fullständiga regler} som publicerats av {instans}s administratörer.", + "Popular groups close to you": "Populära grupper nära dig", + "Popular groups nearby {position}": "Populära grupper i närheten av {position}", "Post": "Publicera", - "Post URL": "", + "Post URL": "Inläggs-URL", "Post a comment": "Skriv en kommentar", "Post a reply": "Skriv ett svar", "Post body": "Inläggskropp", - "Post {eventTitle} reported": "", + "Post comments": "Publicera kommentarer", + "Post {eventTitle} reported": "Inlägg {eventTitle} anmält", "Postal Code": "Postkod", "Posts": "Inlägg", - "Powered by Mobilizon": "", + "Powered by Mobilizon": "Drivs av Mobilizon", "Powered by {mobilizon}. © 2018 - {date} The Mobilizon Contributors - Made with the financial support of {contributors}.": "Drivs av {mobilizon}. © 2018 - {datum} Mobilizon bidragsgivare - Gjord med ekonomiskt stöd av {bidragsgivare}.", "Preferences": "Egenskaper", "Previous": "Föregående", + "Previous email": "Tidigare e-postadress", "Previous month": "Föregående månad", "Previous page": "Föregående sida", "Price sheet": "Prislista", - "Privacy": "", + "Privacy": "Integritet", "Privacy Policy": "Integritetspolicy", "Privacy policy": "Integritetspolicy", "Private event": "Privat evenemang", "Private feeds": "Privata flöden", "Profile": "Profil", "Profile feeds": "Profilflöden", + "Profile suspended and report resolved": "Profil avstängd och anmälan löst", "Profiles": "Profiler", "Profiles and federation": "Profiler och federation", "Promote": "Befordra", @@ -713,17 +905,26 @@ "Public preview": "Publik förhandsvisning", "Publication date": "Publiceringsdatum", "Publish": "Publicera", - "Published by {name}": "", + "Publish events": "Publicera evenemang", + "Publish group posts": "Publicera gruppinlägg", + "Published by {name}": "Publicerad av {name}", "Published events with {comments} comments and {participations} confirmed participations": "Publicera evenemang med {comments}kommentarer och {participations} bekräftade deltaganden", + "Published events with {comments} comments and {participations} confirmed participations": "Publicerade evenemang med {comments} kommentarer och {participations} bekräftade deltagare", "Push": "Push", "Quote": "Citat", "RSS/Atom Feed": "RSS/Atom-flöde", "Radius": "Avstånd", + "Read all of your account's data": "Läs alla uppgifter om ditt konto", + "Read user activity settings": "Läs inställningar för användaraktivitet", + "Read user media": "Läsa användarmedia", + "Read user memberships": "Läsa användarmedlemskap", + "Read user participations": "Läsa användarnas deltagande", + "Read user settings": "Läs användarinställningar", "Recap every week": "Sammanfatta varje vecka", "Receive one email for each activity": "Få ett e-postmeddelande för varje aktivitet", "Receive one email per request": "Ta emot ett mejl per förfrågan", "Redirecting in progress…": "Omdirigering pågår…", - "Redirecting to Mobilizon": "", + "Redirecting to Mobilizon": "Omdirigering till Mobilizon", "Redirecting to content…": "Omdirigerar till innehåll…", "Redo": "Gör om", "Refresh profile": "Uppdatera profil", @@ -738,11 +939,13 @@ "Registrations": "Registreringar", "Registrations are restricted by allowlisting.": "Registreringar begränsas av vitlisting.", "Reject": "Avfärda", - "Reject member": "", + "Reject follow": "Avfärda följning", + "Reject member": "Avfärda medlem", "Rejected": "Avvisades", "Remember my participation in this browser": "Kom ihåg mitt deltagande i denna webbläsare", "Remove": "Ta bort", "Remove link": "Ta bort länk", + "Remove uploaded media": "Ta bort uppladdad media", "Rename": "Byt namn på", "Rename resource": "Byt namn på resursen", "Reopen": "Öppna igen", @@ -750,29 +953,41 @@ "Reply": "Svara", "Report": "Rapportera", "Report #{reportNumber}": "Rapport #{reportNumber}", + "Report as ham": "Anmäl som skräppost", + "Report as spam": "Anmäl som skräppost", + "Report as undetected spam": "Anmäl som oupptäckt skräppost", + "Report reason": "Orsak för anmälan", + "Report status": "Anmälningsstatus", "Report this comment": "Rapportera den här kommentaren", "Report this event": "Rapportera det här evenemanget", "Report this group": "Anmäl denna grupp", - "Report this post": "", + "Report this post": "Anmäl detta inlägg", "Reported": "Rapporterad", + "Reported at": "Rapporterad den", "Reported by": "Rapporterades av", + "Reported by an unknown actor": "Rapporterad av en okänd aktör", + "Reported by someone anonymously": "Rapporterad av någon anonymt", "Reported by someone on {domain}": "Rapporterades av någon på {domain}", "Reported by {reporter}": "Rapporterades av {reporter}", + "Reported content": "Anmält innehåll", "Reported group": "Anmäld grupp", "Reported identity": "Rapporterad identitet", "Reports": "Rapporter", - "Reports list": "", + "Reports list": "Lista över rapporter", "Request for participation confirmation sent": "Begäran om bekräftelse på deltagande skickad", "Resend confirmation email": "Skicka bekräftelsemailet igen", - "Resent confirmation email": "", + "Resent confirmation email": "Skicka bekräftelsemail igen", "Reset": "Återställ", + "Reset filters": "Återställ filter", "Reset my password": "Återställ mitt lösenord", - "Reset password": "", + "Reset password": "Återställ lösenord", "Resolved": "Löst", "Resource provided is not an URL": "Resursen är inte en URL", "Resources": "Resurser", "Restricted": "Begränsad", + "Return to the event page": "Återgå till evenemangssidan", "Return to the group page": "Återgå till gruppsidan", + "Revoke": "Återkalla", "Right now": "Just nu", "Role": "Roll", "Rules": "Regler", @@ -783,51 +998,69 @@ "Schedule": "Schema", "Search": "Sök", "Search events, groups, etc.": "Sök evenemang, grupper, etc.", + "Search target": "Sök på", "Searching…": "Söker…", + "Select a category": "Välj en kategori", "Select a language": "Välj språk", "Select a radius": "Välj en radie", "Select a timezone": "Välj en tidszon", + "Select all resources": "Välj alla resurser", "Select languages": "Välj språk", "Select the activities for which you wish to receive an email or a push notification.": "Välj de aktiviteter för vilka du vill få ett e-postmeddelande eller en push-avisering.", - "Send": "", + "Select this resource": "Välj denna resurs", + "Send": "Skicka", "Send email": "Skicka e-post", + "Send feedback": "Skicka feedback", "Send notification e-mails": "Skicka e-postnotifikationer", - "Send password reset": "", + "Send password reset": "Skicka återställning av lösenord", "Send the confirmation email again": "Skicka bekräftelsemejlet igen", "Send the report": "Skicka rapporten", + "Sent to {count} participants": "Skickat till inga deltagare|Skickat till en deltagare|Skickat till {count} deltagare", "Set an URL to a page with your own privacy policy.": "Ange en URL till en sida med din egen integritetspolicy.", "Set an URL to a page with your own terms.": "Ange en URL till en sida med dina egna villkor.", "Settings": "Inställningar", "Share": "Dela", "Share this event": "Dela det här evenemanget", "Share this group": "Dela denna grupp", - "Share this post": "", + "Share this post": "Dela detta inlägg", "Short bio": "Kort biografi", + "Show filters": "Visa filter", "Show map": "Visa karta", "Show me where I am": "Visa mig var jag är", "Show remaining number of places": "Visa antal lediga platser", "Show the time when the event begins": "Visa vilken tid evenemanget börjar", "Show the time when the event ends": "Visa vilken tid evenemanget slutar", - "Showing events before": "", - "Showing events starting on": "", + "Showing events before": "Visar evenemang före", + "Showing events starting on": "Visar evenemang som börjar den", "Sign Language": "Teckenspråk", "Sign in with": "Logga in med", "Sign up": "Gå med", "Since you are a new member, private content can take a few minutes to appear.": "Eftersom att du är ny i gruppen kan privat innehåll behöva några minuter innan det dyker upp.", - "Skip to main content": "", + "Skip to main content": "Hoppa till huvudinnehållet", "Smoke free": "Rökfri", "Smoking allowed": "Rökning tillåten", "Social": "Socialt", + "Software details: {software_details}": "Programvarudetaljer: {software_details}", "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary here to help you understand them better:": "Vissa begrepp som används i texten nedan kan vara svåra att greppa. Vi tillhandahåller en ordlista här för att underlätta:", + "Sorry, we wen't able to save your feedback. Don't worry, we'll try to fix this issue anyway.": "Tyvärr kunde vi inte spara din feedback. Oroa dig inte, vi ska försöka lösa problemet i alla fall.", + "Sort by": "Sortera efter", "Starts on…": "Börjar…", "Status": "Status", + "Statuses": "Statusar", + "Stop following instance": "Sluta följ instans", "Street": "Gata", "Submit": "Skicka", + "Submit to Akismet": "Skicka till Akismet", "Subtitles": "Undertexter", + "Suggestions:": "Förslag:", "Suspend": "Stäng av", "Suspend group": "Stäng av grupp", + "Suspend the account": "Stäng av kontot", + "Suspend the account?": "Stäng av kontot?", + "Suspend the profile": "Stäng av profilen", + "Suspend the profile?": "Stäng av profilen?", "Suspended": "Avstängd", - "Tag search": "", + "Tag search": "Sök efter taggar", "Task lists": "Uppgiftslistor", "Technical details": "Tekniska detaljer", "Tentative": "Preliminär", @@ -835,7 +1068,8 @@ "Terms": "Användarvillkor", "Terms of service": "Användarvillkor", "Text": "Text", - "That you follow or of which you are a member": "", + "Thanks a lot, your feedback was submitted!": "Tack så mycket, din feedback skickades in!", + "That you follow or of which you are a member": "Som du följer eller som du är medlem i", "The Big Blue Button video teleconference URL": "URL för Big Blue Button videokonferens", "The Google Meet video teleconference URL": "URL för Google Meet-videokonferens", "The Jitsi Meet video teleconference URL": "Jitsi Meet videokonferens-URLen", @@ -847,7 +1081,9 @@ "The Zoom video teleconference URL": "URL för Zoom-videokonferens", "The account's email address was changed. Check your emails to verify it.": "Kontots e-postadress ändrades. Kontrollera din e-post för att verifiera den.", "The actual number of participants may differ, as this event is hosted on another instance.": "Det faktiska antalet deltagare kan skilja sig åt, eftersom evenemanget hålls i en annan instans.", + "The calc will be created on {service}": "Räknearket kommer att skapas på {service}", "The content came from another server. Transfer an anonymous copy of the report?": "Innehållet kom rån en annan server. Överför en anonym kopia av rapporten?", + "The device code is incorrect or no longer valid.": "Enhetskoden är felaktig eller inte längre giltig.", "The draft event has been updated": "Utkastet har uppdaterats", "The event has a sign language interpreter": "Evenemanget har en teckenspråkstolk", "The event has been created as a draft": "Evenemanget har skapats som ett utkast", @@ -855,7 +1091,7 @@ "The event has been updated": "Evenemanget har uppdaterats", "The event has been updated and published": "Evenemanget har uppdaterats och publicerats", "The event hasn't got a sign language interpreter": "Evenemanget har ingen teckenspråkstolk", - "The event is fully online": "", + "The event is fully online": "Evenemanget är helt online", "The event live video contains subtitles": "Livevideon från evenemanget innehåller undertexter", "The event live video does not contain subtitles": "Livevideon från evenemanget innehåller inga undertexter", "The event organiser has chosen to validate manually participations. Do you want to add a little note to explain why you want to participate to this event?": "Evenemangets arrangör har valt att validera manuellt deltagande. Vill du lägga till en liten anteckning för att förklara varför du vill delta i det här evenemanget?", @@ -864,13 +1100,15 @@ "The event title will be ellipsed.": "Evenemangets titel kommer förkortas med en ellipsis.", "The event will show as attributed to this group.": "Händelsen kommer att visas som attribut till denna grupp.", "The event will show as attributed to this profile.": "Evenemanget kommer att visas som attribuerad denna profil.", - "The event will show as attributed to your personal profile.": "Händelsen kommer att visas som attribut i din personliga profil.", + "The event will show as attributed to your personal profile.": "Evenemanget kommer att visas som attribut i din personliga profil.", "The event {event} was created by {profile}.": "Evenemanget {event} skapades av {profile}.", "The event {event} was deleted by {profile}.": "Evenemanget {event} togs bort av {profile}.", "The event {event} was updated by {profile}.": "Evenemanget {event} uppdaterades av {profile}.", "The events you created are not shown here.": "De händelser du skapade visas inte här.", + "The following participants are groups, which means group members are able to reply to this conversation:": "Följande deltagare är grupper, vilket innebär att gruppmedlemmar kan svara på denna konversation:", + "The following user's profiles will be deleted, with all their data:": "Följande användares profiler kommer att raderas, med alla deras data:", "The geolocation prompt was denied.": "Begäran om geolokalisering nekades.", - "The group can now be joined by anyone, but new members need to be approved by an administrator.": "", + "The group can now be joined by anyone, but new members need to be approved by an administrator.": "Nu kan vem som helst gå med i gruppen, men nya medlemmar måste godkännas av en administratör.", "The group can now be joined by anyone.": "Vem som helst kan nu ansluta sig till gruppen.", "The group can now only be joined with an invite.": "En inbjudan krävs nu för att gå med i gruppen.", "The group will be publicly listed in search results and may be suggested in the explore section. Only public informations will be shown on it's page.": "Gruppen visas i sökresultat och kan rekommenderas i Utforska-delen. Endast offentlig information visas på sidan.", @@ -879,54 +1117,122 @@ "The group's physical address was changed.": "Gruppens fysiska adress ändrades.", "The group's short description was changed.": "Gruppens korta beskrivning ändrades.", "The instance administrator is the person or entity that runs this Mobilizon instance.": "Instansadministratören är den person eller enhet som driver den här Mobilizon-instansen.", - "The member was approved": "", + "The member was approved": "Medlemmen godkändes", "The member was removed from the group {group}": "Medlemmen har tagits bort från gruppen {group}", - "The membership request from {profile} was rejected": "", + "The membership request from {profile} was rejected": "Medlemskapsförfrågan från {profile} avfärdades", "The only way for your group to get new members is if an admininistrator invites them.": "Det enda sättet för din grupp att få nya medlemmar är om en administratör bjuder in dem.", "The organiser has chosen to close comments.": "Arrangören har valt att stänga kommentarerna.", + "The pad will be created on {service}": "Padden kommer att skapas på {service}", "The page you're looking for doesn't exist.": "Sidan du letar efter existerar inte.", "The password was successfully changed": "Lösenordet ändrades", "The post {post} was created by {profile}.": "Inlägget {post} skapades av {profile}.", "The post {post} was deleted by {profile}.": "Inlägget {post} togs bort av {profile}.", "The post {post} was updated by {profile}.": "Inlägget {post} uppdaterades av {profile}.", + "The provided application was not found.": "Den angivna applikationen hittades inte.", + "The report contents (eventual comments and event) and the reported profile details will be transmitted to Akismet.": "Anmälningens innehåll (eventuella kommentarer och evenemang) och de rapporterade profiluppgifterna kommer att överföras till Akismet.", "The report will be sent to the moderators of your instance. You can explain why you report this content below.": "Rapporten kommer skickas till moderatorerna på din instans. Du kan förklara varför du rapporterade det här innehållet här under.", "The selected picture is too heavy. You need to select a file smaller than {size}.": "Den valda bilden är för stor. Du måste välja en fil som är mindre än {size}.", "The technical details of the error can help developers solve the problem more easily. Please add them to your feedback.": "De tekniska detaljerna om felet kan hjälpa utvecklare att lösa problemet lättare. Lägg till dem i din feedback.", + "The user has been disabled": "Användaren har inaktiverats", + "The videoconference will be created on {service}": "Videokonferensen kommer att skapas på {service}", "The {default_privacy_policy} will be used. They will be translated in the user's language.": "{default_privacy_policy} kommer att användas. De kommer att översättas till användarens språk.", "The {default_terms} will be used. They will be translated in the user's language.": "{default_terms} kommer att användas. De kommer att översättas till användarens språk.", + "Theme": "Tema", "There are {participants} participants.": "Det är {participants} deltagare.", "There is no activity yet. Start doing some things to see activity appear here.": "Det finns ingen aktivitet ännu. Börja göra några saker för att se aktivitet visas här.", "There will be no way to recover your data.": "Det kommer inte att finnas något sätt för att återställa din data.", + "There will be no way to restore the profile's data!": "Det går inte att återställa profilens data!", + "There will be no way to restore the user's data!": "Det kommer inte att finnas något sätt att återställa användarens data!", + "There's no announcements yet": "Det finns inga tillkännagivanden ännu", + "There's no conversations yet": "Det finns inga konversationer ännu", "There's no discussions yet": "Det finns inga diskussioner ännu", + "These apps can access your account through the API. If you see here apps that you don't recognize, that don't work as expected or that you don't use anymore, you can revoke their access.": "Dessa appar kan komma åt ditt konto via API. Om du ser appar som du inte känner igen, som inte fungerar som förväntat eller som du inte använder längre kan du återkalla deras åtkomst.", "These events may interest you": "Dessa evenemang kanske intresserar dig", "These feeds contain event data for the events for which any of your profiles is a participant or creator. You should keep these private. You can find feeds for specific profiles on each profile edition page.": "Dessa flöden innehåller evenemangsdata för de evenemang där någon av dina profiler är deltagare eller skapare. Du bör hålla dessa privata. Du hittar flöden för specifika profiler på varje profilutgåvas sida.", "These feeds contain event data for the events for which this specific profile is a participant or creator. You should keep these private. You can find feeds for all of your profiles into your notification settings.": "Dessa flöden innehåller evenemangsdata för de evenemang där denna specifika profil är en deltagare eller skapare. Du bör hålla dessa privata. Du kan hitta flöden för alla dina profiler i dina aviseringsinställningar.", "This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "Den här Mobilizon-instansen och evenemangsarrangören tillåter anonymt deltagande, men kräver bekräftelse-validering via e-post.", "This URL doesn't seem to be valid": "Denna URL verkar inte vara giltig", "This URL is not supported": "Denna URL stöds inte", + "This announcement will be send to all participants with the statuses selected below. They will not be allowed to reply to your announcement, but they can create a new conversation with you.": "Detta meddelande kommer att skickas till alla deltagare med de statusar som valts nedan. De kommer inte att kunna svara på ditt meddelande, men de kan skapa en ny konversation med dig.", + "This application asks for the following permissions:": "Denna applikation efterfrågar följande behörigheter:", + "This application didn't ask for known permissions. It's likely the request is incorrect.": "Den här applikationen begärde inte kända behörigheter. Det är troligt att begäran är felaktig.", + "This application will be able to access all of your informations and post content. Make sure you only approve applications you trust.": "Denna applikation kommer att kunna komma åt all din information och publicerat innehåll. Se till att du bara godkänner applikationer som du litar på.", + "This application will be allowed to access all of the groups you're a member of": "Den här applikationen får tillgång till alla grupper som du är medlem i", + "This application will be allowed to access group activities in all of the groups you're a member of": "Den här applikationen kommer få åtkomst till gruppaktiviteter i alla grupper som du är medlem i", + "This application will be allowed to access your user activity settings": "Denna applikation kommer att få tillgång till dina aktivitetsinställningar", + "This application will be allowed to access your user settings": "Denna applikation kommer att få tillgång till dina användarinställningar", + "This application will be allowed to create feed tokens": "Denna applikation kommer att tillåtas att skapa flödes-tokens", + "This application will be allowed to create group discussions": "Denna applikation kommer att tillåtas att skapa gruppdiskussioner", + "This application will be allowed to create new profiles for your account": "Denna applikation kommer att tillåtas att skapa nya profiler för ditt konto", + "This application will be allowed to create resources in all of the groups you're a member of": "Den här applikationen kommer få skapa resurser i alla de grupper du är medlem i", + "This application will be allowed to delete comments": "Denna applikation kommer att tillåtas att radera kommentarer", + "This application will be allowed to delete events": "Denna applikation kommer att tillåtas att radera evenemang", + "This application will be allowed to delete feed tokens": "Denna applikation kommer att tillåtas att radera flödes-tokens", + "This application will be allowed to delete group discussions": "Denna applikation kommer att tillåtas att radera gruppdiskussioner", + "This application will be allowed to delete group posts": "Denna applikation kommer att tillåtas att radera gruppinlägg", + "This application will be allowed to delete resources in all of the groups you're a member of": "Den här applikationen kommer få radera resurser i alla de grupper du är medlem i", + "This application will be allowed to delete your profiles": "Denna applikation kommer att tillåtas radera dina profiler", + "This application will be allowed to join and leave groups": "Denna applikation kommer att tillåtas att gå med i och lämna grupper", + "This application will be allowed to list and access group discussions in all of the groups you're a member of": "Den här applikationen kommer få lista och komma åt gruppdiskussioner i alla de grupper du är medlem i", + "This application will be allowed to list and access group events in all of the groups you're a member of": "Den här applikationen kommer få lista och komma åt gruppevenemang i alla de grupper du är medlem i", + "This application will be allowed to list and access group todo-lists in all of the groups you're a member of": "Denna applikation kommer att tillåtas att lista och komma åt gruppens att-göra listor i alla de grupper du är medlem i", + "This application will be allowed to list and view the events you're participating to": "Den här applikationen kommer kunna lista och visa de evenemang du deltar i", + "This application will be allowed to list and view the groups you're a member of": "Den här applikationen kommer få lista och visa de grupper du är medlem i", + "This application will be allowed to list and view the groups you're following": "Den här applikationen kommer få lista och visa de grupper du följer", + "This application will be allowed to list and view your draft events": "Denna applikation kommer att tillåtas att lista och visa dina evenemangsutkast", + "This application will be allowed to list and view your organized events": "Denna applikation kommer att tillåtas för att lista och visa dina organiserade evenemang", + "This application will be allowed to list group followers in all of the groups you're a member of": "Den här applikationen kommer få lista följare av alla grupper som du är medlem i", + "This application will be allowed to list group members in all of the groups you're a member of": "Den här applikationen kommer få lista gruppmedlemmar i alla grupper som du är medlem i", + "This application will be allowed to list the media you've uploaded": "Denna applikation kommer att kunna lista de media du har laddat upp", + "This application will be allowed to list your suggested group events": "Denna applikation kommer att kunna lista dina föreslagna gruppevenemang", + "This application will be allowed to manage events participations": "Denna applikation kommer att tillåtas att hantera deltagande i evenemang", + "This application will be allowed to manage group members in all of the groups you're a member of": "Den här applikationen kommer få hantera gruppmedlemmar i alla de grupper du är medlem i", + "This application will be allowed to manage your account activity settings": "Denna applikation kommer att tillåtas hantera dina inställningar för kontoaktivitet", + "This application will be allowed to manage your account push notification settings": "Denna applikation kommer att tillåtas hantera dina inställningar för push-notifieringar", + "This application will be allowed to post comments": "Denna applikation kommer att tillåtas att publicera kommentarer", + "This application will be allowed to publish and manage events, post and manage comments, participate to events, manage all of your groups, including group events, resources, posts and discussions. It will also be allowed to manage your account and profile settings.": "Den här applikationen kommer kunna publicera och hantera evenemang, publicera och hantera kommentarer, delta i evenemang, hantera alla dina grupper, inklusive grupphändelser, resurser, inlägg och diskussioner. Den kommer också få hantera ditt konto och profilinställningar.", + "This application will be allowed to publish events": "Denna applikation kommer att tillåtas att publicera evenemang", + "This application will be allowed to publish group posts": "Denna applikation kommer att tillåtas publicera gruppinlägg", + "This application will be allowed to remove uploaded media": "Denna applikation kommer att tillåtas att ta bort uppladdade media", + "This application will be allowed to see all of your events organized, the events you participate to, as well as every data from your groups.": "Denna applikation kommer att kunna se alla dina organiserade evenemang, de evenemang du deltar i, samt all data från dina grupper.", + "This application will be allowed to update comments": "Denna applikation kommer att tillåtas att uppdatera kommentarer", + "This application will be allowed to update events": "Denna applikation kommer att tillåtas uppdatera evenemang", + "This application will be allowed to update group discussions": "Denna applikation kommer att tillåtas att uppdatera gruppdiskussioner", + "This application will be allowed to update group posts": "Denna applikation kommer att tillåtas att uppdatera gruppinlägg", + "This application will be allowed to update resources in all of the groups you're a member of": "Den här applikationen kommer få uppdatera resurser i alla de grupper du är medlem i", + "This application will be allowed to update your profiles": "Denna applikation kommer att tillåtas uppdatera dina profiler", + "This application will be allowed to upload media": "Denna applikation kommer att tillåtas att ladda upp media", "This event has been cancelled.": "Det här evenemanget har blivit inställt.", "This event is accessible only through it's link. Be careful where you post this link.": "Det här evenemanget går bara att komma åt genom dess länk. Tänk efter rörande var du publicerar länken.", "This group doesn't have a description yet.": "Denna grupp har ännu ingen beskrivning.", + "This group is a remote group, it's possible the original instance has more informations.": "Denna grupp är en fjärrgrupp, det är möjligt att den ursprungliga instansen har mer information.", "This group is accessible only through it's link. Be careful where you post this link.": "Det här evenemanget går bara att komma åt genom dess länk. Tänk på var du publicerar länken.", "This group is invite-only": "Denna grupp är endast öppen för inbjudna", - "This group was not found": "", + "This group was not found": "Denna grupp hittades inte", "This identifier is unique to your profile. It allows others to find you.": "Denna identifierare är unik för din profil. Den gör det möjligt för andra att hitta dig.", "This information is saved only on your computer. Click for details": "Denna information sparas endast på din dator. Klicka för detaljer", + "This instance doesn't follow yours.": "Denna instans följer inte din.", "This instance hasn't got push notifications enabled.": "Denna instans har inte aktiverat push-aviseringar.", "This instance isn't opened to registrations, but you can register on other instances.": "Den här isntansen är inte öppen för registrering, men du kan registrera på andra instanser.", "This instance, {instanceName} ({domain}), hosts your profile, so remember its name.": "Den här instansen, {instanceName} ({domain}), är värd för din profil, så kom ihåg dess namn.", + "This instance, {instanceName}, hosts your profile, so remember its name.": "Den här instansen, {instanceName}, är värd för din profil, så kom ihåg dess namn.", + "This is a announcement from the organizers of event {event}. You can't reply to it, but you can send a private message to event organizers.": "Detta är ett meddelande från arrangörerna av evenemanget {event}. Du kan inte svara på det, men du kan skicka ett privat meddelande till evenemangsarrangörerna.", "This is a demonstration site to test Mobilizon.": "Det här är en demonstrationssida för att testa Mobilizon.", "This is like your federated username ({username}) for groups. It will allow the group to be found on the federation, and is guaranteed to be unique.": "Detta är som ditt federerade användarnamn ({username}) för grupper. Det gör att gruppen kan hittas i federationen och är garanterat unikt.", + "This is like your federated username ({username}) for groups. It will allow the group to be found on the federation, and is guaranteed to be unique.": "Detta är som ditt federerade användarnamn ({username}) för grupper. Det gör att gruppen kan hittas i federationen och är garanterat unikt.", "This month": "Den här månaden", "This post is accessible only for members. You have access to it for moderation purposes only because you are an instance moderator.": "Detta inlägg är endast tillgängligt för medlemmar. Du har tillgång till det enbart i modereringssyfte eftersom du är en instansmoderator.", - "This post is accessible only through it's link. Be careful where you post this link.": "", - "This profile is from another instance, the informations shown here may be incomplete.": "", - "This profile was not found": "", + "This post is accessible only through it's link. Be careful where you post this link.": "Detta inlägget går bara att komma åt genom dess länk. Tänk på var du publicerar länken.", + "This profile is from another instance, the informations shown here may be incomplete.": "Denna profil är från en annan instans, informationen som visas här kan vara ofullständig.", + "This profile is located on this instance, so you need to {access_the_corresponding_account} to suspend it.": "Den här profilen finns på den här instansen, så du måste {access_the_corresponding_account} för att stänga av den.", + "This profile was not found": "Denna profil hittades inte", "This setting will be used to display the website and send you emails in the correct language.": "Denna inställning kommer att användas för att visa webbplatsen och skicka e-post till dig på rätt språk.", - "This user was not found": "", + "This user doesn't have any profiles": "Den här användaren har inga profiler", + "This user was not found": "Denna användare hittades inte", "This website isn't moderated and the data that you enter will be automatically destroyed every day at 00:01 (Paris timezone).": "Denna webbplats är inte modererad och de uppgifter som du anger kommer att raderas automatiskt varje dag kl. 00.01 (Paris tidszon).", "This week": "Den här veckan", "This weekend": "I helgen", + "This will also resolve the report.": "Detta kommer också att stänga anmälan.", "This will delete / anonymize all content (events, comments, messages, participations…) created from this identity.": "Det här kommer radera / anonymisera allt innehåll (evenemang, kommentarer, meddelanden, deltaganden...) skapade av den här identiteten.", "Time in your timezone ({timezone})": "Tid i din tidszon ({timezone})", "Times in your timezone ({timezone})": "Tider i din tidszon ({timezone})", @@ -939,13 +1245,17 @@ "To create and manage multiples identities from a same account": "För att skapa och hantera flera identiteter från ett och samma konto", "To create and manage your events": "För att skapa och hantera dina evenemang", "To create or join an group and start organizing with other people": "För att skapa eller gå med i en grupp och börja organisera med andra människor", - "To follow groups and be informed of their latest events": "", + "To follow groups and be informed of their latest events": "Att följa grupper och få information om deras senaste händelser", "To register for an event by choosing one of your identities": "För att registrera dig för ett evenemang genom att välja en av dina identiteter", "Today": "Idag", "Tomorrow": "Imorgon", "Tools": "Verktyg", + "Total number of participations": "Totalt antal deltagningar", "Transfer to {outsideDomain}": "Överför till {outsideDomain}", "Triggered profile refreshment": "Triggade uppdatering av profil", + "Try different keywords.": "Pröva andra nyckelord.", + "Try fewer keywords.": "Pröva färre nyckelord.", + "Try more general keywords.": "Pröva mer generella nyckelord.", "Twitch live": "Twitch live", "Twitch replay": "Twitch-återuppspelning", "Twitter account": "Twitter-konto", @@ -962,54 +1272,73 @@ "Unable to update the profile. The avatar picture may be too heavy.": "Det går inte att uppdatera profilen. Avatarbilden kan vara för stor.", "Underline": "Understrykning", "Undo": "Ångra", - "Unfollow": "", + "Unfollow": "Sluta följ", "Unfortunately, your participation request was rejected by the organizers.": "Tyvärr blev ditt deltagande avfärdat av organisatörerna.", "Unknown": "Okänd", "Unknown actor": "Okänd skådespelare", "Unknown error.": "Okänt fel.", "Unknown value for the openness setting.": "Okänt värde för inställningen öppenhet.", - "Unlogged participation": "", + "Unlogged participation": "Utloggat deltagande", "Unsaved changes": "Osparade ändringar", "Unsubscribe to browser push notifications": "Avsluta prenumerationen på push-notiser från webbläsaren", "Unsuspend": "Återkalla avstängning", "Upcoming": "Kommande", "Upcoming events": "Kommande evenemang", - "Upcoming events from your groups": "", + "Upcoming events from your groups": "Kommande evenemang från dina grupper", "Update": "Uppdatera", "Update app": "Uppdatera app", + "Update comments": "Uppdatera kommentarer", "Update discussion title": "Uppdatera diskussionsrubrik", "Update event {name}": "Uppdatera evenemang {name}", + "Update events": "Uppdatera evenemang", "Update group": "Uppdatera grupp", + "Update group discussions": "Uppdatera gruppdiskussioner", + "Update group posts": "Uppdatera gruppinlägg", + "Update group resources": "Uppdatera gruppresurser", "Update my event": "Uppdatera mitt evenemang", "Update post": "Uppdatera inlägg", + "Update profiles": "Uppdatera profiler", "Updated": "Uppdaterad", + "Updated at": "Uppdaterad den", + "Upload media": "Ladda upp media", "Uploaded media size": "Storlek på uppladdad media", + "Uploaded media total size": "Uppladdad media total storlek", "Use my location": "Använd min plats", "User": "Användare", "User settings": "Användarinställningar", + "User suspended and report resolved": "Användaren avstängd och anmälan löst", "Username": "Användarnamn", "Users": "Användare", - "Validating account": "", - "Validating email": "", + "Validating account": "Validering av konto", + "Validating email": "Validering av e-postadress", "Video Conference": "Videokonferens", "View a reply": "Visa inga svar|Visa ett svar|Visa {totalReplies} svar", "View account on {hostname} (in a new window)": "Visa konto på {hostname} (i ett nytt fönster)", "View all": "Visa alla", + "View all categories": "Visa alla kategorier", "View all events": "Se alla evenemang", "View all posts": "Visa alla inlägg", "View event page": "Visa evenemangsidan", "View everything": "Visa allt", - "View full profile": "", + "View full profile": "Visa fullständig profil", "View less": "Visa mindre", "View more": "Visa mer", + "View more events": "Se fler evenemang", + "View more events around {position}": "Se fler evenemang i närheten av {position}", + "View more groups around {position}": "Se fler grupper i närheten av {position}", + "View more online events": "Se fler online-evenemang", "View page on {hostname} (in a new window)": "Visa sidan hos {hostname} (öppnas i ett nytt fönster)", + "View past events": "Visa tidigare evenemang", + "View the group profile on the original instance": "Se grupprofilen på den ursprungliga instansen", "Visibility was set to an unknown value.": "Synlighet sattes till ett okänt värde.", "Visibility was set to private.": "Synlighet sattes till privat.", "Visibility was set to public.": "Synlighet sattes till publik.", "Visible everywhere on the web": "Synligt för hela webben", "Visible everywhere on the web (public)": "Synlig överallt på internet (publikt)", + "Visit {instance_domain}": "Besök {instance_domain}", "Waiting for organization team approval.": "Väntar på godkännande från organisationsteamet.", "Warning": "Varning", + "We collect your feedback and the error information in order to improve this service.": "Vi samlar in din feedback och felinformation för att kunna förbättra denna tjänst.", "We couldn't save your participation inside this browser. Not to worry, you have successfully confirmed your participation, we just couldn't save it's status in this browser because of a technical issue.": "Vi kunde inte spara ditt deltagande i den här webbläsaren. Oroa dig inte, du har bekräftat ditt deltagande, vi kunde bara inte spara dess status i den här webbläsaren på grund av ett tekniskt problem.", "We improve this software thanks to your feedback. To let us know about this issue, two possibilities (both unfortunately require user account creation):": "Vi förbättrar denna programvara tack vare din feedback. För att meddela oss om detta problem finns det två möjligheter (båda kräver tyvärr att ett användarkonto skapas):", "We just sent an email to {email}": "Vi skickade precis ett mail till {email}", @@ -1025,6 +1354,7 @@ "Welcome back!": "Välkommen tillbaka!", "Welcome to Mobilizon, {username}!": "Välkommen till Mobilizon, {username}!", "What can I do to help?": "Vad kan jag göra för att hjälpa till?", + "What happened?": "Vad hände?", "Wheelchair accessibility": "Tillgänglighet för rullstolar", "When a moderator from the group creates an event and attributes it to the group, it will show up here.": "När en moderator från gruppen skapar ett evenemang och attribuerar det till gruppen kommer det att visas här.", "When the event is private, you'll need to share the link around.": "När evenemanget är privat måste du dela länken med andra.", @@ -1039,19 +1369,31 @@ "Who published {number} events": "Som publicerade {number} events", "Why create an account?": "Varför skapa ett konto?", "Will allow to display and manage your participation status on the event page when using this device. Uncheck if you're using a public device.": "Gör det möjligt att visa och hantera din deltagarstatus på evenemangssidan när du använder den här enheten. Avmarkera om du använder en offentlig enhet.", + "With the most participants": "Med flest deltagare", + "With unknown participants": "Med okända deltagare", + "With {participants}": "Med {participants}", "Within {number} kilometers of {place}": "|Inom en kilometer från {place}|Inom {number} kilometer från {place}", + "Write a new comment": "Skriv en ny kommentar", + "Write a new message": "Skriv ett nytt meddelande", + "Write a new reply": "Skriv ett nytt svar", + "Write something": "Skriv något", + "Write your post": "Skriv ditt inlägg", "Yesterday": "Igår", "You accepted the invitation to join the group.": "Du accepterade inbjudan att gå med i gruppen.", "You added the member {member}.": "Du lade till medlemmen {member}.", - "You approved {member}'s membership.": "", + "You approved {member}'s membership.": "Du godkände {member}s medlemskap.", "You archived the discussion {discussion}.": "Du arkiverade diskussionen {discussion}.", "You are not an administrator for this group.": "Du är inte en administratör för den här gruppen.", "You are not part of any group.": "Du är inte en del av någon grupp.", "You are offline": "Du är offline", "You are participating in this event anonymously": "Du deltar i det här evenemanget anonymt", "You are participating in this event anonymously but didn't confirm participation": "Du deltar i detta evenemanget anonymt, men har inte bekräftat deltagande", + "You can add resources by using the button above.": "Du kan lägga till resurser genom att använda knappen ovan.", "You can add tags by hitting the Enter key or by adding a comma": "Du kan lägga till taggar genom att trycka Enter eller skriva ett komma", + "You can drag and drop the marker below to the desired location": "Du kan dra och släppa markören nedan till önskad plats", "You can pick your timezone into your preferences.": "Du kan välja din tidszon i dina inställningar.", + "You can put any arbitrary content in this element. URLs will be clickable.": "Du kan lägga in godtyckligt innehåll i detta element. URL-adresser kommer att vara klickbara.", + "You can try another search term or add the address details manually below.": "Du kan prova en annan sökterm eller lägga till adressuppgifterna manuellt nedan.", "You can try another search term or drag and drop the marker on the map": "Du kan försöka med ett annat sökord eller dra och släpp markören på kartan", "You can't change your password because you are registered through {provider}.": "Du kan inte ändra ditt lösenord eftersom att du är registrerad genom {provider}.", "You can't use push notifications in this browser.": "Du kan inte använda pushnotiser i den här webbläsaren.", @@ -1072,17 +1414,23 @@ "You demoted {member} to simple member.": "Du degraderade {member} till enkel medlem.", "You didn't create or join any event yet.": "Du har inte skapat eller gått med i något evenemang ännu.", "You don't follow any instances yet.": "Du följer inga instanser ännu.", - "You don't have any upcoming events. Maybe try another filter?": "", + "You don't have any upcoming events. Maybe try another filter?": "Du har inga kommande evenemang. Kanske prova ett annat filter?", "You excluded member {member}.": "Du uteslöt medlem {member}.", - "You have attended {count} events in the past.": "", + "You have access to this conversation as a member of the {group} group": "Du har tillgång till detta samtal som medlem i {group}-gruppen", + "You have attended {count} events in the past.": "Du har inte deltagit i några evenemang under de senaste åren.|Du har deltagit i ett evenemang under de senaste åren.|Du har deltagit i {count} evenemang under de senaste åren.", "You have been invited by {invitedBy} to the following group:": "Du har blivit inbjuden av {invitedBy} till följande grupp:", + "You have been logged-out": "Du har blivit utloggad", "You have been removed from this group's members.": "Du har blivit borttagen som gruppmedlem.", "You have cancelled your participation": "Du har avslutat ditt deltagande", "You have one event in {days} days.": "Du har inga evenemang under nästa {days} dagar|Du har ett evenemang under nästa {days} dagar.|Du har {count} under nästa {days} dagar", "You have one event today.": "Du har inga evenemang idag|Du har ett evenemang idag.|Du har {count} evenemang idag", "You have one event tomorrow.": "Du har inga evenemang imorgon|Du har ett evenemang imorgon|Du har {count} evenemang imorgon", + "You haven't interacted with other instances yet.": "Du har inte interagerat med andra instanser ännu.", "You invited {member}.": "Du bjöd in {member}.", + "You joined the event {event}.": "Du gick med i evenemanget {event}.", + "You may also:": "Du kan också:", "You may clear all participation information for this device with the buttons below.": "Du kan rensa all deltagarinformation för den här enheten med knapparna nedan.", + "You may now close this page or {return_to_the_homepage}.": "Du kan nu stänga denna sida eller {return_to_the_homepage}.", "You may now close this window, or {return_to_event}.": "Du kan nu stänga detta fönster, eller {return_to_event}.", "You may show some members as contacts.": "Du kan visa vissa medlemmar som kontakter.", "You moved the folder {resource} into {new_path}.": "Du flyttade mappen {resource} till {new_path}.", @@ -1090,11 +1438,12 @@ "You moved the resource {resource} into {new_path}.": "Du flyttade resursen {resource} till {new_path}.", "You moved the resource {resource} to the root folder.": "Du flyttade resursen {resource} till rotmappen.", "You need to login.": "Du måste logga in.", + "You need to provide the following code to your application. It will only be valid for a few minutes.": "Du måste ange följande kod till din applikation. Den kommer bara att vara giltig i några minuter.", "You posted a comment on the event {event}.": "Du publicerade en kommentar om evenemanget {event}.", "You promoted the member {member} to an unknown role.": "Du befordrade medlemmen {member} till en okänd roll.", "You promoted {member} to administrator.": "Du befordrade {member} till administratör.", "You promoted {member} to moderator.": "Du befordrade {member} till moderator.", - "You rejected {member}'s membership request.": "", + "You rejected {member}'s membership request.": "Du avslog {member}s begäran om medlemskap.", "You renamed the discussion from {old_discussion} to {discussion}.": "Du döpte om diskussionen från {old_discussion} till {discussion}.", "You renamed the folder from {old_resource_title} to {resource}.": "Du har bytt namn på mappen från {old_resource_title} till {resource}.", "You renamed the resource from {old_resource_title} to {resource}.": "Du har bytt namn på resursen från {old_resource_title} till {resource}.", @@ -1114,8 +1463,9 @@ "You will be able to add an avatar and set other options in your account settings.": "Du kommer att kunna lägga till en avatar och ställa in andra alternativ i dina kontoinställningar.", "You will be redirected to the original instance": "Du kommer att omdirigeras till den ursprungliga instansen", "You will find here all the events you have created or of which you are a participant, as well as events organized by groups you follow or are a member of.": "Här hittar du alla evenemang som du har skapat eller som du deltar i, samt evenemang som anordnas av grupper som du följer eller är medlem i.", - "You will receive notifications about this group's public activity depending on %{notification_settings}.": "", + "You will receive notifications about this group's public activity depending on %{notification_settings}.": "Du kommer att få meddelanden om denna grupps offentliga aktivitet beroende på %{notification_settings}.", "You wish to participate to the following event": "Du önskar att delta i det följande evenemanget", + "You'll be able to revoke access for this application in your account settings.": "Du kan återkalla åtkomsten för den här applikationen i dina kontoinställningar.", "You'll get a weekly recap every Monday for upcoming events, if you have any.": "Du får en veckovis sammanfattning varje måndag för kommande evenemang, om du har några.", "You'll need to change the URLs where there were previously entered.": "Du måste ändra webbadresserna där de tidigare angetts.", "You'll need to transmit the group URL so people may access the group's profile. The group won't be findable in Mobilizon's search or regular search engines.": "Du behöver skicka gruppens URL så att andra kan komma åt gruppens profil. Gruppen kommer inte att kunna hittas i Mobilizons sökmotor eller vanliga sökmotorer.", @@ -1126,6 +1476,7 @@ "Your account has been validated": "Ditt konto har validerats", "Your account is being validated": "Ditt konto håller på att valideras", "Your account is nearly ready, {username}": "Ditt konto är nästan redo, {username}", + "Your application code": "Din applikationskod", "Your city or region and the radius will only be used to suggest you events nearby. The event radius will consider the administrative center of the area.": "Din stad eller region och radien kommer endast att användas för att föreslå evenemang i närheten. Evenemangets radie kommer att ta hänsyn till områdets administrativa centrum.", "Your current email is {email}. You use it to log in.": "Din nuvarande e-postadress är {email}. Du använder den för att logga in.", "Your email": "Din e-post", @@ -1134,10 +1485,13 @@ "Your email is being changed": "Din e-postadress håller på att ändras", "Your email will only be used to confirm that you're a real person and send you eventual updates for this event. It will NOT be transmitted to other instances or to the event organizer.": "Din e-postadress kommer endast att användas för att bekräfta att du är en riktig person och för att skicka dig eventuella uppdateringar om detta evenemang. Den kommer INTE att överföras till andra instanser eller till arrangören av evenemanget.", "Your federated identity": "Din federerade identitet", - "Your membership was approved by {profile}.": "", + "Your membership is pending approval": "Ditt medlemskap väntar på godkännande", + "Your membership was approved by {profile}.": "Ditt medlemskap godkändes av {profile}.", + "Your participation has been cancelled": "Ditt deltagande har ställts in", "Your participation has been confirmed": "Ditt deltagande har bekräftats", "Your participation has been rejected": "Ditt deltagande har avvisats", "Your participation has been requested": "Ditt deltagande har förfrågats", + "Your participation is being cancelled": "Ditt deltagande avbryts", "Your participation request has been validated": "Ditt deltagande har bekräftats", "Your participation request is being validated": "Ditt deltagande valideras", "Your participation status has been changed": "Din deltagarstatus har ändrats", @@ -1158,7 +1512,8 @@ "[This comment has been deleted]": "[Den här kommentaren har tagits bort]", "[deleted]": "[togs bort]", "a non-existent report": "en icke-existerande rapport", - "access to the group's private content as well": "", + "access the corresponding account": "tillgång till motsvarande konto", + "access to the group's private content as well": "också tillgång till gruppens privata innehåll", "and {number} groups": "och {number} grupper", "any distance": "alla avstånd", "as {identity}": "som {identitet}", @@ -1169,35 +1524,48 @@ "default Mobilizon terms": "standardvillkor för Mobilizon", "e.g. 10 Rue Jangot": "e.g. 10 Rue Jangot", "e.g. Accessibility, Twitch, PeerTube": "t.ex. Accessibility, Twitch, PeerTube", + "e.g. Nantes, Berlin, Cork, …": "t.ex. Nantes, Berlin, Cork, …", "enable the feature": "aktivera funktionen", "explore the events": "utforska evenemang", "explore the groups": "utforska grupperna", + "find, create and organise events": "hitta, skapa och organisera evenemang", "full rules": "fullständiga regler", - "group's upcoming public events": "", + "group's upcoming public events": "gruppens kommande offentliga evenemang", "https://mensuel.framapad.org/p/some-secret-token": "https://mensuel.framapad.org/p/en-hemlig-token", "iCal Feed": "iCal-feed", "instance rules": "instansregler", + "mobilizon-instance.tld": "mobilizon-instance.tld", "more than 1360 contributors": "mer än 1360 bidragsgivare", + "multitude of interconnected Mobilizon websites": "en mängd sammankopplade Mobilizon-webbplatser", + "new{'@'}email.com": "ny{'@'}email.com", "profile@instance": "profil@instans", + "profile{'@'}instance": "profil{'@'}instans", "report #{report_number}": "rapport #{report_number}", "return to the event's page": "återgå till evenemangets sida", + "return to the homepage": "återgå till startsidan", "terms of service": "servicevillkor", + "tool designed to serve you": "verktyg utformat för att tjäna dig", "with another identity…": "med en annan identitet…", - "your notification settings": "", + "your notification settings": "dina notifikationsinställningar", "{'@'}{username}": "{'@'}{username}", + "{'@'}{username} ({role})": "{'@'}{username} ({role})", "{approved} / {total} seats": "{approved} / {total} platser", "{available}/{capacity} available places": "Inga platser kvar|{available}/{capacity} tillgängliga platser", + "{count} events": "{count} händelser", "{count} km": "{count} km", "{count} members": "Inga medlemmar|En medlem|{count} medlemmar", - "{count} members or followers": "", + "{count} members or followers": "Inga medlemmar eller följare|En medlem eller följare|{count} medlemmar eller följare", "{count} participants": "Inga deltagande ännu|En deltagande|{count} deltagande", "{count} requests waiting": "{count} förfrågningar väntar", + "{eventsCount} events found": "Inga händelser hittades|En händelse hittades|{eventsCount} händelser hittades", "{folder} - Resources": "{folder} - Resurser", + "{groupsCount} groups found": "Inga grupper funna|En grupp funnen|{groupsCount} grupper funna", "{group} activity timeline": "{group} aktivitetstidslinje", "{group} events": "{group} händelser", - "{group} posts": "", + "{group} posts": "{group} inlägg", "{group}'s events": "{grupp}s evenemang", - "{group}'s todolists": "", + "{group}'s todolists": "{group}s att-göra listor", + "{instanceName} ({domain})": "{instanceName} ({domain})", "{instanceName} is an instance of the {mobilizon} software.": "{instanceName} är en {mobilizon}-instans.", "{instanceName} is an instance of {mobilizon_link}, a free software built with the community.": "{instanceName} är en instans av {mobilizon_link}, en fri programvara som byggts tillsammans med gemenskapen.", "{member} accepted the invitation to join the group.": "{member} accepterade inbjudan att gå med i gruppen.", @@ -1219,16 +1587,20 @@ "{moderator} suspended group {profile}": "{moderator} stängde av gruppen {profile}", "{moderator} suspended profile {profile}": "{moderator} stängde av profilen {profile}", "{nb} km": "{nb} km", + "{numberOfCategories} selected": "{numberOfCategories} valda", + "{numberOfLanguages} selected": "{numberOfLanguages} valda", + "{number} kilometers": "{number} kilometer", "{number} members": "{antal} medlemmar", "{number} memberships": "{number} medlemskap", "{number} organized events": "Inga organiserade evenemang|Ett organiserat evenemang|{number} organiserade evenemang", "{number} participations": "Inga deltaganden|Ett deltagande|{number} deltaganden", "{number} posts": "Inga inlägg|Ett inlägg|{antal} inlägg", - "{number} seats left": "", + "{number} seats left": "{number} platser kvar", "{old_group_name} was renamed to {group}.": "{old_group_name} döptes om till {group}.", + "{profileName} (suspended)": "{profileName} (avstängd)", "{profile} (by default)": "{profile} (som standard)", "{profile} added the member {member}.": "{profile} la till medlemmen {member}.", - "{profile} approved {member}'s membership.": "", + "{profile} approved {member}'s membership.": "{profile} godkände {member}s medlemskap.", "{profile} archived the discussion {discussion}.": "{profile} arkiverade diskussionen {discussion}.", "{profile} created the discussion {discussion}.": "{profile} skapade diskussionen {discussion}.", "{profile} created the folder {resource}.": "{profile} skapade mappen {resource}.", @@ -1241,6 +1613,7 @@ "{profile} demoted {member} to moderator.": "{profile} degraderade {member} till moderator.", "{profile} demoted {member} to simple member.": "{profile} degraderade {member} till enkel medlem.", "{profile} excluded member {member}.": "{profile} exkluderade medlemmen {member}.", + "{profile} joined the the event {event}.": "{profile} gick med i evenemanget {event}.", "{profile} moved the folder {resource} into {new_path}.": "{profile} flyttade mappen {resource} till {new_path}.", "{profile} moved the folder {resource} to the root folder.": "{profile} flyttade mappen {resource} till rotmappen.", "{profile} moved the resource {resource} into {new_path}.": "{profile} flyttade resursen {resource} till {new_path}.", @@ -1250,7 +1623,7 @@ "{profile} promoted {member} to an unknown role.": "{profile} befordrade {member} till en okänd roll.", "{profile} promoted {member} to moderator.": "{profile} befordrade {member} till moderator.", "{profile} quit the group.": "{profile} lämnade gruppen.", - "{profile} rejected {member}'s membership request.": "", + "{profile} rejected {member}'s membership request.": "{profile} avslog {member}s begäran om medlemskap.", "{profile} renamed the discussion from {old_discussion} to {discussion}.": "{profile} döpte om diskussionen från {old_discussion} till {discussion}.", "{profile} renamed the folder from {old_resource_title} to {resource}.": "{profile} döpte om mappen från %{old_resource_title} till {resource}.", "{profile} renamed the resource from {old_resource_title} to {resource}.": "{profile} döpte om resursen från {old_resource_title} till {resource}.", @@ -1258,8 +1631,11 @@ "{profile} replied to the discussion {discussion}.": "{profile} svarade på diskussionen {discussion}.", "{profile} updated the group {group}.": "{profile} uppdaterade gruppen {group}.", "{profile} updated the member {member}.": "{profile} uppdaterade medlemmen {member}.", - "{timezoneLongName} ({timezoneShortName})": "", + "{resultsCount} results found": "Inga resultat hittades|Ett resultat hittades|{resultsCount} resultat hittades", + "{timezoneLongName} ({timezoneShortName})": "{timezoneLongName} ({timezoneShortName})", "{title} ({count} todos)": "{title} ({count} att-göra)", "{username} was invited to {group}": "{användarnamn} blev inbjuden till {grupp}", + "{user}'s follow request was accepted": "{user}s följarförfrågan accepterades", + "{user}'s follow request was rejected": "{user}s följarförfrågan avvisades", "© The OpenStreetMap Contributors": "© Alla bidragsgivare till OpenStreetMap" }