merge to version 1.1.0

This commit is contained in:
Tykayn 2021-04-09 14:40:15 +02:00 committed by tykayn
commit 6d26952307
269 changed files with 17499 additions and 6317 deletions

View File

@ -17,3 +17,4 @@ SECURITY.md
ssh_match_hostname
support
.js/package-lock.json
js/node_modules

2
.gitignore vendored
View File

@ -14,7 +14,7 @@ erl_crash.dump
# secrets files as long as you replace their contents by environment
# variables.
/config/*.secret.exs
/config/releases.exs
/config/runtime.exs
/setup_db.psql

View File

@ -162,6 +162,7 @@ pages:
stage: deploy
script:
- mkdir public
- mix deps.get
- mix docs
- mv doc public/backend
# #- yarn run --cwd "js" styleguide:build
@ -183,7 +184,7 @@ pages:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$CI_REGISTRY_AUTH\",\"email\":\"$CI_REGISTRY_EMAIL\"}}}" > /kaniko/.docker/config.json
script:
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/docker/production/Dockerfile --destination $DOCKER_IMAGE_NAME
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/docker/production/Dockerfile --destination $DOCKER_IMAGE_NAME --build-arg VCS_REF=$CI_VCS_REF --build-arg BUILD_DATE=$CI_JOB_TIMESTAMP --build-arg CI_COMMIT_TAG=$CI_COMMIT_TAG
build-docker-master:
<<: *docker
@ -205,19 +206,32 @@ build-docker-tag:
package-app:
stage: package
variables:
variables: &release-variables
MIX_ENV: "prod"
script:
script: &release-script
- mix local.hex --force
- mix local.rebar --force
- cp docker/production/releases.exs ./config/
- mix deps.get
- mix phx.digest
- mix release
- mix release --path release/mobilizon
- cd release/mobilizon && ln -s lib/mobilizon-*/priv priv
only:
- tags@framasoft/mobilizon
artifacts:
expire_in: never
paths:
- release
package-app-dev:
stage: package
variables: *release-variables
script: *release-script
except:
- tags@framasoft/mobilizon
artifacts:
expire_in: 2 days
paths:
- _build/prod/rel
- release
release-upload:
stage: upload
@ -229,7 +243,7 @@ release-upload:
APP_ASSET="${CI_PROJECT_NAME}_${APP_VERSION}_${ARCH}.tar.gz"
echo "Artifact: ${APP_ASSET}"
tar czf ${APP_ASSET} -C _build/prod/rel mobilizon
tar czf ${APP_ASSET} -C release mobilizon
ls -al ${APP_ASSET}
curl --silent --show-error --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "${APP_ASSET}" ${PACKAGE_REGISTRY_URL}/${APP_VERSION}/${APP_ASSET}

View File

@ -8,5 +8,5 @@
out: "",
threshold: "medium",
ignore: ["Config.HTTPS", "Config.CSP"],
ignore_files: ["config/dev.1.secret.exs", "config/dev.2.secret.exs", "config/dev.3.secret.exs", "config/dev.secret.exs", "config/e2e.secret.exs", "config/prod.secret.exs", "config/test.secret.exs"]
ignore_files: ["config/dev.1.secret.exs", "config/dev.2.secret.exs", "config/dev.3.secret.exs", "config/dev.secret.exs", "config/e2e.secret.exs", "config/prod.secret.exs", "config/test.secret.exs", "config/runtime.1.secret.exs", "config/runtime.2.secret.exs", "config/runtime.3.secret.exs", "config/runtime.exs"]
]

View File

@ -1,2 +1,6 @@
752C0E897CA81ACD81F4BB215FA5F8E4
5048AE33D6269B15E21CF28C6F545AB6
752C0E897CA81ACD81F4BB215FA5F8E4
23412CF16549E4E88366DC9DECF39071
81C1F600C5809C7029EE32DE4818CD7D

View File

@ -5,6 +5,269 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## 1.1.0 - 31-03-2021
This version introduces a new way to install and host Mobilizon : Elixir releases. This is the new default way of installing Mobilizon. Please read [UPGRADE.md](./UPGRADE.md#upgrading-from-10-to-11) for details on how to migrate to Elixir binary releases or stay on source install.
### Added
- **Add a group activity logbook**
- **Possibility for user to define a location in their settings to get close events**
- **Support for Elixir releases and runtime.exs, allowing to change configuration without recompiling**
- Support for Sentry
- Added support for custom plural rules on front-end (only Gaelic supported for now)
- Added possibility to bookmark search by location through geohash
- Add ENV parameter to allow Docker users to specify the IP which Mobilizon listens on
- Add instance-wide ICS & Atom feeds of public events (disabled by default)
- Add user and profile secret (tokened) feeds
- Runit configuration files
### Changed
- Prune done background jobs
- Improved search form
- Improved backend error page
- Added a confirmation step before deleting a conversation
- The default configuration for Mobilizon now listens only on the local interface
- Creating an event from the group page configures the event creation interface with the group as organizer
- Only provide executables for unix
### Removed
- Support for Elixir versions < 1.11
### Fixes
- Fixed editing a group discussion
- Fixed accessing terms and privacy pages
- Fixed refreshing only groups which are stale
- Fixed success message when validating group follower
- Fixed formatted dates using system locale instead of browser/Mobilizon's locale
- Fixed federating draft status
- Fixed group draft posts being sent to followers
- Fixed detecting membership status on group page
- Fixed admin language selection
- Fixed geospatial configuration only being evaluated at compile-time, not at runtime
- Handle ActivityPub Fetcher returning text that's not JSON
- Fix accessing a group profile when not a member
- Fixed accessing the homepage with no location setting defined
- Fixed location field not showing in preferences if setting not already set
- Fixed lasts events published order on the homepage
- Fixed a typo in range/radius showing the wrong radius for close events on homepage
- Fixed hashtags disappearing from content
- Fixed close events order
- Fixed group posts edition
- Fixed validating new email with bad token
- Fixed `.well-known/host-meta` not being accessible with correct `Accept` header
- Fixed posts default publish date overriding remote ones
- Fixed getting a page description in some cases when creating a resource
- Fixed getting metadata from tweets when creating a resource
- Fixed bad handling of duplicate usernames
- Fixed handling of bad URIs to proxify
- Fixed creating discussion with title containing only spaces
- Fixed registering new user account with same email as unconfirmed
- Fixed handling changing default actor unlogged
- Fixed handling getting organized events from an actor when not authorized
- Fixed empty comments being allowed
- Fixed the number of group followers per page
- Fixed issue when selecting a location in your settings
- Fixed group feeds not showing when you are a member of the group
- Fixed handling feeds with unknown format
- Fixed a couple of issues when viewing a remote group
- Fixed issues with the attributed organizer when creating an event
- Fixed HTML entities not being decoded in icalendar exports and feeds
- Fixed instance follows being auto-approved
- Fixed parsing the IP from the MOBILIZON_INSTANCE_LISTEN_IP env variable for Docker
- Fixed release startup in Docker container
### Translations
- Arabic
- Belarusian
- Bengali
- Catalan
- Chinese (Traditional)
- English
- French
- Gaelic **New!**
- Galician
- German
- Hungarian
- Italian
- Occitan
- Polish
- Portuguese (Brazil)
- Russian
- Slovenian
- Spanish
## 1.1.0-rc.3 - 30-03-2021
### Changed
- Only provide executables for unix
### Fixed
- Fixed parsing the IP from the MOBILIZON_INSTANCE_LISTEN_IP env variable for Docker
- Fixed release startup in Docker container
## 1.1.0-rc.2 - 30-03-2021
### Added
- Runit configuration files
### Fixed
- Fixed the number of group followers per page
- Fixed issue when selecting a location in your settings
- Fixed group feeds not showing when you are a member of the group
- Fixed handling feeds with unknown format
- Fixed a couple of issues when viewing a remote group
- Fixed issues with the attributed organizer when creating an event
- Fixed HTML entities not being decoded in icalendar exports and feeds
- Fixed instance follows being auto-approved
### Translations
- Galician
- German
- Hungarian
- Russian
- Spanish
## 1.1.0-rc.1 - 29-03-2021
### Added
- Add ENV parameter to allow Docker users to specify the IP which Mobilizon listens on
- Add instance-wide ICS & Atom feeds of public events (disabled by default)
- Add user and profile secret (tokened) feeds
### Changed
- The default configuration for Mobilizon now listens only on the local interface
- Creating an event from the group page configures the event creation interface with the group as organizer
### Fixed
- Fixed hashtags disappearing from content
- Fixed close events order
- Fixed group posts edition
- Fixed validating new email with bad token
- Fixed `.well-known/host-meta` not being accessible with correct `Accept` header
- Fixed posts default publish date overriding remote ones
- Fixed getting a page description in some cases when creating a resource
- Fixed getting metadata from tweets when creating a resource
- Fixed bad handling of duplicate usernames
- Fixed handling of bad URIs to proxify
- Fixed creating discussion with title containing only spaces
- Fixed registering new user account with same email as unconfirmed
- Fixed handling changing default actor unlogged
- Fixed handling getting organized events from an actor when not authorized
- Fixed empty comments being allowed
### Translations
- Gaelic
- Galician
- German
- Hungarian
- Italian
- Polish
- Portuguese (Brazil)
- Russian
- Slovenian
- Spanish
## 1.1.0-beta.6 - 17-03-2021
### Fixed
- Fixed a typo in range/radius showing the wrong radius for close events on homepage
## 1.1.0-beta.5 - 17-03-2021
### Fixed
- Fixed a typo in range/radius preventing close events from showing up
## 1.1.0-beta.4 - 17-03-2021
### Fixed
- Fixed accessing the homepage with no location setting defined
- Fixed location field not showing in preferences if setting not already set
- Fixed lasts events published order on the homepage
## 1.1.0-beta.3 - 16-03-2021
### Fixed
- Handle ActivityPub Fetcher returning text that's not JSON
- Fix accessing a group profile when not a member
## 1.1.0-beta.2 - 16-03-2021
### Fixed
- Fixed geospatial configuration only being evaluated at compile-time, not at runtime
### Translations
- Slovenian
## 1.1.0-beta.1 - 10-03-2021
This version introduces a new way to install and host Mobilizon : Elixir releases. This is the new default way of installing Mobilizon. Please read [UPGRADE.md](./UPGRADE.md#upgrading-from-10-to-11) for details on how to migrate to Elixir binary releases or stay on source install.
### Added
- **Add a group activity logbook**
- **Possibility for user to define a location in their settings to get close events**
- **Support for Elixir releases and runtime.exs, allowing to change configuration without recompiling**
- Support for Sentry
- Added support for custom plural rules on front-end (only Gaelic supported for now)
- Added possibility to bookmark search by location through geohash
### Changed
- Prune done background jobs
- Improved search form
- Improved backend error page
- Added a confirmation step before deleting a conversation
### Removed
- Support for Elixir versions < 1.11
### Fixes
- Fixed editing a group discussion
- Fixed accessing terms and privacy pages
- Fixed refreshing only groups which are stale
- Fixed success message when validating group follower
- Fixed formatted dates using system locale instead of browser/Mobilizon's locale
- Fixed federating draft status
- Fixed group draft posts being sent to followers
- Fixed detecting membership status on group page
- Fixed admin language selection
### Translations
- Arabic
- Belarusian
- Bengali
- Catalan
- Chinese (Traditional)
- English
- French
- Gaelic
- Galician
- German
- Hungarian
- Italian
- Occitan
- Portuguese (Brazil)
- Slovenian
- Spanish
- Russian
## 1.0.7 - 27-02-2021
### Fixed

44
UPGRADE.md Normal file
View File

@ -0,0 +1,44 @@
# Upgrading from 1.0 to 1.1
The 1.1 version of Mobilizon brings Elixir releases support. An Elixir release is a self-contained directory that contains all of Mobilizon's code (front-end and backend), it's dependencies, as well as the Erlang Virtual Machine and runtime (only the parts you need). As long as the release has been assembled on the same OS and architecture, it can be deploy and run straight away. [Read more about releases](https://elixir-lang.org/getting-started/mix-otp/config-and-releases.html#releases).
## Comparison
Migrating to releases means:
* You only get a precompiled binary, so you avoid compilation times when updating
* No need to have Elixir/NodeJS installed on the system
* Code/data/config location is more common (/opt, /var/lib, /etc)
* More efficient, as only what you need from the Elixir/Erlang standard libraries is included and all of the code is directly preloaded
* You can't hardcode modifications in Mobilizon's code
Staying on source releases means:
* You need to recompile everything with each update
* Compiling frontend and backend has higher system requirements than just running Mobilizon
* You can change things in Mobilizon's code and recompile right away to test changes
## Releases
If you want to migrate to releases, [we provide a full guide](https://tcit.frama.io/documentation/administration/upgrading/source_to_release/). You may do this at any time.
## Source install
To stay on a source release, you just need to check the following things:
* Rename your configuration file `config/prod.secret.exs` to `config/runtime.exs`.
* If your config file includes `server: true` under `Mobilizon.Web.Endpoint`, remove it.
```diff
config :mobilizon, Mobilizon.Web.Endpoint,
- server: true,
```
* The uploads default directory is now `/var/lib/mobilizon/uploads`. To keep it in the previous `uploads/` directory, just add the following line to `config/runtime.exs`:
```elixir
config :mobilizon, Mobilizon.Web.Upload.Uploader.Local, uploads: "uploads"
```
Or you may use any other directory where the `mobilizon` user has write permissions.
* The GeoIP database default directory is now `/var/lib/mobilizon/geo/GeoLite2-City.mmdb`. To keep it in the previous `priv/data/GeoLite2-City.mmdb` directory, just add the following line to `config/runtime.exs`:
```elixir
config :geolix, databases: [
%{
id: :city,
adapter: Geolix.Adapter.MMDB2,
source: "priv/data/GeoLite2-City.mmdb"
}
]
```
Or you may use any other directory where the `mobilizon` user has read permissions.

View File

@ -8,7 +8,7 @@ import Config
# General application configuration
config :mobilizon,
ecto_repos: [Mobilizon.Storage.Repo],
env: Mix.env()
env: config_env()
config :mobilizon, Mobilizon.Storage.Repo, types: Mobilizon.Storage.PostgresTypes
@ -32,6 +32,9 @@ config :mobilizon, :instance,
orphan_upload_grace_period_hours: 48,
remove_unconfirmed_users: true,
unconfirmed_user_grace_period_hours: 48,
activity_expire_days: 365,
activity_keep_number: 100,
enable_instance_feeds: false,
email_from: "noreply@localhost",
email_reply_to: "noreply@localhost"
@ -57,7 +60,8 @@ config :mobilizon, Mobilizon.Web.Endpoint,
config :mime, :types, %{
"application/activity+json" => ["activity-json"],
"application/ld+json" => ["activity-json"],
"application/jrd+json" => ["jrd-json"]
"application/jrd+json" => ["jrd-json"],
"application/xrd+xml" => ["xrd-xml"]
}
# Upload configuration
@ -79,7 +83,7 @@ config :mobilizon, Mobilizon.Web.Upload,
]
]
config :mobilizon, Mobilizon.Web.Upload.Uploader.Local, uploads: "uploads"
config :mobilizon, Mobilizon.Web.Upload.Uploader.Local, uploads: "/var/lib/mobilizon/uploads"
config :mobilizon, :media_proxy,
enabled: true,
@ -92,8 +96,7 @@ config :mobilizon, :media_proxy,
follow_redirect: true,
pool: :media
]
],
whitelist: []
]
config :mobilizon, Mobilizon.Web.Email.Mailer,
adapter: Bamboo.SMTPAdapter,
@ -112,9 +115,14 @@ config :mobilizon, Mobilizon.Web.Email.Mailer,
# Configures Elixir's Logger
config :logger, :console,
backends: [:console, Sentry.LoggerBackend],
format: "$time $metadata[$level] $message\n",
metadata: [:request_id]
config :logger, Sentry.LoggerBackend,
level: :warn,
capture_log_messages: true
config :mobilizon, Mobilizon.Web.Auth.Guardian, issuer: "mobilizon"
config :guardian, Guardian.DB,
@ -138,30 +146,12 @@ config :ueberauth,
config :mobilizon, :auth, oauth_consumer_strategies: []
config :mobilizon, :ldap,
enabled: System.get_env("LDAP_ENABLED") == "true",
host: System.get_env("LDAP_HOST") || "localhost",
port: String.to_integer(System.get_env("LDAP_PORT") || "389"),
ssl: System.get_env("LDAP_SSL") == "true",
sslopts: [],
tls: System.get_env("LDAP_TLS") == "true",
tlsopts: [],
base: System.get_env("LDAP_BASE") || "dc=example,dc=com",
uid: System.get_env("LDAP_UID") || "cn",
require_bind_for_search: !(System.get_env("LDAP_REQUIRE_BIND_FOR_SEARCH") == "false"),
# The full CN to filter by `memberOf`, or `false` if disabled
group: false,
# Either the admin UID matching the field in `uid`,
# Either a tuple with the fully qualified DN: {:full, uid=admin,dc=example.com,dc=local}
bind_uid: System.get_env("LDAP_BIND_UID"),
bind_password: System.get_env("LDAP_BIND_PASSWORD")
config :geolix,
databases: [
%{
id: :city,
adapter: Geolix.Adapter.MMDB2,
source: "priv/data/GeoLite2-City.mmdb"
source: "/var/lib/mobilizon/geo/GeoLite2-City.mmdb"
}
]
@ -275,13 +265,18 @@ config :mobilizon, :anonymous,
config :mobilizon, Oban,
repo: Mobilizon.Storage.Repo,
log: false,
queues: [default: 10, search: 5, mailers: 10, background: 5],
crontab: [
{"@hourly", Mobilizon.Service.Workers.BuildSiteMap, queue: :background},
{"17 * * * *", Mobilizon.Service.Workers.RefreshGroups, queue: :background},
# To be activated in Mobilizon 1.2
# {"@hourly", Mobilizon.Service.Workers.CleanOrphanMediaWorker, queue: :background},
{"@hourly", Mobilizon.Service.Workers.CleanUnconfirmedUsersWorker, queue: :background}
queues: [default: 10, search: 5, mailers: 10, background: 5, activity: 5],
plugins: [
{Oban.Plugins.Cron,
crontab: [
{"@hourly", Mobilizon.Service.Workers.BuildSiteMap, queue: :background},
{"17 * * * *", Mobilizon.Service.Workers.RefreshGroups, queue: :background},
# To be activated in Mobilizon 1.2
# {"@hourly", Mobilizon.Service.Workers.CleanOrphanMediaWorker, queue: :background},
{"@hourly", Mobilizon.Service.Workers.CleanUnconfirmedUsersWorker, queue: :background},
{"@daily", Mobilizon.Service.Workers.CleanOldActivityWorker, queue: :background}
]},
{Oban.Plugins.Pruner, max_age: 300}
]
config :mobilizon, :rich_media,
@ -305,4 +300,4 @@ config :mobilizon, :external_resource_providers, %{
# Import environment specific config. This must remain at the bottom
# of this file so it overrides the configuration defined above.
import_config "#{Mix.env()}.exs"
import_config "#{config_env()}.exs"

View File

@ -8,6 +8,7 @@ import Config
# with brunch.io to recompile .js and .css sources.
config :mobilizon, Mobilizon.Web.Endpoint,
http: [
ip: {127, 0, 0, 1},
port: 4000
],
url: [
@ -91,24 +92,9 @@ config :mobilizon, :instance,
# config :mobilizon, :activitypub, sign_object_fetches: false
config :mobilizon, Mobilizon.Web.Upload.Uploader.Local, uploads: "uploads"
config :mobilizon, :anonymous,
reports: [
allowed: true
]
require Logger
cond do
System.get_env("INSTANCE_CONFIG") &&
File.exists?("./config/#{System.get_env("INSTANCE_CONFIG")}") ->
import_config System.get_env("INSTANCE_CONFIG")
System.get_env("DOCKER", "false") == "false" && File.exists?("./config/dev.secret.exs") ->
import_config "dev.secret.exs"
System.get_env("DOCKER", "false") == "true" ->
Logger.info("Using environment configuration for Docker")
true ->
Logger.error("No configuration file found")
end

View File

@ -2,11 +2,22 @@
import Config
listen_ip = System.get_env("MOBILIZON_INSTANCE_LISTEN_IP", "::")
listen_ip =
case listen_ip |> to_charlist() |> :inet.parse_address() do
{:ok, listen_ip} -> listen_ip
_ -> raise "MOBILIZON_INSTANCE_LISTEN_IP does not match the expected IP format."
end
config :mobilizon, Mobilizon.Web.Endpoint,
server: true,
url: [host: System.get_env("MOBILIZON_INSTANCE_HOST", "mobilizon.lan")],
http: [port: System.get_env("MOBILIZON_INSTANCE_PORT", "4000")],
secret_key_base: System.get_env("MOBILIZON_INSTANCE_SECRET_KEY_BASE", "changethis")
server: true,
url: [host: System.get_env("MOBILIZON_INSTANCE_HOST", "mobilizon.lan")],
http: [
port: System.get_env("MOBILIZON_INSTANCE_PORT", "4000"),
ip: listen_ip
],
secret_key_base: System.get_env("MOBILIZON_INSTANCE_SECRET_KEY_BASE", "changethis")
config :mobilizon, Mobilizon.Web.Auth.Guardian,
secret_key: System.get_env("MOBILIZON_INSTANCE_SECRET_KEY", "changethis")
@ -22,11 +33,9 @@ config :mobilizon, :instance,
email_from: System.get_env("MOBILIZON_INSTANCE_EMAIL", "noreply@mobilizon.lan"),
email_reply_to: System.get_env("MOBILIZON_REPLY_EMAIL", "noreply@mobilizon.lan")
config :mobilizon, Mobilizon.Web.Upload.Uploader.Local,
uploads: System.get_env("MOBILIZON_UPLOADS", "/app/uploads")
config :mobilizon, Mobilizon.Storage.Repo,
adapter: Ecto.Adapters.Postgres,
username: System.get_env("MOBILIZON_DATABASE_USERNAME", "username"),
@ -49,3 +58,14 @@ config :mobilizon, Mobilizon.Web.Email.Mailer,
retries: 1,
no_mx_lookups: false,
auth: :if_available
config :geolix,
databases: [
%{
id: :city,
adapter: Geolix.Adapter.MMDB2,
source: "/var/lib/mobilizon/geo_db/GeoLite2-City.mmdb"
}
]
config :mobilizon, Mobilizon.Web.Upload.Uploader.Local, uploads: "/var/lib/mobilizon/uploads"

View File

@ -47,6 +47,5 @@ cond do
import_config "prod.secret.exs"
true ->
require Logger
Logger.error("No configuration file found")
:ok
end

View File

@ -36,6 +36,24 @@ config :mobilizon, Mobilizon.Storage.Repo,
port: System.get_env("MOBILIZON_DATABASE_PORT") || "5432",
pool: Ecto.Adapters.SQL.Sandbox
config :mobilizon, :ldap,
enabled: System.get_env("LDAP_ENABLED") == "true",
host: System.get_env("LDAP_HOST") || "localhost",
port: String.to_integer(System.get_env("LDAP_PORT") || "389"),
ssl: System.get_env("LDAP_SSL") == "true",
sslopts: [],
tls: System.get_env("LDAP_TLS") == "true",
tlsopts: [],
base: System.get_env("LDAP_BASE") || "dc=example,dc=com",
uid: System.get_env("LDAP_UID") || "cn",
require_bind_for_search: !(System.get_env("LDAP_REQUIRE_BIND_FOR_SEARCH") == "false"),
# The full CN to filter by `memberOf`, or `false` if disabled
group: false,
# Either the admin UID matching the field in `uid`,
# Either a tuple with the fully qualified DN: {:full, uid=admin,dc=example.com,dc=local}
bind_uid: System.get_env("LDAP_BIND_UID"),
bind_password: System.get_env("LDAP_BIND_PASSWORD")
config :mobilizon, Mobilizon.Web.Email.Mailer, adapter: Bamboo.TestAdapter
config :mobilizon, Mobilizon.Web.Upload, filters: [], link_name: false
@ -53,7 +71,7 @@ config :tesla, Mobilizon.Service.HTTP.GeospatialClient,
config :mobilizon, Mobilizon.Service.Geospatial, service: Mobilizon.Service.Geospatial.Mock
config :mobilizon, Oban, queues: false, crontab: false, plugins: false
config :mobilizon, Oban, queues: false, plugins: false
config :mobilizon, Mobilizon.Web.Auth.Guardian, secret_key: "some secret"

View File

@ -1,5 +1,5 @@
# First build the application assets
FROM node:alpine as assets
FROM node:14-alpine as assets
RUN apk add --no-cache python build-base libwebp-tools bash imagemagick ncurses
@ -8,7 +8,7 @@ RUN yarn install \
&& yarn run build
# Then, build the application binary
FROM elixir:alpine AS builder
FROM elixir:1.11-alpine AS builder
RUN apk add --no-cache build-base git cmake
@ -20,9 +20,9 @@ RUN mix local.hex --force \
COPY lib ./lib
COPY priv ./priv
COPY config ./config
COPY config/config.exs config/prod.exs ./config/
COPY config/docker.exs ./config/runtime.exs
COPY rel ./rel
COPY docker/production/releases.exs ./config/
COPY --from=assets ./priv/static ./priv/static
RUN mix phx.digest \
@ -31,14 +31,32 @@ RUN mix phx.digest \
# Finally setup the app
FROM alpine
ARG BUILD_DATE
ARG VCS_REF
ARG CI_COMMIT_TAG
ARG MOBILIZON_VERSION=${CI_COMMIT_TAG}
LABEL org.opencontainers.image.title="mobilizon" \
org.opencontainers.image.description="Mobilizon for Docker" \
org.opencontainers.image.vendor="joinmobilizon.org" \
org.opencontainers.image.documentation="https://docs.joinmobilizon.org" \
org.opencontainers.image.licenses="AGPL-3.0" \
org.opencontainers.image.url="https://joinmobilizon.org" \
org.opencontainers.image.revision=$VCS_REF \
org.opencontainers.image.created=$BUILD_DATE
RUN apk add --no-cache openssl ncurses-libs file postgresql-client
RUN mkdir -p /app/uploads && chown nobody:nobody /app/uploads
RUN mkdir -p /etc/mobilizon && chown nobody:nobody /etc/mobilizon
USER nobody
EXPOSE 4000
ENV MOBILIZON_DOCKER=true
COPY --from=builder --chown=nobody:nobody _build/prod/rel/mobilizon ./
RUN cp /releases/${MOBILIZON_VERSION}/runtime.exs /etc/mobilizon/config.exs
COPY docker/production/docker-entrypoint.sh ./
ENTRYPOINT ["./docker-entrypoint.sh"]

View File

@ -1,7 +1,7 @@
FROM elixir:latest
LABEL maintainer="Thomas Citharel <tcit@tcit.fr>"
ENV REFRESHED_AT=2020-10-22
ENV REFRESHED_AT=2021-02-08
RUN apt-get update -yq && apt-get install -yq build-essential inotify-tools postgresql-client git curl gnupg xvfb libgtk-3-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 cmake exiftool
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash && apt-get install nodejs -yq
RUN npm install -g yarn wait-on

View File

@ -1,6 +1,6 @@
{
"name": "mobilizon",
"version": "1.0.7",
"version": "1.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
@ -33,7 +33,7 @@
"graphql-tag": "^2.10.3",
"intersection-observer": "^0.12.0",
"leaflet": "^1.4.0",
"leaflet.locatecontrol": "^0.72.0",
"leaflet.locatecontrol": "^0.73.0",
"lodash": "^4.17.11",
"ngeohash": "^0.6.3",
"phoenix": "^1.4.11",
@ -67,14 +67,14 @@
"@types/vuedraggable": "^2.23.0",
"@typescript-eslint/eslint-plugin": "^4.14.1",
"@typescript-eslint/parser": "^4.14.1",
"@vue/cli-plugin-babel": "~4.5.11",
"@vue/cli-plugin-e2e-cypress": "~4.5.11",
"@vue/cli-plugin-eslint": "~4.5.11",
"@vue/cli-plugin-pwa": "~4.5.11",
"@vue/cli-plugin-router": "~4.5.11",
"@vue/cli-plugin-typescript": "~4.5.11",
"@vue/cli-plugin-unit-jest": "~4.5.11",
"@vue/cli-service": "~4.5.11",
"@vue/cli-plugin-babel": "~4.5.12",
"@vue/cli-plugin-e2e-cypress": "~4.5.12",
"@vue/cli-plugin-eslint": "~4.5.12",
"@vue/cli-plugin-pwa": "~4.5.12",
"@vue/cli-plugin-router": "~4.5.12",
"@vue/cli-plugin-typescript": "~4.5.12",
"@vue/cli-plugin-unit-jest": "~4.5.12",
"@vue/cli-service": "~4.5.12",
"@vue/eslint-config-prettier": "^6.0.0",
"@vue/eslint-config-typescript": "^7.0.0",
"@vue/test-utils": "^1.1.0",
@ -88,7 +88,7 @@
"prettier-eslint": "^12.0.0",
"sass": "^1.29.0",
"sass-loader": "^10.0.1",
"typescript": "~4.1.2",
"typescript": "^4.2.3",
"vue-cli-plugin-svg": "~0.1.3",
"vue-i18n-extract": "^1.0.2",
"vue-template-compiler": "^2.6.11",

View File

@ -0,0 +1,119 @@
<template>
<div class="activity-item">
<b-icon :icon="'chat'" :type="iconColor" />
<div class="subject">
<i18n :path="translation" tag="p">
<router-link
v-if="activity.object"
slot="discussion"
:to="{
name: RouteName.DISCUSSION,
params: { slug: subjectParams.discussion_slug },
}"
>{{ subjectParams.discussion_title }}</router-link
>
<b v-else slot="discussion">{{ subjectParams.discussion_title }}</b>
<router-link
v-if="activity.object && subjectParams.old_discussion_title"
slot="old_discussion"
:to="{
name: RouteName.DISCUSSION,
params: { slug: subjectParams.discussion_slug },
}"
>{{ subjectParams.old_discussion_title }}</router-link
>
<b
v-else-if="subjectParams.old_discussion_title"
slot="old_discussion"
>{{ subjectParams.old_discussion_title }}</b
>
<popover-actor-card
:actor="activity.author"
:inline="true"
slot="profile"
>
<b>
{{
$t("@{username}", {
username: usernameWithDomain(activity.author),
})
}}</b
></popover-actor-card
></i18n
>
<small class="has-text-grey activity-date">{{
activity.insertedAt | formatTimeString
}}</small>
</div>
</div>
</template>
<script lang="ts">
import { usernameWithDomain } from "@/types/actor";
import { ActivityDiscussionSubject } from "@/types/enums";
import { Component } from "vue-property-decorator";
import RouteName from "../../router/name";
import PopoverActorCard from "../Account/PopoverActorCard.vue";
import ActivityMixin from "../../mixins/activity";
import { mixins } from "vue-class-component";
@Component({
components: {
PopoverActorCard,
},
})
export default class DiscussionActivityItem extends mixins(ActivityMixin) {
usernameWithDomain = usernameWithDomain;
RouteName = RouteName;
ActivityDiscussionSubject = ActivityDiscussionSubject;
get translation(): string | undefined {
switch (this.activity.subject) {
case ActivityDiscussionSubject.DISCUSSION_CREATED:
if (this.isAuthorCurrentActor) {
return "You created the discussion {discussion}.";
}
return "{profile} created the discussion {discussion}.";
case ActivityDiscussionSubject.DISCUSSION_REPLIED:
if (this.isAuthorCurrentActor) {
return "You replied to the discussion {discussion}.";
}
return "{profile} replied to the discussion {discussion}.";
case ActivityDiscussionSubject.DISCUSSION_RENAMED:
if (this.isAuthorCurrentActor) {
return "You renamed the discussion from {old_discussion} to {discussion}.";
}
return "{profile} renamed the discussion from {old_discussion} to {discussion}.";
case ActivityDiscussionSubject.DISCUSSION_ARCHIVED:
if (this.isAuthorCurrentActor) {
return "You archived the discussion {discussion}.";
}
return "{profile} archived the discussion {discussion}.";
case ActivityDiscussionSubject.DISCUSSION_DELETED:
if (this.isAuthorCurrentActor) {
return "You deleted the discussion {discussion}.";
}
return "{profile} deleted the discussion {discussion}.";
default:
return undefined;
}
}
get iconColor(): string | undefined {
switch (this.activity.subject) {
case ActivityDiscussionSubject.DISCUSSION_CREATED:
case ActivityDiscussionSubject.DISCUSSION_REPLIED:
return "is-success";
case ActivityDiscussionSubject.DISCUSSION_RENAMED:
case ActivityDiscussionSubject.DISCUSSION_ARCHIVED:
return "is-grey";
case ActivityDiscussionSubject.DISCUSSION_DELETED:
return "is-danger";
default:
return undefined;
}
}
}
</script>
<style lang="scss" scoped>
@import "./activity.scss";
</style>

View File

@ -0,0 +1,108 @@
<template>
<div class="activity-item">
<b-icon :icon="'calendar'" :type="iconColor" />
<div class="subject">
<i18n :path="translation" tag="p">
<router-link
slot="event"
v-if="activity.object"
:to="{
name: RouteName.EVENT,
params: { uuid: subjectParams.event_uuid },
}"
>{{ subjectParams.event_title }}</router-link
>
<b v-else slot="event">{{ subjectParams.event_title }}</b>
<popover-actor-card
:actor="activity.author"
:inline="true"
slot="profile"
>
<b>
{{
$t("@{username}", {
username: usernameWithDomain(activity.author),
})
}}</b
></popover-actor-card
></i18n
>
<small class="has-text-grey activity-date">{{
activity.insertedAt | formatTimeString
}}</small>
</div>
</div>
</template>
<script lang="ts">
import { usernameWithDomain } from "@/types/actor";
import {
ActivityEventCommentSubject,
ActivityEventSubject,
} from "@/types/enums";
import { mixins } from "vue-class-component";
import { Component } from "vue-property-decorator";
import RouteName from "../../router/name";
import PopoverActorCard from "../Account/PopoverActorCard.vue";
import ActivityMixin from "../../mixins/activity";
@Component({
components: {
PopoverActorCard,
},
})
export default class EventActivityItem extends mixins(ActivityMixin) {
ActivityEventSubject = ActivityEventSubject;
usernameWithDomain = usernameWithDomain;
RouteName = RouteName;
get translation(): string | undefined {
switch (this.activity.subject) {
case ActivityEventSubject.EVENT_CREATED:
if (this.isAuthorCurrentActor) {
return "You created the event {event}.";
}
return "The event {event} was created by {profile}.";
case ActivityEventSubject.EVENT_UPDATED:
if (this.isAuthorCurrentActor) {
return "You updated the event {event}.";
}
return "The event {event} was updated by {profile}.";
case ActivityEventSubject.EVENT_DELETED:
if (this.isAuthorCurrentActor) {
return "You deleted the event {event}.";
}
return "The event {event} was deleted by {profile}.";
case ActivityEventCommentSubject.COMMENT_POSTED:
if (this.subjectParams.comment_reply_to) {
if (this.isAuthorCurrentActor) {
return "You replied to a comment on the event {event}.";
}
return "{profile} replied to a comment on the event {event}.";
}
if (this.isAuthorCurrentActor) {
return "You posted a comment on the event {event}.";
}
return "{profile} posted a comment on the event {event}.";
default:
return undefined;
}
}
get iconColor(): string | undefined {
switch (this.activity.subject) {
case ActivityEventSubject.EVENT_CREATED:
case ActivityEventCommentSubject.COMMENT_POSTED:
return "is-success";
case ActivityEventSubject.EVENT_UPDATED:
return "is-grey";
case ActivityEventSubject.EVENT_DELETED:
return "is-danger";
default:
return undefined;
}
}
}
</script>
<style lang="scss" scoped>
@import "./activity.scss";
</style>

View File

@ -0,0 +1,183 @@
<template>
<div class="activity-item">
<b-icon :icon="'cog'" :type="iconColor" />
<div class="subject">
<i18n :path="translation" tag="p">
<router-link
v-if="activity.object"
slot="group"
:to="{
name: RouteName.GROUP,
params: { preferredUsername: usernameWithDomain(activity.object) },
}"
>{{ subjectParams.group_name }}</router-link
>
<b v-else slot="post">{{ subjectParams.group_name }}</b>
<popover-actor-card
:actor="activity.author"
:inline="true"
slot="profile"
>
<b>
{{
$t("@{username}", {
username: usernameWithDomain(activity.author),
})
}}</b
></popover-actor-card
></i18n
>
<i18n
:path="detail"
v-for="detail in details"
:key="detail"
tag="p"
class="has-text-grey"
>
<popover-actor-card
:actor="activity.author"
:inline="true"
slot="profile"
>
<b>
{{
$t("@{username}", {
username: usernameWithDomain(activity.author),
})
}}</b
></popover-actor-card
>
<router-link
v-if="activity.object"
slot="group"
:to="{
name: RouteName.GROUP,
params: { preferredUsername: usernameWithDomain(activity.object) },
}"
>{{ subjectParams.group_name }}</router-link
>
<b v-else slot="post">{{ subjectParams.group_name }}</b>
<b v-if="subjectParams.old_group_name" slot="old_group_name">{{
subjectParams.old_group_name
}}</b>
</i18n>
<small class="has-text-grey activity-date">{{
activity.insertedAt | formatTimeString
}}</small>
</div>
</div>
</template>
<script lang="ts">
import { usernameWithDomain } from "@/types/actor";
import { ActivityGroupSubject, GroupVisibility, Openness } from "@/types/enums";
import { Component } from "vue-property-decorator";
import RouteName from "../../router/name";
import PopoverActorCard from "../Account/PopoverActorCard.vue";
import ActivityMixin from "../../mixins/activity";
import { mixins } from "vue-class-component";
@Component({
components: {
PopoverActorCard,
},
})
export default class GroupActivityItem extends mixins(ActivityMixin) {
usernameWithDomain = usernameWithDomain;
RouteName = RouteName;
ActivityGroupSubject = ActivityGroupSubject;
get translation(): string | undefined {
switch (this.activity.subject) {
case ActivityGroupSubject.GROUP_CREATED:
if (this.isAuthorCurrentActor) {
return "You created the group {group}.";
}
return "{profile} created the group {group}.";
case ActivityGroupSubject.GROUP_UPDATED:
if (this.isAuthorCurrentActor) {
return "You updated the group {group}.";
}
return "{profile} updated the group {group}.";
default:
return undefined;
}
}
get iconColor(): string | undefined {
switch (this.activity.subject) {
case ActivityGroupSubject.GROUP_CREATED:
return "is-success";
case ActivityGroupSubject.GROUP_UPDATED:
return "is-grey";
default:
return undefined;
}
}
get details(): string[] {
let details = [];
const changes = this.subjectParams.group_changes.split(",");
if (changes.includes("name") && this.subjectParams.old_group_name) {
details.push("{old_group_name} was renamed to {group}.");
}
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (changes.includes("visibility") && this.activity.object.visibility) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
switch (this.activity.object.visibility) {
case GroupVisibility.PRIVATE:
details.push("Visibility was set to private.");
break;
case GroupVisibility.PUBLIC:
details.push("Visibility was set to public.");
break;
default:
details.push("Visibility was set to an unknown value.");
break;
}
}
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (changes.includes("openness") && this.activity.object.openness) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
switch (this.activity.object.openness) {
case Openness.INVITE_ONLY:
details.push("The group can now only be joined with an invite.");
break;
case Openness.OPEN:
details.push("The group can now be joined by anyone.");
break;
default:
details.push("Unknown value for the openness setting.");
break;
}
}
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (changes.includes("address") && this.activity.object.physicalAddress) {
details.push("The group's physical address was changed.");
}
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (changes.includes("avatar") && this.activity.object.avatar) {
details.push("The group's avatar was changed.");
}
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (changes.includes("banner") && this.activity.object.banner) {
details.push("The group's banner was changed.");
}
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (changes.includes("summary") && this.activity.object.summary) {
details.push("The group's short description was changed.");
}
return details;
}
}
</script>
<style lang="scss" scoped>
@import "./activity.scss";
</style>

View File

@ -0,0 +1,233 @@
<template>
<div class="activity-item">
<b-icon :icon="icon" :type="iconColor" />
<div class="subject">
<i18n :path="translation" tag="p">
<popover-actor-card
v-if="activity.object"
:actor="activity.object.actor"
:inline="true"
slot="member"
>
<b>
{{
$t("@{username}", {
username: usernameWithDomain(activity.object.actor),
})
}}</b
></popover-actor-card
>
<b slot="member" v-else>{{
subjectParams.member_preferred_username
}}</b>
<popover-actor-card
:actor="activity.author"
:inline="true"
slot="profile"
>
<b>
{{
$t("@{username}", {
username: usernameWithDomain(activity.author),
})
}}</b
></popover-actor-card
></i18n
>
<small class="has-text-grey activity-date">{{
activity.insertedAt | formatTimeString
}}</small>
</div>
</div>
</template>
<script lang="ts">
import { usernameWithDomain } from "@/types/actor";
import { ActivityMemberSubject, MemberRole } from "@/types/enums";
import { Component } from "vue-property-decorator";
import RouteName from "../../router/name";
import PopoverActorCard from "../Account/PopoverActorCard.vue";
import ActivityMixin from "../../mixins/activity";
import { mixins } from "vue-class-component";
export const MEMBER_ROLE_VALUE: Record<string, number> = {
[MemberRole.MEMBER]: 20,
[MemberRole.MODERATOR]: 50,
[MemberRole.ADMINISTRATOR]: 90,
[MemberRole.CREATOR]: 100,
};
@Component({
components: {
PopoverActorCard,
},
})
export default class MemberActivityItem extends mixins(ActivityMixin) {
usernameWithDomain = usernameWithDomain;
RouteName = RouteName;
ActivityMemberSubject = ActivityMemberSubject;
get translation(): string | undefined {
switch (this.activity.subject) {
case ActivityMemberSubject.MEMBER_REQUEST:
if (this.isAuthorCurrentActor) {
return "You requested to join the group.";
}
return "{member} requested to join the group.";
case ActivityMemberSubject.MEMBER_INVITED:
if (this.isAuthorCurrentActor) {
return "You invited {member}.";
}
return "{member} was invited by {profile}.";
case ActivityMemberSubject.MEMBER_ADDED:
if (this.isAuthorCurrentActor) {
return "You added the member {member}.";
}
return "{profile} added the member {member}.";
case ActivityMemberSubject.MEMBER_UPDATED:
if (this.subjectParams.member_role && this.subjectParams.old_role) {
return this.roleUpdate;
}
if (this.isAuthorCurrentActor) {
return "You updated the member {member}.";
}
return "{profile} updated the member {member}.";
case ActivityMemberSubject.MEMBER_REMOVED:
if (this.isAuthorCurrentActor) {
return "You excluded member {member}.";
}
return "{profile} excluded member {member}.";
case ActivityMemberSubject.MEMBER_QUIT:
return "{profile} quit the group.";
case ActivityMemberSubject.MEMBER_REJECTED_INVITATION:
return "{member} rejected the invitation to join the group.";
case ActivityMemberSubject.MEMBER_ACCEPTED_INVITATION:
if (this.isAuthorCurrentActor) {
return "You accepted the invitation to join the group.";
}
return "{member} accepted the invitation to join the group.";
default:
return undefined;
}
}
get icon(): string {
switch (this.activity.subject) {
case ActivityMemberSubject.MEMBER_REQUEST:
case ActivityMemberSubject.MEMBER_ADDED:
case ActivityMemberSubject.MEMBER_INVITED:
case ActivityMemberSubject.MEMBER_ACCEPTED_INVITATION:
return "account-multiple-plus";
case ActivityMemberSubject.MEMBER_REMOVED:
case ActivityMemberSubject.MEMBER_REJECTED_INVITATION:
case ActivityMemberSubject.MEMBER_QUIT:
return "account-multiple-minus";
case ActivityMemberSubject.MEMBER_UPDATED:
default:
return "account-multiple";
}
}
get iconColor(): string | undefined {
switch (this.activity.subject) {
case ActivityMemberSubject.MEMBER_ADDED:
case ActivityMemberSubject.MEMBER_INVITED:
case ActivityMemberSubject.MEMBER_JOINED:
case ActivityMemberSubject.MEMBER_APPROVED:
case ActivityMemberSubject.MEMBER_ACCEPTED_INVITATION:
return "is-success";
case ActivityMemberSubject.MEMBER_REQUEST:
case ActivityMemberSubject.MEMBER_UPDATED:
return "is-grey";
case ActivityMemberSubject.MEMBER_REMOVED:
case ActivityMemberSubject.MEMBER_REJECTED_INVITATION:
case ActivityMemberSubject.MEMBER_QUIT:
return "is-danger";
default:
return undefined;
}
}
get roleUpdate(): string | undefined {
if (
Object.keys(MEMBER_ROLE_VALUE).includes(this.subjectParams.member_role) &&
Object.keys(MEMBER_ROLE_VALUE).includes(this.subjectParams.old_role)
) {
if (
MEMBER_ROLE_VALUE[this.subjectParams.member_role] >
MEMBER_ROLE_VALUE[this.subjectParams.old_role]
) {
switch (this.subjectParams.member_role) {
case MemberRole.MODERATOR:
if (this.isAuthorCurrentActor) {
return "You promoted {member} to moderator.";
}
if (this.isObjectMemberCurrentActor) {
return "You were promoted to moderator by {profile}.";
}
return "{profile} promoted {member} to moderator.";
case MemberRole.ADMINISTRATOR:
if (this.isAuthorCurrentActor) {
return "You promoted {member} to administrator.";
}
if (this.isObjectMemberCurrentActor) {
return "You were promoted to administrator by {profile}.";
}
return "{profile} promoted {member} to administrator.";
default:
if (this.isAuthorCurrentActor) {
return "You promoted the member {member} to an unknown role.";
}
if (this.isObjectMemberCurrentActor) {
return "You were promoted to an unknown role by {profile}.";
}
return "{profile} promoted {member} to an unknown role.";
}
} else {
switch (this.subjectParams.member_role) {
case MemberRole.MODERATOR:
if (this.isAuthorCurrentActor) {
return "You demoted {member} to moderator.";
}
if (this.isObjectMemberCurrentActor) {
return "You were demoted to moderator by {profile}.";
}
return "{profile} demoted {member} to moderator.";
case MemberRole.MEMBER:
if (this.isAuthorCurrentActor) {
return "You demoted {member} to simple member.";
}
if (this.isObjectMemberCurrentActor) {
return "You were demoted to simple member by {profile}.";
}
return "{profile} demoted {member} to simple member.";
default:
if (this.isAuthorCurrentActor) {
return "You demoted the member {member} to an unknown role.";
}
if (this.isObjectMemberCurrentActor) {
return "You were demoted to an unknown role by {profile}.";
}
return "{profile} demoted {member} to an unknown role.";
}
}
} else {
if (this.isAuthorCurrentActor) {
return "You updated the member {member}.";
}
return "{profile} updated the member {member}";
}
}
get isObjectMemberCurrentActor(): boolean {
return (
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
this.activity?.object?.actor?.id === this.currentActor?.id &&
this.currentActor?.id !== undefined
);
}
}
</script>
<style lang="scss" scoped>
@import "./activity.scss";
</style>

View File

@ -0,0 +1,93 @@
<template>
<div class="activity-item">
<b-icon :icon="'bullhorn'" :type="iconColor" />
<div class="subject">
<i18n :path="translation" tag="p">
<router-link
v-if="activity.object"
slot="post"
:to="{
name: RouteName.POST,
params: { slug: subjectParams.post_slug },
}"
>{{ subjectParams.post_title }}</router-link
>
<b v-else slot="post">{{ subjectParams.post_title }}</b>
<popover-actor-card
:actor="activity.author"
:inline="true"
slot="profile"
>
<b>
{{
$t("@{username}", {
username: usernameWithDomain(activity.author),
})
}}</b
></popover-actor-card
></i18n
>
<small class="has-text-grey activity-date">{{
activity.insertedAt | formatTimeString
}}</small>
</div>
</div>
</template>
<script lang="ts">
import { usernameWithDomain } from "@/types/actor";
import { ActivityPostSubject } from "@/types/enums";
import { Component } from "vue-property-decorator";
import RouteName from "../../router/name";
import PopoverActorCard from "../Account/PopoverActorCard.vue";
import ActivityMixin from "../../mixins/activity";
import { mixins } from "vue-class-component";
@Component({
components: {
PopoverActorCard,
},
})
export default class PostActivityItem extends mixins(ActivityMixin) {
usernameWithDomain = usernameWithDomain;
RouteName = RouteName;
ActivityPostSubject = ActivityPostSubject;
get translation(): string | undefined {
switch (this.activity.subject) {
case ActivityPostSubject.POST_CREATED:
if (this.isAuthorCurrentActor) {
return "You created the post {post}.";
}
return "The post {post} was created by {profile}.";
case ActivityPostSubject.POST_UPDATED:
if (this.isAuthorCurrentActor) {
return "You updated the post {post}.";
}
return "The post {post} was updated by {profile}.";
case ActivityPostSubject.POST_DELETED:
if (this.isAuthorCurrentActor) {
return "You deleted the post {post}.";
}
return "The post {post} was deleted by {profile}.";
default:
return undefined;
}
}
get iconColor(): string | undefined {
switch (this.activity.subject) {
case ActivityPostSubject.POST_CREATED:
return "is-success";
case ActivityPostSubject.POST_UPDATED:
return "is-grey";
case ActivityPostSubject.POST_DELETED:
return "is-danger";
default:
return undefined;
}
}
}
</script>
<style lang="scss" scoped>
@import "./activity.scss";
</style>

View File

@ -0,0 +1,189 @@
<template>
<div class="activity-item">
<b-icon :icon="'link'" :type="iconColor" />
<div class="subject">
<i18n :path="translation" tag="p">
<router-link v-if="activity.object" slot="resource" :to="path">{{
subjectParams.resource_title
}}</router-link>
<b v-else slot="resource">{{ subjectParams.resource_title }}</b>
<router-link v-if="activity.object" slot="new_path" :to="path">{{
parentDirectory
}}</router-link>
<b v-else slot="new_path">{{ parentDirectory }}</b>
<router-link
v-if="activity.object && subjectParams.old_resource_title"
slot="old_resource_title"
:to="path"
>{{ subjectParams.old_resource_title }}</router-link
>
<b
v-else-if="subjectParams.old_resource_title"
slot="old_resource_title"
>{{ subjectParams.old_resource_title }}</b
>
<popover-actor-card
:actor="activity.author"
:inline="true"
slot="profile"
>
<b>
{{
$t("@{username}", {
username: usernameWithDomain(activity.author),
})
}}</b
></popover-actor-card
></i18n
>
<small class="has-text-grey activity-date">{{
activity.insertedAt | formatTimeString
}}</small>
</div>
</div>
</template>
<script lang="ts">
import { usernameWithDomain } from "@/types/actor";
import { ActivityResourceSubject } from "@/types/enums";
import { Component } from "vue-property-decorator";
import RouteName from "../../router/name";
import PopoverActorCard from "../Account/PopoverActorCard.vue";
import ActivityMixin from "../../mixins/activity";
import { mixins } from "vue-class-component";
import { Location } from "vue-router";
@Component({
components: {
PopoverActorCard,
},
})
export default class ResourceActivityItem extends mixins(ActivityMixin) {
usernameWithDomain = usernameWithDomain;
RouteName = RouteName;
get translation(): string | undefined {
switch (this.activity.subject) {
case ActivityResourceSubject.RESOURCE_CREATED:
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (this.activity?.object?.type === "folder") {
if (this.isAuthorCurrentActor) {
return "You created the folder {resource}.";
}
return "{profile} created the folder {resource}.";
}
if (this.isAuthorCurrentActor) {
return "You created the resource {resource}.";
}
return "{profile} created the resource {resource}.";
case ActivityResourceSubject.RESOURCE_MOVED:
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (this.activity?.object?.type === "folder") {
if (this.parentDirectory === null) {
if (this.isAuthorCurrentActor) {
return "You moved the folder {resource} to the root folder.";
}
return "{profile} moved the folder {resource} to the root folder.";
}
if (this.isAuthorCurrentActor) {
return "You moved the folder {resource} into {new_path}.";
}
return "{profile} moved the folder {resource} into {new_path}.";
}
if (this.parentDirectory === null) {
if (this.isAuthorCurrentActor) {
return "You moved the resource {resource} to the root folder.";
}
return "{profile} moved the resource {resource} to the root folder.";
}
if (this.isAuthorCurrentActor) {
return "You moved the resource {resource} into {new_path}.";
}
return "{profile} moved the resource {resource} into {new_path}.";
case ActivityResourceSubject.RESOURCE_UPDATED:
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (this.activity?.object?.type === "folder") {
if (this.isAuthorCurrentActor) {
return "You renamed the folder from {old_resource_title} to {resource}.";
}
return "{profile} renamed the folder from {old_resource_title} to {resource}.";
}
if (this.isAuthorCurrentActor) {
return "You renamed the resource from {old_resource_title} to {resource}.";
}
return "{profile} renamed the resource from {old_resource_title} to {resource}.";
case ActivityResourceSubject.RESOURCE_DELETED:
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (this.activity?.object?.type === "folder") {
if (this.isAuthorCurrentActor) {
return "You deleted the folder {resource}.";
}
return "{profile} deleted the folder {resource}.";
}
if (this.isAuthorCurrentActor) {
return "You deleted the resource {resource}.";
}
return "{profile} deleted the resource {resource}.";
default:
return undefined;
}
}
get iconColor(): string | undefined {
switch (this.activity.subject) {
case ActivityResourceSubject.RESOURCE_CREATED:
return "is-success";
case ActivityResourceSubject.RESOURCE_MOVED:
case ActivityResourceSubject.RESOURCE_UPDATED:
return "is-grey";
case ActivityResourceSubject.RESOURCE_DELETED:
return "is-danger";
default:
return undefined;
}
}
get path(): Location {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
let path = this.parentPath(this.activity?.object?.path);
if (path === "") {
return {
name: RouteName.RESOURCE_FOLDER_ROOT,
params: {
preferredUsername: usernameWithDomain(this.activity.group),
},
};
}
return {
name: RouteName.RESOURCE_FOLDER,
params: {
path,
preferredUsername: usernameWithDomain(this.activity.group),
},
};
}
get parentDirectory(): string | undefined | null {
if (this.subjectParams.resource_path) {
const parentPath = this.parentPath(this.subjectParams.resource_path);
const directory = parentPath.split("/");
return directory.pop();
}
return null;
}
parentPath(parent: string): string {
let path = parent.split("/");
path.pop();
return path.join("/").replace(/^\//, "");
}
}
</script>
<style lang="scss" scoped>
@import "./activity.scss";
</style>

View File

@ -0,0 +1,30 @@
<template>
<div class="activity-item">
<span>
<b-skeleton circle width="32px" height="32px"></b-skeleton>
</span>
<div class="subject">
<div class="content">
<p>
<b-skeleton active></b-skeleton>
<b-skeleton active class="datetime"></b-skeleton>
</p>
</div>
</div>
</div>
</template>
<style lang="scss" scoped>
@import "./activity.scss";
div.activity-item {
flex: 1;
.subject {
flex: 1;
max-width: 600px;
.content p > div:last-child {
max-width: 50px;
}
}
}
</style>

View File

@ -0,0 +1,21 @@
.activity-item {
display: flex;
span.icon {
width: 2em;
height: 2em;
box-sizing: border-box;
border-radius: 50%;
background: #fff;
border: 2px solid;
z-index: 2;
flex-shrink: 0;
&.has-text-grey {
border-color: $grey;
}
}
.subject {
padding: 0.25rem 0 0 0.5rem;
}
}

View File

@ -97,7 +97,7 @@
<span
style="cursor: pointer"
class="level-item reply-btn"
@click="createReplyToComment(comment)"
@click="createReplyToComment()"
>
<span class="icon is-small">
<b-icon icon="reply" />
@ -235,17 +235,13 @@ export default class Comment extends Vue {
}
}
async createReplyToComment(comment: IComment): Promise<void> {
async createReplyToComment(): Promise<void> {
if (this.replyTo) {
this.replyTo = false;
this.newComment = new CommentModel();
return;
}
this.replyTo = true;
// this.newComment.inReplyToComment = comment;
await this.$nextTick();
await this.$nextTick(); // For some reason commenteditor needs two $nextTick() to fully render
this.commentEditor.replyToComment(comment);
}
replyToComment(): void {
@ -303,7 +299,7 @@ export default class Comment extends Vue {
get commentId(): string {
if (this.comment.originComment)
return `#comment-${this.comment.originComment.uuid}:${this.comment.uuid}`;
return `#comment-${this.comment.originComment.uuid}-${this.comment.uuid}`;
return `#comment-${this.comment.uuid}`;
}

View File

@ -24,6 +24,9 @@
v-model="newComment.text"
/>
</p>
<p class="help is-danger" v-if="emptyCommentError">
{{ $t("Comment text can't be empty") }}
</p>
</div>
<div class="send-comment">
<b-button
@ -125,12 +128,23 @@ export default class CommentTree extends Vue {
CommentModeration = CommentModeration;
emptyCommentError = false;
@Watch("currentActor")
watchCurrentActor(currentActor: IPerson): void {
this.newComment.actor = currentActor;
}
@Watch("newComment", { deep: true })
resetEmptyCommentError(newComment: IComment): void {
if (this.emptyCommentError) {
this.emptyCommentError = ["", "<p></p>"].includes(newComment.text);
}
}
async createCommentForEvent(comment: IComment): Promise<void> {
this.emptyCommentError = ["", "<p></p>"].includes(comment.text);
if (this.emptyCommentError) return;
try {
if (!comment.actor) return;
await this.$apollo.mutate({
@ -216,10 +230,13 @@ export default class CommentTree extends Vue {
// and reset the new comment field
this.newComment = new CommentModel();
} catch (error) {
console.error(error);
if (error.graphQLErrors && error.graphQLErrors.length > 0) {
this.$notifier.error(error.graphQLErrors[0].message);
} catch (errors) {
console.error(errors);
if (errors.graphQLErrors && errors.graphQLErrors.length > 0) {
const error = errors.graphQLErrors[0];
if (error.field !== "text" && error.message[0] !== "can't be blank") {
this.$notifier.error(error.message);
}
}
}
}

View File

@ -115,7 +115,6 @@
<script lang="ts">
import { CONTACT } from "@/graphql/config";
import { Component, Prop, Vue } from "vue-property-decorator";
import InstanceContactLink from "@/components/About/InstanceContactLink.vue";
@Component({
apollo: {
@ -131,9 +130,6 @@ import InstanceContactLink from "@/components/About/InstanceContactLink.vue";
titleTemplate: "%s | Mobilizon",
};
},
components: {
InstanceContactLink,
},
})
export default class ErrorComponent extends Vue {
@Prop({ required: true, type: Error }) error!: Error;

View File

@ -20,7 +20,7 @@
</template>
</b-autocomplete>
</b-field>
<b-field v-if="isSecureContext()">
<b-field v-if="canDoGeoLocation">
<b-button
type="is-text"
v-if="!gettingLocation"
@ -71,6 +71,9 @@ import { IConfig } from "../../types/config.model";
})
export default class AddressAutoComplete extends Vue {
@Prop({ required: true }) value!: IAddress;
@Prop({ required: false, default: false }) type!: string | false;
@Prop({ required: false, default: true, type: Boolean })
doGeoLocation!: boolean;
addressData: IAddress[] = [];
@ -78,7 +81,7 @@ export default class AddressAutoComplete extends Vue {
isFetching = false;
queryText: string = (this.value && new Address(this.value).fullName) || "";
initialQueryText = "";
addressModalActive = false;
@ -118,13 +121,17 @@ export default class AddressAutoComplete extends Vue {
}
this.isFetching = true;
const variables: { query: string; locale: string; type?: string } = {
query,
locale: this.$i18n.locale,
};
if (this.type) {
variables.type = this.type;
}
const result = await this.$apollo.query({
query: ADDRESS,
fetchPolicy: "network-only",
variables: {
query,
locale: this.$i18n.locale,
},
variables,
});
this.addressData = result.data.searchAddress.map(
@ -142,12 +149,21 @@ export default class AddressAutoComplete extends Vue {
}
}
get queryText(): string {
if (this.value) {
return new Address(this.value).fullName;
}
return this.initialQueryText;
}
set queryText(queryText: string) {
this.initialQueryText = queryText;
}
@Watch("value")
updateEditing(): void {
if (!(this.value && this.value.id)) return;
if (!this.value?.id) return;
this.selected = this.value;
const address = new Address(this.selected);
this.queryText = `${address.poiInfos.name} ${address.poiInfos.alternativeName}`;
}
updateSelected(option: IAddress): void {
@ -239,9 +255,13 @@ export default class AddressAutoComplete extends Vue {
}
// eslint-disable-next-line class-methods-use-this
isSecureContext(): boolean {
get isSecureContext(): boolean {
return window.isSecureContext;
}
get canDoGeoLocation(): boolean {
return this.isSecureContext && this.doGeoLocation;
}
}
</script>
<style lang="scss">

View File

@ -39,13 +39,24 @@
/>
</div>
<div class="media-content">
<p class="event-title">{{ event.title }}</p>
<div class="event-subtitle" v-if="event.physicalAddress">
<p class="event-title" :title="event.title">{{ event.title }}</p>
<div
class="event-subtitle"
v-if="event.physicalAddress"
:title="
isDescriptionDifferentFromLocality
? `${event.physicalAddress.description}, ${event.physicalAddress.locality}`
: event.physicalAddress.description
"
>
<!-- <p>{{ $t('By @{username}', { username: actor.preferredUsername }) }}</p>-->
<span>
<span v-if="isDescriptionDifferentFromLocality">
{{ event.physicalAddress.description }},
{{ event.physicalAddress.locality }}
</span>
<span v-else>
{{ event.physicalAddress.description }}
</span>
</div>
</div>
</div>
@ -130,6 +141,14 @@ export default class EventCard extends Vue {
this.event.organizerActor || this.mergedOptions.organizerActor
);
}
get isDescriptionDifferentFromLocality(): boolean {
return (
this.event?.physicalAddress?.description !==
this.event?.physicalAddress?.locality &&
this.event?.physicalAddress?.description !== undefined
);
}
}
</script>

View File

@ -1,11 +1,11 @@
<template>
<div class="list is-hoverable">
<b-radio-button
v-model="currentActor"
v-model="selectedActor"
:native-value="availableActor"
class="list-item"
v-for="availableActor in actualAvailableActors"
:class="{ 'is-active': availableActor.id === currentActor.id }"
:class="{ 'is-active': availableActor.id === selectedActor.id }"
:key="availableActor.id"
>
<div class="media">
@ -31,9 +31,13 @@
</div>
</template>
<script lang="ts">
import { Component, Prop, Vue, Watch } from "vue-property-decorator";
import { Component, Prop, Vue } from "vue-property-decorator";
import { IPerson, IActor, Actor } from "@/types/actor";
import { PERSON_MEMBERSHIPS } from "@/graphql/actor";
import {
CURRENT_ACTOR_CLIENT,
IDENTITIES,
LOGGED_USER_MEMBERSHIPS,
} from "@/graphql/actor";
import { Paginate } from "@/types/paginate";
import { IMember } from "@/types/actor/member.model";
import { MemberRole } from "@/types/enums";
@ -41,29 +45,37 @@ import { MemberRole } from "@/types/enums";
@Component({
apollo: {
groupMemberships: {
query: PERSON_MEMBERSHIPS,
variables() {
return {
id: this.identity.id,
};
},
update: (data) => data.person.memberships,
skip() {
return !this.identity.id;
},
query: LOGGED_USER_MEMBERSHIPS,
update: (data) => data.loggedUser.memberships,
},
identities: IDENTITIES,
currentActor: CURRENT_ACTOR_CLIENT,
},
})
export default class OrganizerPicker extends Vue {
@Prop() value!: IActor;
@Prop() identity!: IPerson;
@Prop({ required: false, default: false }) restrictModeratorLevel!: boolean;
groupMemberships: Paginate<IMember> = { elements: [], total: 0 };
currentActor: IActor = this.value;
currentActor!: IPerson;
get selectedActor(): IActor | undefined {
if (this.value?.id) {
return this.value;
}
if (this.currentActor) {
return this.currentActor;
}
return undefined;
}
set selectedActor(actor: IActor | undefined) {
this.$emit("input", actor);
}
identities: IActor[] = [];
Actor = Actor;
@ -82,14 +94,12 @@ export default class OrganizerPicker extends Vue {
get actualAvailableActors(): IActor[] {
return [
this.identity,
this.currentActor,
...this.identities.filter(
(identity: IActor) => identity.id !== this.currentActor?.id
),
...this.actualMemberships.map((member) => member.parent),
];
}
@Watch("currentActor")
async fetchMembersForGroup(): Promise<void> {
this.$emit("input", this.currentActor);
].filter((elem) => elem);
}
}
</script>

View File

@ -1,30 +1,30 @@
<template>
<div class="organizer-picker">
<div class="organizer-picker" v-if="selectedActor">
<!-- If we have a current actor (inline) -->
<div
v-if="inline && currentActor.id"
v-if="inline && selectedActor.id"
class="inline box"
@click="isComponentModalActive = true"
>
<div class="media">
<div class="media-left">
<figure class="image is-48x48" v-if="currentActor.avatar">
<figure class="image is-48x48" v-if="selectedActor.avatar">
<img
class="image is-rounded"
:src="currentActor.avatar.url"
:alt="currentActor.avatar.alt"
:src="selectedActor.avatar.url"
:alt="selectedActor.avatar.alt"
/>
</figure>
<b-icon v-else size="is-large" icon="account-circle" />
</div>
<div class="media-content" v-if="currentActor.name">
<p class="is-4">{{ currentActor.name }}</p>
<div class="media-content" v-if="selectedActor.name">
<p class="is-4">{{ selectedActor.name }}</p>
<p class="is-6 has-text-grey">
{{ `@${currentActor.preferredUsername}` }}
{{ `@${selectedActor.preferredUsername}` }}
</p>
</div>
<div class="media-content" v-else>
{{ `@${currentActor.preferredUsername}` }}
{{ `@${selectedActor.preferredUsername}` }}
</div>
<b-button type="is-text" @click="isComponentModalActive = true">
{{ $t("Change") }}
@ -33,45 +33,18 @@
</div>
<!-- If we have a current actor -->
<span
v-else-if="currentActor.id"
v-else-if="selectedActor.id"
class="block"
@click="isComponentModalActive = true"
>
<img
class="image is-48x48"
v-if="currentActor.avatar"
:src="currentActor.avatar.url"
:alt="currentActor.avatar.alt"
v-if="selectedActor.avatar"
:src="selectedActor.avatar.url"
:alt="selectedActor.avatar.alt"
/>
<b-icon v-else size="is-large" icon="account-circle" />
</span>
<!-- If we have no current actor -->
<div v-if="groupMemberships.total === 0 || !currentActor.id" class="box">
<div class="media">
<div class="media-left">
<figure class="image is-48x48" v-if="identity.avatar">
<img
class="image is-rounded"
:src="identity.avatar.url"
:alt="identity.avatar.alt"
/>
</figure>
<b-icon v-else size="is-large" icon="account-circle" />
</div>
<div class="media-content" v-if="identity.name">
<p class="is-4">{{ identity.name }}</p>
<p class="is-6 has-text-grey">
{{ `@${identity.preferredUsername}` }}
</p>
</div>
<div class="media-content" v-else>
{{ `@${identity.preferredUsername}` }}
</div>
<b-button type="is-text" @click="isComponentModalActive = true">
{{ $t("Change") }}
</b-button>
</div>
</div>
<b-modal :active.sync="isComponentModalActive" has-modal-card>
<div class="modal-card">
<header class="modal-card-head">
@ -81,20 +54,15 @@
<div class="columns">
<div class="column">
<organizer-picker
v-model="currentActor"
:identity.sync="identity"
v-model="selectedActor"
@input="relay"
:restrict-moderator-level="true"
/>
</div>
<div class="column">
<div v-if="actorMembersForCurrentActor.length > 0">
<div v-if="actorMembers.length > 0">
<p>{{ $t("Add a contact") }}</p>
<p
class="field"
v-for="actor in actorMembersForCurrentActor"
:key="actor.id"
>
<p class="field" v-for="actor in actorMembers" :key="actor.id">
<b-checkbox v-model="actualContacts" :native-value="actor.id">
<div class="media">
<div class="media-left">
@ -138,79 +106,121 @@
<script lang="ts">
import { Component, Prop, Vue, Watch } from "vue-property-decorator";
import { IMember } from "@/types/actor/member.model";
import { IActor, IGroup, IPerson } from "../../types/actor";
import { IActor, IGroup, IPerson, usernameWithDomain } from "../../types/actor";
import OrganizerPicker from "./OrganizerPicker.vue";
import { PERSON_MEMBERSHIPS_WITH_MEMBERS } from "../../graphql/actor";
import {
CURRENT_ACTOR_CLIENT,
LOGGED_USER_MEMBERSHIPS,
} from "../../graphql/actor";
import { Paginate } from "../../types/paginate";
import { GROUP_MEMBERS } from "@/graphql/member";
import { ActorType, MemberRole } from "@/types/enums";
const MEMBER_ROLES = [
MemberRole.CREATOR,
MemberRole.ADMINISTRATOR,
MemberRole.MODERATOR,
MemberRole.MEMBER,
];
@Component({
components: { OrganizerPicker },
apollo: {
groupMemberships: {
query: PERSON_MEMBERSHIPS_WITH_MEMBERS,
members: {
query: GROUP_MEMBERS,
variables() {
return {
id: this.identity.id,
name: usernameWithDomain(this.selectedActor),
page: this.membersPage,
limit: 10,
roles: MEMBER_ROLES.join(","),
};
},
update: (data) => data.person.memberships,
update: (data) => data.group.members,
skip() {
return !this.identity.id;
return (
!this.selectedActor || this.selectedActor.type !== ActorType.GROUP
);
},
},
currentActor: CURRENT_ACTOR_CLIENT,
userMemberships: {
query: LOGGED_USER_MEMBERSHIPS,
variables: {
page: 1,
limit: 100,
},
update: (data) => data.loggedUser.memberships,
},
},
})
export default class OrganizerPickerWrapper extends Vue {
@Prop({ type: Object, required: true }) value!: IActor;
@Prop({ type: Object, required: false }) value!: IActor;
@Prop({ default: true, type: Boolean }) inline!: boolean;
@Prop({ type: Object, required: true }) identity!: IPerson;
currentActor!: IPerson;
isComponentModalActive = false;
currentActor: IActor = this.value;
groupMemberships: Paginate<IMember> = { elements: [], total: 0 };
@Prop({ type: Array, required: false, default: () => [] })
contacts!: IActor[];
members: Paginate<IMember> = { elements: [], total: 0 };
actualContacts: (string | undefined)[] = this.contacts.map(({ id }) => id);
membersPage = 1;
@Watch("contacts")
updateActualContacts(contacts: IActor[]): void {
this.actualContacts = contacts.map(({ id }) => id);
userMemberships: Paginate<IMember> = { elements: [], total: 0 };
get actualContacts(): (string | undefined)[] {
return this.contacts.map(({ id }) => id);
}
@Watch("value")
updateCurrentActor(value: IGroup): void {
this.currentActor = value;
set actualContacts(contactsIds: (string | undefined)[]) {
this.$emit(
"update:contacts",
this.actorMembers.filter(({ id }) => contactsIds.includes(id))
);
}
@Watch("userMemberships")
setInitialActor(): void {
if (this.$route.query?.actorId) {
const actorId = this.$route.query?.actorId as string;
this.$router.replace({ query: undefined });
const actor = this.userMemberships.elements.find(
({ parent: { id }, role }) =>
actorId === id && MEMBER_ROLES.includes(role)
)?.parent as IActor;
this.selectedActor = actor;
}
}
get selectedActor(): IActor | undefined {
if (this.value?.id) {
return this.value;
}
if (this.currentActor) {
return this.currentActor;
}
return undefined;
}
set selectedActor(selectedActor: IActor | undefined) {
this.$emit("input", selectedActor);
}
async relay(group: IGroup): Promise<void> {
this.currentActor = group;
this.actualContacts = [];
this.selectedActor = group;
}
pickActor(): void {
this.$emit(
"update:contacts",
this.actorMembersForCurrentActor.filter(({ id }) =>
this.actualContacts.includes(id)
)
);
this.$emit("input", this.currentActor);
this.isComponentModalActive = false;
}
get actorMembersForCurrentActor(): IActor[] {
const currentMembership = this.groupMemberships.elements.find(
({ parent: { id } }) => id === this.currentActor.id
);
if (currentMembership) {
return currentMembership.parent.members.elements.map(
({ actor }: { actor: IActor }) => actor
);
get actorMembers(): IActor[] {
if (this.selectedActor?.type === ActorType.GROUP) {
return this.members.elements.map(({ actor }: { actor: IActor }) => actor);
}
return [];
}

View File

@ -0,0 +1,35 @@
<template>
<div>
<p class="time">
{{
formatDistanceToNow(new Date(event.publishAt || event.insertedAt), {
locale: $dateFnsLocale,
addSuffix: true,
}) || $t("Right now")
}}
</p>
<EventCard :event="event" />
</div>
</template>
<script lang="ts">
import { IEvent } from "@/types/event.model";
import { formatDistanceToNow } from "date-fns";
import { Component, Prop, Vue } from "vue-property-decorator";
import EventCard from "./EventCard.vue";
@Component({
components: {
EventCard,
},
})
export default class RecentEventCardWrapper extends Vue {
@Prop({ required: true, type: Object }) event!: IEvent;
formatDistanceToNow = formatDistanceToNow;
}
</script>
<style lang="scss" scoped>
p.time {
color: $orange-2;
}
</style>

View File

@ -58,8 +58,14 @@ export default class ResourceItem extends Vue {
mapServiceTypeToIcon = mapServiceTypeToIcon;
get urlHostname(): string {
return new URL(this.resource.resourceUrl).hostname.replace(/^(www\.)/, "");
get urlHostname(): string | undefined {
if (this.resource?.resourceUrl) {
return new URL(this.resource.resourceUrl).hostname.replace(
/^(www\.)/,
""
);
}
return undefined;
}
}
</script>

View File

@ -26,33 +26,35 @@
</span>
{{ $t("Parent folder") }}
</a>
<a
class="panel-block"
v-for="element in resource.children.elements"
:class="{
clickable:
element.type === 'folder' && element.id !== initialResource.id,
}"
:key="element.id"
@click="goDown(element)"
>
<span class="panel-icon">
<b-icon
icon="folder"
size="is-small"
v-if="element.type === 'folder'"
/>
<b-icon icon="link" size="is-small" v-else />
</span>
{{ element.title }}
<span v-if="element.id === initialResource.id">
<em v-if="element.type === 'folder'"> {{ $t("(this folder)") }}</em>
<em v-else> {{ $t("(this link)") }}</em>
</span>
</a>
<template v-if="resource.children">
<a
class="panel-block"
v-for="element in resource.children.elements"
:class="{
clickable:
element.type === 'folder' && element.id !== initialResource.id,
}"
:key="element.id"
@click="goDown(element)"
>
<span class="panel-icon">
<b-icon
icon="folder"
size="is-small"
v-if="element.type === 'folder'"
/>
<b-icon icon="link" size="is-small" v-else />
</span>
{{ element.title }}
<span v-if="element.id === initialResource.id">
<em v-if="element.type === 'folder'"> {{ $t("(this folder)") }}</em>
<em v-else> {{ $t("(this link)") }}</em>
</span>
</a>
</template>
<p
class="panel-block content has-text-grey has-text-centered"
v-if="resource.children.total === 0"
v-if="resource.children && resource.children.total === 0"
>
{{ $t("No resources in this folder") }}
</p>

View File

@ -14,7 +14,7 @@
:to="{ name: RouteName.PREFERENCES }"
/>
<SettingMenuItem
:title="this.$t('Email notifications')"
:title="this.$t('Notifications')"
:to="{ name: RouteName.NOTIFICATIONS }"
/>
</SettingMenuSection>

View File

@ -0,0 +1,28 @@
<template>
<div class="observer" />
</template>
<script lang="ts">
import "intersection-observer";
import { Component, Prop, Vue } from "vue-property-decorator";
@Component
export default class Observer extends Vue {
@Prop({ required: false, default: () => ({}) }) options!: Record<string, any>;
observer!: IntersectionObserver;
mounted(): void {
this.observer = new IntersectionObserver(([entry]) => {
if (entry && entry.isIntersecting) {
this.$emit("intersect");
}
}, this.options);
this.observer.observe(this.$el);
}
destroyed(): void {
this.observer.disconnect();
}
}
</script>

View File

@ -1,11 +1,12 @@
import { DateTimeFormatOptions } from "vue-i18n";
import { i18n } from "../utils/i18n";
function parseDateTime(value: string): Date {
return new Date(value);
}
function formatDateString(value: string): string {
return parseDateTime(value).toLocaleString(undefined, {
return parseDateTime(value).toLocaleString(locale(), {
weekday: "long",
year: "numeric",
month: "long",
@ -14,7 +15,7 @@ function formatDateString(value: string): string {
}
function formatTimeString(value: string): string {
return parseDateTime(value).toLocaleTimeString(undefined, {
return parseDateTime(value).toLocaleTimeString(locale(), {
hour: "numeric",
minute: "numeric",
});
@ -34,8 +35,10 @@ function formatDateTimeString(value: string, showTime = true): string {
options.hour = "numeric";
options.minute = "numeric";
}
const format = new Intl.DateTimeFormat(undefined, options);
const format = new Intl.DateTimeFormat(locale(), options);
return format.format(parseDateTime(value));
}
const locale = () => i18n.locale.replace("_", "-");
export { formatDateString, formatTimeString, formatDateTimeString };

View File

@ -319,6 +319,7 @@ export const LOGGED_USER_MEMBERSHIPS = gql`
preferredUsername
domain
name
type
avatar {
id
url
@ -359,6 +360,7 @@ export const IDENTITIES = gql`
id
url
}
type
preferredUsername
name
}
@ -370,6 +372,39 @@ export const PERSON_MEMBERSHIPS = gql`
person(id: $id) {
id
memberships {
total
elements {
id
role
parent {
id
preferredUsername
name
domain
type
avatar {
id
url
}
}
invitedBy {
id
preferredUsername
name
}
insertedAt
updatedAt
}
}
}
}
`;
export const PERSON_MEMBERSHIP_GROUP = gql`
query PersonMembershipGroup($id: ID!, $group: String!) {
person(id: $id) {
id
memberships(group: $group) {
total
elements {
id
@ -397,9 +432,9 @@ export const PERSON_MEMBERSHIPS = gql`
}
`;
export const PERSON_MEMBERSHIPS_WITH_MEMBERS = gql`
query PersonMembershipsWithMembers($id: ID!) {
person(id: $id) {
export const GROUP_MEMBERSHIP_SUBSCRIPTION_CHANGED = gql`
subscription($actorId: ID!, $group: String!) {
groupMembershipChanged(personId: $actorId, group: $group) {
id
memberships {
total
@ -415,23 +450,6 @@ export const PERSON_MEMBERSHIPS_WITH_MEMBERS = gql`
id
url
}
members {
total
elements {
id
role
actor {
id
preferredUsername
name
domain
avatar {
id
url
}
}
}
}
}
invitedBy {
id

View File

@ -15,10 +15,11 @@ originId
`;
export const ADDRESS = gql`
query($query:String!, $locale: String) {
query($query:String!, $locale: String, $type: AddressSearchType) {
searchAddress(
query: $query,
locale: $locale
locale: $locale,
type: $type
) {
${$addressFragment}
}

View File

@ -193,8 +193,8 @@ export const FETCH_EVENT_BASIC = gql`
`;
export const FETCH_EVENTS = gql`
query {
events {
query FetchEvents($orderBy: EventOrderBy, $direction: SortDirection) {
events(orderBy: $orderBy, direction: $direction) {
total
elements {
id
@ -207,6 +207,7 @@ export const FETCH_EVENTS = gql`
endsOn
status
visibility
insertedAt
picture {
id
url
@ -591,38 +592,6 @@ export const EVENT_PERSON_PARTICIPATION_SUBSCRIPTION_CHANGED = gql`
}
`;
export const GROUP_MEMBERSHIP_SUBSCRIPTION_CHANGED = gql`
subscription($actorId: ID!) {
groupMembershipChanged(personId: $actorId) {
id
memberships {
total
elements {
id
role
parent {
id
preferredUsername
name
domain
avatar {
id
url
}
}
invitedBy {
id
preferredUsername
name
}
insertedAt
updatedAt
}
}
}
}
`;
export const FETCH_GROUP_EVENTS = gql`
query(
$name: String!
@ -673,3 +642,26 @@ export const FETCH_GROUP_EVENTS = gql`
}
}
`;
export const CLOSE_EVENTS = gql`
query CloseEvents($location: String, $radius: Float) {
searchEvents(location: $location, radius: $radius, page: 1, limit: 10) {
total
elements {
id
title
uuid
beginsOn
picture {
id
url
}
tags {
slug
title
}
__typename
}
}
}
`;

View File

@ -321,3 +321,102 @@ export const REFRESH_PROFILE = gql`
}
}
`;
export const GROUP_TIMELINE = gql`
query GroupTimeline(
$preferredUsername: String!
$type: ActivityType
$author: ActivityAuthor
$page: Int
$limit: Int
) {
group(preferredUsername: $preferredUsername) {
id
preferredUsername
domain
name
activity(type: $type, author: $author, page: $page, limit: $limit) {
total
elements {
id
insertedAt
subject
subjectParams {
key
value
}
type
author {
id
preferredUsername
name
domain
avatar {
id
url
}
}
group {
id
preferredUsername
}
object {
... on Event {
id
title
}
... on Post {
id
title
}
... on Member {
id
actor {
id
name
preferredUsername
domain
avatar {
id
url
}
}
}
... on Resource {
id
title
path
type
}
... on Discussion {
id
title
slug
}
... on Comment {
id
}
... on Group {
id
preferredUsername
domain
name
summary
visibility
openness
physicalAddress {
id
}
banner {
id
}
avatar {
id
}
}
}
}
}
}
}
`;

View File

@ -125,6 +125,11 @@ export const USER_SETTINGS_FRAGMENT = gql`
notificationBeforeEvent
notificationPendingParticipation
notificationPendingMembership
location {
range
geohash
name
}
}
`;
@ -149,6 +154,7 @@ export const SET_USER_SETTINGS = gql`
$notificationBeforeEvent: Boolean
$notificationPendingParticipation: NotificationPendingEnum
$notificationPendingMembership: NotificationPendingEnum
$location: LocationInput
) {
setUserSettings(
timezone: $timezone
@ -157,6 +163,7 @@ export const SET_USER_SETTINGS = gql`
notificationBeforeEvent: $notificationBeforeEvent
notificationPendingParticipation: $notificationPendingParticipation
notificationPendingMembership: $notificationPendingMembership
location: $location
) {
...UserSettingFragment
}
@ -234,3 +241,17 @@ export const UPDATE_USER_LOCALE = gql`
}
}
`;
export const FEED_TOKENS_LOGGED_USER = gql`
query {
loggedUser {
id
feedTokens {
token
actor {
id
}
}
}
}
`;

View File

@ -8,6 +8,7 @@
"About this event": "Пра гэту падзею",
"About this instance": "Пра гэты сервер",
"Accepted": "Прынята",
"Account": "Рахунак",
"Add": "Дадаць",
"Add a note": "Дадаць нататку",
"Add an address": "Дадаць адрас",
@ -15,15 +16,20 @@
"Add some tags": "Дадаць цэтлікі",
"Add to my calendar": "Дадаць у календар",
"Additional comments": "Дадатковыя каментарыі",
"Admin": "Адміністратар",
"Admin settings successfully saved.": "Налады адміністратара захаваны.",
"Administration": "Адміністрацыя",
"All the places have already been taken": "Усе месцы занятыя|Даступнае адно месца|Даступныя {places} месцы|Даступна {places} месцаў",
"Allow all comments": "Дазволіць усе каментарыі",
"Allow registrations": "Дазволіць рэгістравацца",
"An error has occurred.": "Адбылася памылка.",
"Anonymous participant": "Ананімны ўдзельнік",
"Anonymous participations": "Ананімныя ўдзельнікі",
"Approve": "Пацвердзіць",
"Are you sure you want to <b>delete</b> this comment? This action cannot be undone.": "Вы сапраўды хочаце <b>выдаліць</b> гэты каментарый? Гэта дзеянне нельга адмяніць.",
"Are you sure you want to <b>delete</b> this event? This action cannot be undone. You may want to engage the discussion with the event creator or edit its event instead.": "Вы сапраўды жадаеце <b>выдаліць</b> гэту падзею? Гэта дзеянне нельга адмяніць. Магчыма, варта замест гэтага пагаварыць з аўтарам ці аўтаркай падзеі ці адрэдагаваць падзею.",
"Are you sure you want to cancel the event creation? You'll lose all modifications.": "Вы сапраўды хочаце адмяніць стварэнне падзеі? Вы страціце ўсе свае рэдагаванні.",
"Are you sure you want to cancel the event edition? You'll lose all modifications.": "Вы сапраўды хочаце адмяніць рэдагаванне падзеі? Вы страціце ўсе рэдагаванні.",
"Are you sure you want to cancel the event creation? You'll lose all modifications.": "Вы сапраўды жадаеце адмяніць стварэнне падзеі? Вы страціце ўсе свае рэдагаванні.",
"Are you sure you want to cancel the event edition? You'll lose all modifications.": "Вы сапраўды жадаеце адмяніць рэдагаванне падзеі? Вы страціце ўсе рэдагаванні.",
"Are you sure you want to cancel your participation at event \"{title}\"?": "Вы сапраўды хочаце адмовіцца ад удзелу ў падзеі «{title}»?",
"Are you sure you want to delete this event? This action cannot be reverted.": "Вы сапраўды хочаце выдаліць гэту падзею? Гэта дзеянне нельга адмяніць.",
"Avatar": "Аватар",
@ -71,16 +77,21 @@
"Date": "Дата",
"Date and time settings": "Наладкі даты і часу",
"Date parameters": "Параметры даты",
"Default": "Па змоўчанні",
"Delete": "Выдаліць",
"Delete Comment": "Выдаліць каментарый",
"Delete Event": "Выдаліць падзею",
"Delete account": "Выдаліць рахунак",
"Delete event": "Выдаліць падзею",
"Delete everything": "Выдаліць усё",
"Delete my account": "Выдаліць мой рахунак",
"Delete this identity": "Выдаліць гэту ідэнтычнасць",
"Delete your identity": "Выдаліць ідэнтычнасць",
"Delete {eventTitle}": "Выдаліць {eventTitle}",
"Delete {preferredUsername}": "Выдаліць {preferredUsername}",
"Deleting comment": "Выдаліць каментарый",
"Deleting event": "Выдаліць падзею",
"Deleting your Mobilizon account": "Выдаленне вашага Mobilizon рахунку",
"Description": "Апісанне",
"Didn't receive the instructions ?": "Не атрымалі інструкцыі?",
"Display name": "Адлюстравальнае імя",
@ -95,6 +106,7 @@
"Ends on…": "Заканчваецца…",
"Enjoy discovering Mobilizon!": "Зычым прыемнага знаёмства з функцыямі Mobilizon!",
"Enter the link URL": "Увядзіце адрас URL",
"Error while changing email": "Памылка пры змяненні email",
"Error while communicating with the server.": "Памылка падчас звязку з серверам.",
"Error while saving report.": "Памылка падчас запісу паведамлення пра праблемы.",
"Error while validating account": "Памылка падчас пацвярджэння ўліковага запісу",
@ -113,8 +125,10 @@
"Ex: mobilizon.fr": "Напр.: mobilizon.fr",
"Exclude": "Вылучыць",
"Explore": "Агляд",
"Failed to save admin settings": "Памылка пры захаванні налад адміністратара",
"Featured events": "Прапанаваныя падзеі",
"Features": "Магчымасці",
"Federation": "Федерацыя",
"Find an address": "Знайсці адрас",
"Find an instance": "Знайсці сервер",
"Followers": "Падпісчыкі",
@ -126,8 +140,10 @@
"From the {startDate} at {startTime} to the {endDate} at {endTime}": "Ад {startDate}, {startTime} да {endDate}, {endTime}",
"From the {startDate} to the {endDate}": "Ад {startDate} да {endDate}",
"Gather ⋅ Organize ⋅ Mobilize": "Сход ⋅ Арганізацыя ⋅ Мабілізацыя",
"General": "Галоўны",
"General information": "Агульная інфармацыя",
"Getting location": "Атрыманне месцапалажэння",
"Go": "Перайсці",
"Going as {name}": "Іду як {name}",
"Group List": "Спіс груп",
"Group full name": "Поўная назва групы",
@ -137,7 +153,11 @@
"Headline picture": "Ілюстрацыя да загалоўка",
"Hide replies": "Прыхаваць адказы",
"I create an identity": "Я ствараю ідэнтычнасць",
"I don't have a Mobilizon account": "Я ня маю рахунку Mobilizon",
"I have a Mobilizon account": "У мяне ёсць рахунак Mobilizon",
"I have an account on another Mobilizon instance.": "Мой Mobilizon рахунак знаходзіцца на іншым серверы.",
"I participate": "Я прымаю ўдзел",
"I want to allow people to participate without an account.": "Я жадаю дазволіць людзям удзельнічаць без стварэння рахунку.",
"I want to approve every participation request": "Я хачу пацвярджаць кожны запыт на ўдзел",
"Identity {displayName} created": "Створаная ідэнтычнасць {displayName}",
"Identity {displayName} deleted": "Выдаленая ідэнтычнасць {displayName}",
@ -147,7 +167,10 @@
"Impossible to login, your email or password seems incorrect.": "Немагчыма ўвайсці, памылка ці ў адрасе, ці ў паролі.",
"In the meantime, please consider that the software is not (yet) finished. More information {onBlog}.": "Пакуль што разумейце, што гэта праграма (пакуль што) недаробленая. Болей інфармацыі {onBlog}.",
"Installing Mobilizon will allow communities to free themselves from the services of tech giants by creating <b>their own event platform</b>.": "Mobilizon дазваляе супольнасцям вызваліцца ад паслуг тэхнічных гігантаў і стварыць<b>уласную платформу для падзей</b>.",
"Instance Name": "Імя сервера",
"Instance settings": "Налады сервера",
"Instances": "Серверы",
"Join <b>{instance}</b>, a Mobilizon instance": "Далучайцеся да <b>{instance}</b>, які з'яўляецца серверам Mobilizon",
"Join {instance}, a Mobilizon instance": "Прыяднайцеся да {instance}, сервера Mobilizon",
"Last published event": "Апошняя апублікаваная падзея",
"Last week": "На мінулым тыдні",
@ -177,6 +200,7 @@
"Name": "Імя",
"New note": "Новая нататка",
"New password": "Новы пароль",
"Next page": "Наступная старонка",
"No actors found": "Дзеячы не знойдзеныя",
"No address defined": "Адрас не вызначаны",
"No closed reports yet": "Пакуль што закрытых паведамленняў пра праблемы няма",
@ -190,6 +214,7 @@
"No instance to approve|Approve instance|Approve {number} instances": "Няма сервераў для ўхвалення|Ухваліць сервер|Ухваліць {number} сервера|Ухваліць {number} сервераў",
"No instance to reject|Reject instance|Reject {number} instances": "Няма серверам для адмаўлення|Адмовіць серверу|Адмовіць {number} серверам|Адмовіць {number} серверам",
"No instance to remove|Remove instance|Remove {number} instances": "Няма сервераў для выдалення|Выдаліць сервер|Выдаліць {number} сервера|Выдаліць {number} сервера",
"No message": "Няма поведамленняў",
"No open reports yet": "Адкрытых паведамленняў пра праблемы няма",
"No resolved reports yet": "Вырашаных праблем, пра якія былі паведамленні, няма",
"No results for \"{queryText}\"": "Рэзультатаў па «{queryText}» няма",
@ -198,6 +223,15 @@
"Number of places": "Колькасць месцаў",
"OK": "OK",
"Old password": "Стары пароль",
"Open": "Адчыніць",
"Page": "Старонка",
"Participant": "Удзельнік",
"Participants": "Удзельнікі",
"Participate": "Удзельнічаць",
"Participation approval": "Дазваленне ўдзелу",
"Participation confirmation": "Паццьвярджэнне ўдзелу",
"Post a comment": "Даслаць каментар",
"Post a reply": "Даслаць адказ",
"Register for an event by choosing one of your identities": "Рэгіструйцеся на падзеі, выбіраючы любую з сваіх ідэнтычнасцяў",
"This is a demonstration site to test the beta version of Mobilizon.": "Гэта дэманстрацыйны сайт для праверкі бэта-версіі Mobilizon."
}

View File

@ -1,6 +1,32 @@
{
"About": "সম্পর্কে",
"Accepted": "অনুমদিত",
"Account": "অ্",
"Add": "যোগ",
"Admin": "অ্যাড"
"Admin": "অ্যাড",
"Administration": "কর্তৃপক্ষ",
"Avatar": "অবতার",
"Cancel": "বাতিল",
"Change": "পরিবর্তন",
"Clear": "পরিষ্কার",
"Close": "বন্ধ",
"Closed": "বন্ধকৃত",
"Comments": "মতামত",
"Country": "দেশ",
"Create": "বানাও",
"Custom": "আলাদা",
"Dashboard": "মূলপাতা",
"Date": "তারিখ",
"Default": "মূল",
"Delete": "মুছো",
"Description": "বিস্তারিত",
"Domain": "ডোমেইন",
"Draft": "খসড়া",
"Drafts": "খসড়াসমূহ",
"Edit": "সম্পাদন",
"Email": "ইমেইল",
"Event": "ঘটনা",
"Events": "ঘটনা",
"Explore": "অভিযান",
"Please do not use it in any real way.": "আসলভাবে এটা ব্যবহার করো না।"
}

View File

@ -10,7 +10,9 @@
"<b>Please do not use it in any real way.</b>": "<b>No ho facis servir més que proves, sisplau</b>",
"<b>{contact}</b> will be displayed as contact.": "Es mostrarà <b>{contact}</b> com a contacte.|Es mostraran <b>{contact}</b> com a contactes.",
"@{group}": "@{group}",
"@{username}": "@{username}",
"@{username} ({role})": "@{username} ({role})",
"@{username}'s follow request was accepted": "S'ha acceptat la soŀlicitud de seguiment de @{username}",
"@{username}'s follow request was rejected": "S'ha rebutjat la soŀlicitud de seguir-te de @{username}",
"A cookie is a small file containing information that is sent to your computer when you visit a website. When you visit the site again, the cookie allows that site to recognize your browser. Cookies may store user preferences and other information. You can configure your browser to refuse all cookies. However, this may result in some website features or services partially working. Local storage works the same way but allows you to store more data.": "Una cookie és un arxiu petit amb informació que s'envia al teu ordinador quan visites una web. Quan tornes a visitar el lloc web, la cookie fa que el lloc pugui reconèixer el teu navegador. Les cookies poden conservar preferències i altres informacions. Pots configurar el teu navegador perquè rebutgi totes les cookies. Ara bé, això podria fer que algunes funcionalitats o serveis d'algunes webs deixessin de funcionar bé. L'emmagatzematge local funciona de la mateixa manera, però permet desar més informació.",
"A federated software": "Un software federat",
@ -40,6 +42,7 @@
"Actions": "Accions",
"Activated": "Activat",
"Active": "Activa",
"Activity": "Accions",
"Actor": "Agent",
"Add": "Afegeix",
"Add / Remove…": "Afegir / eliminar…",
@ -57,12 +60,14 @@
"Admin settings successfully saved.": "La configuració de l'administrador s'ha desat correctament.",
"Administration": "Administració",
"Administrator": "Administradora",
"All activities": "Totes les accions",
"All good, let's continue!": "Molt bé, continuem!",
"All group members and other eventual server admins will still be able to view this information.": "Aquesta informació serà visible per tots els membres del grup i les administradores del servidor.",
"All the places have already been taken": "No hi ha més places disponibles|Hi ha una plaça disponible|Hi ha {places} disponibles",
"All the places have already been taken": "No hi ha més places disponibles",
"Allow all comments": "Permet tots els comentaris",
"Allow all comments from users with accounts": "Permet comentaris de qualsevol usuària registrada",
"Allow registrations": "Permetre registres",
"An error has occured. Sorry about that. You may try to reload the page.": "S'ha produït un error, ho sentim. Prova de recarregar la pàgina.",
"An error has occurred.": "Hi ha hagut un error.",
"An ethical alternative": "Una alternativa ètica",
"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.": "Una instància és una versió del software de Mobilizon instaŀlada i executant-se en un servidor. Qualsevol persona amb els coneixements suficients pot engegar una instància de {mobilizon_software} o d'altres aplicacions federades, pertanyents al \"fedivers\". El nom d'aquesta instància és {instance_name}. Mobilizon és una xarxa federada de múltiples instàncies (com el correu electrònic), així que les usuàries registrades en instàncies diferents poden comunicar-se encara que no estiguin registrades a la mateixa instància.",
@ -85,6 +90,7 @@
"Are you sure you want to cancel the event creation? You'll lose all modifications.": "Segur que vols esborrar aquesta activitat? Perdràs tots els canvis.",
"Are you sure you want to cancel the event edition? You'll lose all modifications.": "Segur que vols canceŀlar l'edició? Perdràs tots els canvis que hagis fet.",
"Are you sure you want to cancel your participation at event \"{title}\"?": "Segur que vols deixar de participar a l'activitat \"{title}\"?",
"Are you sure you want to delete this entire discussion?": "Estàs segur/a que vols esborrar tota aquesta conversa?",
"Are you sure you want to delete this event? This action cannot be reverted.": "Segur que vols esborrar aquesta activitat? Aquesta acció és irreversible.",
"As the event organizer has chosen to manually validate participation requests, your participation will be really confirmed only once you receive an email stating it's being accepted.": "Com que l'organitzadora de l'activitat ha triat validar manualment les soŀlicituds per participar-hi, hauràs d'esperar la seva decisió. T'arribarà un correu comunicant-te-la.",
"Assigned to": "Assignat a",
@ -97,6 +103,7 @@
"Bold": "Negreta",
"By @{group}": "De @{group}",
"By @{username}": "De @{username}",
"By others": "Les d'altres",
"By {author}": "De {author}",
"By {group}": "De {group}",
"Can be an email or a link, or just plain text.": "Pot ser una adreça de correu, un enllaç o text pla.",
@ -116,6 +123,7 @@
"Change password": "Canvia la contrasenya",
"Change timezone": "Canvia el fus horari",
"Check your inbox (and your junk mail folder).": "Mira la teva safata d'entrada (i la de brossa, per si de cas).",
"City or region": "Municipi o regió",
"Clear": "Esborra",
"Clear participation data for all events": "Esborra les dades d'assistència de totes les activitats",
"Clear participation data for this event": "Esborra les dades d'assistència per aquesta activitat",
@ -124,6 +132,7 @@
"Click to upload": "Clica per pujar",
"Close": "Deshabilita",
"Close comments for all (except for admins)": "Deshabilita els comentaris per a tothom excepte admins",
"Close events": "Activitats prop de tu",
"Closed": "Deshabilitats",
"Comment deleted": "S'ha esborrat el comentari",
"Comment from @{username} reported": "S'ha denunciat un comentari de @{username}",
@ -139,6 +148,7 @@
"Contact": "Contacte",
"Continue editing": "Continua editant",
"Cookies and Local storage": "Cookies i emmagatzematge local",
"Copy details to clipboard": "Copia els detalls al porta-retalls",
"Country": "País/estat",
"Create": "Crea",
"Create a calc": "Crea un full de càlcul",
@ -186,11 +196,13 @@
"Delete Event": "Esborra l'activitat",
"Delete account": "Eliminar el compte",
"Delete conversation": "Esborra la conversa",
"Delete discussion": "ESborra la discussió",
"Delete event": "Esborra l'activitat",
"Delete everything": "Eliminar-ho tot",
"Delete group": "Esborra el grup",
"Delete my account": "Eliminar el meu compte",
"Delete post": "Esborra la publicació",
"Delete this discussion": "Esborra la discussió",
"Delete this identity": "Esborra aquesta identitat",
"Delete your identity": "Esborra la teva identitat",
"Delete {eventTitle}": "Esborra {eventTitle}",
@ -238,6 +250,9 @@
"Enter your own privacy policy. HTML tags allowed. The {mobilizon_privacy_policy} is provided as template.": "Escriu les vostres polítiques de privacitat. Es permeten etiquetes HTML. Pots fer servir les {mobilizon_privacy_policy} com a plantilla.",
"Enter your own terms. HTML tags allowed. The {mobilizon_terms} are provided as template.": "Escriu les vostres condicions. Es permeten etiquetes HTML. Pots fer servir les {mobilizon_terms} com a plantilla.",
"Error": "Error",
"Error details copied!": "S'han copiat els detalls de l'error!",
"Error message": "Missatge d'error",
"Error stacktrace": "Error amb traça",
"Error while changing email": "Error al canviar el correu electrònic",
"Error while communicating with the server.": "S'ha produït un error a l'hora de comunicar-se amb el servidor.",
"Error while login with {provider}. Retry or login another way.": "S'ha produït un error iniciant sessió amb {provider}. Torna-ho a provar o prova un altre mètode d'inici de sessió.",
@ -288,6 +303,7 @@
"From the {startDate} at {startTime} to the {endDate}": "Des de {startDate} a {startTime} fins a {endDate}",
"From the {startDate} at {startTime} to the {endDate} at {endTime}": "Des de {startDate} a {startTime} fins a {endDate} a {endTime}",
"From the {startDate} to the {endDate}": "Des de {startDate} fins a {endDate}",
"From yourself": "Les teves",
"Gather ⋅ Organize ⋅ Mobilize": "Trobem-nos ⋅ Organitzem-nos ⋅ Mobilitzem-nos",
"General": "General",
"General information": "Informació general",
@ -377,6 +393,7 @@
"Last IP adress": "Última adreça IP",
"Last group created": "Els grups més nous",
"Last published event": "Última activitat publicada",
"Last published events": "Les últimes activitats publicades",
"Last sign-in": "Última connexió",
"Last week": "La setmana passada",
"Latest posts": "Últimes publicacions",
@ -393,6 +410,7 @@
"Limited number of places": "Places limitades",
"List title": "Títol de la llista",
"Load more": "Carrega'n més",
"Load more activities": "Carrega més accions",
"Loading comments…": "S'estan carregant els comentaris…",
"Local": "Local",
"Locality": "Localitat",
@ -461,6 +479,7 @@
"No follower matches the filters": "No hi ha cap seguidor que hi coincideixi",
"No group found": "No s'ha trobat cap grup",
"No groups found": "No s'han trobat grups",
"No information": "No n'hi ha informació",
"No instance follows your instance yet.": "Encara no hi ha cap instància que segueixi la teva.",
"No instance to approve|Approve instance|Approve {number} instances": "No hi ha cap instància per aprovar|Aprova la instància|Aprova les {number} instàncies",
"No instance to reject|Reject instance|Reject {number} instances": "No hi ha cap instància per rebutjar|Rebutja la instància|Rebutja les {number} instàncies",
@ -469,6 +488,7 @@
"No member matches the filters": "No hi ha cap membre que coincideixi amb els filtres especificats",
"No message": "Sense missatges",
"No moderation logs yet": "Encara no hi ha registres de moderació",
"No more activity to display.": "No hi ha res més a mostrar.",
"No notification settings yet": "Encara no hi ha configuració de les modificacions",
"No one is going to this event": "Ningú ha confirmat|Hi va una persona|Hi aniran {going} persones",
"No open reports yet": "No hi ha cap denúncia oberta",
@ -503,6 +523,7 @@
"On {date} ending at {endTime}": "A {date} i acaba a {endTime}",
"On {date} from {startTime} to {endTime}": "A {date} de {startTime} a {endTime}",
"On {date} starting at {startTime}": "A {date} i comença a {startTime}",
"On {instance}": "A {instance}",
"One person is going": "Ningú s'hi ha apuntat|S'hi ha apuntat 1 persona|S'hi han apuntat {approved} persones",
"Only accessible through link": "Només accessible amb un enllaç",
"Only accessible through link (private)": "Només accessible mitjançant un enllaç (privat)",
@ -513,6 +534,8 @@
"Only group members can access discussions": "Només els membres del grup poden accedir a les discussions",
"Only group moderators can create, edit and delete posts.": "Només les moderadores poden crear, modificar i esborrar publicacions.",
"Open": "Obre",
"Open a topic on our forum": "Obre un tema al fòrum",
"Open an issue on our bug tracker (advanced users)": "Obre una incidència (ús avançat)",
"Opened reports": "Denúncies obertes",
"Or": "O",
"Organized": "Organitzat",
@ -551,6 +574,7 @@
"Pick a profile or a group": "Tria un perfil o un grup",
"Pick an identity": "Tria una identitat",
"Pick an instance": "Tria una instància",
"Please add as many details as possible to help identify the problem.": "Afegeix tots els detalls possibles per ajudar-nos a identificar el problema.",
"Please check your spam folder if you didn't receive the email.": "Comprova la teva carpeta de brossa si no t'ha arribat el mail a la safata d'entrada.",
"Please contact this instance's Mobilizon admin if you think this is a mistake.": "Si creus que és un error, contacta amb les administradores d'aquesta instància de Mobilizon.",
"Please do not use it in any real way.": "Sisplau, no ho facis servir per coses que no siguin proves.",
@ -649,6 +673,7 @@
"Searching…": "S'està cercant…",
"Search…": "Cerca…",
"Select a language": "Tria una llengua",
"Select a radius": "Tria un radi de distància",
"Select a timezone": "Tria un fus horari",
"Select languages": "Tria les llengües",
"Send email": "Envia correu",
@ -678,6 +703,7 @@
"Suspend group": "Suspen el grup",
"Suspended": "Suspesa",
"Task lists": "Llista de tasques",
"Technical details": "Detalls tècnics",
"Tentative": "Provisional",
"Tentative: Will be confirmed later": "Provisional: Ho confirmaran més endavant",
"Terms": "Condicions",
@ -699,19 +725,33 @@
"The event will show as attributed to this group.": "L'activitat es mostrarà atribuïda an aquest grup.",
"The event will show as attributed to your personal profile.": "L'activitat es mostrarà atribuïda al teu perfil personal.",
"The event will show the group as organizer.": "El grup apareixerà com a organitzador de l'activitat.",
"The event {event} was created by {profile}.": "{profile} ha creat {event}.",
"The event {event} was deleted by {profile}.": "{profile} ha esborrat l'activitat {event}.",
"The event {event} was updated by {profile}.": "{profile} ha actualitzat l'activitat {event}.",
"The events you created are not shown here.": "Aquí no apareixen les activitats que has creat tu.",
"The group can now be joined by anyone.": "El grup és obert a tothom.",
"The group can now only be joined with an invite.": "El grup ara només és obert a persones amb invitació.",
"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.": "Es llistarà públicament el grup en els resultats de cerca i podrà ser suggerit en la secció d'explorar. Només se'n mostrarà informació pública.",
"The group's avatar was changed.": "S'ha canviat l'avatar del grup.",
"The group's banner was changed.": "S'ha canviat la foto de portada del grup.",
"The group's physical address was changed.": "S'ha canviat l'adreça postal del grup.",
"The group's short description was changed.": "S'ha canviat la descripció curta del grup.",
"The instance administrator is the person or entity that runs this Mobilizon instance.": "L'administradora de la instància és la persona o entitat que gestiona aquesta instància de Mobilizon.",
"The member was removed from the group {group}": "S'ha esborrat el/la membre del grup {group}",
"The only way for your group to get new members is if an admininistrator invites them.": "L'única manera de sumar més membres al grup és amb una invitació emesa per una administradora.",
"The organiser has chosen to close comments.": "L'organitzadora ha decidit tancar els comentaris.",
"The page you're looking for doesn't exist.": "La pàgina que buscaves no existeix.",
"The password was successfully changed": "S'ha canviat amb èxit la contrasenya",
"The post {post} was created by {profile}.": "{profile} ha creat l'entrada {post}.",
"The post {post} was deleted by {profile}.": "{profile} ha esborrat l'entrada {post}.",
"The post {post} was updated by {profile}.": "{profile} ha actualitzat l'entrada {post}.",
"The report will be sent to the moderators of your instance. You can explain why you report this content below.": "S'enviarà la denúncia a les persones moderadores de la teva instància. Pots explicar aquí a sota per què denuncies aquest contingut.",
"The technical details of the error can help developers solve the problem more easily. Please add them to your feedback.": "Els detalls tècnics de l'error solen ajudar l'equip de desenvolupament a resoldre el problema. Afegeix-nos als comentaris, sisplau.",
"The user account you're trying to login as has not been confirmed yet. Check your email inbox and eventually your spam folder.": "El compte al qual intentes accedir encara no està confirmat. Comprova el teu correu a la safata d'entrada i, si cal, a la de brossa.",
"The {default_privacy_policy} will be used. They will be translated in the user's language.": "Es farà servir la {default_privacy_policy}. Es presentarà traduïda a la llengua de cada usària.",
"The {default_terms} will be used. They will be translated in the user's language.": "Es faran servir els {default_terms}. Seràn traduïts a la llengua de cada usuària.",
"There are {participants} participants.": "Hi ha {participants} participants.",
"There is no activity yet. Start doing some things to see activity appear here.": "Encara no hi ha hagut activitat. Si fas alguna cosa n'apareixerà aquí una nota.",
"There will be no way to recover your data.": "No hi haurà cap manera de recuperar les teves dades.",
"There's no discussions yet": "No hi ha cap discussió",
"These events may interest you": "Pot ser que t'interessin aquestes activitats",
@ -755,6 +795,7 @@
"Type or select a date…": "Escriu o tria una data…",
"URL": "URL",
"URL copied to clipboard": "S'ha copiat la URL al portapapers",
"Unable to copy to clipboard": "No s'ha pogut copiar al porta-retalls",
"Unable to detect timezone.": "No s'ha pogut detectar el fus horari.",
"Unable to load event for participation. The error details are provided below:": "No s'ha pogut carregar l'activitat. Els detalls de l'error es detallen a sota:",
"Unable to save your participation in this browser.": "No s'ha pogut desar al navegador la teva assistència.",
@ -763,6 +804,7 @@
"Unknown": "Desconegut",
"Unknown actor": "Agent desconegut/da",
"Unknown error.": "Error desconegut.",
"Unknown value for the openness setting.": "Nivell d'obertura del grup desconegut.",
"Unsaved changes": "Canvis sense desar",
"Unset group": "Desmarca el grup",
"Unsuspend": "Aprova",
@ -787,11 +829,15 @@
"View event page": "Mostra la pàgina de l'activitat",
"View everything": "Mostra-ho tot",
"View page on {hostname} (in a new window)": "mostra la pàgina a {hostname} (s'obrirà en una pestanya nova)",
"Visibility was set to an unknown value.": "S'ha canviat el nivell de visibilitat del grup.",
"Visibility was set to private.": "El grup s'ha fet privat.",
"Visibility was set to public.": "El grup s'ha fet públic.",
"Visible everywhere on the web": "Visible per tothom a la web",
"Visible everywhere on the web (public)": "Visible a tot arreu (públic)",
"Waiting for organization team approval.": "Pendent de l'aprovació de l'equip d'organització.",
"Waiting list": "Llista d'espera",
"Warning": "Alerta",
"We improve this software thanks to your feedback. To let us know about this issue, two possibilities (both unfortunately require user account creation):": "Les vostres valoracions ens ajuden a millorar el software. Per informar-nos d'aquest problema, tens dues possibilitats (requereixen un compte):",
"We just sent an email to {email}": "S'acaba d'enviar un correu a {email}",
"We use your timezone to make sure you get notifications for an event at the correct time.": "Fem servir el teu fus horari perquè les notificacions de les activitats t'arribin a temps.",
"We want to develop a <b>digital common</b>, that everyone can make their own, which respects <b>privacy and activism by design</b>.": "Volem desenvolupar un <b>procomú digital</b>, que tothom pugui fer-se seu i que respecti la <b>privacitat i l'activisme per disseny</b>.",
@ -806,15 +852,21 @@
"Welcome back!": "Bentornat/da!",
"Welcome on your administration panel": "Benvingut/da al tauler d'administració",
"Welcome to Mobilizon, {username}!": "Benvingut/da a Mobilizon, {username}!",
"What can I do to help?": "Què podem fer per ajudar?",
"When a moderator from the group creates an event and attributes it to the group, it will show up here.": "Quan una moderadora del grup crea una activitat i l'atribueix al grup, apareixerà aquí.",
"Who can view this event and participate": "Qui pot veure i participar en aquesta activitat",
"Who can view this post": "Qui pot veure aquesta publicació",
"Who published {number} events": "Amb {number} activitats publicades",
"Why create an account?": "Per què m'hauria de crear un compte?",
"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.": "Et facilitarà veure i gestionar des d'aquest dispositiu la teva participació a la pàgina de l'activitat. Desmarca-ho si hi ha més gent que faci servir aquest dispositiu.",
"Within {number} kilometers of {place}": "|Dins d'un km de {place}|A menys de {number} km de {place}",
"World map": "Mapamundi",
"Write something…": "Escriu alguna cosa …",
"Yesterday": "Ahir",
"You accepted the invitation to join the group.": "Has acceptat la invitació per afegir-te al grup.",
"You added the member {member}.": "Has afegit el/la membre {member}.",
"You and one other person are going to this event": "Per ara ets l'única persona que hi assistirà|Tu i una altra persona hi assistireu|Tu i {approved} persones més hi assistireu.",
"You archived the discussion {discussion}.": "Has arxivat la discussió {discussion}.",
"You are already a participant of this event.": "Ja figures com a participant d'aquesta activitat.",
"You are already logged-in.": "Ja tens una sessió iniciada.",
"You are not an administrator for this group.": "No ets administrador/a d'aquest grup.",
@ -827,8 +879,23 @@
"You can try another search term or drag and drop the marker on the map": "Pots provar amb altres paraules de cerca o arrossegar l'indicador al mapa",
"You can't change your password because you are registered through {provider}.": "No pots canviar la teva contrasenya perquè estàs registrat/da amb {provider}.",
"You can't remove your last identity.": "No pots esborrar la teva única identitat.",
"You created the discussion {discussion}.": "Has obert la discussió {discussion}.",
"You created the event {event}.": "Has creat l'activitat {event}.",
"You created the folder {resource}.": "Has creat la carpeta {resource}.",
"You created the group {group}.": "Has creat el grup {group}.",
"You created the post {post}.": "Has creat l'entrada {post}.",
"You created the resource {resource}.": "Has creat el recurs {resource}.",
"You deleted the discussion {discussion}.": "Has esborrat la discussió {discussion}.",
"You deleted the event {event}.": "Has esborrat l'activitat {event}.",
"You deleted the folder {resource}.": "Has esborrat la carpeta {resource}.",
"You deleted the post {post}.": "Has esborrat l'entrada {post}.",
"You deleted the resource {resource}.": "Has esborrat la carpeta {resource}.",
"You demoted the member {member} to an unknown role.": "Has tret alguns poders a {member}.",
"You demoted {member} to moderator.": "Has rebaixat a moderació els poders de {member}.",
"You demoted {member} to simple member.": "Has tret tot els poders especials a {member}.",
"You didn't create or join any event yet.": "No t'has apuntat a cap activitat ni n'has creat cap.",
"You don't follow any instances yet.": "Encara no pots seguir cap instància.",
"You excluded member {member}.": "Has exclòs el/la membre {member}.",
"You have been disconnected": "S'ha desconnectat la sessió",
"You have been invited by {invitedBy} to the following group:": "{invitedBy} t'ha convidat a afegir-te al següent grup:",
"You have been removed from this group's members.": "T'han tret d'aquest grup.",
@ -836,12 +903,35 @@
"You have one event in {days} days.": "No tens cap activitat en {days} dies|Tens una activitat en {days} dies.|Tens {count} activitats en {days} dies",
"You have one event today.": "No tens cap activitat avui|Avui tens una activitat|Avui tens {count} activitats",
"You have one event tomorrow.": "No tens cap activitat per demà|Demà tens una activitat|Demà tens {count} activitats",
"You invited {member}.": "Has convidat {member}.",
"You may also ask to {resend_confirmation_email}.": "També pots demanar {resend_confirmation_email}.",
"You may clear all participation information for this device with the buttons below.": "Pots esborrar tota la informació d'assistències que hi ha en aquest dispositiu amb els botons de sota.",
"You may now close this window, or {return_to_event}.": "Ja pots tancar aquesta finestra o {return_to_event}.",
"You may now close this window.": "Ja pots tancar aquesta finestra.",
"You moved the folder {resource} into {new_path}.": "Has mogut la carpeta {resource} a {new_path}.",
"You moved the folder {resource} to the root folder.": "Has mogut la carpeta {recurs} a la carpeta arrel.",
"You moved the resource {resource} into {new_path}.": "Has mogut el recurs {resource} a {new_path}.",
"You moved the resource {resource} to the root folder.": "Has mogut el recurs {resource} a la carpeta arrel.",
"You need to create the group before you create an event.": "Has de tenir un grup per poder crear una activitat.",
"You need to login.": "Has d'iniciar sessió.",
"You promoted the member {member} to an unknown role.": "Has atorgat alguns poders a {member}.",
"You promoted {member} to administrator.": "Has atorgat poders d'administració a {member}.",
"You promoted {member} to moderator.": "Has atorgat poders de moderació a {member}.",
"You renamed the discussion from {old_discussion} to {discussion}.": "Has canviat el nom de discussió de {old_discussion} a {discussion}.",
"You renamed the folder from {old_resource_title} to {resource}.": "Has canviat el nom de la carpeta de {old_resource_title} a {resource}.",
"You renamed the resource from {old_resource_title} to {resource}.": "Has canviat el nom del recurs de {old_resource_title} a {resource}.",
"You replied to the discussion {discussion}.": "Has obert la discussió {discussion}.",
"You requested to join the group.": "Has soŀlicitat afegir-te al grup.",
"You updated the event {event}.": "Has actualitzat l'activitat {event}.",
"You updated the group {group}.": "Has actualitzat el grup {group}.",
"You updated the member {member}.": "Has actualitzat el/la membre {member}.",
"You updated the post {post}.": "Has actualitzat l'entrada {post}.",
"You were demoted to an unknown role by {profile}.": "{profile} t'ha tret alguns poders.",
"You were demoted to moderator by {profile}.": "{profile} t'ha rebaixat els poders a moderació.",
"You were demoted to simple member by {profile}.": "{profile} t'ha tret tots els poders especials.",
"You were promoted to administrator by {profile}.": "{profile} t'ha atorgat poders d'administració.",
"You were promoted to an unknown role by {profile}.": "{profile} t'ha atorgat alguns poders.",
"You were promoted to moderator by {profile}.": "{profile} t'ha atorgat poders de moderació.",
"You will be able to add an avatar and set other options in your account settings.": "Pots afegir un avatar i editar altres opcions en les preferències del compte.",
"You will be redirected to the original instance": "Seràs redirigit/da a la instància original",
"You will find here all the events you have created or of which you are a participant.": "Aquí hi trobaràs totes les activitats que hagis creat o a les quals estiguis apuntat/da.",
@ -853,6 +943,7 @@
"Your account has been validated": "El teu compte ha estat validat",
"Your account is being validated": "El teu compte està sent validat",
"Your account is nearly ready, {username}": "El teu compte està gairebé apunt, {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.": "El municipi i el radi només es faran servir per suggerir-te activitats properes. El radi d'activitats es considera des del centre administratiu de l'àrea.",
"Your current email is {email}. You use it to log in.": "El teu correu actual és {email}. Fes-lo servir per iniciar sessió.",
"Your email": "El teu mail",
"Your email address was automatically set based on your {provider} account.": "La teva adreça de correu està configurada pel teu compte de {provider}.",
@ -876,6 +967,7 @@
"Your timezone is currently set to {timezone}.": "El fus horari que tens configurat és {timezone}.",
"Your timezone was detected as {timezone}.": "S'ha detectat el fus horari {timezone}.",
"Your timezone {timezone} isn't supported.": "El fus horari {timezone} no és compatible amb la plataforma.",
"Your upcoming events": "Properes activitats al teu calendari",
"[This comment has been deleted by it's author]": "[Aquest comentari ha estat esborrat pel seu autor/a]",
"[This comment has been deleted]": "[Comentari esborrat]",
"[deleted]": "[esborrat]",
@ -909,12 +1001,19 @@
"with another identity…": "amb una altra identitat…",
"{approved} / {total} seats": "{approved} / {total} places",
"{available}/{capacity} available places": "Places esgotades|Hi ha {available}/{capacity} places disponibles",
"{count} km": "{count} km",
"{count} participants": "Cap participant per ara|Un/a participant|{count} participants",
"{count} requests waiting": "{count} soŀlicituds pendents",
"{count} team members": "{count} membres de l'equip",
"{group} activity timeline": "Cronologia de les accions de {group}",
"{group}'s events": "Activitats de {group}",
"{instanceName} is an instance of the {mobilizon} software.": "{instanceName} és una instància del software {mobilizon}.",
"{instanceName} is an instance of {mobilizon_link}, a free software built with the community.": "{instanceName} és una instància de {mobilizon_link}, una aplicació de software lliure construïda per una comunitat.",
"{license} guarantees {respect} of the people who will use it. Since {source}, anyone can audit it, which guarantees its transparency.": "{license} garanteix {respect} de la gent que el farà servir . Com que {source}, qualsevol amb els coneixements adequats pot auditar-lo, cosa que en garanteix la transparència.",
"{member} accepted the invitation to join the group.": "{member} ha acceptat afegir-se al grup.",
"{member} rejected the invitation to join the group.": "{member} ha rebutjat la invitació per afegir-se al grup.",
"{member} requested to join the group.": "{member} ha soŀlicitat afegir-se al grup.",
"{member} was invited by {profile}.": "{profile} ha convidat {member}.",
"{moderator} added a note on {report}": "{moderator} ha afegit una nota a {report}",
"{moderator} closed {report}": "{moderator} ha tancat {report}",
"{moderator} deleted an event named \"{title}\"": "{moderator} ha esborrat l'activitat \"{title}\"",
@ -928,7 +1027,35 @@
"{number} organized events": "No hi ha activitats organitzades|Hi ha una activitat organitzada|Hi ha {number} activitats organitzades",
"{number} participations": "Sense participants|Un/a participant|{number} participants",
"{number} posts": "Sense publicacions|Una publicació|{number} publicacions",
"{old_group_name} was renamed to {group}.": "Ha canviat el nom del grup {old_group_name} a {group}.",
"{profile} (by default)": "{profile} (per defecte)",
"{profile} added the member {member}.": "{profile} ha afegit el/la membre {member}.",
"{profile} archived the discussion {discussion}.": "{profile} ha arxivat la discussió {discussion}.",
"{profile} created the discussion {discussion}.": "{profile} ha obert la discussió {discussion}.",
"{profile} created the folder {resource}.": "{profile} ha creat la carpeta {resource}.",
"{profile} created the group {group}.": "{profile} ha creat el grup {group}.",
"{profile} created the resource {resource}.": "{profile} ha creat el recurs {resource}.",
"{profile} deleted the discussion {discussion}.": "{profile} ha esborrat la discussió {discussion}.",
"{profile} deleted the folder {resource}.": "{profile} ha esborrat la carpeta {resource}.",
"{profile} deleted the resource {resource}.": "{profile} ha esborrat el recurs {resource}.",
"{profile} demoted {member} to an unknown role.": "{profile} ha tret alguns poders a {member}.",
"{profile} demoted {member} to moderator.": "{profile} ha rebaixat a moderació els poders de {member}.",
"{profile} demoted {member} to simple member.": "{profile} ha tret tots els poders especials de {member}.",
"{profile} excluded member {member}.": "{profile} ha exclòs el/la membre {membre}.",
"{profile} moved the folder {resource} into {new_path}.": "{profile} ha mogut la carpeta {resource} a {new_path}.",
"{profile} moved the folder {resource} to the root folder.": "{profile} ha mogut la carpeta {recurs} a la carpeta arrel.",
"{profile} moved the resource {resource} into {new_path}.": "{profile} ha mogut el recurs {resource} a {new_path}.",
"{profile} moved the resource {resource} to the root folder.": "{profile} ha mogut el recurs {resource} a la carpeta arrel.",
"{profile} promoted {member} to administrator.": "{profile} ha atorgat poders d'administració a {member}.",
"{profile} promoted {member} to an unknown role.": "{profile} ha atorgat alguns poders a {member}.",
"{profile} promoted {member} to moderator.": "{profile} ha atorgat poders de moderació a {member}.",
"{profile} quit the group.": "{profile} ha sortit del grup.",
"{profile} renamed the discussion from {old_discussion} to {discussion}.": "{profile} ha canviat el nom de la discussió de {old_discussion} a {discussion}.",
"{profile} renamed the folder from {old_resource_title} to {resource}.": "{profile} ha canviat el nom de la carpeta de {old_resource_title} a {resource}.",
"{profile} renamed the resource from {old_resource_title} to {resource}.": "{profile} ha canviat el nom del recurs de {old_resource_title} a {resource}.",
"{profile} replied to the discussion {discussion}.": "{profile} ha respost a la discussió {discussion}.",
"{profile} updated the group {group}.": "{profile} ha actualitzat el grup {group}.",
"{profile} updated the member {member}.": "{profile} ha actualitzat el/la membre {member}.",
"{title} ({count} todos)": "{title} ({count} pendents)",
"{username} was invited to {group}": "{username} ha estat convidat a {group}",
"© The Mobilizon Contributors {date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks": "© Les persones contribuïdores de Mobilizon {date} - Fet amb Elixir, Phoenix, VueJS, una mica d'amor i algunes setmanes",

View File

@ -8,10 +8,11 @@
"+ Post a public message": "+ Schreibe eine öffentliche Nachricht",
"+ Start a discussion": "+ Starte eine Diskussion",
"<b>Please do not use it in any real way.</b>": "<b>Bitte benutze diese Seite nicht für tatsächliche Veranstaltungsplanung.</b>",
"<b>{contact}</b> will be displayed as contact.": "<b>{contact}</b> wird als Kontakt eingeblendet.| <b>{contact}</b> wird als Kontakte eingeblendet.|",
"<b>{contact}</b> will be displayed as contact.": "<b>{contact}</b> wird als Kontakt angezeigt.|<b>{contact}</b> wird als Kontakte angezeigt.",
"@{group}": "@{group}",
"@{username}": "@{username}",
"@{username} ({role})": "@{username} ({role})",
"@{username}'s follow request was rejected": "@{username}'s Folgeanfrage wurde zurückgewiesen",
"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.": "Ein Cookie ist eine kleine Datei mit Informationen, die an Ihren Computer gesendet wird, wenn Sie eine Website besuchen. Wenn Sie die Website erneut besuchen, ermöglicht das Cookie dieser Website, Ihren Browser zu erkennen. Cookies können Benutzereinstellungen und andere Informationen speichern. Sie können Ihren Browser so konfigurieren, dass er alle Cookies ablehnt. Dies kann jedoch dazu führen, dass einige Funktionen oder Dienste der Website nur eingeschränkt funktionieren. Die lokale Speicherung funktioniert auf die gleiche Weise, ermöglicht es Ihnen jedoch, mehr Daten zu speichern.",
"A cookie is a small file containing informations that is sent to your computer when you visit a website. When you visit the site again, the cookie allows that site to recognize your browser. Cookies may store user preferences and other information. You can configure your browser to refuse all cookies. However, this may result in some website features or services partially working. Local storage works the same way but allows to store more data.": "Ein Cookie ist eine kleine Datei, die auf deinen Computer übertragen wird, wenn du eine Webseite aufrufst. Sie enthält Informationen, die es der Webseite ermöglichen, deinen Computer beim nächsten Besuch wiederzuerkennen. Cookies können auch genutzt werden, um nutzerspezifische Einstellungen oder andere Informationen zu speichern. Du kannst deinen Browser so einstellen, dass er alle Cookies ablehnt oder diese beim Schließen des Browsers löscht. Dies kann jedoch dazu führen, das einige Funktionalitäten von Webseiten oder Diensten nicht mehr vollständig funktionieren. Lokale Website-Daten erfüllen den selben Zweck, erlauben es einer Webseite aber, größere Datenmengen auf deinem Computer zu speichern.",
"A federated software": "Eine federierte Software",
@ -20,7 +21,7 @@
"A place to publish something to the whole world, your community or just your group members.": "Ein Ort, an dem Sie etwas für die ganze Welt, Ihre Community oder nur für Ihre Gruppenmitglieder veröffentlichen können.",
"A place to store links to documents or resources of any type.": "Ein Ort um Links zu Dokumenten oder Ressourcen jeden Typs zu speichern.",
"A practical tool": "Ein praktisches Werkzeug",
"A short tagline for your instance homepage. Defaults to \"Gather ⋅ Organize ⋅ Mobilize\"": "Eine kurze Tagline für Ihre Instanz-Homepage. Standardmäßig ist \"Sammeln ⋅ Organisieren ⋅ Mobilisieren\" eingestellt.",
"A short tagline for your instance homepage. Defaults to \"Gather ⋅ Organize ⋅ Mobilize\"": "Eine kurze Tagline für Ihre Instanz-Homepage. Standardmäßig steht dort: \"Sammeln ⋅ Organisieren ⋅ Mobilisieren\"",
"A user-friendly, emancipatory and ethical tool for gathering, organising, and mobilising.": "Ein benutzerfreundliches, emanzipatorisches und ethisches Instrument zum Sammeln, Organisieren und Mobilisieren.",
"A validation email was sent to {email}": "Es wurde eine Bestätigungs-Mail an {email} gesendet",
"API": "API",
@ -61,10 +62,11 @@
"Administrator": "Administrator",
"All good, let's continue!": "Das passt, weiter geht's!",
"All group members and other eventual server admins will still be able to view this information.": "Alle Gruppenmitglieder und andere Server-Administrator:innen können diese Information dennoch einsehen.",
"All the places have already been taken": "Alle Plätze sind besetzt|Ein Platz ist noch verfügbar|{places} Plätze sind noch verfügbar",
"All the places have already been taken": "Alle Plätze sind schon vergeben",
"Allow all comments": "Erlaube alle Kommentare",
"Allow all comments from users with accounts": "Erlaube alle Kommentare von eingeloggten Usern",
"Allow registrations": "Erlaube Registrierungen",
"An error has occured. Sorry about that. You may try to reload the page.": "Ein Fehler ist aufgetreten. Bitte entschuldige. Du kannst versuchen die Seite neu zu laden.",
"An error has occurred.": "Ein Fehler ist aufgetreten.",
"An ethical alternative": "Eine ethische Alternative",
"An instance is an installed version of the Mobilizon software running on a server. An instance can be run by anyone using the {mobilizon_software} or other federated apps, aka the “fediverse”. This instance's name is {instance_name}. Mobilizon is a federated network of multiple instances (just like email servers), users registered on different instances may communicate even though they didn't register on the same instance.": "Als Instanz bezeichnen wir eine Installation der Mobilizon-Software auf einem Server. Eine Instanz kann von jedem mit Hilfe der {mobilizon_software} oder anderer kompatibler Software betrieben werden. Der Name dieser Instanz lautet „{instance_name}“. Diese Instanz ist Teil des „Fediverse“, einem Netzwerk aus vielen verbundenen Instanzen, die alle miteinander kommunizieren können. Nutzer von verschiedenen Instanzen können so - genau wie beim E-Mail-System - miteinander kommunizieren, auch wenn sie Accounts bei völlig verschiedenen Instanzen registriert haben.",
@ -79,7 +81,7 @@
"Application": "Anwendung",
"Approve": "Bestätigen",
"Are you really sure you want to delete your whole account? You'll lose everything. Identities, settings, events created, messages and participations will be gone forever.": "Sind Sie sich sicher, dass Sie Ihren gesamten Nutzeraccount löschen möchten? Sie verlieren dadurch alles. Identitäten, Einstellungen, erstellte Veranstaltungen, Nachrichten, Teilnahmen sind dann für immer verschwunden.",
"Are you sure you want to <b>completely delete</b> this group? All members - including remote ones - will be notified and removed from the group, and <b>all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed</b>.": "Sind Sie sicher, dass Sie diese Gruppe <b>vollständig löschen</b> wollen? Alle Mitglieder - auch die entfernten - werden benachrichtigt und aus der Gruppe entfernt, und <b>alle Daten der Gruppe (Ereignisse, Beiträge, Diskussionen, ToDos...) werden unwiederbringlich zerstört</b>.",
"Are you sure you want to <b>completely delete</b> this group? All members - including remote ones - will be notified and removed from the group, and <b>all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed</b>.": "Sind Sie sicher, dass Sie diese Gruppe <b>vollständig löschen</b> wollen? Alle Mitglieder - auch die verbundenen - werden benachrichtigt und aus der Gruppe entfernt, und <b>alle Daten der Gruppe (Ereignisse, Beiträge, Diskussionen, ToDos...) werden unwiederbringlich zerstört</b>.",
"Are you sure you want to <b>delete</b> this comment? This action cannot be undone.": "Sind Sie sicher, dass Sie diesen Kommentar <b>löschen</b> wollen? Diese Aktion kann nicht rückgängig gemacht werden.",
"Are you sure you want to <b>delete</b> this event? This action cannot be undone. You may want to engage the discussion with the event creator or edit its event instead.": "Sind Sie sicher, dass Sie diese Veranstaltung <b>löschen</b> wollen? Diese Aktion kann nicht rückgängig gemacht werden.",
"Are you sure you want to <b>suspend</b> this group? All members - including remote ones - will be notified and removed from the group, and <b>all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed</b>.": "Möchten Sie diese Gruppe wirklich <b>auflösen</b>? Alle Mitglieder - einschließlich externe - werden benachrichtigt und aus der Gruppe entfernt. Es werden <b>alle Gruppendaten (Veranstaltungen, Beiträge, Diskussionen, Aufgaben, ...) irreversibel gelöscht</b>.",
@ -119,6 +121,7 @@
"Change password": "Passwort ändern",
"Change timezone": "Zeitzone ändern",
"Check your inbox (and your junk mail folder).": "Prüfen Sie Ihren Posteingang (und den Spamordner).",
"City or region": "Ort, Landkreis oder Bundesland",
"Clear": "Leeren",
"Clear participation data for all events": "Übersichtliche Teilnehmerdaten für alle Veranstaltungen",
"Clear participation data for this event": "Übersichtliche Teilnehmerdaten für diese Veranstaltung",
@ -144,6 +147,7 @@
"Contact": "Kontakt",
"Continue editing": "Bearbeitung fortsetzen",
"Cookies and Local storage": "Cookies und lokaler Web-Storage",
"Copy details to clipboard": "Details in die Zwischenablage kopieren",
"Country": "Land",
"Create": "Erstellen",
"Create a calc": "Tabelle erstellen",
@ -215,8 +219,8 @@
"Displayed nickname": "Angezeigter Nutzername",
"Displayed on homepage and meta tags. Describe what Mobilizon is and what makes this instance special in a single paragraph.": "Wird auf der Startseite und in den Meta-Tags angezeigt. Beschreiben Sie in einem Absatz was Mobilizon ist und was diese Instanz besonders macht.",
"Do not receive any mail": "Keine E-Mails erhalten",
"Do you wish to {create_event} or {explore_events}?": "Wollen Sie {create_event} oder {explore_events}?",
"Do you wish to {create_group} or {explore_groups}?": "Wollen Sie {create_group} oder {explore_groups}?",
"Do you wish to {create_event} or {explore_events}?": "Möchten Sie ein {create_event} oder {explore_events}?",
"Do you wish to {create_group} or {explore_groups}?": "Möchten Sie eine {create_group} oder {explore_groups}?",
"Domain": "Domain",
"Don't show @{organizer} as event host alongside @{group}": "Zeige @{organizer} nicht neben @{group} als Veranstalter:in an",
"Draft": "Entwurf",
@ -243,6 +247,9 @@
"Enter your own privacy policy. HTML tags allowed. The {mobilizon_privacy_policy} is provided as template.": "Geben Sie Ihre eigene Datenschutzerklärung ein. HTML tags sind erlaubt. Die {mobilizon_privacy_policy} ist als Vorlage bereitgestellt.",
"Enter your own terms. HTML tags allowed. The {mobilizon_terms} are provided as template.": "Geben Sie Ihre eigenen Bedingungen an. HTML-Tags sind erlaubt. Die {mobilizon_terms} sind als Vorlage gegeben.",
"Error": "Fehler",
"Error details copied!": "Fehlerdetails kopiert!",
"Error message": "Fehlermeldung",
"Error stacktrace": "Error-Stacktrace",
"Error while changing email": "Fehler beim Ändern der E-Mail-Adresse",
"Error while communicating with the server.": "Fehler bei der Kommunikation mit dem Server.",
"Error while login with {provider}. Retry or login another way.": "Fehler bei der Anmeldung mit {provider}. Versuchen Sie es erneut oder nutzen Sie eine andere Login-Möglichkeit.",
@ -276,13 +283,15 @@
"Failed to save admin settings": "Admin-Einstellungen konnten nicht gespeichert werden",
"Featured events": "Vorgestellte Veranstaltungen",
"Features": "Funktionen",
"Federated Group Name": "Federierter Gruppenname",
"Federated Group Name": "Föderierter Gruppenname",
"Federation": "Federation",
"Fetch more": "Mehr abrufen",
"Find an address": "Adresse finden",
"Find an instance": "Eine Instanz finden",
"Find another instance": "Weitere Instanz finden",
"Follower": "Folgende",
"Followers": "Folgende",
"Followers will receive new public events and posts.": "Follower werden über neue öffentliche Ereignisse und Beiträge informiert.",
"Followings": "Folgen",
"For instance: London": "Zum Beispiel: Berlin",
"For instance: London, Taekwondo, Architecture…": "Beispielsweise: London, Taekwondo, Architektur…",
@ -302,6 +311,7 @@
"Go to the event page": "Zur Veranstaltungsseite",
"Going as {name}": "Teilnehmen als {name}",
"Group": "Gruppe",
"Group Followers": "Follower dieser Gruppe",
"Group List": "Gruppenliste",
"Group Members": "Gruppenmitglieder",
"Group address": "Gruppenadresse",
@ -339,7 +349,7 @@
"If allowed by organizer": "Wenn vom Organisator erlaubt",
"If an account with this email exists, we just sent another confirmation email to {email}": "Falls ein Konto mit dieser E-Mail-Adresse existiert, senden wir eine neue Bestätigung an {email}",
"If the direction given by the development team does not suit you, you have the legal right to create your own version of the software, with your own governance choices.": "Wenn dir die von den Entwickler:innen vorgegebene Richtung nicht passt, hast du das Recht, deine eigene Version der Software nach deinen eigenen Regeln zu erstellen.",
"If this identity is the only administrator of some groups, you need to delete them before being able to delete this identity.": "Falls diese Identität die einzige Administrator einer oder mehrerer Gruppen sein sollte, müssen Sie zunächst die Gruppen löschen, bevor Sie diese Identität löschen können.",
"If this identity is the only administrator of some groups, you need to delete them before being able to delete this identity.": "Falls diese Identität der einzige Administrator einer oder mehrerer Gruppen sein sollte, ist zunächst die Gruppe zu löschen, bevor diese Identität gelöscht werden kann.",
"If you are being asked for your federated indentity, it's composed of your username and your instance. For instance, the federated identity for your first profile is:": "Wenn Sie nach Ihrer federierten Identität gefragt werden, setzt sich dieser aus Ihrem Benutzernamen und Ihrer Instanz zusammen. Die federierte Identität für Ihr erstes Profil lautet zum Beispiel:",
"If you have opted for manual validation of participants, Mobilizon will send you an email to inform you of new participations to be processed. You can choose the frequency of these notifications below.": "Wenn Sie sich für die manuelle Validierung von Teilnehmern entschieden haben, sendet Ihnen Mobilizon eine E-Mail, um Sie über neue zu bearbeitende Teilnahmen zu informieren. Sie können die Häufigkeit dieser Benachrichtigungen unten auswählen.",
"If you want, you may send a message to the event organizer here.": "Wenn Sie möchten, können Sie dem Organisator eine Nachricht hinterlassen.",
@ -371,6 +381,7 @@
"Invite a new member": "Neues Mitglied einladen",
"Invite member": "Mitglied einladen",
"Invited": "Eingeladen",
"It is possible that the content is not accessible on this instance, because this instance has blocked the profiles or groups behind this content.": "Es ist möglich, dass der Inhalt auf dieser Instanz nicht zugänglich ist, weil diese Instanz die Profile oder Gruppen hinter diesem Inhalt gesperrt hat.",
"Italic": "Kursiv",
"Join <b>{instance}</b>, a Mobilizon instance": "Trete <b>{instance}</b> bei, eine Mobilizon Instanz",
"Join group": "Gruppe beitreten",
@ -381,6 +392,7 @@
"Last IP adress": "Letzte IP Adresse",
"Last group created": "Zuletzt erstellte Gruppe",
"Last published event": "Zuletzt veröffentlichte Veranstaltung",
"Last published events": "Zuletzt veröffentlichte Veranstaltungen",
"Last sign-in": "Letzter Log-in",
"Last week": "Letzte Woche",
"Latest posts": "Neuste Beiträge",
@ -412,6 +424,7 @@
"Manage my notifications": "Meine Benachrichtigungen verwalten",
"Manage my settings": "Meine Einstellungen verwalten",
"Manage participations": "Teilnehmer verwalten",
"Manually approve new followers": "Neue Follower manuell genehmigen",
"Manually invite new members": "Manuelles Einladen neuer Mitglieder",
"Mark as resolved": "Als gelöst markieren",
"Member": "Mitglied",
@ -434,7 +447,7 @@
"Moderated comments (shown after approval)": "Moderierte Kommentare (werden nach manueller Freigabe angezeigt)",
"Moderation": "Moderation",
"Moderation log": "Moderations-Logbuch",
"Moderator": "Moderator",
"Moderator": "Moderator*in",
"Move": "Verschieben",
"Move \"{resourceName}\"": "„{resourceName}“ verschieben",
"Move resource to {folder}": "Verschiebe Ressource nach {folder}",
@ -463,6 +476,7 @@
"No discussions yet": "Noch keine Diskussionen gestartet",
"No end date": "Kein Enddatum",
"No events found": "Keine Veranstaltungen gefunden",
"No follower matches the filters": "Kein Follower passt zu diesen Filtern",
"No group found": "Keine Gruppe gefunden",
"No groups found": "Keine Gruppen gefunden",
"No instance follows your instance yet.": "Noch keine Instanz folgt deiner Instanz.",
@ -473,6 +487,7 @@
"No member matches the filters": "Kein Mitglied entspricht den Filterkriterien",
"No message": "Keine Nachricht",
"No moderation logs yet": "Bisher keine Moderationsprotokolle",
"No more activity to display.": "Es gibt keine weiteren anzuzeigenden Ereignisse.",
"No one is going to this event": "Niemand nimmt an dieser Veranstaltung teil|Eine Person nimmt teil|{going} Personen nehmen teil",
"No ongoing todos": "Keine aktiven To-dos",
"No open reports yet": "Bisher keine ausstehenden Berichte",
@ -508,6 +523,7 @@
"On {date} ending at {endTime}": "Am {date}, endet um {endTime}",
"On {date} from {startTime} to {endTime}": "Am {date} von {startTime} bis {endTime}",
"On {date} starting at {startTime}": "Am {date}, beginnt um {startTime}",
"On {instance}": "Auf {instance}",
"One person is going": "Niemand geht hin | Eine Person geht hin | {approved} Personen gehen hin",
"Ongoing tasks": "Aktuelle Aufgaben",
"Only accessible through link": "Nur über den Link einsehbar",
@ -519,6 +535,8 @@
"Only group members can access discussions": "Nur Gruppenmitglieder können die Diskussion anzeigen",
"Only group moderators can create, edit and delete posts.": "Nur Gruppenmoderatoren können Beiträge erstellen, editieren oder löschen.",
"Open": "Offen",
"Open a topic on our forum": "Eröffne ein Thema in unserem Forum",
"Open an issue on our bug tracker (advanced users)": "Eröffne eine Meldung in unserem Fehlermeldesystem (Bug-Tracker für erfahrene Benutzer)",
"Opened reports": "Geöffnete Meldungen",
"Or": "Oder",
"Organize and take action, freely": "Organisiert euch und legt los, selbstbestimmt",
@ -558,6 +576,7 @@
"Pick a profile or a group": "Wähle ein Profil der eine Gruppe",
"Pick an identity": "Wählen Sie eine Identität",
"Pick an instance": "Wähle eine Instanz",
"Please add as many details as possible to help identify the problem.": "Bitte gib uns so viele Details wie möglich, die uns helfen könnten, das Problem zu analysieren.",
"Please check your spam folder if you didn't receive the email.": "Bitte sehen Sie auch in Ihrem Spam-Ordner nach, wenn Sie keine E-Mail erhalten haben.",
"Please contact this instance's Mobilizon admin if you think this is a mistake.": "Bitte kontaktieren Sie den Administrator dieser Mobilizon-Instanz, wenn Sie denken, dass dies ein Fehler ist.",
"Please do not use it in any real way.": "Bitte nicht im praktischen Einsatz verwenden.",
@ -565,7 +584,7 @@
"Please make sure the address is correct and that the page hasn't been moved.": "Bitte stellen Sie sicher, dass die Adresse korrekt ist und die Seite nicht verschoben wurde.",
"Please read the full rules": "Bitte ließ die kompletten Regeln",
"Please read the instance's {fullRules}": "Bitte lese die {fullRules} der Instanz",
"Please read the {fullRules} published by {instance}'s administrators.": "Bitte lesen Sie die {fullRules} veröffentlicht von {instance}'s Administratoren.",
"Please read the {fullRules} published by {instance}'s administrators.": "Bitte lesen Sie die {fullRules}, veröffentlicht von den Administratoren von {instance}.",
"Please refresh the page and retry.": "Bitte lade die Seite neu und versuche es erneut.",
"Please type at least 5 characters": "Bitte tippe wenigstens 5 Zeichen",
"Post": "Beitrag",
@ -583,7 +602,7 @@
"Private event": "Private Veranstaltung",
"Private feeds": "Private Feeds",
"Profiles": "Profile",
"Profiles and federation": "Profile und Federation",
"Profiles and federation": "Profile und Föderation",
"Promote": "Promoten",
"Public": "Öffentlich",
"Public RSS/Atom Feed": "Öffentlicher RSS/Atom-Feed",
@ -659,6 +678,7 @@
"Searching…": "Suche…",
"Search…": "Suchen…",
"Select a language": "Wähle eine Sprache",
"Select a radius": "Wähle einen Radius",
"Select a timezone": "Zeitzone wählen",
"Select languages": "Sprache wählen",
"Send email": "E-Mail senden",
@ -689,6 +709,7 @@
"Suspend group": "Gruppe ausschließen",
"Suspended": "Gesperrt",
"Task lists": "Aufgabenliste",
"Technical details": "Technische Details",
"Tentative": "Vorläufige",
"Tentative: Will be confirmed later": "Vorläufig: Wird später bestätigt",
"Terms": "Nutzungsbedingungen",
@ -711,6 +732,9 @@
"The event will show as attributed to this group.": "Das Ereignis wird als dieser Gruppe zugehörig angezeigt.",
"The event will show as attributed to your personal profile.": "Das Ereignis wird als Ihrem persönlichen Profil zugewiesen angezeigt.",
"The event will show the group as organizer.": "Bei diese Veranstaltung wird die Gruppe als Organisationsteam angezeigt.",
"The event {event} was created by {profile}.": "Die Veranstaltung {event} wurde erstellt von {profile}.",
"The event {event} was deleted by {profile}.": "Die Veranstaltung {event} wurde von {profile} gelöscht.",
"The event {event} was updated by {profile}.": "Die Veranstaltung {event} wurde von {profile} aktualisiert.",
"The events you created are not shown here.": "Die Veranstaltung, die Sie erstellt haben ist hier nicht gelistet.",
"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.": "Diese Gruppe wird öffentlich in Suchergebnissen sichtbar sein und könnte im Bereich „Entdecken“ auftauchen. Nur öffentliche Informationen werden auf der Gruppenseite angezeigt.",
"The instance administrator is the person or entity that runs this Mobilizon instance.": "Der Administrator der Instanz ist die Person oder Organisation, die diese Mobilizon-Instanz betreibt.",
@ -723,11 +747,16 @@
"The page you're looking for doesn't exist.": "Die Seite, nach der Sie suchen existiert nicht.",
"The password provided is invalid": "Das angegebene Passwort ist ungültig",
"The password was successfully changed": "Das Passwort wurde erfolgreich geändert",
"The post {post} was created by {profile}.": "Der Beitrag {post} wurde von {profile} erstellt.",
"The post {post} was deleted by {profile}.": "Der Beitrag {post} wurde von {profile} gelöscht.",
"The post {post} was updated by {profile}.": "Der Beitrag {post} wurde von {profile} aktualisiert.",
"The report will be sent to the moderators of your instance. You can explain why you report this content below.": "Die Meldung wird an die Moderatoren Ihrer Instanz gesendet. Sie können unten erläutern, warum Sie diesen Inhalt melden.",
"The technical details of the error can help developers solve the problem more easily. Please add them to your feedback.": "Die technischen Details des Fehlers können den Entwickler*innen helfen, das Problem einfacher zu lösen. Bitte füge sie der Rückmeldung hinzu.",
"The user account you're trying to login as has not been confirmed yet. Check your email inbox and eventually your spam folder.": "Der Account, mit dem Du dich einloggen willst, wurde noch nicht bestätigt. Schau in deinem E-Mail-Postfach und in deinem Spam-Ordner nach.",
"The {default_privacy_policy} will be used. They will be translated in the user's language.": "Die {default_privacy_policy} wird verwendet. Sie wird in die Sprache des Nutzers übersetzt.",
"The {default_terms} will be used. They will be translated in the user's language.": "Die {default_terms} werden verwendet. Sie werden in die Sprache der Nuttzer übersetzt.",
"There are {participants} participants.": "Es gibt {participants} Teilnehmer.",
"There is no activity yet. Start doing some things to see activity appear here.": "Es gibt noch keine Ereignisse. Mache Dinge damit hier Ereignisse auftauchen.",
"There will be no way to recover your data.": "Es gibt keinen Weg Ihre Daten wiederherszustellen.",
"There's no discussions yet": "Es gibt noch keine Diskussion",
"These events may interest you": "Diese Veranstaltungen könnten Sie interessieren",
@ -771,9 +800,10 @@
"Tomorrow": "Morgen",
"Transfer to {outsideDomain}": "Zu {outsideDomain} übertragen",
"Type": "Typ",
"Type or select a date…": "Datum wählen",
"Type or select a date…": "Datum wählen",
"URL": "URL",
"URL copied to clipboard": "URL in die Zwischenablage kopiert",
"Unable to copy to clipboard": "Kopieren in die Zwischenablage nicht möglich",
"Unable to detect timezone.": "Zeitzone kann nicht erkannt werden.",
"Unable to load event for participation. The error details are provided below:": "Event für die Teilnahme kann nicht geladen werden. Die Fehlerdetails finden Sie unten:",
"Unable to save your participation in this browser.": "Ihre Teilnahme kann in diesem Browser nicht gespeichert werden.",
@ -815,6 +845,7 @@
"Waiting list": "Warteliste",
"Warning": "Warnung",
"We asked professional designers to help us develop our vision for Mobilizon. We took time to study the {digital_habits} in order to understand the features they need to gather, organize, and mobilize.": "Wir haben professionelle Designer:innen gebeten, uns bei der Entwicklung der Vision von Mobilizon zu helfen. Wir haben uns Zeit genommen, die {digital_habits} zu untersuchen und zu verstehen, welche Funktionalitäten wir benötigen, um zusammenzukommen, zu organisieren und zu mobilisieren.",
"We improve this software thanks to your feedback. To let us know about this issue, two possibilities (both unfortunately require user account creation):": "Vielen Dank für Deine Rückmeldung. Wir werden die Software verbessern. Es gibt zwei Möglichkeiten, um uns dieses Problem mitzuteilen (beider erfordern leider das Anlegen eines eigenen Benutzerkontos):",
"We just sent an email to {email}": "Wir haben gerade eine E-Mail an {email} gesendet",
"We use your timezone to make sure you get notifications for an event at the correct time.": "Wir nutzen Ihre Zeitzone, um sicherzustellen, dass Sie Benachrichtigungen für eine Veranstaltung zur richtigen Zeit erhalten.",
"We want to develop a <b>digital common</b>, that everyone can make their own, which respects <b>privacy and activism by design</b>.": "Wir wollen ein <b>digitales Gemeingut</b> schaffen, das jeder selbst mitgestalten kann, das <b>Privatsphäre und Aktivismus</b> respektiert.",
@ -829,14 +860,19 @@
"Welcome back!": "Willkommen zurück!",
"Welcome on your administration panel": "Willkommen in deiner Administrationsansicht",
"Welcome to Mobilizon, {username}!": "Willkommen zu Mobilizon, {username}!",
"What can I do to help?": "Was kann ich tun, wenn ich helfen möchte?",
"When a moderator from the group creates an event and attributes it to the group, it will show up here.": "Wenn ein Moderator der Gruppe ein Ereignis erstellt und es der Gruppe zuordnet, wird es hier angezeigt.",
"Who can view this event and participate": "Wer kann diese Veranstaltung sehen und daran teilnehmen kann",
"Who can view this post": "Wer kann diesen Beitrag sehen",
"Who published {number} events": "Die {number} Veranstaltungen angelegt haben",
"Why create an account?": "Warum ein Konto erstellen?",
"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.": "Ermöglicht die Anzeige und Verwaltung Ihres Teilnahmestatus auf der Veranstaltungsseite, wenn Sie dieses Gerät verwenden. Deaktivieren Sie diese Option, wenn Sie ein öffentliches Gerät verwenden.",
"Within {number} kilometers of {place}": "|Innerhalb eines Kilometers von {place}|Innerhalb {number} Kilometer von {place}",
"World map": "Weltkarte",
"Write something…": "Schreiben Sie etwas…",
"Yesterday": "Gestern",
"You accepted the invitation to join the group.": "Sie haben die Einladung zur Gruppe angenommen.",
"You added the member {member}.": "Sie haben das Mitglied {member} hinzugefügt.",
"You and one other person are going to this event": "Du gehst alleine zu dieser Veranstaltung | Du und eine weitere Person gehen zu dieser Veranstaltung | Du und {approved} weitere Personen gehen zu dieser Veranstaltung.",
"You are already a participant of this event.": "Du nimmst bereits an dieser Veranstaltung teil.",
"You are already logged-in.": "Du bist bereits eingeloggt.",
@ -845,15 +881,23 @@
"You are not part of any group.": "Sie sind kein Teil einer Gruppe.",
"You are participating in this event anonymously": "Sie nehmen anonym an dieser Veranstaltung teil",
"You are participating in this event anonymously but didn't confirm participation": "Sie nehmen an dieser Veranstaltung anonym teil, haben aber Ihre Teilnahme noch nicht bestätigt",
"You can add tags by hitting the Enter key or by adding a comma": "Sie können Tags hinzufügen, indem Sie Enter drücken oder ein Komma hinzufügen",
"You can add tags by hitting the Enter key or by adding a comma": "Sie können Tags hinzufügen, indem Sie Enter drücken oder durch ein Komma trennen",
"You can pick your timezone into your preferences.": "Sie können Ihre Zeitzone in den Einstellungen festlegen.",
"You can try another search term or drag and drop the marker on the map": "Sie können einen anderen Suchbegriff verwenden oder die Markierung auf der Karte verschieben",
"You can't change your password because you are registered through {provider}.": "Sie können Ihr Passwort nicht ändern, weil Sie über {provider} angemeldet sind.",
"You can't remove your last identity.": "Du kannst deine letzte Identität nicht löschen.",
"You can't reset your password because you use a 3rd-party auth provider to login.": "Du kannst dein Passwort nicht zurücksetzen, weil du über einen Drittanbieter eingeloggt bist.",
"You created the event {event}.": "Sie haben die Veranstaltung {event} erstellt.",
"You created the post {post}.": "Sie haben den Beitrag {post} erstellt.",
"You deleted the event {event}.": "Sie haben die Veranstaltung {event} gelöscht.",
"You deleted the post {post}.": "Sie haben den Beitrag {post} gelöscht.",
"You demoted the member {member} to an unknown role.": "Sie haben {member} zu einer unbekannten Rolle zurückgestuft.",
"You demoted {member} to moderator.": "Sie haben {member} zum/zur Moderator/in zurückgestuft.",
"You demoted {member} to simple member.": "Sie haben {member} zu einem einfachen Mitglied zurückgestuft.",
"You didn't create or join any event yet": "Sie haben noch keine Veranstaltung erstellt oder sind einer Veranstaltung beigetreten",
"You didn't create or join any event yet.": "Sie haben keine Veranstaltung erstellt oder sind dieser beigetreten.",
"You don't follow any instances yet.": "Sie folgen noch keinen Instanzen.",
"You excluded member {member}.": "Sie haben {member} ausgeschlossen.",
"You have been disconnected": "Ihre Verbindung wurde getrennt",
"You have been invited by {invitedBy} to the following group:": "Sie wurden von {invitedBy} zu dieser Gruppe eingeladen:",
"You have been removed from this group's members.": "Sie wurden von diesen Gruppenmitgliedern entfernt.",
@ -861,11 +905,23 @@
"You have one event in {days} days.": "Sie haben keine Veranstaltung in {days} Tagen | Sie haben eine Veranstaltung in {days} Tagen | Sie haben {count} Veranstaltungen in {days} Tagen",
"You have one event today.": "Sie haben heute keine Veranstaltungen | Sie haben heute eine Veranstaltung. | Sie haben heute {count} Veranstaltungen",
"You have one event tomorrow.": "Sie haben morgen keine Veranstaltungen | Sie haben morgen eine Veranstaltung. | Sie haben morgen {count} Veranstaltungen",
"You invited {member}.": "Sie haben {member} eingeladen.",
"You may also ask to {resend_confirmation_email}.": "Du kannst auch die {resend_confirmation_email}.",
"You may clear all participation information for this device with the buttons below.": "Sie können alle Teilnahmeinformationen für dieses Gerät mit den Schaltflächen unten löschen.",
"You may now close this window, or {return_to_event}.": "Sie können das Fenster jetzt schließe oder {return_to_event}.",
"You need to create the group before you create an event.": "Sie müssen zunächst eine Gruppe anlegen, bevor Sie eine Veranstaltung anlegen können.",
"You need to login.": "Sie müssen sich einloggen.",
"You promoted the member {member} to an unknown role.": "Sie haben {member} einer unbekannten Rolle zugewiesen.",
"You promoted {member} to administrator.": "Sie haben {member} zum/zur Administrator/in befördert.",
"You promoted {member} to moderator.": "Sie haben {member} zum/zur Moderator/in befördert.",
"You requested to join the group.": "Sie haben die angefragt der Gruppe beizutreten.",
"You updated the event {event}.": "Sie haben die Veranstaltung {event} aktualisiert.",
"You updated the member {member}.": "Sie haben {member} aktualisiert.",
"You updated the post {post}.": "Sie haben den Beitrag {post} aktualisiert.",
"You were demoted to moderator by {profile}.": "Sie wurden von {profile} zum/zur Moderator/in zurückgestuft.",
"You were promoted to administrator by {profile}.": "Sie wurden von {profile} zum/zur Administrator/in befördert.",
"You were promoted to an unknown role by {profile}.": "Sie wurden von {profile} zu einer unbekannten Rolle befördert.",
"You were promoted to moderator by {profile}.": "Sie wurden von {profile} zum/zur Moderator/in befördert.",
"You will be able to add an avatar and set other options in your account settings.": "In Ihren Kontoeinstellungen können Sie einen Avatar hinzufügen und weitere Optionen festlegen.",
"You will be redirected to the original instance": "Sie werden auf die ursprüngliche Instanz weitergeleitet",
"You will find here all the events you have created or of which you are a participant.": "Hier finden Sie alle Ereignisse, die Sie erstellt haben oder an denen Sie beteiligt sind.",
@ -878,7 +934,7 @@
"Your account has been validated": "Ihr Account wurde validiert",
"Your account is being validated": "Ihr Account wird validiert",
"Your account is nearly ready, {username}": "Ihr Account ist fast bereit, {username}",
"Your current email is {email}. You use it to log in.": "Ihre aktuelle E-Mail-Adresse ist {email}. Nutzen Sie sie zum Einloggen.",
"Your current email is {email}. You use it to log in.": "Ihre aktuelle E-Mail-Adresse ist {email}. Diese kann zum Anmelden verwendet werden.",
"Your email": "Ihre E-Mail",
"Your email address was automatically set based on your {provider} account.": "Ihre E-Mail-Adresse wurde automatisch basierend auf Ihrem {provider}-Account gesetzt.",
"Your email has been changed": "Deine E-Mail-Adresse wurde geändert",
@ -903,6 +959,7 @@
"Your timezone is currently set to {timezone}.": "Ihre Zeitzone ist aktuell {timezone}.",
"Your timezone was detected as {timezone}.": "Ihre Zeitzone wurde erkannt als {timezone}.",
"Your timezone {timezone} isn't supported.": "Ihre Zeitzone {timezone} wird nicht unterstützt.",
"Your upcoming events": "Deine bevorstehenden Veranstaltungen",
"[This comment has been deleted by it's author]": "[Dieser Kommentar wurde vom Autor entfernt]",
"[This comment has been deleted]": "[Ihr Kommentar wurde gelöscht]",
"[deleted]": "[gelöscht]",
@ -939,12 +996,19 @@
"with another identity…": "mit einer anderen Identität.…",
"{approved} / {total} seats": "{approved} / {total} Plätze",
"{available}/{capacity} available places": "Keine freien Plätze|{available}/{capacity} freie Plätze",
"{count} km": "{count} km",
"{count} participants": "Noch keine Teilnehmer | Ein Teilnehmer | {count} Teilnehmer",
"{count} requests waiting": "{count} Anfragen ausstehend",
"{count} team members": "{count} Teammitglieder",
"{group} activity timeline": "Auflistungen der Ereignisse in {group}",
"{group}'s events": "{group} Events",
"{instanceName} is an instance of the {mobilizon} software.": "{instanceName} ist eine Instanz der {mobilizon}-Software.",
"{instanceName} is an instance of {mobilizon_link}, a free software built with the community.": "{instanceName} ist eine Instanz von {mobilizon_link}. Es ist eine freie Software, aus einer gemeinschaftlichen Entwicklung.",
"{license} guarantees {respect} of the people who will use it. Since {source}, anyone can audit it, which guarantees its transparency.": "{license} garantiert den {respect} der Leute die es Nutzen. Da {sources}, kann jeder ihn einsehen und analysieren, was Tranzparenz verspricht.",
"{member} accepted the invitation to join the group.": "{member} hat die Einladung zum Gruppenbeitritt angenommen.",
"{member} rejected the invitation to join the group.": "{member} hat die Einladung zum Gruppenbeitritt abgelehnt.",
"{member} requested to join the group.": "{member} hat angefragt der Gruppe beizutreten.",
"{member} was invited by {profile}.": "{profile} hat {member} eingeladen.",
"{moderator} added a note on {report}": "{moderator} hat eine Notiz zu {report} hinzugefügt",
"{moderator} closed {report}": "{moderator} hat die Meldung {report} geschlossen",
"{moderator} deleted an event named \"{title}\"": "{moderator} hat eine Veranstaltung namens „{title}“ gelöscht",
@ -959,6 +1023,15 @@
"{number} participations": "Keine Teilnehmer|Ein Teilnehmer|{number} Teilnehmer",
"{number} posts": "Keine Beiträge |Ein Beitrag|{number} Beiträge",
"{profile} (by default)": "{profile} (Standard)",
"{profile} added the member {member}.": "{profile} hat das Mitglied {member} hinzugefügt.",
"{profile} demoted {member} to an unknown role.": "{profile} hat {member} zu einer unbekannten Rolle zurückgestuft.",
"{profile} demoted {member} to moderator.": "{profile} hat {member} zum/zur Moderator/in zurückgestuft.",
"{profile} demoted {member} to simple member.": "{profile} hat {member} zu einem einfachen Mitglied zurückgestuft.",
"{profile} excluded member {member}.": "{profile} hat {member} ausgeschlossen.",
"{profile} promoted {member} to administrator.": "{profile} hat {member} zum/zur Administrator/in befördert.",
"{profile} promoted {member} to an unknown role.": "{profile} hat {member} zu einer unbekannten Rolle befördert.",
"{profile} promoted {member} to moderator.": "{profile} hat {member} zum/zur Moderator/in befördert.",
"{profile} updated the member {member}.": "{profile} hat {member} aktualisiert.",
"{title} ({count} todos)": "{title} ({count} To-dos)",
"{username} was invited to {group}": "{username} wurde zu {group} eingeladen",
"© The Mobilizon Contributors {date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks": "© Das Mobilizon Team {date} - Entwickelt mit Elixir, Phoenix, VueJS & viel liebe und viel Zeit",

View File

@ -19,7 +19,7 @@
"Admin settings successfully saved.": "Admin settings successfully saved.",
"Admin": "Admin",
"Administration": "Administration",
"All the places have already been taken": "All the places have been taken|One place is still available|{places} places are still available",
"All the places have already been taken": "All the places have already been taken",
"Allow registrations": "Allow registrations",
"Anonymous participant": "Anonymous participant",
"Anonymous participants will be asked to confirm their participation through e-mail.": "Anonymous participants will be asked to confirm their participation through e-mail.",
@ -839,7 +839,7 @@
"Manually approve new followers": "Manually approve new followers",
"An error has occured. Sorry about that. You may try to reload the page.": "An error has occured. Sorry about that. You may try to reload the page.",
"What can I do to help?": "What can I do to help?",
"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):'",
"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):",
"Please add as many details as possible to help identify the problem.": "Please add as many details as possible to help identify the problem.",
"Technical details": "Technical details",
"Error message": "Error message",
@ -850,5 +850,134 @@
"{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.",
"Open a topic on our forum": "Open a topic on our forum",
"Open an issue on our bug tracker (advanced users)": "Open an issue on our bug tracker (advanced users)",
"Unable to copy to clipboard": "Unable to copy to clipboard"
"Unable to copy to clipboard": "Unable to copy to clipboard",
"{count} km": "{count} km",
"City or region": "City or region",
"Select a radius": "Select a radius",
"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.",
"Your upcoming events": "Your upcoming events",
"Last published events": "Last published events",
"On {instance}": "On {instance}",
"Close events": "Close events",
"Within {number} kilometers of {place}": "|Within one kilometer of {place}|Within {number} kilometers of {place}",
"@{username}": "@{username}",
"Yesterday": "Yesterday",
"You created the event {event}.": "You created the event {event}.",
"The event {event} was created by {profile}.": "The event {event} was created by {profile}.",
"You updated the event {event}.": "You updated the event {event}.",
"The event {event} was updated by {profile}.": "The event {event} was updated by {profile}.",
"You deleted the event {event}.": "You deleted the event {event}.",
"The event {event} was deleted by {profile}.": "The event {event} was deleted by {profile}.",
"You created the post {post}.": "You created the post {post}.",
"The post {post} was created by {profile}.": "The post {post} was created by {profile}.",
"You updated the post {post}.": "You updated the post {post}.",
"The post {post} was updated by {profile}.": "The post {post} was updated by {profile}.",
"You deleted the post {post}.": "You deleted the post {post}.",
"The post {post} was deleted by {profile}.": "The post {post} was deleted by {profile}.",
"No more activity to display.": "No more activity to display.",
"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.",
"{group} activity timeline": "{group} activity timeline",
"You promoted {member} to moderator.": "You promoted {member} to moderator.",
"You promoted {member} to administrator.": "You promoted {member} to administrator.",
"You promoted the member {member} to an unknown role.": "You promoted the member {member} to an unknown role.",
"You demoted {member} to moderator.": "You demoted {member} to moderator.",
"You demoted {member} to simple member.": "You demoted {member} to simple member.",
"You demoted the member {member} to an unknown role.": "You demoted the member {member} to an unknown role.",
"You updated the member {member}.": "You updated the member {member}.",
"{profile} updated the member {member}.": "{profile} updated the member {member}.",
"{profile} promoted {member} to moderator.": "{profile} promoted {member} to moderator.",
"{profile} promoted {member} to administrator.": "{profile} promoted {member} to administrator.",
"{profile} promoted {member} to an unknown role.": "{profile} promoted {member} to an unknown role.",
"{profile} demoted {member} to moderator.": "{profile} demoted {member} to moderator.",
"{profile} demoted {member} to simple member.": "{profile} demoted {member} to simple member.",
"{profile} demoted {member} to an unknown role.": "{profile} demoted {member} to an unknown role.",
"You requested to join the group.": "You requested to join the group.",
"{member} requested to join the group.": "{member} requested to join the group.",
"You invited {member}.": "You invited {member}.",
"{member} was invited by {profile}.": "{member} was invited by {profile}.",
"You added the member {member}.": "You added the member {member}.",
"{profile} added the member {member}.": "{profile} added the member {member}.",
"{member} rejected the invitation to join the group.": "{member} rejected the invitation to join the group.",
"{member} accepted the invitation to join the group.": "{member} accepted the invitation to join the group.",
"You excluded member {member}.": "You excluded member {member}.",
"{profile} excluded member {member}.": "{profile} excluded member {member}.",
"You accepted the invitation to join the group.": "You accepted the invitation to join the group.",
"You were promoted to moderator by {profile}.": "You were promoted to moderator by {profile}.",
"You were promoted to administrator by {profile}.": "You were promoted to administrator by {profile}.",
"You were promoted to an unknown role by {profile}.": "You were promoted to an unknown role by {profile}.",
"You were demoted to moderator by {profile}.": "You were demoted to moderator by {profile}.",
"You were demoted to simple member by {profile}.": "You were demoted to simple member by {profile}.",
"You were demoted to an unknown role by {profile}.": "You were demoted to an unknown role by {profile}.",
"{profile} quit the group.": "{profile} quit the group.",
"You created the folder {resource}.": "You created the folder {resource}.",
"{profile} created the folder {resource}.": "{profile} created the folder {resource}.",
"You created the resource {resource}.": "You created the resource {resource}.",
"{profile} created the resource {resource}.": "{profile} created the resource {resource}.",
"You moved the folder {resource} to the root folder.": "You moved the folder {resource} to the root folder.",
"{profile} moved the folder {resource} to the root folder.": "{profile} moved the folder {resource} to the root folder.",
"You moved the folder {resource} into {new_path}.": "You moved the folder {resource} into {new_path}.",
"{profile} moved the folder {resource} into {new_path}.": "{profile} moved the folder {resource} into {new_path}.",
"You moved the resource {resource} to the root folder.": "You moved the resource {resource} to the root folder.",
"{profile} moved the resource {resource} to the root folder.": "{profile} moved the resource {resource} to the root folder.",
"You moved the resource {resource} into {new_path}.": "You moved the resource {resource} into {new_path}.",
"{profile} moved the resource {resource} into {new_path}.": "{profile} moved the resource {resource} into {new_path}.",
"You renamed the folder from {old_resource_title} to {resource}.": "You renamed the folder from {old_resource_title} to {resource}.",
"{profile} renamed the folder from {old_resource_title} to {resource}.": "{profile} renamed the folder from {old_resource_title} to {resource}.",
"You renamed the resource from {old_resource_title} to {resource}.": "You renamed the resource from {old_resource_title} to {resource}.",
"{profile} renamed the resource from {old_resource_title} to {resource}.": "{profile} renamed the resource from {old_resource_title} to {resource}.",
"You deleted the folder {resource}.": "You deleted the folder {resource}.",
"{profile} deleted the folder {resource}.": "{profile} deleted the folder {resource}.",
"You deleted the resource {resource}.": "You deleted the resource {resource}.",
"{profile} deleted the resource {resource}.": "{profile} deleted the resource {resource}.",
"Activity": "Activity",
"Load more activities": "Load more activities",
"You created the discussion {discussion}.": "You created the discussion {discussion}.",
"{profile} created the discussion {discussion}.": "{profile} created the discussion {discussion}.",
"You replied to the discussion {discussion}.": "You replied to the discussion {discussion}.",
"{profile} replied to the discussion {discussion}.": "{profile} replied to the discussion {discussion}.",
"You renamed the discussion from {old_discussion} to {discussion}.": "You renamed the discussion from {old_discussion} to {discussion}.",
"{profile} renamed the discussion from {old_discussion} to {discussion}.": "{profile} renamed the discussion from {old_discussion} to {discussion}.",
"You archived the discussion {discussion}.": "You archived the discussion {discussion}.",
"{profile} archived the discussion {discussion}.": "{profile} archived the discussion {discussion}.",
"You deleted the discussion {discussion}.": "You deleted the discussion {discussion}.",
"{profile} deleted the discussion {discussion}.": "{profile} deleted the discussion {discussion}.",
"You created the group {group}.": "You created the group {group}.",
"{profile} created the group {group}.": "{profile} created the group {group}.",
"You updated the group {group}.": "You updated the group {group}.",
"{profile} updated the group {group}.": "{profile} updated the group {group}.",
"{old_group_name} was renamed to {group}.": "{old_group_name} was renamed to {group}.",
"Visibility was set to private.": "Visibility was set to private.",
"Visibility was set to public.": "Visibility was set to public.",
"Visibility was set to an unknown value.": "Visibility was set to an unknown value.",
"The group can now only be joined with an invite.": "The group can now only be joined with an invite.",
"The group can now be joined by anyone.": "The group can now be joined by anyone.",
"Unknown value for the openness setting.": "Unknown value for the openness setting.",
"The group's physical address was changed.": "The group's physical address was changed.",
"The group's avatar was changed.": "The group's avatar was changed.",
"The group's banner was changed.": "The group's banner was changed.",
"The group's short description was changed.": "The group's short description was changed.",
"No information": "No information",
"@{username}'s follow request was accepted": "@{username}'s follow request was accepted",
"Delete this discussion": "Delete this discussion",
"Are you sure you want to delete this entire discussion?": "Are you sure you want to delete this entire discussion?",
"Delete discussion": "Delete discussion",
"All activities": "All activities",
"From yourself": "From yourself",
"By others": "By others",
"You posted a comment on the event {event}.": "You posted a comment on the event {event}.",
"{profile} posted a comment on the event {event}.": "{profile} posted a comment on the event {event}.",
"You replied to a comment on the event {event}.": "You replied to a comment on the event {event}.",
"{profile} replied to a comment on the event {event}.": "{profile} replied to a comment on the event {event}.",
"New post": "New post",
"Comment text can't be empty": "Comment text can't be empty",
"Notifications": "Notifications",
"Profile feeds": "Profile feeds",
"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 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.",
"Regenerate new links": "Regenerate new links",
"Create new links": "Create new links",
"You'll need to change the URLs where there were previously entered.": "You'll need to change the URLs where there were previously entered.",
"Personal feeds": "Personal feeds",
"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 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.",
"The event will show as attributed to this profile.": "The event will show as attributed to this profile.",
"You may show some members as contacts.": "You may show some members as contacts."
}

View File

@ -13,6 +13,7 @@
"@{group}": "@{group}",
"@{username}": "@{username}",
"@{username} ({role})": "@{username} ({role})",
"@{username}'s follow request was accepted": "Se aceptó la solicitud de seguimiento de @{username}",
"@{username}'s follow request was rejected": "Se rechazó la solicitud de seguimiento de @{username}",
"A cookie is a small file containing information that is sent to your computer when you visit a website. When you visit the site again, the cookie allows that site to recognize your browser. Cookies may store user preferences and other information. You can configure your browser to refuse all cookies. However, this may result in some website features or services partially working. Local storage works the same way but allows you to store more data.": "Una cookie es un pequeño archivo que contiene información que se envía a su computadora cuando visita un sitio web. Cuando vuelve a visitar el sitio, la cookie permite que ese sitio reconozca su navegador. Las cookies pueden almacenar preferencias del usuario y otra información. Puede configurar su navegador para rechazar todas las cookies. Sin embargo, esto puede provocar que algunas funciones o servicios del sitio web funcionen parcialmente. El almacenamiento local funciona de la misma manera, pero le permite almacenar más datos.",
"A cookie is a small file containing informations that is sent to your computer when you visit a website. When you visit the site again, the cookie allows that site to recognize your browser. Cookies may store user preferences and other information. You can configure your browser to refuse all cookies. However, this may result in some website features or services partially working. Local storage works the same way but allows to store more data.": "Una cookie es un pequeño archivo que contiene información que se envía a su computadora cuando visita un sitio web. Cuando vuelve a visitar el sitio, la cookie permite que ese sitio reconozca su navegador. Las cookies pueden almacenar las preferencias del usuario y otra información. Puede configurar su navegador para rechazar todas las cookies. Sin embargo, esto puede provocar que algunas funciones o servicios del sitio web funcionen parcialmente. El almacenamiento local funciona de la misma manera pero permite almacenar más datos.",
@ -44,7 +45,8 @@
"Actions": "Acciones",
"Activated": "Activado",
"Active": "Activo",
"Actor": "Actor",
"Activity": "Actividad",
"Actor": "Participante",
"Add": "Añadir",
"Add / Remove…": "Añadir / eliminar…",
"Add a contact": "Añade un contacto",
@ -62,12 +64,14 @@
"Admin settings successfully saved.": "Ajustes de administración guardados correctamente.",
"Administration": "Administración",
"Administrator": "Administrador",
"All activities": "Todas las actividades",
"All good, let's continue!": "Todo bien ¡continuemos!",
"All group members and other eventual server admins will still be able to view this information.": "Todos los miembros del grupo y otros administradores eventuales del servidor aún podrán ver esta información.",
"All the places have already been taken": "Todos los plazas han sido ocupados | Un plazas aún está disponible | {lugares} plazas aún están disponibles",
"All the places have already been taken": "Todos los lugares ya han sido ocupados",
"Allow all comments": "Permitir todos los comentarios",
"Allow all comments from users with accounts": "Permitir todos los comentarios de los usuarios registrados",
"Allow registrations": "Permitir registros",
"An error has occured. Sorry about that. You may try to reload the page.": "Ha ocurrido un error. Lo siento por eso. Puede intentar volver a cargar la página.",
"An error has occurred.": "Se ha producido un error.",
"An ethical alternative": "Una alternativa ética",
"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.": "Una instancia es una versión instalada del software Mobilizon que se ejecuta en un servidor. Cualquier persona que utilice {mobilizon_software} u otras aplicaciones federadas, también conocido como \"fediverse\", puede ejecutar una instancia. El nombre de esta instancia es {nombre_instancia}. Mobilizon es una red federada de múltiples instancias (al igual que los servidores de correo electrónico), los usuarios registrados en diferentes instancias pueden comunicarse aunque no se hayan registrado en la misma instancia.",
@ -90,6 +94,7 @@
"Are you sure you want to cancel the event creation? You'll lose all modifications.": "¿Seguro que quieres cancelar la creación del evento? Perderás todas las modificaciones.",
"Are you sure you want to cancel the event edition? You'll lose all modifications.": "¿Seguro que quieres cancelar la edición del evento? Perderás todas las modificaciones.",
"Are you sure you want to cancel your participation at event \"{title}\"?": "¿Está seguro de que desea cancelar su participación en el evento \"{title}\"?",
"Are you sure you want to delete this entire discussion?": "¿Está seguro de que desea eliminar toda esta discusión?",
"Are you sure you want to delete this event? This action cannot be reverted.": "¿Seguro que quieres eliminar este evento? Esta acción no se puede revertir.",
"As the event organizer has chosen to manually validate participation requests, your participation will be really confirmed only once you receive an email stating it's being accepted.": "Como el organizador del evento ha optado por validar manualmente las solicitudes de participación, su participación se confirmará realmente solo una vez que reciba un correo electrónico que indique que está siendo aceptada.",
"Assigned to": "Asignado a",
@ -104,6 +109,7 @@
"By @{group}": "Por @{group}",
"By @{username}": "Por @{username}",
"By @{username} and @{group}": "Por @{username} y @{group}",
"By others": "Por otros",
"By {author}": "Por {author}",
"By {group}": "Por {grup}",
"By {username} and {group}": "Por {username} y {group}",
@ -123,6 +129,7 @@
"Change my password": "Cambiar mi contraseña",
"Change timezone": "Cambiar zona horaria",
"Check your inbox (and your junk mail folder).": "Revise su bandeja de entrada (y su carpeta de correo basura).",
"City or region": "Ciudad o región",
"Clear": "Limpiar",
"Clear participation data for all events": "Datos de participación claros para todos los eventos",
"Clear participation data for this event": "Datos claros de participación para este evento",
@ -131,10 +138,12 @@
"Click to upload": "Haz clic para subir (upload)",
"Close": "Cerrar",
"Close comments for all (except for admins)": "Cerrar comentarios para todos (excepto para administradores)",
"Close events": "Eventos cercanos",
"Closed": "Cerrado",
"Collections": "Colecciones",
"Comment deleted": "Comentario borrado",
"Comment from @{username} reported": "Comentario de @{username} declarado",
"Comment text can't be empty": "El texto del comentario no puede estar vacío",
"Comments": "Comentarios",
"Comments are closed for everybody else.": "Los comentarios están cerrados para todos los demás.",
"Comments have been closed.": "Los comentarios han sido cerrados.",
@ -149,6 +158,7 @@
"Contact": "Contacto",
"Continue editing": "Continua editando",
"Cookies and Local storage": "Cookies y almacenamiento local",
"Copy details to clipboard": "Copiar detalles al portapapeles",
"Country": "País",
"Create": "Crear",
"Create a calc": "Crear un calco",
@ -171,6 +181,7 @@
"Create my event": "Crear mi evento",
"Create my group": "Crear mi grupo",
"Create my profile": "Crear mi perfil",
"Create new links": "Crea nuevos enlaces",
"Create or join an group and start organizing with other people": "Cree o únase a un grupo y comience a organizarse con otras personas",
"Create resource": "Crear recurso",
"Create the discussion": "Crear la discusión",
@ -201,11 +212,13 @@
"Delete Event": "Eliminar evento",
"Delete account": "Eliminar cuenta",
"Delete conversation": "Borrar la conversación",
"Delete discussion": "Eliminar discusión",
"Delete event": "Eliminar evento",
"Delete everything": "Eliminar todo",
"Delete group": "Eliminar grupo",
"Delete my account": "Eliminar mi cuenta",
"Delete post": "Eliminar Publicación",
"Delete this discussion": "Eliminar esta discusión",
"Delete this identity": "Eliminar esta identidad",
"Delete your identity": "Eliminar tu identidad",
"Delete {eventTitle}": "Eliminar {eventTitle}",
@ -255,6 +268,9 @@
"Enter your own terms. HTML tags allowed. Mobilizon.org's terms are provided as template.": "Introduzca sus propios términos. Etiquetas HTML permitidas. Los términos de Mobilizon.org se proporcionan como plantilla.",
"Enter your own terms. HTML tags allowed. The {mobilizon_terms} are provided as template.": "Ingrese sus propios términos. Etiquetas HTML permitidas. Los {mobilizon_terms} se proporcionan como plantilla.",
"Error": "Error",
"Error details copied!": "¡Se copiaron los detalles del error!",
"Error message": "Mensaje de error",
"Error stacktrace": "Seguimiento de errores",
"Error while changing email": "Error al cambiar el correo electrónico",
"Error while communicating with the server.": "Error al comunicarse con el servidor.",
"Error while login with {provider}. Retry or login another way.": "Error al iniciar sesión con {provider}. Vuelva a intentarlo o inicie sesión de otra manera.",
@ -307,6 +323,7 @@
"From the {startDate} at {startTime} to the {endDate}": "Desde {startDate} en {startTime} hasta {endDate}",
"From the {startDate} at {startTime} to the {endDate} at {endTime}": "Desde el {startDate} en {startTime} hasta el {endDate} en {endTime}",
"From the {startDate} to the {endDate}": "Desde el {startDate} hasta el {endDate}",
"From yourself": "De ti mismo",
"Gather ⋅ Organize ⋅ Mobilize": "Reúna ⋅ Organice ⋅ Movilice",
"General": "General",
"General information": "Información general",
@ -399,6 +416,7 @@
"Last IP adress": "Última dirección IP",
"Last group created": "Último grupo creado",
"Last published event": "Último evento publicado",
"Last published events": "Últimos eventos publicados",
"Last sign-in": "Último inicio de sesión",
"Last week": "La semana pasada",
"Latest posts": "Últimas publicaciones",
@ -418,6 +436,7 @@
"Limited number of places": "Número limitado de plazas",
"List title": "Título de la lista",
"Load more": "Carga más",
"Load more activities": "Cargar más actividades",
"Loading comments…": "Cargando comentarios…",
"Local": "Local",
"Locality": "Localidad",
@ -472,6 +491,7 @@
"New members": "Nuevos miembros",
"New note": "Nueva nota",
"New password": "Nueva contraseña",
"New post": "Nueva publicación",
"New profile": "Nuevo perfil",
"Next": "Próximo",
"Next month": "Próximo mes",
@ -488,6 +508,7 @@
"No follower matches the filters": "Ningún seguidor coincide con los filtros",
"No group found": "Ningún grupo encontrado",
"No groups found": "No se encontraron grupos",
"No information": "Sin información",
"No instance follows your instance yet.": "Ninguna instancia sigue a tu instancia todavía.",
"No instance to approve|Approve instance|Approve {number} instances": "No hay instancia para aprobar|Aprobar instancia|Aprobar {número} instancias",
"No instance to reject|Reject instance|Reject {number} instances": "Ninguna instancia para rechazar | Rechazar instancia | Rechazar {número} instancias",
@ -496,6 +517,7 @@
"No member matches the filters": "Ningún miembro coincide con los filtros",
"No message": "Sin mensaje",
"No moderation logs yet": "Aún no hay registros de moderación",
"No more activity to display.": "No hay más actividad para mostrar.",
"No notification settings yet": "Aún no hay configuración de notificaciones",
"No one is going to this event": "Nadie asistirá a este evento|Una persona irá|{going} irán personas",
"No ongoing todos": "No hay tareas pendientes (\"to-do\") en marcha",
@ -534,6 +556,7 @@
"On {date} ending at {endTime}": "El {fecha} que termina en {endTime}",
"On {date} from {startTime} to {endTime}": "El {fecha} de {startTime} a {endTime}",
"On {date} starting at {startTime}": "El {fecha} a partir de {startTime}",
"On {instance}": "En {instance}",
"One person is going": "Nadie va|Una persona va|personas {approved} van",
"Ongoing tasks": "Tareas en curso",
"Only accessible through link": "Solo accesible a través del enlace",
@ -545,6 +568,8 @@
"Only group members can access discussions": "Solo los miembros del grupo pueden acceder a las discusiones",
"Only group moderators can create, edit and delete posts.": "Solo los moderadores de grupo pueden crear, editar y eliminar publicaciones.",
"Open": "Abrir",
"Open a topic on our forum": "Abrir un tema en nuestro foro",
"Open an issue on our bug tracker (advanced users)": "Abrir un problema en nuestro rastreador de errores (usuarios avanzados)",
"Opened reports": "Informes abiertos",
"Or": "O",
"Organize and take action, freely": "Organiza y actua, libremente",
@ -578,11 +603,13 @@
"Password reset": "Restablecimiento de contraseña",
"Past events": "Eventos pasados",
"Pending": "Pendiente",
"Personal feeds": "Flujos personales",
"Pick": "Recoger",
"Pick a group": "Elige un grupo",
"Pick a profile or a group": "Elige un perfil o un grupo",
"Pick an identity": "Elige una identidad",
"Pick an instance": "Elige una instancia",
"Please add as many details as possible to help identify the problem.": "Agregue tantos detalles como sea posible para ayudar a identificar el problema.",
"Please check your spam folder if you didn't receive the email.": "Verifique su carpeta de correo no deseado (spam) si no recibió el correo electrónico.",
"Please contact this instance's Mobilizon admin if you think this is a mistake.": "Póngase en contacto con el administrador de Mobilizon de esta instancia si cree que esto es un error.",
"Please do not use it in any real way.": "Por favor, no lo use de ninguna manera real.",
@ -606,6 +633,7 @@
"Privacy policy": "Política de privacidad",
"Private event": "Evento privado",
"Private feeds": "Feeds privados",
"Profile feeds": "Flujo de perfil",
"Profiles": "Perfiles",
"Profiles and federation": "Perfiles y federación",
"Promote": "Promover",
@ -620,7 +648,7 @@
"Publish": "Publicar",
"Published events": "Eventos publicados",
"Published events with <b>{comments}</b> comments and <b>{participations}</b> confirmed participations": "Eventos publicados con <b> {comments} </b> comentarios y <b> {participations} </b> participaciones confirmadas",
"RSS/Atom Feed": "RSS/Atom Feed",
"RSS/Atom Feed": "RSS/Suministro Atom",
"Radius": "Radio",
"Read Framasofts statement of intent on the Framablog": "Lea la declaración de intenciones de Framasoft en el Framablog",
"Recap every week": "Recordatorio semanal",
@ -628,6 +656,7 @@
"Redirecting to content…": "Redirigiendo al contenido…",
"Redirecting to event…": "Redirigiendo al evento …",
"Refresh profile": "Actualizar perfil",
"Regenerate new links": "Regenerar nuevos enlaces",
"Region": "Región",
"Register": "Registrar",
"Register an account on Mobilizon!": "¡Registre una cuenta en Mobilizon!",
@ -683,6 +712,7 @@
"Searching…": "Buscando…",
"Search…": "Buscar…",
"Select a language": "Selecciona un idioma",
"Select a radius": "Seleccione un radio",
"Select a timezone": "Selecciona una zona horaria",
"Select languages": "Seleccionar idiomas",
"Send email": "Enviar correo electrónico",
@ -714,6 +744,7 @@
"Suspend group": "Suspender grupo",
"Suspended": "Suspendido",
"Task lists": "Listas de tareas",
"Technical details": "Detalles técnicos",
"Tentative": "Tentativa",
"Tentative: Will be confirmed later": "Intento: se confirmará más tarde",
"Terms": "Condiciones",
@ -734,10 +765,20 @@
"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.": "El organizador del evento aprueba manualmente las participaciones. Dado que ha elegido participar sin una cuenta, explique por qué desea participar en este evento.",
"The event title will be ellipsed.": "El título del evento será elipsado.",
"The event will show as attributed to this group.": "El evento se mostrará como atribuido a este grupo.",
"The event will show as attributed to this profile.": "El evento se mostrará como atribuido a este perfil.",
"The event will show as attributed to your personal profile.": "El evento se mostrará como atribuido a su perfil personal.",
"The event will show the group as organizer.": "El evento mostrará al grupo como organizador.",
"The event {event} was created by {profile}.": "El evento {event} fue creado por {profile}.",
"The event {event} was deleted by {profile}.": "El evento {event} Ha sido borrado por {profile}.",
"The event {event} was updated by {profile}.": "El evento {event} fue actualizado por {profile}.",
"The events you created are not shown here.": "Los eventos que creó no se muestran aquí.",
"The group can now be joined by anyone.": "Ahora cualquiera puede unirse al grupo.",
"The group can now only be joined with an invite.": "Ahora solo se puede unir al grupo con una invitación.",
"The group will be publicly listed in search results and may be suggested in the explore section. Only public informations will be shown on it's page.": "El grupo se incluirá públicamente en los resultados de búsqueda y se puede sugerir en la sección de exploración. En su página solo se mostrará información pública.",
"The group's avatar was changed.": "Se cambió el avatar del grupo.",
"The group's banner was changed.": "Se cambió el estandarte del grupo.",
"The group's physical address was changed.": "Se cambió la dirección física del grupo.",
"The group's short description was changed.": "Se cambió la breve descripción del grupo.",
"The instance administrator is the person or entity that runs this Mobilizon instance.": "El administrador de la instancia es la persona o entidad que ejecuta esta instancia de Mobilizon.",
"The member was removed from the group {group}": "El miembro fue eliminado del grupo {grup}",
"The new email doesn't seem to be valid": "El nuevo correo electrónico no parece ser válido",
@ -748,15 +789,22 @@
"The page you're looking for doesn't exist.": "La página que estás buscando no existe.",
"The password provided is invalid": "La contraseña proporcionada no es válida",
"The password was successfully changed": "La contraseña fue cambiada con éxito",
"The post {post} was created by {profile}.": "La publicación {post} fue creada por {profile}.",
"The post {post} was deleted by {profile}.": "La publicación {post} ha sido borrada por {profile}.",
"The post {post} was updated by {profile}.": "La publicación {post} ha sido actualizada por {profile}.",
"The report will be sent to the moderators of your instance. You can explain why you report this content below.": "El informe se enviará a los moderadores de su instancia. Puede explicar por qué declara este contenido a continuación.",
"The technical details of the error can help developers solve the problem more easily. Please add them to your feedback.": "Los detalles técnicos del error pueden ayudar a los desarrolladores a resolver el problema más fácilmente. Agrégalos a tus comentarios.",
"The user account you're trying to login as has not been confirmed yet. Check your email inbox and eventually your spam folder.": "La cuenta de usuario que está intentando iniciar sesión aún no se ha confirmado. Verifique su bandeja de entrada de correo electrónico y eventualmente su carpeta de correo no deseado.",
"The username is a unique identifier of your account on this and all the other instances. It's as unique as an email address, which makes it easy for other people to interact with it.": "El nombre de usuario es un identificador único de su cuenta en esta y todas las demás instancias. Es tan único como una dirección de correo electrónico, lo que facilita que otras personas interactúen con él.",
"The {default_privacy_policy} will be used. They will be translated in the user's language.": "Se utilizará {default_privacy_policy}. Se traducirán en el idioma del usuario.",
"The {default_terms} will be used. They will be translated in the user's language.": "Se utilizarán los {default_terms}. Se traducirán en el idioma del usuario.",
"There are {participants} participants.": "Hay {participantes} participantes.",
"There is no activity yet. Start doing some things to see activity appear here.": "No hay actividad todavía. Comience a hacer algunas cosas para ver la actividad aparecer aquí.",
"There will be no way to recover your data.": "No habrá forma de recuperar sus datos.",
"There's no discussions yet": "Aún no hay discusiones",
"These events may interest you": "Estos eventos pueden interesarte",
"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.": "Estos flujos contienen datos de eventos para los eventos en los que alguno de sus perfiles es participante o creador. Deberías mantenerlos privados. Puede encontrar flujos para perfiles específicos en cada página de edición de perfil.",
"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.": "Estos flujos contienen datos de eventos para los eventos para los que este perfil específico es un participante o creador. Deberías mantenerlos privados. Puede encontrar flujos para todos sus perfiles en la configuración de notificaciones.",
"This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "Esta instancia de Mobilizon y este organizador de eventos permiten participaciones anónimas pero requieren validación mediante confirmación por correo electrónico.",
"This URL is not supported": "Esta URL no es compatible",
"This email is already registered as participant for this event": "Este correo electrónico ya está registrado como participante para este evento",
@ -802,6 +850,7 @@
"Type or select a date…": "Escriba o seleccione una fecha …",
"URL": "URL",
"URL copied to clipboard": "URL copiada al portapapeles",
"Unable to copy to clipboard": "No se puede copiar al portapapeles",
"Unable to detect timezone.": "No se pudo detectar la zona horaria.",
"Unable to load event for participation. The error details are provided below:": "No se puede cargar el evento para participar. Los detalles del error se proporcionan a continuación:",
"Unable to save your participation in this browser.": "No se puede guardar su participación en este navegador.",
@ -810,6 +859,7 @@
"Unknown": "Desconocido",
"Unknown actor": "Actor desconocido",
"Unknown error.": "Error desconocido.",
"Unknown value for the openness setting.": "Valor desconocido para la configuración de apertura.",
"Unsaved changes": "Cambios no guardados",
"Unset group": "Deseleccionar grupo",
"Unsuspend": "Aprobar",
@ -837,6 +887,9 @@
"View event page": "Ver página del evento",
"View everything": "Ver todo",
"View page on {hostname} (in a new window)": "Ver página en {hostname} (en una nueva ventana)",
"Visibility was set to an unknown value.": "La visibilidad se estableció en un valor desconocido.",
"Visibility was set to private.": "La visibilidad se estableció en privada.",
"Visibility was set to public.": "La visibilidad se estableció en público.",
"Visible everywhere on the web": "Visible por todas partes en la web",
"Visible everywhere on the web (public)": "Visible en todas partes de la web (público)",
"Visit event page": "Visite la página del evento",
@ -846,6 +899,7 @@
"We asked professional designers to help us develop our vision for Mobilizon. We took time to study the {digital_habits} in order to understand the features they need to gather, organize, and mobilize so that right from its conception, Mobilizon would {fit_needs_uses_people} who are going to use it.": "Le pedimos a diseñadores profesionales que nos ayudaran a desarrollar nuestra visión de Mobilizon. Nos tomamos un tiempo para estudiar los {digital_habits} a fin de comprender las funciones que necesitan para recopilar, organizar y movilizar de modo que, desde su concepción, Mobilizon {fit_needs_uses_people} vaya a usarlo.",
"We asked professional designers to help us develop our vision for Mobilizon. We took time to study the {digital_habits} in order to understand the features they need to gather, organize, and mobilize.": "Pedimos a los diseñadores profesionales que nos ayuden a desarrollar nuestra visión para Mobilizon. Nos tomamos el tiempo de estudiar los {digital_habits} para comprender las características que necesitan para reunir, organizar y movilizar.",
"We cant change the world from within Facebook. The tool we dream of, surveillance capitalism corporations wont develop, as they cannot profit from it. This is an opportunity to build something better, by taking another approach.": "No podemos cambiar el mundo desde Facebook. La herramienta con la que soñamos, las corporaciones del capitalismo de vigilancia no la desarrollarán, ya que no pueden beneficiarse de ella. Esta es una oportunidad para construir algo mejor, adoptando otro enfoque.",
"We improve this software thanks to your feedback. To let us know about this issue, two possibilities (both unfortunately require user account creation):": "Mejoramos este software gracias a sus comentarios. Para informarnos sobre este problema, hay dos posibilidades (ambas lamentablemente requieren la creación de una cuenta de usuario):",
"We just sent an email to {email}": "Acabamos de enviar un correo electrónico a {email}",
"We use your timezone to make sure you get notifications for an event at the correct time.": "Usamos su zona horaria para asegurarnos de que reciba notificaciones de un evento en el momento correcto.",
"We want to develop a <b>digital common</b> that everyone can make their own, one which respects <b>privacy and activism by design</b>.": "Queremos desarrollar un <b> común digital </b> que todos puedan crear, uno que respete <b> la privacidad y el activismo por diseño </b>.",
@ -861,16 +915,22 @@
"Welcome back!": "¡Bienvenido de nuevo!",
"Welcome on your administration panel": "Bienvenido en tu panel de administración",
"Welcome to Mobilizon, {username}!": "¡Bienvenido a Mobilizon, {username}!",
"What can I do to help?": "¿Que puedo hacer para ayudar?",
"When a moderator from the group creates an event and attributes it to the group, it will show up here.": "Cuando un moderador del grupo crea un evento y lo atribuye al grupo, se mostrará aquí.",
"When someone from the group creates an event and attributes it to the group, it will show up here.": "Cuando alguien del grupo crea un evento y lo atribuye al grupo, se mostrará aquí.",
"Who can view this event and participate": "Quién puede ver este evento y participar",
"Who can view this post": "¿Quién puede ver esta publicación?",
"Who can view this post": "Quién puede ver esta publicación",
"Who published {number} events": "Quién publicó {número} eventos",
"Why create an account?": "¿Por qué crear una cuenta?",
"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.": "Permitirá mostrar y administrar su estado de participación en la página del evento cuando utilice este dispositivo. Desmarque si está usando un dispositivo público.",
"Within {number} kilometers of {place}": "|Dentro de un kilómetro de {place}|Dentro de {number} kilómetros de {place}",
"World map": "Mapa del mundo",
"Write something…": "Escribe algo…",
"Yesterday": "Ayer",
"You accepted the invitation to join the group.": "Aceptaste la invitación para unirte al grupo.",
"You added the member {member}.": "Agregaste al miembro {menber}.",
"You and one other person are going to this event": "Eres el único que va a este evento|Usted y otra persona asistirán a este evento|Usted y las personas {approved}asistirán a este evento.",
"You archived the discussion {discussion}.": "Archivaste la discusión {discussion}.",
"You are already a participant of this event.": "Ya eres un participante de este evento.",
"You are not an administrator for this group.": "No eres administrador de este grupo.",
"You are not part of any group": "No formas parte de ningún grupo",
@ -884,9 +944,24 @@
"You can't change your password because you are registered through {provider}.": "No puede cambiar su contraseña porque está registrado a través de {provider}.",
"You can't remove your last identity.": "No puedes eliminar tu última identidad.",
"You can't reset your password because you use a 3rd-party auth provider to login.": "No puede restablecer su contraseña porque utiliza un proveedor de autenticación de terceros para iniciar sesión.",
"You created the discussion {discussion}.": "Creaste la discusión {discussion}.",
"You created the event {event}.": "Has creado el evento {event}.",
"You created the folder {resource}.": "Creaste la carpeta {resource}.",
"You created the group {group}.": "Creaste el grupo {group}.",
"You created the post {post}.": "Creaste la publicación {post}.",
"You created the resource {resource}.": "Creaste el recurso {resource}.",
"You deleted the discussion {discussion}.": "Eliminaste la discusión {discusión}.",
"You deleted the event {event}.": "Has borrado el evento {event}.",
"You deleted the folder {resource}.": "Eliminaste la carpeta {recurso}.",
"You deleted the post {post}.": "Has borrado la publicación {post}.",
"You deleted the resource {resource}.": "Has borrado el recurso {resource}.",
"You demoted the member {member} to an unknown role.": "Has degradado al miembro {member} a una función desconocida.",
"You demoted {member} to moderator.": "Has degradado a {member} a moderador.",
"You demoted {member} to simple member.": "Has degradado a {member} a miembro simple.",
"You didn't create or join any event yet": "Aún no creaste ni te uniste a ningún evento",
"You didn't create or join any event yet.": "Aún no creaste ni te uniste a ningún evento.",
"You don't follow any instances yet.": "Todavía no sigues ninguna instancia.",
"You excluded member {member}.": "Ha excluido al miembro {member}.",
"You have been disconnected": "Has sido desconectado",
"You have been invited by {invitedBy} to the following group:": "Usted ha sido invitado por {invitedBy} al siguiente grupo:",
"You have been removed from this group's members.": "Ha sido eliminado de los miembros de este grupo.",
@ -894,17 +969,44 @@
"You have one event in {days} days.": "No tienes eventos en {days} días|Tienes un evento en {days} días. |Tienes {count} eventos en {days} días",
"You have one event today.": "No tienes eventos hoy|Tienes un evento hoy.|Tienes {count} eventos hoy",
"You have one event tomorrow.": "No tienes eventos mañana|Tienes un evento mañana.|Tienes {count} eventos mañana",
"You invited {member}.": "as invitado a {member}.",
"You may also ask to {resend_confirmation_email}.": "También puede solicitar {resend_confirmation_email}.",
"You may clear all participation information for this device with the buttons below.": "Puede borrar toda la información de participación de este dispositivo con los botones a continuación.",
"You may now close this window, or {return_to_event}.": "Ahora puede cerrar esta ventana o {return_to_event}.",
"You may now close this window.": "Ahora puedes cerrar esta ventana.",
"You may show some members as contacts.": "Puede mostrar algunos miembros como contactos.",
"You moved the folder {resource} into {new_path}.": "Moviste la carpeta {resource} a {new_path}.",
"You moved the folder {resource} to the root folder.": "Moviste la carpeta {resource} a la carpeta raíz.",
"You moved the resource {resource} into {new_path}.": "Moviste el recurso {resource} a {new_path}.",
"You moved the resource {resource} to the root folder.": "Moviste el recurso {resource} a la carpeta raíz.",
"You need to create the group before you create an event.": "Necesitas crear un grupo antes de crear un evento.",
"You need to login.": "Necesitas iniciar sesión.",
"You posted a comment on the event {event}.": "Publicó un comentario sobre el evento {event}.",
"You promoted the member {member} to an unknown role.": "has ascendido al miembro {member} a un rol desconocido.",
"You promoted {member} to administrator.": "has ascendido a {menber} como administrador.",
"You promoted {member} to moderator.": "Has ascendido a {member} a moderador.",
"You renamed the discussion from {old_discussion} to {discussion}.": "Has cambiado el nombre de la discusión de {old_discussion} a {discussion}.",
"You renamed the folder from {old_resource_title} to {resource}.": "Cambió el nombre de la carpeta de {old_resource_title} a {resource}.",
"You renamed the resource from {old_resource_title} to {resource}.": "cambiaste el nombre del recurso de {old_resource_title} a {resource}.",
"You replied to a comment on the event {event}.": "Respondiste a un comentario sobre el evento {evento}.",
"You replied to the discussion {discussion}.": "Respondiste a la discusión {discussion}.",
"You requested to join the group.": "Solicitaste unirte al grupo.",
"You updated the event {event}.": "Has actualizado el evento {event}.",
"You updated the group {group}.": "Actualizaste el grupo {group}.",
"You updated the member {member}.": "Ha actualizado al miembro {member}.",
"You updated the post {post}.": "Ha actualizado la publicación {post}.",
"You were demoted to an unknown role by {profile}.": "{profile} te degradó a una función desconocida.",
"You were demoted to moderator by {profile}.": "{profile} te degradó a moderador.",
"You were demoted to simple member by {profile}.": "{profile} te degradó a miembro simple.",
"You were promoted to administrator by {profile}.": "{profile} te ascendió a administrador.",
"You were promoted to an unknown role by {profile}.": "{profile} te ascendió a un puesto desconocido.",
"You were promoted to moderator by {profile}.": "{profile} te ascendió a moderador.",
"You will be able to add an avatar and set other options in your account settings.": "Podrá agregar un avatar y establecer otras opciones en la configuración de su cuenta.",
"You will be redirected to the original instance": "Serás redirigido a la instancia original",
"You will find here all the events you have created or of which you are a participant.": "Aquí encontrarás todos los eventos que has creado o de los que eres participante.",
"You wish to participate to the following event": "Desea participar en el siguiente evento",
"You'll get a weekly recap every Monday for upcoming events, if you have any.": "Obtendrás un recordatorio semanal todos los lunes para los próximos eventos, si tiene alguno.",
"You'll need to change the URLs where there were previously entered.": "Deberá cambiar las URL donde se ingresaron anteriormente.",
"You'll need to transmit the group URL so people may access the group's profile.": "Deberá transmitir la URL del grupo para que las personas puedan acceder al perfil del grupo.",
"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.": "Deberá transmitir la URL del grupo para que las personas puedan acceder al perfil del grupo. El grupo no se podrá encontrar en la búsqueda de Mobilizon ni en los motores de búsqueda habituales.",
"You'll receive a confirmation email.": "Recibirá un correo electrónico de confirmación.",
@ -912,6 +1014,8 @@
"Your account has been validated": "Su cuenta ha sido validada",
"Your account is being validated": "Su cuenta esta siendo validada",
"Your account is nearly ready, {username}": "Su cuenta está casi lista, {username}",
"Your city or region and the radius will only be used to suggest you events nearby.": "Su ciudad o región y el radio solo se utilizarán para sugerirle eventos cercanos.",
"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.": "Su ciudad o región y el radio solo se utilizarán para sugerirle eventos cercanos. El radio del evento considerará el centro administrativo del área.",
"Your current email is {email}. You use it to log in.": "Su correo electrónico actual es {correo electrónico}. Lo usas para iniciar sesión.",
"Your email": "Tu correo electrónico",
"Your email address was automatically set based on your {provider} account.": "Su dirección de correo electrónico se configuró automáticamente en función de su cuenta de {provider}.",
@ -937,6 +1041,7 @@
"Your timezone is currently set to {timezone}.": "Tu zona horaria está configurada actualmente en {timezone}.",
"Your timezone was detected as {timezone}.": "Su zona horaria se detectó como {timezone}.",
"Your timezone {timezone} isn't supported.": "Tu zona horaria {timezone} no es compatible.",
"Your upcoming events": "Tus próximos eventos",
"[This comment has been deleted by it's author]": "[Este comentario ha sido borrado por su autor]",
"[This comment has been deleted]": "[Este comentario ha sido eliminado]",
"[deleted]": "[eliminado]",
@ -958,7 +1063,7 @@
"firstDayOfWeek": "0",
"fit the needs and uses of the people": "se ajusta a las necesidades y usos de las personas",
"full rules": "reglas completas",
"iCal Feed": "iCal Feed",
"iCal Feed": "Suministro iCal",
"instance rules": "reglas de instancia",
"interconnect with others like it": "interconectarse con otros como él",
"its source code is public": "su código fuente es público",
@ -973,13 +1078,20 @@
"with another identity…": "con otra identidad …",
"{approved} / {total} seats": "Asientos {approved}/{total}",
"{available}/{capacity} available places": "No quedan plazas|{available}/{capacity} plazas disponibles",
"{count} km": "{count} km",
"{count} participants": "Aún no hay participantes|Un participante|{count} participantes",
"{count} requests waiting": "{count} solicitudes en espera",
"{count} team members": "{count} miembros del equipo",
"{group} activity timeline": "Cronograma de actividad de {group}",
"{group}'s events": "Eventos de {group}",
"{instanceName} is an instance of the {mobilizon} software.": "{instanceName} es una instancia de lsoftware {mobilizon .",
"{instanceName} is an instance of {mobilizon_link}, a free software built with the community.": "{instanceName} es una instancia de {mobilizon_link}, un software gratuito creado con la comunidad.",
"{license} guarantees {respect} of the people who use it. Since {source}, anyone can audit it, which guarantees its transparency.": "{license} garantiza {respeto} a las personas que lo utilizan. Desde {fuente}, cualquiera puede auditarlo, lo que garantiza su transparencia.",
"{license} guarantees {respect} of the people who will use it. Since {source}, anyone can audit it, which guarantees its transparency.": "{license} garantiza {respect} de las personas que lo usarán. Desde {source}, cualquiera puede auditarlo, lo que garantiza su transparencia.",
"{member} accepted the invitation to join the group.": "{member} aceptó la invitación para unirse al grupo.",
"{member} rejected the invitation to join the group.": "{member} rechazó la invitación para unirse al grupo.",
"{member} requested to join the group.": "{member} solicitó unirse al grupo.",
"{member} was invited by {profile}.": "{member} fue invitado por {profile}.",
"{moderator} added a note on {report}": "{moderator} agregó una nota en{report}",
"{moderator} closed {report}": "{moderator} cerrado {report}",
"{moderator} deleted an event named \"{title}\"": "{moderator} eliminó un evento llamado \"{title}\"",
@ -993,7 +1105,37 @@
"{number} organized events": "No hay eventos organizados|Un evento organizad|{number} eventos organizados",
"{number} participations": "Sin participaciones|Una participación|{number} participaciones",
"{number} posts": "No hay publicaciones|Una publicación|{number} publicaciones",
"{old_group_name} was renamed to {group}.": "Se cambió el nombre de {old_group_name} a {group}.",
"{profile} (by default)": "{profile} (por defecto)",
"{profile} added the member {member}.": "{profile} agregó el miembro {member}.",
"{profile} archived the discussion {discussion}.": "{profile} archivó la discusión {discussion}.",
"{profile} created the discussion {discussion}.": "{profile} creó la discusión {discussion}.",
"{profile} created the folder {resource}.": "{profile} creó la carpeta {resource}.",
"{profile} created the group {group}.": "{profile} creó el grupo {group}.",
"{profile} created the resource {resource}.": "{profile} creó el recurso {resource}.",
"{profile} deleted the discussion {discussion}.": "{profile} eliminó la discusión {discussion}.",
"{profile} deleted the folder {resource}.": "{profile} eliminó la carpeta {resource}.",
"{profile} deleted the resource {resource}.": "{profile} eliminó el recurso {resource}.",
"{profile} demoted {member} to an unknown role.": "{profile} degradó a {member} a una función desconocida.",
"{profile} demoted {member} to moderator.": "{profile} degradó a {member} a moderador.",
"{profile} demoted {member} to simple member.": "{profile} degradado {member} a miembro simple.",
"{profile} excluded member {member}.": "{profile} ha excluido al miembbro {member}.",
"{profile} moved the folder {resource} into {new_path}.": "{profile} moviste la carpeta {resource} a {new_path}.",
"{profile} moved the folder {resource} to the root folder.": "{profile} movió la carpeta {resource} a la carpeta raíz.",
"{profile} moved the resource {resource} into {new_path}.": "{profile} movió el recurso {resource} a {new_path}.",
"{profile} moved the resource {resource} to the root folder.": "{profile} movió el recurso {resource} a la carpeta raíz.",
"{profile} posted a comment on the event {event}.": "{profile} publicó un comentario sobre el evento {event}.",
"{profile} promoted {member} to administrator.": "{perfil} ascendió a {miembro} a administrador.",
"{profile} promoted {member} to an unknown role.": "{profile} ascendió a {member} a una función desconocida.",
"{profile} promoted {member} to moderator.": "{profile} ascendió a {member} a moderador.",
"{profile} quit the group.": "{profile} abandona el grupo.",
"{profile} renamed the discussion from {old_discussion} to {discussion}.": "{profile} cambió el nombre de la discusión de {old_discussion} a {discussion}.",
"{profile} renamed the folder from {old_resource_title} to {resource}.": "{profile} cambió el nombre de la carpeta de {old_resource_title} a {resource}.",
"{profile} renamed the resource from {old_resource_title} to {resource}.": "{profile} cambió el nombre del recurso de {old_resource_title} a {resource}.",
"{profile} replied to a comment on the event {event}.": "{profile} respondió a un comentario sobre el evento {event}.",
"{profile} replied to the discussion {discussion}.": "{profile} respondió a la discusión {discussion}.",
"{profile} updated the group {group}.": "{profile} actualizó el grupo {group}.",
"{profile} updated the member {member}.": "{profile} actualizó el miembro {member}.",
"{title} ({count} todos)": "{title} ({count} trabajos pendientes)",
"{username} was invited to {group}": "{username} fue invitado a {group}",
"© The Mobilizon Contributors {date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks": "© The Mobilizon Contributors {date} - Hecho con Elixir, Phoenix, VueJS y con un poco de amor y algunas semanas",

View File

@ -12,6 +12,7 @@
"@{group}": "@{group}",
"@{username}": "@{username}",
"@{username} ({role})": "@{username} ({role})",
"@{username}'s follow request was rejected": "La demande de suivi de @{username} a été rejettée",
"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.": "Un cookie est un petit fichier contenant des informations qui est envoyé à votre ordinateur lorsque vous visitez un site web. Lorsque vous visitez le site à nouveau, le cookie permet à ce site de reconnaître votre navigateur. Les cookies peuvent stocker les préférences des utilisateur·rice·s et d'autres informations. Vous pouvez configurer votre navigateur pour qu'il refuse tous les cookies. Toutefois, cela peut entraîner le non-fonctionnement de certaines fonctions ou de certains services du site web. Le stockage local fonctionne de la même manière mais permet de stocker davantage de données.",
"A federated software": "Un logiciel fédéré",
"A group with this name already exists": "Un groupe avec ce nom existe déjà",
@ -20,7 +21,7 @@
"A place to publish something to the whole world, your community or just your group members.": "Un endroit pour publier quelque chose à l'intention du monde entier, de votre communauté ou simplement des membres de votre groupe.",
"A place to store links to documents or resources of any type.": "Un endroit pour stocker des liens vers des documents ou des ressources de tout type.",
"A practical tool": "Un outil pratique",
"A short tagline for your instance homepage. Defaults to \"Gather ⋅ Organize ⋅ Mobilize\"": "Un court slogan pour la page d'accueil de votre instance. La valeur par défaut est « Rassembler ⋅ Organiser ⋅ Mobiliser »",
"A short tagline for your instance homepage. Defaults to \"Gather ⋅ Organize ⋅ Mobilize\"": "Un court slogan pour la page d'accueil de votre instance. La valeur par défaut est « Rassembler ⋅ Organiser ⋅ Mobiliser »",
"A user-friendly, emancipatory and ethical tool for gathering, organising, and mobilising.": "Un outil convivial, émancipateur et éthique pour se rassembler, s'organiser et se mobiliser.",
"A validation email was sent to {email}": "Un email de validation a été envoyé à {email}",
"API": "API",
@ -39,6 +40,7 @@
"Actions": "Actions",
"Activated": "Activé",
"Active": "Actif·ive",
"Activity": "Activité",
"Actor": "Acteur",
"Add": "Ajouter",
"Add / Remove…": "Ajouter / Supprimer…",
@ -56,16 +58,17 @@
"Admin settings successfully saved.": "Les paramètres administrateur ont bien été sauvegardés.",
"Administration": "Administration",
"Administrator": "Administrateur·rice",
"All good, let's continue!": "C'est tout bon, continuons !",
"All good, let's continue!": "C'est tout bon, continuons !",
"All group members and other eventual server admins will still be able to view this information.": "Tous les membres du groupes et les administrateur·rice·s d'éventuels autres serveurs seront toujours en capacité de voir cette information.",
"All the places have already been taken": "Toutes les places ont été prises|Une place est encore disponible|{places} places sont encore disponibles",
"All the places have already been taken": "Toutes les places ont déjà été prises",
"Allow all comments": "Autoriser tous les commentaires",
"Allow all comments from users with accounts": "Autoriser tous les commentaires d'utilisateur·rice·s avec des comptes",
"Allow registrations": "Autoriser les inscriptions",
"An error has occured. Sorry about that. You may try to reload the page.": "Une erreur est survenue. Nous en sommes désolé⋅es. Vous pouvez essayer de rafraîchir la page.",
"An error has occurred.": "Une erreur est survenue.",
"An ethical alternative": "Une alternative éthique",
"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.": "Une instance est une version du logiciel Mobilizon fonctionnant sur un serveur. Une instance peut être gérée par n'importe qui avec le {mobilizon_software} ou d'autres applications fédérées, correspondant au « fediverse ». Cette instance se nomme {instance_name}. Mobilizon est un réseau fédéré de multiples instances (tout comme des serveurs email), des utilisateur·rice·s inscrites sur différentes instances peuvent communiquer bien qu'il·elle·s ne se soient pas enregistré·e·s sur la même instance.",
"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.": "Une « interface de programmation d'application » ou « API » est un protocole de communication qui permet à des composants logiciels de communiquer entre eux. L'API de Mobilizon, par exemple, peut permettre à des outils logiciels tiers de communiquer avec des instances de Mobilizon pour effectuer certaines actions, comme la publication d'événements en votre nom, automatiquement et à distance.",
"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.": "Une instance est une version du logiciel Mobilizon fonctionnant sur un serveur. Une instance peut être gérée par n'importe qui avec le {mobilizon_software} ou d'autres applications fédérées, correspondant au « fediverse ». Cette instance se nomme {instance_name}. Mobilizon est un réseau fédéré de multiples instances (tout comme des serveurs email), des utilisateur·rice·s inscrites sur différentes instances peuvent communiquer bien qu'il·elle·s ne se soient pas enregistré·e·s sur la même instance.",
"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.": "Une « interface de programmation d'application » ou « API » est un protocole de communication qui permet à des composants logiciels de communiquer entre eux. L'API de Mobilizon, par exemple, peut permettre à des outils logiciels tiers de communiquer avec des instances de Mobilizon pour effectuer certaines actions, comme la publication d'événements en votre nom, automatiquement et à distance.",
"And {number} comments": "Et {number} commentaires",
"Anonymous participant": "Participant⋅e anonyme",
"Anonymous participants will be asked to confirm their participation through e-mail.": "Les participants anonymes devront confirmer leur participation par email.",
@ -76,17 +79,18 @@
"Application": "Application",
"Approve": "Approuver",
"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.": "Êtes-vous vraiment certain⋅e de vouloir supprimer votre compte ? Vous allez tout perdre. Identités, paramètres, événements créés, messages et participations disparaîtront pour toujours.",
"Are you sure you want to <b>completely delete</b> this group? All members - including remote ones - will be notified and removed from the group, and <b>all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed</b>.": "Êtes-vous certain·e de vouloir <b>complètement supprimer</b> ce groupe ? Tous les membres - y compris ceux·elles sur d'autres instances - seront notifié·e·s et supprimé·e·s du groupe, et <b>toutes les données associées au groupe (événements, billets, discussions, todos…) seront irrémédiablement détruites</b>.",
"Are you sure you want to <b>completely delete</b> this group? All members - including remote ones - will be notified and removed from the group, and <b>all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed</b>.": "Êtes-vous certain·e de vouloir <b>complètement supprimer</b> ce groupe ? Tous les membres - y compris ceux·elles sur d'autres instances - seront notifié·e·s et supprimé·e·s du groupe, et <b>toutes les données associées au groupe (événements, billets, discussions, todos…) seront irrémédiablement détruites</b>.",
"Are you sure you want to <b>delete</b> this comment? This action cannot be undone.": "Êtes-vous certain⋅e de vouloir <b>supprimer</b> ce commentaire ? Cette action ne peut pas être annulée.",
"Are you sure you want to <b>delete</b> this event? This action cannot be undone. You may want to engage the discussion with the event creator or edit its event instead.": "Êtes-vous certain⋅e de vouloir <b>supprimer</b> cet événement ? Cette action n'est pas réversible. Vous voulez peut-être engager la discussion avec le créateur de l'événement ou bien modifier son événement à la place.",
"Are you sure you want to <b>suspend</b> this group? All members - including remote ones - will be notified and removed from the group, and <b>all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed</b>.": "Êtes-vous certain·e de vouloir <b>suspendre</b> ce groupe ? Tous les membres - y compris ceux·elles sur d'autres instances - seront notifié·e·s et supprimé·e·s du groupe, et <b>toutes les données associées au groupe (événements, billets, discussions, todos…) seront irrémédiablement détruites</b>.",
"Are you sure you want to <b>suspend</b> 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.": "Êtes-vous certain·e de vouloir <b>suspendre</b> ce groupe ? Comme ce groupe provient de l'instance {instance}, cela supprimera seulement les membres locaux et supprimera les données locales, et rejettera également toutes les données futures.",
"Are you sure you want to <b>suspend</b> this group? All members - including remote ones - will be notified and removed from the group, and <b>all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed</b>.": "Êtes-vous certain·e de vouloir <b>suspendre</b> ce groupe ? Tous les membres - y compris ceux·elles sur d'autres instances - seront notifié·e·s et supprimé·e·s du groupe, et <b>toutes les données associées au groupe (événements, billets, discussions, todos…) seront irrémédiablement détruites</b>.",
"Are you sure you want to <b>suspend</b> 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.": "Êtes-vous certain·e de vouloir <b>suspendre</b> ce groupe ? Comme ce groupe provient de l'instance {instance}, cela supprimera seulement les membres locaux et supprimera les données locales, et rejettera également toutes les données futures.",
"Are you sure you want to cancel the event creation? You'll lose all modifications.": "Étes-vous certain⋅e de vouloir annuler la création de l'événement ? Vous allez perdre toutes vos modifications.",
"Are you sure you want to cancel the event edition? You'll lose all modifications.": "Êtes-vous certain⋅e de vouloir annuler la modification de l'événement ? Vous allez perdre toutes vos modifications.",
"Are you sure you want to cancel your participation at event \"{title}\"?": "Êtes-vous certain⋅e de vouloir annuler votre participation à l'événement « {title} » ?",
"Are you sure you want to delete this event? This action cannot be reverted.": "Êtes-vous certain⋅e de vouloir supprimer cet événement ? Cette action ne peut être annulée.",
"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.": "L'organisateur de l'événement ayant choisi de valider manuellement les demandes de participation, votre participation ne sera réellement confirmée que lorsque vous recevrez un courriel indiquant qu'elle est acceptée.",
"Assigned to": "Assigné à",
"Atom feed for events and posts": "Flux Atom pour les événements et les billets",
"Avatar": "Avatar",
"Back to previous page": "Retour à la page précédente",
"Banner": "Bannière",
@ -115,6 +119,7 @@
"Change my password": "Modifier mon mot de passe",
"Change timezone": "Changer de fuseau horaire",
"Check your inbox (and your junk mail folder).": "Vérifiez votre boîte de réception (et votre dossier des indésirables).",
"City or region": "Ville ou région",
"Clear": "Effacer",
"Clear participation data for all events": "Effacer mes données de participation pour tous les événements",
"Clear participation data for this event": "Effacer mes données de participation pour cet événement",
@ -123,6 +128,7 @@
"Click to upload": "Cliquez pour téléverser",
"Close": "Fermé",
"Close comments for all (except for admins)": "Fermer les commentaires à tout le monde (excepté les administrateur⋅rice·s)",
"Close events": "Événements proches",
"Closed": "Fermé",
"Comment deleted": "Commentaire supprimé",
"Comment from @{username} reported": "Commentaire de @{username} signalé",
@ -136,10 +142,11 @@
"Confirmed": "Confirmé·e",
"Confirmed at": "Confirmé·e à",
"Confirmed: Will happen": "Confirmé : aura lieu",
"Congratulations, your account is now created!": "Bravo, votre compte est dorénavant créé !",
"Congratulations, your account is now created!": "Bravo, votre compte est dorénavant créé !",
"Contact": "Contact",
"Continue editing": "Continuer la modification",
"Cookies and Local storage": "Cookies et stockage local",
"Copy details to clipboard": "Copier les détails dans le presse-papiers",
"Country": "Pays",
"Create": "Créer",
"Create a calc": "Créer un calc",
@ -203,7 +210,7 @@
"Demote": "Rétrograder",
"Description": "Description",
"Didn't receive the instructions ?": "Vous n'avez pas reçu les instructions ?",
"Didn't receive the instructions?": "Vous n'avez pas reçu les instructions ?",
"Didn't receive the instructions?": "Vous n'avez pas reçu les instructions ?",
"Disabled": "Désactivé",
"Discussions": "Discussions",
"Display name": "Nom affiché",
@ -211,8 +218,8 @@
"Displayed nickname": "Pseudonyme affiché",
"Displayed on homepage and meta tags. Describe what Mobilizon is and what makes this instance special in a single paragraph.": "Affichée sur la page d'accueil et dans les balises meta. Décrivez ce qu'est Mobilizon et ce qui rend spécifique cette instance en un seul paragraphe.",
"Do not receive any mail": "Ne pas recevoir d'e-mail",
"Do you wish to {create_event} or {explore_events}?": "Voulez-vous {create_event} ou {explore_events} ?",
"Do you wish to {create_group} or {explore_groups}?": "Voulez-vous {create_group} ou {explore_groups} ?",
"Do you wish to {create_event} or {explore_events}?": "Voulez-vous {create_event} ou {explore_events} ?",
"Do you wish to {create_group} or {explore_groups}?": "Voulez-vous {create_group} ou {explore_groups} ?",
"Domain": "Domaine",
"Don't show @{organizer} as event host alongside @{group}": "Ne pas afficher @{organizer} comme organisateur⋅ice de l'événement avec @{group}",
"Draft": "Brouillon",
@ -237,6 +244,9 @@
"Enter your own privacy policy. HTML tags allowed. The {mobilizon_privacy_policy} is provided as template.": "Entrez votre propre politique de confidentialité. Les balises HTML sont autorisées. La {mobilizon_privacy_policy} est fournie comme modèle.",
"Enter your own terms. HTML tags allowed. The {mobilizon_terms} are provided as template.": "Entrez vos propres conditions d'utilisation. Les balises HTML sont autorisées. Les {mobilizon_terms} sont fournies comme modèle.",
"Error": "Erreur",
"Error details copied!": "Détails de l'erreur copiés !",
"Error message": "Message d'erreur",
"Error stacktrace": "Trace d'appels de l'erreur",
"Error while changing email": "Erreur lors de la modification de l'adresse email",
"Error while communicating with the server.": "Erreur de communication avec le serveur.",
"Error while login with {provider}. Retry or login another way.": "Erreur lors de la connexion avec {provider}. Réessayez ou bien connectez vous autrement.",
@ -261,7 +271,7 @@
"Events tagged with {tag}": "Événements taggés avec {tag}",
"Everything": "Tous",
"Ex: mobilizon.fr": "Ex : mobilizon.fr",
"Ex: someone@mobilizon.org": "Ex : une_personne@mobilizon.org",
"Ex: someone@mobilizon.org": "Ex : une_personne@mobilizon.org",
"Exclude": "Exclure",
"Explore": "Explorer",
"Explore events": "Explorer les événements",
@ -274,12 +284,14 @@
"Find an address": "Trouver une adresse",
"Find an instance": "Trouver une instance",
"Find another instance": "Trouver une autre instance",
"Follower": "Abonné⋅es",
"Followers": "Abonné⋅es",
"Followers will receive new public events and posts.": "Les abonnée⋅s recevront les nouveaux événements et billets publics.",
"Followings": "Abonnements",
"For instance: London": "Par exemple : Lyon",
"For instance: London": "Par exemple : Lyon",
"For instance: London, Taekwondo, Architecture…": "Par exemple : Lyon, Taekwondo, Architecture…",
"Forgot your password ?": "Mot de passe oublié ?",
"Forgot your password?": "Mot de passe oublié ?",
"Forgot your password?": "Mot de passe oublié ?",
"From a birthday party with friends and family to a march for climate change, right now, our gatherings are <b>trapped inside the tech giants platforms</b>. How can we organize, how can we click “Attend,” without <b>providing private data</b> to Facebook or <b>locking ourselves</b> inside MeetUp?": "De lanniversaire entre ami·e·s à une marche pour le climat, aujourdhui, les bonnes raisons de se rassembler sont <b>captées par les géants du web</b>. Comment sorganiser, comment cliquer sur «je participe» sans <b>livrer des données intimes</b> à Facebook ou<b> senfermer</b> dans MeetUp?",
"From the {startDate} at {startTime} to the {endDate}": "Du {startDate} à {startTime} jusqu'au {endDate}",
"From the {startDate} at {startTime} to the {endDate} at {endTime}": "Du {startDate} à {startTime} au {endDate} à {endTime}",
@ -294,6 +306,7 @@
"Go to the event page": "Aller à la page de l'événement",
"Going as {name}": "En tant que {name}",
"Group": "Groupe",
"Group Followers": "Abonné⋅es au groupe",
"Group List": "Liste de groupes",
"Group Members": "Membres du groupe",
"Group address": "Adresse du groupe",
@ -322,6 +335,8 @@
"I participate": "Je participe",
"I want to allow people to participate without an account.": "Je veux permettre aux gens de participer sans avoir un compte.",
"I want to approve every participation request": "Je veux approuver chaque demande de participation",
"ICS feed for events": "Flux ICS pour les événements",
"ICS/WebCal Feed": "Flux ICS/WebCal",
"Identity {displayName} created": "Identité {displayName} créée",
"Identity {displayName} deleted": "Identité {displayName} supprimée",
"Identity {displayName} updated": "Identité {displayName} mise à jour",
@ -329,7 +344,7 @@
"If an account with this email exists, we just sent another confirmation email to {email}": "Si un compte avec un tel email existe, nous venons juste d'envoyer un nouvel email de confirmation à {email}",
"If the direction given by the development team does not suit you, you have the legal right to create your own version of the software, with your own governance choices.": "Si la direction donnée par léquipe de développement ne vous convient pas, vous avez légalement le droit de créer votre version du logiciel avec vos propres choix de gouvernance.",
"If this identity is the only administrator of some groups, you need to delete them before being able to delete this identity.": "Si cette identité est la seule administratrice de certains groupes, vous devez les supprimer avant de pouvoir supprimer cette identité.",
"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:": "Si l'on vous demande votre identité fédérée, elle est composée de votre nom d'utilisateur·ice et de votre instance. Par exemple, l'identité fédérée de votre premier profil est :",
"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:": "Si l'on vous demande votre identité fédérée, elle est composée de votre nom d'utilisateur·ice et de votre instance. Par exemple, l'identité fédérée de votre premier profil est :",
"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.": "Si vous avez opté pour la validation manuelle des participantes, Mobilizon vous enverra un email pour vous informer des nouvelles participations à traiter. Vous pouvez choisir la fréquence de ces notifications ci-dessous.",
"If you want, you may send a message to the event organizer here.": "Si vous le désirez, vous pouvez laisser un message pour l'organisateur⋅ice de l'événement ci-dessous.",
"Impossible to login, your email or password seems incorrect.": "Impossible de se connecter, votre email ou bien votre mot de passe semble incorrect.",
@ -368,6 +383,7 @@
"Last IP adress": "Dernière addresse IP",
"Last group created": "Dernier groupe créé",
"Last published event": "Dernier événement publié",
"Last published events": "Derniers événements publiés",
"Last sign-in": "Dernière connexion",
"Last week": "La semaine dernière",
"Latest posts": "Derniers billets",
@ -386,6 +402,7 @@
"Limited number of places": "Nombre de places limité",
"List title": "Titre de la liste",
"Load more": "Voir plus",
"Load more activities": "Charger plus d'activités",
"Loading comments…": "Chargement des commentaires…",
"Local": "Local·e",
"Locality": "Commune",
@ -400,6 +417,7 @@
"Manage my notifications": "Gérer mes notifications",
"Manage my settings": "Gérer mes paramètres",
"Manage participations": "Gérer les participations",
"Manually approve new followers": "Approuver les nouvelles demandes de suivi manuellement",
"Manually invite new members": "Inviter des nouveaux·elles membres manuellement",
"Mark as resolved": "Marquer comme résolu",
"Member": "Membre",
@ -422,13 +440,13 @@
"Moderation log": "Journaux de modération",
"Moderator": "Moderateur·ice",
"Move": "Déplacer",
"Move \"{resourceName}\"": "Déplacer « {resourceName} »",
"Move \"{resourceName}\"": "Déplacer « {resourceName} »",
"Move resource to {folder}": "Déplacer la ressource dans {folder}",
"My account": "Mon compte",
"My events": "Mes événements",
"My groups": "Mes groupes",
"My identities": "Mes identités",
"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.": "REMARQUE : les conditions par défaut n'ont pas été vérifiées par un·e juriste et sont donc susceptibles de ne pas offrir une protection juridique complète dans toutes les situations pour un·e administrateur·rice d'instance qui les utilise. Elles ne sont pas non plus spécifiques à tous les pays et juridictions. Si vous n'êtes pas sûr·e, veuillez consulter un·e juriste.",
"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.": "REMARQUE : les conditions par défaut n'ont pas été vérifiées par un·e juriste et sont donc susceptibles de ne pas offrir une protection juridique complète dans toutes les situations pour un·e administrateur·rice d'instance qui les utilise. Elles ne sont pas non plus spécifiques à tous les pays et juridictions. Si vous n'êtes pas sûr·e, veuillez consulter un·e juriste.",
"Name": "Nom",
"New discussion": "Nouvelle discussion",
"New email": "Nouvelle adresse e-mail",
@ -449,6 +467,7 @@
"No discussions yet": "Pas encore de discussions",
"No end date": "Pas de date de fin",
"No events found": "Aucun événement trouvé",
"No follower matches the filters": "Aucun⋅e abonné⋅e ne correspond aux filtres",
"No group found": "Aucun groupe trouvé",
"No groups found": "Aucun groupe trouvé",
"No instance follows your instance yet.": "Aucune instance ne suit votre instance pour le moment.",
@ -459,6 +478,7 @@
"No member matches the filters": "Aucun·e membre ne correspond aux filtres",
"No message": "Pas de message",
"No moderation logs yet": "Pas encore de journaux de modération",
"No more activity to display.": "Il n'y a plus d'activités à afficher.",
"No one is going to this event": "Personne n'y va|Une personne y va|{going} personnes y vont",
"No ongoing todos": "Pas de todos en cours",
"No open reports yet": "Aucun signalement ouvert pour le moment",
@ -486,7 +506,7 @@
"Notification before the event": "Notification avant l'événement",
"Notification on the day of the event": "Notification le jour de l'événement",
"Notifications for manually approved participations to an event": "Notifications pour l'approbation manuelle des participations à un événement",
"Now, create your first profile:": "Maintenant, créez votre premier profil :",
"Now, create your first profile:": "Maintenant, créez votre premier profil :",
"Number of places": "Nombre de places",
"OK": "OK",
"Old password": "Ancien mot de passe",
@ -494,6 +514,7 @@
"On {date} ending at {endTime}": "Le {date}, se terminant à {endTime}",
"On {date} from {startTime} to {endTime}": "Le {date} de {startTime} à {endTime}",
"On {date} starting at {startTime}": "Le {date} à partir de {startTime}",
"On {instance}": "Sur {instance}",
"Ongoing tasks": "Tâches en cours",
"Only accessible through link": "Accessible uniquement par le lien",
"Only accessible through link (private)": "Uniquement accessible par lien (privé)",
@ -502,6 +523,8 @@
"Only group members can access discussions": "Seul⋅es les membres du groupes peuvent accéder aux discussions",
"Only group moderators can create, edit and delete posts.": "Seul·e·s les modérateur·rice·s du groupe peuvent créer, éditer et supprimer des billets.",
"Open": "Ouvert",
"Open a topic on our forum": "Ouvrir un sujet sur notre forum",
"Open an issue on our bug tracker (advanced users)": "Ouvrir un ticket sur notre système de suivi des bugs (utilisateur⋅ices avancé⋅es)",
"Opened reports": "Signalements ouverts",
"Or": "Ou",
"Organize and take action, freely": "S'organiser et agir, librement",
@ -512,7 +535,7 @@
"Organizer notifications": "Notifications pour organisateur·rice",
"Organizers": "Organisateur⋅ices",
"Other": "Autre",
"Other notification options:": "Autres options de notification :",
"Other notification options:": "Autres options de notification :",
"Other software may also support this.": "D'autres logiciels peuvent également supporter cette fonctionnalité.",
"Otherwise this identity will just be removed from the group administrators.": "Sinon cette identité sera juste supprimée des administrateur⋅rice·s du groupe.",
"Page": "Page",
@ -540,6 +563,7 @@
"Pick a profile or a group": "Choisir un profil ou groupe",
"Pick an identity": "Choisissez une identité",
"Pick an instance": "Choisir une instance",
"Please add as many details as possible to help identify the problem.": "Merci d'ajouter un maximum de détails afin d'aider à identifier le problème.",
"Please check your spam folder if you didn't receive the email.": "Merci de vérifier votre dossier des indésirables si vous n'avez pas reçu l'email.",
"Please contact this instance's Mobilizon admin if you think this is a mistake.": "Veuillez contacter l'administrateur⋅rice de cette instance Mobilizon si vous pensez quil sagit dune erreur.",
"Please do not use it in any real way.": "Merci de ne pas en faire une utilisation réelle.",
@ -584,7 +608,7 @@
"Refresh profile": "Rafraîchir le profil",
"Region": "Région",
"Register": "S'inscrire",
"Register an account on {instanceName}!": "S'inscrire sur {instanceName} !",
"Register an account on {instanceName}!": "S'inscrire sur {instanceName} !",
"Register for an event by choosing one of your identities": "S'inscrire à un évènement en choisissant une de vos identités",
"Register on this instance": "S'inscrire sur cette instance",
"Registration is allowed, anyone can register.": "Les inscriptions sont autorisées, n'importe qui peut s'inscrire.",
@ -633,6 +657,7 @@
"Searching…": "Recherche en cours…",
"Search…": "Rechercher…",
"Select a language": "Choisissez une langue",
"Select a radius": "Sélectionnez un rayon",
"Select a timezone": "Selectionnez un fuseau horaire",
"Select languages": "Choisissez une langue",
"Send email": "Envoyer un email",
@ -651,7 +676,7 @@
"Sign up": "S'enregistrer",
"Since you are a new member, private content can take a few minutes to appear.": "Étant donné que vous êtes un·e nouveau·elle membre, le contenu privé peut mettre quelques minutes à arriver.",
"Software to the people": "Des logiciels pour les gens",
"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:": "Certains termes, techniques ou non, utilisés dans le texte ci-dessous peuvent recouvrir des concepts difficiles à appréhender. Nous proposons ici un glossaire qui pourra vous aider à mieux les comprendre :",
"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:": "Certains termes, techniques ou non, utilisés dans le texte ci-dessous peuvent recouvrir des concepts difficiles à appréhender. Nous proposons ici un glossaire qui pourra vous aider à mieux les comprendre :",
"Starts on…": "Débute le…",
"Status": "Statut",
"Statut": "Statut",
@ -661,6 +686,7 @@
"Suspend group": "Suspendre le groupe",
"Suspended": "Suspendu·e",
"Task lists": "Listes de tâches",
"Technical details": "Détails techniques",
"Tentative": "Provisoire",
"Tentative: Will be confirmed later": "Provisoire : sera confirmé plus tard",
"Terms": "Conditions d'utilisation",
@ -683,8 +709,17 @@
"The event will show as attributed to this group.": "L'événement sera affiché comme étant attribué à ce groupe.",
"The event will show as attributed to your personal profile.": "L'événement sera affiché comme étant attribué à votre profil.",
"The event will show the group as organizer.": "L'événement affichera le groupe en tant qu'organisateur⋅ice.",
"The event {event} was created by {profile}.": "L'événement {event} a été créé par {profile}.",
"The event {event} was deleted by {profile}.": "L'événement {event} a été supprimé par {profile}.",
"The event {event} was updated by {profile}.": "L'événement {event} à été mis à jour par {profile}.",
"The events you created are not shown here.": "Les événements que vous avez créé ne s'affichent pas ici.",
"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.": "Le groupe sera listé publiquement dans les résultats de recherche et pourra être suggéré sur la page « Explorer ». Seules les informations publiques seront affichées sur sa page.",
"The group can now be joined by anyone.": "Le groupe peut maintenant être rejoint par n'importe qui.",
"The group can now only be joined with an invite.": "Le groupe peut maintenant être rejoint uniquement sur invitation.",
"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.": "Le groupe sera listé publiquement dans les résultats de recherche et pourra être suggéré sur la page « Explorer ». Seules les informations publiques seront affichées sur sa page.",
"The group's avatar was changed.": "L'avatar du groupe a été changé.",
"The group's banner was changed.": "La bannière du groupe a été changée.",
"The group's physical address was changed.": "L'adresse physique du groupe a été changée.",
"The group's short description was changed.": "La description courte du groupe a été changée.",
"The instance administrator is the person or entity that runs this Mobilizon instance.": "L'administrateur·rice de l'instance est la personne ou entité qui gère cette instance Mobilizon.",
"The member was removed from the group {group}": "Le ou la membre a été supprimé·e du groupe {group}",
"The new email doesn't seem to be valid": "La nouvelle adresse email ne semble pas être valide",
@ -695,12 +730,17 @@
"The page you're looking for doesn't exist.": "La page que vous recherchez n'existe pas.",
"The password provided is invalid": "Le mot de passe fourni est invalide",
"The password was successfully changed": "Le mot de passe a été changé avec succès",
"The post {post} was created by {profile}.": "Le billet {post} a été créé par {profile}.",
"The post {post} was deleted by {profile}.": "Le billet {post} a été supprimé par {profile}.",
"The post {post} was updated by {profile}.": "Le billet {post} a été mis à jour par {profile}.",
"The report will be sent to the moderators of your instance. You can explain why you report this content below.": "Le signalement sera envoyé aux modérateur⋅ices de votre instance. Vous pouvez expliquer pourquoi vous signalez ce contenu ci-dessous.",
"The technical details of the error can help developers solve the problem more easily. Please add them to your feedback.": "Les détails techniques de l'erreur peuvent aider les développeur⋅ices à résoudre le problème plus facilement. Merci de les inclure dans vos retours.",
"The user account you're trying to login as has not been confirmed yet. Check your email inbox and eventually your spam folder.": "Le compte utilisateur avec lequel vous essayez de vous connectez n'a pas été confirmé. Vérifiez la boite de réception de votre adresse email et éventuellement le dossier des messages indésirables.",
"The username is a unique identifier of your account on this and all the other instances. It's as unique as an email address, which makes it easy for other people to interact with it.": "Le nom d'utilisateur·rice est un identifiant unique pour votre compte. Il est similaire à une adresse e-mail mais permettant à d'autres personnes de vous trouver.",
"The {default_privacy_policy} will be used. They will be translated in the user's language.": "La {default_privacy_policy} sera utilisée. Elle sera traduite dans la langue de l'utilisateur·rice.",
"The {default_terms} will be used. They will be translated in the user's language.": "Les {default_terms} seront utilisées. Elles seront traduites dans la langue de l'utilisateur⋅rice.",
"There are {participants} participants.": "Il n'y a qu'un⋅e participant⋅e. | Il y a {participants} participant⋅es.",
"There is no activity yet. Start doing some things to see activity appear here.": "Il n'y a pas encore d'activité. Commencez par effectuer des actions pour voir des éléments s'afficher ici.",
"There will be no way to recover your data.": "Il n'y aura aucun moyen de récupérer vos données.",
"There's no discussions yet": "Il n'y a pas encore de discussions",
"These events may interest you": "Ces événements peuvent vous intéresser",
@ -733,7 +773,7 @@
"To achieve your registration, please create a first identity profile.": "Pour finir votre inscription, veuillez créer un premier profil.",
"To activate more notifications, head over to the notification settings.": "Pour activer plus de notifications, rendez-vous dans vos paramètres de notification.",
"To change the world, change the software": "Changer de logiciel pour changer le monde",
"To confirm, type your event title \"{eventTitle}\"": "Pour confirmer, entrez le titre de l'événement « {eventTitle} »",
"To confirm, type your event title \"{eventTitle}\"": "Pour confirmer, entrez le titre de l'événement « {eventTitle} »",
"To confirm, type your identity username \"{preferredUsername}\"": "Pour confirmer, entrez le nom de lidentité « {preferredUsername} »",
"To create and manage multiples identities from a same account": "Pour pouvoir créer et gérer plusieurs identités avec un même compte",
"To create and manage your events": "Pour créer et gérer vos événements",
@ -746,14 +786,16 @@
"Type or select a date…": "Entrez ou sélectionnez une date…",
"URL": "URL",
"URL copied to clipboard": "URL copiée dans le presse-papiers",
"Unable to copy to clipboard": "Impossible de copier dans le presse-papiers",
"Unable to detect timezone.": "Impossible de détecter le fuseau horaire.",
"Unable to load event for participation. The error details are provided below:": "Impossible de charger l'événement pour la participation. Les détails de l'erreur sont disponibles ci-dessous :",
"Unable to load event for participation. The error details are provided below:": "Impossible de charger l'événement pour la participation. Les détails de l'erreur sont disponibles ci-dessous :",
"Unable to save your participation in this browser.": "Échec de la sauvegarde de votre participation dans ce navigateur.",
"Unfortunately, this instance isn't opened to registrations": "Malheureusement, cette instance n'est pas ouverte aux inscriptions",
"Unfortunately, your participation request was rejected by the organizers.": "Malheureusement, votre demande de participation a été refusée par les organisateur⋅ices.",
"Unknown": "Inconnu",
"Unknown actor": "Acteur inconnu",
"Unknown error.": "Erreur inconnue.",
"Unknown value for the openness setting.": "Valeur inconnue pour le paramètre d'ouverture.",
"Unsaved changes": "Modifications non enregistrées",
"Unset group": "Déselectionner le groupe",
"Unsuspend": "Annuler la suspension",
@ -778,6 +820,9 @@
"View event page": "Voir la page de l'événement",
"View everything": "Voir tout",
"View page on {hostname} (in a new window)": "Voir la page sur {hostname} (dans une nouvelle fenêtre)",
"Visibility was set to an unknown value.": "La visibilité a été définie à une valeur inconnue.",
"Visibility was set to private.": "La visibilité a été définie à privée.",
"Visibility was set to public.": "La visibilité a été définie à public.",
"Visible everywhere on the web": "Visible partout sur le web",
"Visible everywhere on the web (public)": "Visible partout sur le web (public)",
"Visit event page": "Voir la page de l'événement",
@ -785,6 +830,7 @@
"Warning": "Attention",
"We asked professional designers to help us develop our vision for Mobilizon. We took time to study the {digital_habits} in order to understand the features they need to gather, organize, and mobilize so that right from its conception, Mobilizon would {fit_needs_uses_people} who are going to use it.": "Nous avons demandé de laide à des professionnel·les du design pour concevoir ce que pourrait être Mobilizon. Nous avons pris le temps détudier {digital_habits} afin de comprendre les fonctionnalités dont ils et elles ont besoin pour se rassembler, sorganiser, se mobiliser afin que Mobilizon corresponde, dès sa conception, {fit_needs_uses_people} des personnes qui sont vouées à lutiliser.",
"We cant change the world from within Facebook. The tool we dream of, surveillance capitalism corporations wont develop, as they cannot profit from it. This is an opportunity to build something better, by taking another approach.": "On ne peut pas changer le monde depuis Facebook. Loutil dont nous rêvons, les entreprises du capitalisme de surveillance ne le produiront pas, car elles ne peuvent pas en tirer profit. Cest loccasion de faire mieux quelles, en faisant autrement.",
"We improve this software thanks to your feedback. To let us know about this issue, two possibilities (both unfortunately require user account creation):": "Nous améliorons ce logiciel grâce à vos retours. Pour nous avertir de ce problème, vous avez deux possibilités (les deux requièrent toutefois la création d'un compte) :",
"We just sent an email to {email}": "Nous venons d'envoyer un email à {email}",
"We use your timezone to make sure you get notifications for an event at the correct time.": "Nous utilisons votre fuseau horaire pour nous assurer que vous recevez les notifications pour un événement au bon moment.",
"We want to develop a <b>digital common</b> that everyone can make their own, one which respects <b>privacy and activism by design</b>.": "Nous voulons développer un <b>commun numérique</b>, que tout le monde pourra sapproprier, conçu dans <b>le respect de la vie privée et de laction militante</b>.",
@ -797,15 +843,21 @@
"Welcome back {username}!": "Bon retour {username} !",
"Welcome back!": "Ravi de vous revoir !",
"Welcome to Mobilizon, {username}!": "Bienvenue sur Mobilizon, {username} !",
"What can I do to help?": "Que puis-je faire pour aider ?",
"When a moderator from the group creates an event and attributes it to the group, it will show up here.": "Lorsqu'un·e modérateur·rice du groupe crée un événement et l'attribue au groupe, il s'affichera ici.",
"When someone from the group creates an event and attributes it to the group, it will show up here.": "Lorsqu'un membre du groupe crée un événement et l'attribue au groupe, il s'affichera ici.",
"Who can view this event and participate": "Qui peut voir cet événement et y participer",
"Who can view this post": "Qui peut voir ce billet",
"Who published {number} events": "Ayant publié {number} événements",
"Why create an account?": "Pourquoi se créer un compte ?",
"Why create an account?": "Pourquoi se créer un compte ?",
"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.": "Permet d'afficher et de gérer le statut de votre participation sur la page de l'événement lorsque vous utilisez cet appareil. Décochez si vous utilisez un appareil public.",
"Within {number} kilometers of {place}": "|Dans un rayon d'un kilomètre de {place}|Dans un rayon de {number} kilomètres de {place}",
"World map": "Carte mondiale",
"Write something…": "Écrivez quelque chose…",
"Yesterday": "Hier",
"You accepted the invitation to join the group.": "Vous avez accepté l'invitation à vous joindre au groupe.",
"You added the member {member}.": "Vous avez ajouté le ou la membre {member}.",
"You archived the discussion {discussion}.": "Vous avez archivé la discussion {discussion}.",
"You are already a participant of this event.": "Vous participez déjà à cet évènement.",
"You are not an administrator for this group.": "Vous n'êtes pas une administrateur·rice de ce groupe.",
"You are not part of any group.": "Vous ne faites partie d'aucun groupe.",
@ -818,20 +870,58 @@
"You can't change your password because you are registered through {provider}.": "Vous ne pouvez pas changer votre mot de passe car vous vous êtes enregistré via {provider}.",
"You can't remove your last identity.": "Vous ne pouvez pas supprimer votre dernière identité.",
"You can't reset your password because you use a 3rd-party auth provider to login.": "Vous ne pouvez pas réinitialiser votre mot de passe car vous vous connectez via une méthode externe.",
"You created the discussion {discussion}.": "Vous avez créé la discussion {discussion}.",
"You created the event {event}.": "Vous avez créé l'événement {event}.",
"You created the folder {resource}.": "Vous avez créé le dossier {resource}.",
"You created the group {group}.": "Vous avez créé le groupe {group}.",
"You created the post {post}.": "Vous avez créé le billet {post}.",
"You created the resource {resource}.": "Vous avez créé la ressource {resource}.",
"You deleted the discussion {discussion}.": "Vous avez supprimé la discussion {discussion}.",
"You deleted the event {event}.": "Vous avez supprimé l'événement {event}.",
"You deleted the folder {resource}.": "Vous avez supprimé le dossier {resource}.",
"You deleted the post {post}.": "Vous avez supprimé le billet {post}.",
"You deleted the resource {resource}.": "Vous avez supprimé la ressource {resource}.",
"You demoted the member {member} to an unknown role.": "Vous avez rétrogradé le membre {member} à un role inconnu.",
"You demoted {member} to moderator.": "Vous avez rétrogradé {member} en tant que modérateur⋅ice.",
"You demoted {member} to simple member.": "Vous avez rétrogradé {member} en tant que simple membre.",
"You didn't create or join any event yet.": "Vous n'avez pas encore créé ou rejoint d'événement.",
"You don't follow any instances yet.": "Vous ne suivez aucune instance pour le moment.",
"You excluded member {member}.": "Vous avez exclu le ou la membre {member}.",
"You have been disconnected": "Vous avez été déconnecté⋅e",
"You have been invited by {invitedBy} to the following group:": "Vous avez été invité par {invitedBy} à rejoindre le groupe suivant :",
"You have been invited by {invitedBy} to the following group:": "Vous avez été invité par {invitedBy} à rejoindre le groupe suivant :",
"You have been removed from this group's members.": "Vous avez été exclu des membres de ce groupe.",
"You have cancelled your participation": "Vous avez annulé votre participation",
"You have one event in {days} days.": "Vous n'avez pas d'événements dans {days} jours | Vous avez un événement dans {days} jours. | Vous avez {count} événements dans {days} jours",
"You have one event today.": "Vous n'avez pas d'événement aujourd'hui | Vous avez un événement aujourd'hui. | Vous avez {count} événements aujourd'hui",
"You have one event tomorrow.": "Vous n'avez pas d'événement demain | Vous avez un événement demain. | Vous avez {count} événements demain",
"You invited {member}.": "Vous avez invité {member}.",
"You may also ask to {resend_confirmation_email}.": "Vous pouvez aussi demander à {resend_confirmation_email}.",
"You may clear all participation information for this device with the buttons below.": "Vous pouvez effacer toutes les informations de participation pour cet appareil avec les boutons ci-dessous.",
"You may now close this window, or {return_to_event}.": "Vous pouvez maintenant fermer cette fenêtre, ou bien {return_to_event}.",
"You moved the folder {resource} into {new_path}.": "Vous avez déplacé le dossier {resource} dans {new_path}.",
"You moved the folder {resource} to the root folder.": "Vous avez déplacé le dossier {resource} dans le dossier racine.",
"You moved the resource {resource} into {new_path}.": "Vous avez déplacé la ressource {resource} dans {new_path}.",
"You moved the resource {resource} to the root folder.": "Vous avez déplacé la ressource {resource} dans le dossier racine.",
"You need to create the group before you create an event.": "Vous devez créer le groupe avant de créer l'événement.",
"You need to login.": "Vous devez vous connecter.",
"You promoted the member {member} to an unknown role.": "Vous avez promu le ou la membre {member} à un role inconnu.",
"You promoted {member} to administrator.": "Vous avez promu {member} en tant qu'adminstrateur⋅ice.",
"You promoted {member} to moderator.": "Vous avez promu {member} en tant que modérateur⋅ice.",
"You renamed the discussion from {old_discussion} to {discussion}.": "Vous avez renommé la discussion {old_discussion} en {discussion}.",
"You renamed the folder from {old_resource_title} to {resource}.": "Vous avez renommé le dossier {old_resource_title} en {resource}.",
"You renamed the resource from {old_resource_title} to {resource}.": "Vous avez renommé la ressource {old_resource_title} en {resource}.",
"You replied to the discussion {discussion}.": "Vous avez répondu à la discussion {discussion}.",
"You requested to join the group.": "Vous avez demandé à rejoindre le groupe.",
"You updated the event {event}.": "Vous avez mis à jour l'événement {event}.",
"You updated the group {group}.": "Vous avez mis à jour le groupe {group}.",
"You updated the member {member}.": "Vous avez mis à jour le ou la membre {member}.",
"You updated the post {post}.": "Vous avez mis à jour le billet {post}.",
"You were demoted to an unknown role by {profile}.": "Vous avez été rétrogradé⋅e à un role inconnu par {profile}.",
"You were demoted to moderator by {profile}.": "Vous avez été rétrogradé⋅e modérateur⋅ice par {profile}.",
"You were demoted to simple member by {profile}.": "Vous avez été rétrogradé⋅e simple membre par {profile}.",
"You were promoted to administrator by {profile}.": "Vous avez été promu⋅e administrateur⋅ice par {profile}.",
"You were promoted to an unknown role by {profile}.": "Vous avez été promu⋅e à un role inconnu par {profile}.",
"You were promoted to moderator by {profile}.": "Vous avez été promu⋅e modérateur⋅ice par {profile}.",
"You will be able to add an avatar and set other options in your account settings.": "Vous pourrez ajouter un avatar et définir d'autres options dans les paramètres de votre compte.",
"You will be redirected to the original instance": "Vous allez être redirigé⋅e vers l'instance d'origine",
"You will find here all the events you have created or of which you are a participant.": "Vous trouverez ici tous les événements que vous avez créé ou dont vous êtes un·e participant·e.",
@ -843,6 +933,7 @@
"Your account has been validated": "Votre compte a été validé",
"Your account is being validated": "Votre compte est en cours de validation",
"Your account is nearly ready, {username}": "Votre compte est presque prêt, {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.": "Votre ville ou région et le rayon seront uniquement utilisés pour vous suggérer des événements proches. Le rayon des événements proches sera calculé par rapport au centre administratif de la zone.",
"Your current email is {email}. You use it to log in.": "Votre adresse e-mail actuelle est {email}. Vous l'utilisez pour vous connecter.",
"Your email": "Votre adresse e-mail",
"Your email address was automatically set based on your {provider} account.": "Votre adresse email a été définie automatiquement en se basant sur votre compte {provider}.",
@ -865,7 +956,8 @@
"Your timezone is currently set to {timezone}.": "Votre fuseau horaire est actuellement défini à {timezone}.",
"Your timezone was detected as {timezone}.": "Votre fuseau horaire a été détecté en tant que {timezone}.",
"Your timezone {timezone} isn't supported.": "Votre fuseau horaire {timezone} n'est pas supporté.",
"[This comment has been deleted by it's author]": "[Ce commentaire a été supprimé par son auteur]",
"Your upcoming events": "Vos événements à venir",
"[This comment has been deleted by it's author]": "[Ce commentaire a été supprimé par son auteur⋅rice]",
"[This comment has been deleted]": "[Ce commentaire a été supprimé]",
"[deleted]": "[supprimé]",
"a decentralised federation protocol": "un protocole de fédération décentralisée",
@ -900,12 +992,19 @@
"with another identity…": "avec une autre identité…",
"{approved} / {total} seats": "{approved} / {total} places",
"{available}/{capacity} available places": "Pas de places restantes|{available}/{capacity} places restantes|{available}/{capacity} places restantes",
"{count} km": "{count} km",
"{count} participants": "Aucun⋅e participant⋅e | Un⋅e participant⋅e | {count} participant⋅e⋅s",
"{count} requests waiting": "Une demande en attente|{count} demandes en attente",
"{count} team members": "{count} membres d'équipe",
"{group} activity timeline": "Timeline de l'activité de {group}",
"{group}'s events": "Événements de {group}",
"{instanceName} is an instance of the {mobilizon} software.": "{instanceName} est une instance du logiciel {mobilizon}.",
"{instanceName} is an instance of {mobilizon_link}, a free software built with the community.": "{instanceName} est une instance de {mobilizon_link}, un logiciel libre construit de manière communautaire.",
"{license} guarantees {respect} of the people who use it. Since {source}, anyone can audit it, which guarantees its transparency.": "{license} garantit {respect} des personnes qui l'utiliseront. Puisque {source}, il est publiquement auditable, ce qui garantit sa transparence.",
"{member} accepted the invitation to join the group.": "{member} a accepté l'invitation à se joindre au groupe.",
"{member} rejected the invitation to join the group.": "{member} a refusé l'invitation à se joindre au groupe.",
"{member} requested to join the group.": "{member} a demandé à rejoindre le groupe.",
"{member} was invited by {profile}.": "{member} a été invité⋅e par {profile}.",
"{moderator} added a note on {report}": "{moderator} a ajouté une note sur {report}",
"{moderator} closed {report}": "{moderator} a fermé {report}",
"{moderator} deleted an event named \"{title}\"": "{moderator} a supprimé un événement nommé \"{title}\"",
@ -919,31 +1018,60 @@
"{number} organized events": "Aucun événement organisé|Un événement organisé|{number} événements organisés",
"{number} participations": "Aucune participation|Une participation|{number} participations",
"{number} posts": "Aucun billet|Un billet|{number} billets",
"{old_group_name} was renamed to {group}.": "{old_group_name} a été renommé en {group}.",
"{profile} (by default)": "{profile} (par défault)",
"{profile} added the member {member}.": "{profile} a ajouté le ou la membre {member}.",
"{profile} archived the discussion {discussion}.": "{profile} a archivé la discussion {discussion}.",
"{profile} created the discussion {discussion}.": "{profile} a créé la discussion {discussion}.",
"{profile} created the folder {resource}.": "{profile} a créé le dossier {resource}.",
"{profile} created the group {group}.": "{profile} a créé le groupe {group}.",
"{profile} created the resource {resource}.": "{profile} a créé la ressource {resource}.",
"{profile} deleted the discussion {discussion}.": "{profile} a supprimé la discussion {discussion}.",
"{profile} deleted the folder {resource}.": "{profile} a supprimé le dossier {resource}.",
"{profile} deleted the resource {resource}.": "{profile} a supprimé la ressource {resource}.",
"{profile} demoted {member} to an unknown role.": "{profile} a rétrogradé {member} à un role inconnu.",
"{profile} demoted {member} to moderator.": "{profile} a rétrogradé {member} en tant que modérateur⋅ice.",
"{profile} demoted {member} to simple member.": "{profile} a rétrogradé {member} en tant que simple membre.",
"{profile} excluded member {member}.": "{profile} a exclu le ou la membre {member}.",
"{profile} moved the folder {resource} into {new_path}.": "{profile} a déplacé le dossier {resource} dans {new_path}.",
"{profile} moved the folder {resource} to the root folder.": "{profile} a déplacé le dossier {resource} dans le dossier racine.",
"{profile} moved the resource {resource} into {new_path}.": "{profile} a déplacé la ressource {resource} dans {new_path}.",
"{profile} moved the resource {resource} to the root folder.": "{profile} a déplacé la ressource {resource} dans le dossier racine.",
"{profile} promoted {member} to administrator.": "{profile} a promu {member} en tant qu'administrateur⋅ice.",
"{profile} promoted {member} to an unknown role.": "{profile} a promu {member} à un role inconnu.",
"{profile} promoted {member} to moderator.": "{profile} a promu {member} en tant que modérateur⋅ice.",
"{profile} quit the group.": "{profile} a quitté le groupe.",
"{profile} renamed the discussion from {old_discussion} to {discussion}.": "{profile} a renommé la discussion {old_discussion} en {discussion}.",
"{profile} renamed the folder from {old_resource_title} to {resource}.": "{profile} a renommé le dossier {old_resource_title} en {resource}.",
"{profile} renamed the resource from {old_resource_title} to {resource}.": "{profile} a renommé la ressource {old_resource_title} en {resource}.",
"{profile} replied to the discussion {discussion}.": "{profile} a répondu à la discussion {discussion}.",
"{profile} updated the group {group}.": "{profile} a mis à jour le groupe {group}.",
"{profile} updated the member {member}.": "{profile} a mis à jour le ou la membre {member}.",
"{title} ({count} todos)": "{title} ({count} todos)",
"{username} was invited to {group}": "{username} a été invité à {group}",
"© The OpenStreetMap Contributors": "© Les Contributeur⋅ices OpenStreetMap",
"Atom feed for events and posts": "Flux Atom pour les événements et les billets",
"ICS feed for events": "Flux ICS pour les événements",
"ICS/WebCal Feed": "Flux ICS/WebCal",
"Group Followers": "Abonné⋅es au groupe",
"Follower": "Abonné⋅es",
"No follower matches the filters": "Aucun⋅e abonné⋅e ne correspond aux filtres",
"@{username}'s follow request was rejected": "La demande de suivi de @{username} a été rejettée",
"Followers will receive new public events and posts.": "Les abonnée⋅s recevront les nouveaux événements et billets publics.",
"Manually approve new followers": "Approuver les nouvelles demandes de suivi manuellement",
"An error has occured. Sorry about that. You may try to reload the page.": "Une erreur est survenue. Nous en sommes désolé⋅es. Vous pouvez essayer de rafraîchir la page.",
"What can I do to help?": "Que puis-je faire pour aider ?",
"We improve this software thanks to your feedback. To let us know about this issue, two possibilities (both unfortunately require user account creation):": "Nous améliorons ce logiciel grâce à vos retours. Pour nous avertir de ce problème, vous avez deux possibilités (les deux requièrent toutefois la création d'un compte) :",
"Please add as many details as possible to help identify the problem.": "Merci d'ajouter un maximum de détails afin d'aider à identifier le problème.",
"Technical details": "Détails techniques",
"Error message": "Message d'erreur",
"Error stacktrace": "Trace d'appels de l'erreur",
"The technical details of the error can help developers solve the problem more easily. Please add them to your feedback.": "Les détails techniques de l'erreur peuvent aider les développeur⋅ices à résoudre le problème plus facilement. Merci de les inclure dans vos retours.",
"Error details copied!": "Détails de l'erreur copiés !",
"Copy details to clipboard": "Copier les détails dans le presse-papiers",
"{instanceName} is an instance of {mobilizon_link}, a free software built with the community.": "{instanceName} est une instance de {mobilizon_link}, un logiciel libre construit de manière communautaire.",
"Open a topic on our forum": "Ouvrir un sujet sur notre forum",
"Open an issue on our bug tracker (advanced users)": "Ouvrir un ticket sur notre système de suivi des bugs (utilisateur⋅ices avancé⋅es)",
"Unable to copy to clipboard": "Impossible de copier dans le presse-papiers"
"No information": "Non renseigné",
"@{username}'s follow request was accepted": "@{username}'s follow request was accepted",
"Delete this discussion": "Supprimer cette discussion",
"Are you sure you want to delete this entire discussion?": "Êtes-vous certain⋅e de vouloir supprimer l'entièreté de cette discussion ?",
"Delete discussion": "Supprimer la discussion",
"All activities": "Toutes les activités",
"From yourself": "De vous",
"By others": "Des autres",
"You posted a comment on the event {event}.": "Vous avez posté un commentaire sur l'événement {event}.",
"{profile} posted a comment on the event {event}.": "{profile} a posté un commentaire sur l'événement {event}.",
"You replied to a comment on the event {event}.": "Vous avez répondu à un commentaire sur l'événement {event}.",
"{profile} replied to a comment on the event {event}.": "{profile} a répondu à un commentaire sur l'événement {event}.",
"New post": "Nouveau billet",
"Comment text can't be empty": "Le texte du commentaire ne peut être vide",
"Notifications": "Notifications",
"Profile feeds": "Flux du profil",
"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.": "Ces flux contiennent des informations sur les événements pour lesquels ce profil spécifique est un⋅e participant⋅e ou un⋅e créateur⋅ice. Vous devriez les garder privés. Vous pouvez trouver des flux pour l'ensemble de vos profils dans vos paramètres de notification.",
"Regenerate new links": "Regénérer de nouveaux liens",
"Create new links": "Créer de nouveaux liens",
"You'll need to change the URLs where there were previously entered.": "Vous devrez changer les URLs là où vous les avez entrées précédemment.",
"Personal feeds": "Flux personnels",
"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.": "Ces flux contiennent des informations sur les événements pour lesquels n'importe lequel de vos profils est un⋅e participant⋅e ou un⋅e créateur⋅ice. Vous devriez les garder privés. Vous pouvez trouver des flux spécifiques à chaque profil sur la page d'édition des profils.",
"The event will show as attributed to this profile.": "L'événement sera affiché comme attribué à ce profil.",
"You may show some members as contacts.": "Vous pouvez afficher certain⋅es membres en tant que contacts."
}

971
js/src/i18n/gd.json Normal file
View File

@ -0,0 +1,971 @@
{
"#{tag}": "#{tag}",
"(Masked)": "(Falaichte)",
"(this folder)": "(am pasgan seo)",
"(this link)": "(an ceangal seo)",
"+ Add a resource": "+ Cuir goireas ris",
"+ Create an event": "+ Cruthaich tachartas",
"+ Post a public message": "+ Postaich teachdaireachd phoblach",
"+ Start a discussion": "+ Tòisich air deasbad",
"<b>{contact}</b> will be displayed as contact.": "Thèid <b>{contact}</b> a shealltain mar neach-conaltraidh.|Thèid <b>{contact}</b> a shealltain mar luchd-conaltraidh.|Thèid <b>{contact}</b> a shealltain mar luchd-conaltraidh.|Thèid <b>{contact}</b> a shealltain mar luchd-conaltraidh.",
"@{group}": "@{group}",
"@{username}": "@{username}",
"@{username} ({role})": "@{username} ({role})",
"@{username}'s follow request was accepted": "Chaidh gabhail ris an t-iarrtas leantainn aig @{username}",
"@{username}'s follow request was rejected": "Chaidh an t-iarrtas leantainn aig @{username} a dhiùltadh",
"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.": "S e faidhle beag a th ann am briosgaid sa bheil fiosrachadh s a thèid a chur dhan choimpiutair agad nuair a thadhlas tu air làrach-lìn. Nuair a thadhlas tu air an làrach-lìn a-rithist, aithnichidh an làrach ud am brabhsair agad leis a bhriosgaid. Gabhaidh roghainnean cleachdaiche is fiosrachadh eile a stòradh ann am briosgaid. S urrainn dhut am brabhsair agad a rèiteachadh ach an diùlt e gach briosgaid. Gidheadh, dhfhaoidte nach obraich a h-uile gleus no seirbheis aig làrach-lìn mar bu chòir an uairsin. Obraichidh an stòras ionadail air an aon dòigh ach faodar barrachd dàta a chumail ann.",
"A federated software": "Bathar-bog co-naisgte",
"A place for your code of conduct, rules or guidelines. You can use HTML tags.": "Seo àite airson còd-giùlain, riaghailtean no comharra-treòrachaidh. S urrainn dhut tagaichean HTML a chleachdadh.",
"A place to explain who you are and the things that set your instance apart. You can use HTML tags.": "Seo àite airson cò thusa agus dè a tha sònraichte mun ionstans agad a mhìneachadh. S urrainn dhut tagaichean HTML a chleachdadh.",
"A place to publish something to the whole world, your community or just your group members.": "Seo àite airson rudan fhoillseachadh dhan t-saoghal gu lèir, dhan choimhearsnachd agad no do bhuill do bhuidhinn a-mhàin.",
"A place to store links to documents or resources of any type.": "Seo àite airson ceanglaichean gu sgrìobhainnean no goireasan sam bith eile a stòradh.",
"A practical tool": "Acainn prataigeach",
"A short tagline for your instance homepage. Defaults to \"Gather ⋅ Organize ⋅ Mobilize\"": "Seo facal-suaicheantais goirid airson duilleag-dhachaigh an ionstans agad. S e “Cruinnich ⋅ Cuir air dòigh ⋅ Iomair” a tha sa bhun-roghainn",
"A user-friendly, emancipatory and ethical tool for gathering, organising, and mobilising.": "Inneal saor beusail airson cruinneachadh, cur air dòigh is iomairt a tha furasta cleachdadh.",
"A validation email was sent to {email}": "Chaidh post-d dearbhaidh a chur gu {email}",
"API": "API",
"Abandon editing": "Tilg air falbh an deasachadh",
"About": "Mu dhèidhinn",
"About Mobilizon": "Mu Mobilizon",
"About anonymous participation": "Mun chom-pàirteachadh gun ainm",
"About this event": "Mun tachartas seo",
"About this instance": "Mun ionstans seo",
"About {instance}": "Mu {instance}",
"Accept": "Gabh ris",
"Accepted": "Air a ghabhail ris",
"Accessible only to members": "Chan fhaod ach buill inntrigeadh",
"Accessible through link": "Gabhaidh inntrigeadh le ceangal",
"Account": "Cunntas",
"Actions": "Gnìomhan",
"Activated": "An gnìomh",
"Active": "Gnìomhach",
"Activity": "Gnìomhachd",
"Actor": "Actar",
"Add": "Cuir ris",
"Add / Remove…": "Cuir ris / Thoir air falbh…",
"Add a contact": "Cuir fiosrachadh conaltraidh ris",
"Add a group": "Cuir buidheann ris",
"Add a new post": "Cuir post ùr ris",
"Add a note": "Cuir nòta ris",
"Add a todo": "Cuir rud ri dhèanamh ris",
"Add an address": "Cuir seòladh ris",
"Add an instance": "Cuir ionstans ris",
"Add some tags": "Cuir tagaichean ris",
"Add to my calendar": "Cuir ris a mhìosachan agam",
"Additional comments": "Beachdan a bharrachd",
"Admin": "Rianaire",
"Admin settings successfully saved.": "Chaidh roghainnean an rianaire a shàbhaladh.",
"Administration": "Rianachd",
"Administrator": "Rianaire",
"All activities": "A h-uile gnìomhachd",
"All good, let's continue!": "Tha seo dòigheil, leanamaid oirnn!",
"All the places have already been taken": "Chan eil àite saor air fhàgail",
"Allow all comments from users with accounts": "Ceadaich a h-uile beachd o chleachdaichean air an clàradh a-steach",
"Allow registrations": "Ceadaich clàradh",
"An error has occured. Sorry about that. You may try to reload the page.": "Thachair mearachd. Tha sinn duilich mu dhèidhinn. Feuch is ath-luchdaich an duilleag.",
"An ethical alternative": "Roghainn bheusail",
"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.": "S e tionndadh dhen bhathar-bhog Mobilizon a chaidh a stàladh s a tha a ruith air frithealaiche a th ann an ionstans. S urrainn do dhuine sam bith ionstans a ruith le {mobilizon_software} no le aplacaidean co-naisgte eile, sin an “co-shaoghal”. Is {instance_name} ainm an ionstans seo. S e lìonra de dhiomadh ionstans co-naisgte (coltach ri frithealaichean puist-d) a th ann am Mobilizon. S urrainn do chleachdaichean a chlàraich le ionstansan eadar-dhealaichte conaltradh ri chèile ged nach do chlàraich iad air an on ionstans.",
"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.": "S e pròtacal conaltraidh a th ann an “application programming interface” no “API” a leigeas le co-phàirtean bathair-bhog conaltradh ri chèile. Mar eisimpleir, s urrainn dhan API aig Mobilizon leigeil le innealan bathair-bhog threas-phàrtaidhean gun dèan iad conaltradh le ionstansan de Mhobilizon airson gnìomhan sònraichte a ghabhail, can postadh thachartasan às do leth gu fèin-obrachail is gu cèin.",
"And {number} comments": "Agus {number} beachd",
"Anonymous participant": "Freastalaiche gun ainm",
"Anonymous participants will be asked to confirm their participation through e-mail.": "Thèid iarraidh air freastalaichean gun ainm gun dearbh iad an com-pàirteachadh air a phost-d.",
"Anonymous participations": "Com-pàirteachaidhean gun ainm",
"Any day": "Latha sam bith",
"Anyone can join freely": "Faodaidh neach sam bith a dhol an sàs ann gu saor",
"Anyone wanting to be a member from your group will be able to from your group page.": "S urrainn do dhuine sam bith a tha airson ballrachd fhaighinn sa bhuidheann agad sin a dhèanamh air duilleag a bhuidhinn agad.",
"Application": "Aplacaid",
"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.": "A bheil thu cinnteach gu bheil thu airson an cunntas agad a sguabadh às uile gu lèir? Caillidh tu a h-uile rud. Falbhaidh na dearbh-aithnean, na roghainnean, na tachartasan a chruthaich thu agus na com-pàirteachaidhean gu buan.",
"Are you sure you want to <b>completely delete</b> this group? All members - including remote ones - will be notified and removed from the group, and <b>all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed</b>.": "A bheil thu cinnteach gu bheil thu airson am buidheann seo a <b>sguabadh às uile gu lèir</b>? Gheibh a bhallrachd uile gu lèir a gabhail a-staigh an fheadhainn chèin brath-naidheachd agus thèid an toirt air falbh on bhuidheann agus <b>thèid dàta sam bith aig a bhuidheann (tachartasan, postaichean, deasbadan, rudan ri dhèanamh…) a mhilleadh gu buan</b>.",
"Are you sure you want to <b>delete</b> this comment? This action cannot be undone.": "A bheil thu cinnteach gu bheil thu airson am beachd seo a <b>sguabadh às</b>? Cha ghabh seo a neo-dhèanamh.",
"Are you sure you want to <b>delete</b> this event? This action cannot be undone. You may want to engage the discussion with the event creator or edit its event instead.": "A bheil thu cinnteach gu bheil thu airson an tachartas seo a <b>sguabadh às</b>? Cha ghabh seo a neo-dhèanamh. S dòcha gum b fheàirrde thu deasbad leis an neach a chruthaich an tachartas no an tachartas aca-san a dheasachadh na àite.",
"Are you sure you want to <b>suspend</b> this group? All members - including remote ones - will be notified and removed from the group, and <b>all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed</b>.": "A bheil thu cinnteach gu bheil thu airson am buidheann seo a chur <b>à rèim</b>? Gheibh a bhallrachd uile gu lèir a gabhail a-staigh an fheadhainn chèin brath-naidheachd agus thèid an toirt air falbh on bhuidheann agus <b>thèid dàta sam bith aig a bhuidheann (tachartasan, postaichean, deasbadan, rudan ri dhèanamh…) a mhilleadh gu buan</b>.",
"Are you sure you want to <b>suspend</b> 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.": "A bheil thu cinnteach gu bheil thu airson am buidheann seo a chur <b>à rèim</b>? On a thàinig am buidheann o ionstans {instance}, tha doir seo air falbh ach am ballrachd ionadail is cha dèid a sguabadh às ach an dàta ionadail ach thèid dàta ri teachd sam bith a dhiùltadh.",
"Are you sure you want to cancel the event creation? You'll lose all modifications.": "A bheil thu cinnteach gu bheil thu airson sgur de chruthachadh an tachartais? Caillidh tu gach atharrachadh a rinn thu air.",
"Are you sure you want to cancel the event edition? You'll lose all modifications.": "A bheil thu cinnteach gu bheil thu airson sgur de dheasachadh an tachartais? Caillidh tu gach atharrachadh a rinn thu air.",
"Are you sure you want to cancel your participation at event \"{title}\"?": "A bheil thu cinnteach gu bheil thu airson sgur dhen chom-pàirteachadh agad aig “{title}”?",
"Are you sure you want to delete this entire discussion?": "A bheil thu cinnteach gu bheil thu airson an deasbad seo a sguabadh às uile gu lèir?",
"Are you sure you want to delete this event? This action cannot be reverted.": "A bheil thu cinnteach gu bheil thu airson an tachartas seo a sguabadh às? Cha ghabh seo a neo-dhèanamh.",
"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.": "Thagh eagraiche an tachartais gun dearbh iad cò ghabhas pàirt a làimh, mar sin cha bhi do chom-pàirteachadh air a dhearbhadh mus fhaigh thu post-d a dhinnseas gun do ghabh iad ris.",
"Assigned to": "Air iomruineadh dha",
"Atom feed for events and posts": "Inbhir Atom dha na tachartasan is postaichean",
"Avatar": "Avatar",
"Back to previous page": "Air ais dhan duilleag roimhpe",
"Banner": "Bratach",
"Before you can login, you need to click on the link inside it to validate your account.": "Mus urrainn dhut clàradh a-steach, feumaidh tu briogadh air a cheangal na broinn gus an cunntas agad a dhearbhadh.",
"Begins on": "Tòisichidh e aig",
"Bold": "Trom",
"By @{group}": "Le @{group}",
"By @{username}": "Le @{username}",
"By others": "Le daoine eile",
"By {author}": "Le {author}",
"By {group}": "Le {group}",
"Can be an email or a link, or just plain text.": "S urrainn dhut post-d no ceangal no teacsa lom a cleachdadh.",
"Cancel": "Sguir dheth",
"Cancel anonymous participation": "Sguir dhen chom-pàirteachadh gun ainm",
"Cancel creation": "Sguir dhen chruthachadh",
"Cancel edition": "Sguir dhen deasachadh",
"Cancel my participation request…": "Sguir dhen iarrtas agam air com-pàirteachadh…",
"Cancel my participation…": "Sguir dhen chom-pàirteachadh agam…",
"Cancelled": "Chaidh a chur gu neoini",
"Cancelled: Won't happen": "Sguireadh dheth: Cha tachair seo",
"Change": "Atharraich",
"Change my email": "Atharraich am post-d agam",
"Change my identity…": "Atharraich an dearbh-aithne agam…",
"Change my password": "Atharraich am facal-faire agam",
"Change timezone": "Atharraich an roinn-tìde",
"Check your inbox (and your junk mail folder).": "Thoir sùil air a bhogsa a-steach agad (s air a phasgan airson puist-d thruilleis).",
"City or region": "Baile no sgìre",
"Clear": "Falamhaich",
"Clear participation data for all events": "Falamhaich dàta a chom-pàirteachaidh aig a h-uile tachartas",
"Clear participation data for this event": "Falamhaich dàta a chom-pàirteachaidh aig an tachartas seo",
"Click for more information": "Dèan briogadh airson barrachd fiosrachaidh",
"Click to upload": "Briog airson luchdadh suas",
"Close": "Dùin",
"Close comments for all (except for admins)": "Dùin na beachdan dhan a h-uile duine (ach rianairean)",
"Close events": "Tachartasan am fagas",
"Closed": "Dùinte",
"Comment deleted": "Chaidh am beachd a sguabadh às",
"Comment from @{username} reported": "Chaidh gearan a dhèanamh mu bheachd le @{username}",
"Comments": "Beachdan",
"Comments are closed for everybody else.": "Tha na beachdan dùinte dhan a h-uile duine eile.",
"Confirm my participation": "Dearbh an com-pàirteachadh agam",
"Confirm my particpation": "Dearbh an com-pàirteachadh agam",
"Confirmed": "Air a dhearbhachadh",
"Confirmed at": "Chaidh a dhearbhachadh",
"Confirmed: Will happen": "Air dearbhadh: Tachraidh seo",
"Congratulations, your account is now created!": "Meal do naidheachd, chaidh an cunntas agad a chruthachadh!",
"Contact": "Fios thugainn",
"Continue editing": "Lean air an deasachadh",
"Cookies and Local storage": "Briosgaidean is an stòras ionadail",
"Copy details to clipboard": "Cuir lethbhreac dhen mion-fhiosrachadh air an stòr-bhòrd",
"Country": "Dùthaich",
"Create": "Cruthaich",
"Create a calc": "Cruthaich cliath-dhuilleag",
"Create a discussion": "Cruthaich deasbad",
"Create a folder": "Cruthaich pasgan",
"Create a new event": "Cruthaich tachartas ùr",
"Create a new group": "Cruthaich buidheann ùr",
"Create a new identity": "Cruthaich dearbh-aithne ùr",
"Create a new list": "Cruthaich liosta ùr",
"Create a pad": "Cruthaich pada",
"Create a videoconference": "Cruthaich coinneamh video",
"Create an account": "Cruthaich cunntas",
"Create event": "Cruthaich tachartas",
"Create group": "Cruthaich buidheann",
"Create my event": "Cruthaich an tachartas agam",
"Create my group": "Cruthaich am buidheann agam",
"Create my profile": "Cruthaich a phròifil agam",
"Create resource": "Cruthaich goireas",
"Create the discussion": "Cruthaich an deasbad",
"Create to-do lists for all the tasks you need to do, assign them and set due dates.": "Cruthaich liostaichean de rudan ri dhèanamh dha na saothraichean uile a tha romhaibh, iomruin iad is suidhich cinn-latha orra.",
"Create token": "Cruthaich tòcan",
"Created by {name}": "Chaidh a chruthachadh le {name}",
"Created by {username}": "Chaidh a chruthachadh le {username}",
"Current identity has been changed to {identityName} in order to manage this event.": "Chaidh an dearbh-aithne làithreach atharrachadh gu {identityName} airson an tachartas seo a stiùireadh.",
"Current page": "An duilleag làithreach",
"Custom": "Gnàthaichte",
"Custom URL": "URL gnàthaichte",
"Custom text": "Teacsa gnàthaichte",
"Daily email summary": "Geàrr-chunntas puist-d làitheil",
"Dashboard": "Deas-bhòrd",
"Date": "Ceann-latha",
"Date and time": "Ceann-là s àm",
"Date and time settings": "Roghainnean a chinn-là s an ama",
"Date parameters": "Paramadairean a chinn-là",
"Decline": "Diùlt",
"Default": "Tùsail",
"Default Mobilizon privacy policy": "Poileasaidh prìobhaideachd Mhobilizon thùsail",
"Default Mobilizon terms": "Teirmichean Mhobilizon tùsail",
"Delete": "Sguab às",
"Delete Comment": "Sguab às am beachd",
"Delete Event": "Sguab às an tachartas",
"Delete account": "Sguab à an cunntas",
"Delete conversation": "Sguab às an còmhradh",
"Delete discussion": "Sguab às an deasbad",
"Delete event": "Sguab às an tachartas",
"Delete everything": "Sguab às a h-uile rud",
"Delete group": "Sguab às am buidheann",
"Delete my account": "Sguab às an cunntas agam",
"Delete post": "Sguab às am post",
"Delete this discussion": "Sguab às an deasbad seo",
"Delete this identity": "Sguab às an dearbh-aithne seo",
"Delete your identity": "Sguab às an dearbh-aithne agad",
"Delete {eventTitle}": "Sguab às {eventTitle}",
"Delete {preferredUsername}": "Sguab às {preferredUsername}",
"Deleting comment": "A sguabadh às am beachd",
"Deleting event": "A sguabadh às an tachartais",
"Deleting my account will delete all of my identities.": "Ma sguabas mi às an cunntas agam, thèid gach dearbh-aithne agam a sguabadh às cuideachd.",
"Deleting your Mobilizon account": "A sguabadh às an cunntas Mobilizon agad",
"Demote": "Ìslich",
"Description": "Tuairisgeul",
"Didn't receive the instructions?": "Nach dfhuair thu an stiùireadh?",
"Disabled": "À comas",
"Discussions": "Deasbadan",
"Display name": "Ainm-taisbeanaidh",
"Display participation price": "Seall prìs a chom-pàirteachaidh",
"Displayed nickname": "Am far-ainm a chithear",
"Displayed on homepage and meta tags. Describe what Mobilizon is and what makes this instance special in a single paragraph.": "Thèid seo a shealltainn air an duilleag-dhachaigh agus am measg nan tagaichean meata. Mìnich dè th ann am Mobilizon agus dè tha sònraichte mun ionstans agad ann an earrann a-mhàin.",
"Do not receive any mail": "Na faigh post-d idir",
"Do you wish to {create_event} or {explore_events}?": "A bheil thu airson {create_event} no {explore_events}?",
"Do you wish to {create_group} or {explore_groups}?": "A bheil thu airson {create_group} no {explore_groups}?",
"Domain": "Àrainn",
"Draft": "Dreachd",
"Drafts": "Dreachdan",
"Due on": "An dùil air",
"Duplicate": "Dùblaich",
"Edit": "Deasaich",
"Edit post": "Deasaich am post",
"Edited {ago}": "Air a dheasachadh {ago}",
"Eg: Stockholm, Dance, Chess…": "M.e.: Steòrnabhagh, Cèilidh, Spòrs…",
"Either on the {instance} instance or on another instance.": "Air an ionstans {instance} no air ionstans eile.",
"Either the account is already validated, either the validation token is incorrect.": "Chaidh an cunntas a dhearbhadh mo thràth no chan eil tòcan an dearbhaidh mar bu chòir.",
"Either the email has already been changed, either the validation token is incorrect.": "Chaidh am post-d atharrachadh mu thràth no chan eil tòcan an dearbhaidh mar bu chòir.",
"Either the participation request has already been validated, either the validation token is incorrect.": "Chaidh an t-iarrtas air com-pàirteachadh a dhearbhadh mu thràth no chan eil tòcan a chom-pàirteachaidh mar bu chòir.",
"Email": "Post-d",
"Email address": "Seòladh puist-d",
"Email notifications": "Brathan puist-d",
"Enabled": "An comas",
"Ends on…": "Thig e gu crìoch…",
"Enter the link URL": "Cuir a-steach URL a cheangail",
"Enter your email address below, and we'll email you instructions on how to change your password.": "Cuir a-steach an seòladh puist-d agad gu h-ìosal agus cuiridh sinn stiùireadh thugad air mar a dhatharraicheas tu am facal-faire agad.",
"Enter your own privacy policy. HTML tags allowed. The {mobilizon_privacy_policy} is provided as template.": "Cuir a-steach a phoileasaidh agad fhèin. Tha tagaichean HTML ceadaichte. Tha {mobilizon_privacy_policy} ga solar mar theamplaid.",
"Enter your own terms. HTML tags allowed. The {mobilizon_terms} are provided as template.": "Cuir a-steach na teirmichean agad fhèin. Tha tagaichean HTML ceadaichte. Tha {mobilizon_terms} gan solar mar theamplaid.",
"Error": "Mearachd",
"Error details copied!": "Chaidh lethbhreac dhen mhion-fhiosrachadh a dhèanamh!",
"Error message": "Teachdaireachd na mearachd",
"Error stacktrace": "Stacktrace na mearachd",
"Error while changing email": "Mearachd le atharrachadh a phuist-d",
"Error while login with {provider}. Retry or login another way.": "Mearachd a clàradh a-steach le {provider}. Feuch ris a-rithist no clàradh a-steach air dòigh eile.",
"Error while login with {provider}. This login provider doesn't exist.": "Mearachd a clàradh a-steach le {provider}. Chan eil an solaraiche clàraidh a-steach seo ann.",
"Error while reporting group {groupTitle}": "Tachair mearachd leis a ghearan mun bhuidheann {groupTitle}",
"Error while validating account": "Mearachd le dearbhadh a chunntais",
"Error while validating participation request": "Mearachd le dearbhadh an iarrtais air com-pàirteachadh",
"Ethical alternative to Facebook events, groups and pages, Mobilizon is a <b>tool designed to serve you</b>. Period.": "S e roghainn bheusail seach tachartasan, buidhnean is duilleagan Facebook a th ann am Mobilizon is <b>chaidh a dhealbhadh air do shon-sa</b>. Sin agad e.",
"Event": "Tachartas",
"Event already passed": "Tha an tachartas seachad mu thràth",
"Event cancelled": "Chaidh an tachartas a chur gu neoini",
"Event creation": "Cruthachadh tachartais",
"Event edition": "Deasachadh tachartais",
"Event list": "Liosta nan tachartasan",
"Event page settings": "Roghainnean duilleag an tachartais",
"Event to be confirmed": "Tachartas ri dearbhadh",
"Event {eventTitle} deleted": "Chaidh an tachartas {eventTitle} a sguabadh às",
"Event {eventTitle} reported": "Chaidh gearan a dhèanamh mun tachartas {eventTitle}",
"Events": "Tachartasan",
"Events tagged with {tag}": "Tachartasan le taga {tag} riutha",
"Everything": "A h-uile rud",
"Ex: mobilizon.fr": "Can: mobilizon.fr",
"Ex: someone@mobilizon.org": "Can: someone@mobilizon.org",
"Explore": "Rùraich",
"Explore events": "Rùraich na tachartasan",
"Failed to save admin settings": "Dhfhàillig le sàbhaladh roghainnean na rianachd",
"Featured events": "Tachartasan brosnaichte",
"Federated Group Name": "Ainm co-naisgte a bhuidhinn",
"Federation": "Co-nasgadh",
"Fetch more": "Faigh barrachd dheth",
"Find an address": "Lorg seòladh",
"Find an instance": "Lorg ionstans",
"Find another instance": "Lorg ionstans eile",
"Follower": "Neach-leantainn",
"Followers": "Luchd-leantainn",
"Followers will receive new public events and posts.": "Gheibh an luchd-leantainn tachartasan is postaichean poblach.",
"Followings": "A leantainn",
"For instance: London": "Mar eisimpleir: Glaschu",
"For instance: London, Taekwondo, Architecture…": "Mar eisimpleir: Glaschu, Camanachd, Ailtireachd…",
"Forgot your password ?": "Na dhìochuimhnich thu am facal-faire agad?",
"Forgot your password?": "Na dhìochuimhnich thu am facal-faire agad?",
"From the {startDate} at {startTime} to the {endDate}": "O {startDate} aig {startTime} gu {endDate}",
"From the {startDate} at {startTime} to the {endDate} at {endTime}": "O {startDate} aig {startTime} gu {endDate} aig {endTime}",
"From the {startDate} to the {endDate}": "O {startDate} gu {endDate}",
"From yourself": "Uat fhèin",
"Gather ⋅ Organize ⋅ Mobilize": "Cruinnich ⋅ Cuir air dòigh ⋅ Iomair",
"General": "Coitcheann",
"General information": "Fiosrachadh coitcheann",
"Getting location": "A faighinn an ionaid",
"Getting there": "Mar a gheibh thu ann",
"Glossary": "Briathrachan",
"Go": "Siuthad",
"Go to the event page": "Tadhail air duilleag an tachartais",
"Group Followers": "Luchd-leantainn a bhuidhinn",
"Group Members": "Buill dhen bhuidheann",
"Group address": "Seòladh a bhuidhinn",
"Group display name": "Ainm-taisbeanaidh a bhuidhinn",
"Group name": "Ainm a bhuidhinn",
"Group settings": "Roghainnean a bhuidhinn",
"Group settings saved": "Chaidh roghainnean a bhuidhinn a shàbhaladh",
"Group short description": "Tuairisgeul goirid a bhuidhinn",
"Group visibility": "So-fhaicsinneachd a bhuidhinn",
"Group {displayName} created": "Chaidh am buidheann {displayName} a chruthachadh",
"Group {groupTitle} reported": "Chaidh gearan a dhèanamh mun bhuidheann {groupTitle}",
"Groups": "Buidhnean",
"Groups are not enabled on this instance.": "Chan eil buidhnean an comas air an ionstans seo.",
"Groups are spaces for coordination and preparation to better organize events and manage your community.": "S e rumannan airson co-òrdanachadh is ullachadh thachartasan agus stiùireadh coimhearsnachd air dòigh nas fhasa a tha sna buidhnean.",
"Headline picture": "Dealbh cinn-naidheachd",
"Hide replies": "Falaich na freagairtean",
"Home": "Dachaigh",
"Home to {number} users": "Seo dachaigh do {number} luchd-cleachdaidh",
"Hourly email summary": "Geàrr-chunntas puist-d gach uair a thìde",
"I agree to the {instanceRules} and {termsOfService}": "Tha mi ag aontachadh ri {instanceRules} agus {termsOfService}",
"I create an identity": "S urrainn dhomh dearbh-aithne a chruthachadh",
"I don't have a Mobilizon account": "Chan eil cunntas Mobilizon agam",
"I have a Mobilizon account": "Tha cunntas Mobilizon agam",
"I have an account on another Mobilizon instance.": "Tha cunntas agam air ionstans eile de Mhobilizon.",
"I participate": "Gabhaidh mi pàirt",
"I want to allow people to participate without an account.": "Tha mi airson ceadachadh gun gabh daoine pàirt às aonais cunntais.",
"I want to approve every participation request": "Tha mi airson aontachadh ris a h-uile iarrtas air com-pàirteachadh",
"ICS feed for events": "Inbhir ICS dha na tachartasan",
"ICS/WebCal Feed": "Inbhir ICS/WebCal",
"Identity {displayName} created": "Chaidh an dearbh-aithne {displayName} a chruthachadh",
"Identity {displayName} deleted": "Chaidh an dearbh-aithne {displayName} a sguabadh às",
"Identity {displayName} updated": "Chaidh an dearbh-aithne {displayName} ùrachadh",
"If allowed by organizer": "Ma cheadaicheas an t-eagraiche e",
"If an account with this email exists, we just sent another confirmation email to {email}": "Ma thua cunntas aig a bheil am post-d seo ann, cuiridh sinn post-d dearbhaidh eile gu {email}",
"If this identity is the only administrator of some groups, you need to delete them before being able to delete this identity.": "Mas e an t-aon rianaire aig buidheann a tha san dearbh-aithne seo, feumaidh tu a sguabadh às mus urrainn dhut an dearbh-aithne a sguabadh às.",
"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:": "Ma thèid do dhearbh-aithne co-naisgte iarraidh ort, cuiridh tu an t-ainm-cleachdaiche s an ionstans agad ri chèile dha. Mar eisimpleir, seo an dearbh-aithne co-naisgte aig a chiad phròifil agad:",
"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.": "Thagh thu gu bheil thu airson na com-pàirtichean a dhearbhadh a làimh. Cuiridh Mobilizon post-d thugad nuair a bhios com-pàirtichean ùra ri an dearbhadh ann. S urrainn dhut taghadh gu h-ìosal dè cho tric s a gheibh thu na brathan sin.",
"If you want, you may send a message to the event organizer here.": "Faodaidh tu teachdaireachd a chur gu eagraiche an tachartais an-seo ma thogras tu.",
"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.": "Sa cho-theacs a leanas, s e bathar-bog a th ann an aplacaid a chleachdas tu airson eadar-ghnìomhan a ghabhail leis an ionstans agad s a tha ga sholar le sgioba Mobilizon no le tread-phàrtaidh.",
"Instance": "Ionstans",
"Instance Long Description": "Tuairisgeul fada an ionstans",
"Instance Name": "Ainm an ionstans",
"Instance Privacy Policy": "Poileasaidh prìobhaideachd an ionstans",
"Instance Privacy Policy Source": "Tùs poileasaidh prìobhaideachd an ionstans",
"Instance Privacy Policy URL": "URL poileasaidh prìobhaideachd an ionstans",
"Instance Rules": "Riaghailtean an ionstans",
"Instance Short Description": "Tuairisgeul goirid an ionstans",
"Instance Slogan": "Sluagh-ghairm an ionstans",
"Instance Terms": "Teirmichean an ionstans",
"Instance Terms Source": "Tùs teirmichean an ionstans",
"Instance Terms URL": "URL teirmichean an ionstans",
"Instance administrator": "Rianaire ionstans",
"Instance configuration": "Rèiteachadh an ionstans",
"Instance languages": "Cànain an ionstans",
"Instance rules": "Riaghailtean an ionstans",
"Instance settings": "Roghainnean an ionstans",
"Instances": "Ionstansan",
"Instances following you": "Na h-ionstansan a tha a leantainn ort",
"Instances you follow": "Na h-ionstansan air a leanas tu",
"Invite a new member": "Thoir cuireadh do bhall ùr",
"Invite member": "Thoir cuireadh do bhall",
"Invited": "Air cuireadh fhaighinn",
"It is possible that the content is not accessible on this instance, because this instance has blocked the profiles or groups behind this content.": "Dhfhaoidte nach gabh an t-susbaint inntrigeadh air an ionstans seo on a bhac an t-ionstans seo na pròifilean no buidhnean a tha air cùlaibh na susbainte seo.",
"Italic": "Eadailteach",
"Join <b>{instance}</b>, a Mobilizon instance": "Faigh ballrachd air <b>{instance}</b>, seo ionstans Mobilizon",
"Join group": "Faigh ballrachd sa bhuidheann",
"Keep the entire conversation about a specific topic together on a single page.": "Cùm an còmhradh gu lèir mu chuspair sònraichte còmhla air an aon duilleag.",
"Key words": "Faclan-luirg",
"Language": "Cànan",
"Last IP adress": "An seòladh IP mu dheireadh",
"Last group created": "Am buidheann mu dheireadh a chruthaich thu",
"Last published event": "An tachartas foillsichte as ùire",
"Last published events": "Na tachartasan foillsichte as ùire",
"Last sign-in": "An clàradh a-steach mu dheireadh",
"Last week": "An t-seachdain seo chaidh",
"Latest posts": "Na puist as ùire",
"Learn more": "Barrachd fiosrachaidh",
"Learn more about Mobilizon": "Barrachd fiosrachaidh mu Mhobilizon",
"Learn more about {instance}": "Faigh barrachd fiosrachaidh mu {instance}",
"Leave": "Falbh",
"Leave event": "Fàg an tachartas",
"Leaving event \"{title}\"": "A fàgail an tachartais “{title}”",
"Legal": "Nòtaichean laghail",
"Let's define a few settings": "Nach suidhich sinn roghainn no dhà?",
"License": "Ceadachas",
"Limited number of places": "Àiteachan cuingichte",
"List title": "Tiotal na liosta",
"Load more": "Luchdaich barrachd dheth",
"Load more activities": "Luchdaich barrachd gnìomhachdan",
"Loading comments…": "A luchdadh nam beachdan…",
"Local": "Ionadail",
"Locality": "Ionad",
"Location": "Ionad",
"Log in": "Clàraich a-steach",
"Log out": "Clàraich a-mach",
"Login": "Clàraich a-steach",
"Login on Mobilizon!": "Clàraich a-steach air Mobilizon!",
"Login on {instance}": "Clàraich a-steach air {instance}",
"Login status": "Staid a chlàraidh a-steach",
"Main languages you/your moderators speak": "Na prìomh-chànanan a bhios agad s aig na maoir",
"Manage participations": "Stiùir na com-pàirteachaidhean",
"Manually approve new followers": "Aontaich ri luchd-leantainn ùra a làimh",
"Manually invite new members": "Thoir cuireadh do bhuill ùra a làimh",
"Mark as resolved": "Cuir comharra gun deach fhuasgladh",
"Member": "Ball",
"Members": "Buill",
"Message": "Teachdaireachd",
"Mobilizon": "Mobilizon",
"Mobilizon is a federated network. You can interact with this event from a different server.": "S e lìonra co-naisgte a th ann am Mobilizon S urrainn dhut eadar-ghnìomh a dhèanamh leis an tachartas seo o fhrithealaiche eile.",
"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.": "S e bathar-bog co-naisgte a th ann am Mobilizon. Is ciall dha seo gur urrainn dhut a-rèir roghainnean rianachd a cho-nasgaidh eadar-ghnìomhan a ghabhail le susbaint o ionstansan eile, can gum faigh thu ballrachd ann am buidheann no gun gabh thu pàirt ann an tachartas a chaidh a chruthachadh am badeigin eile.",
"Mobilizon is a tool that helps you <b>find, create and organise events</b>.": "S e acainn a th ann am Mobilizon a chuidicheas thu ach <b>an lorg, an cruthaich s an cuir thu air dòigh tachartasan</b>.",
"Mobilizon is not a giant platform, but a <b>multitude of interconnected Mobilizon websites</b>.": "Chan e mòr-ùrlar a th ann am Mobilizon ach <b>pailteas de làraichean-lìn Mobilizon a tha co-cheangailte ri càch a chèile</b>.",
"Mobilizon software": "Bathar-bog Mobilizon",
"Mobilizon uses a system of profiles to compartiment your activities. You will be able to create as many profiles as you want.": "Cleachdaidh Mobilizon siostam de phròifilean airson do ghnìomhachdan a chumail fa leth. Faodaidh tu na thogras tu de phròifilean a chruthachadh.",
"Mobilizon version": "Tionndadh de Mhobilizon",
"Mobilizon will send you an email when the events you are attending have important changes: date and time, address, confirmation or cancellation, etc.": "Cuiridh Mobilizon post-d thugad nuair a thig atharrachadh cudromach air na tachartasan sa bhios tu an làthair: an ceann-là s àm, an seòladh, gabhail ris no cur dheth is msaa.",
"Moderated comments (shown after approval)": "Beachdan fo mhaoirsainneachd (thèid an sealltainn as dèidh aontachaidh)",
"Moderation": "Maorsainneachd",
"Moderation log": "Loga na maorsainneachd",
"Moderator": "Maor",
"Move": "Gluais",
"Move \"{resourceName}\"": "Gluais “{resourceName}”",
"Move resource to {folder}": "Gluais an goireas gu {folder}",
"My account": "An cunntas agam",
"My events": "Na tachartasan agam",
"My groups": "Na buidhnean agam",
"My identities": "Na dearbh-aithnean agam",
"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.": "AN AIRE! Tha dug neach-lagha sùil air na teirmichean tùsail idir agus mar sin chan eil sinn an dùil gun solar iad dìon laghail slàn anns gach suidheachadh do rianaire ionstans a chleachdas iad. Cuideachd, chan eil iad sònraichte do gach dùthaich is uachdranas laghail. Mur eil thu cinnteach, bruidhinn ri neach-lagha.",
"Name": "Ainm",
"New discussion": "Deasbad ùr",
"New email": "Post-d ùr",
"New folder": "Pasgan ùr",
"New link": "Ceangal ùr",
"New members": "Buill ùra",
"New note": "Nòta ùr",
"New password": "Facal-faire ùr",
"New profile": "Pròifil ùr",
"Next": "Air adhart",
"Next month": "An ath mhìos",
"Next page": "An ath-dhuilleag",
"Next week": "An ath sheachdain",
"No address defined": "Cha deach seòladh a mhìneachadh",
"No closed reports yet": "Cha deach gearan a dhùnadh fhathast",
"No comment": "Gun bheachd",
"No comments yet": "Chan eil beachd ann fhathast",
"No discussions yet": "Chan eil deasbad ann fhathast",
"No end date": "Gun latha crìochnachaidh",
"No events found": "Cha deach tachartas sam bith a lorg",
"No follower matches the filters": "Chan eil neach-leantainn sam bith a maidseadh nan criathragan",
"No group found": "Cha deach buidheann sam bith a lorg",
"No groups found": "Cha deach buidheann sam bith a lorg",
"No information": "Gun fhiosrachadh",
"No instance follows your instance yet.": "Chan eil ionstans sam bith a leantainn air an ionstans agad-sa fhathast.",
"No instance to approve|Approve instance|Approve {number} instances": "Aontaich ri {number} ionstans|Aontaich ri {number} ionstans|Aontaich ri {number} ionstansan|Aontaich ri {number} ionstans",
"No instance to reject|Reject instance|Reject {number} instances": "Diùlt {number} ionstans|Diùlt {number} ionstans|Diùlt {number} ionstansan|Diùlt {number} ionstans",
"No instance to remove|Remove instance|Remove {number} instances": "Thoir air falbh {number} ionstans|Thoir air falbh {number} ionstans|Thoir air falbh {number} ionstansan|Thoir air falbh {number} ionstans",
"No languages found": "Cha deach cànan a lorg",
"No member matches the filters": "Chan eil ball sam bith a maidseadh nan criathragan",
"No message": "Chan eil teachdaireachd ann",
"No moderation logs yet": "Chan eil loga maorsainneachd ann fhathast",
"No more activity to display.": "Chan eil barrachd ghnìomhan ri an sealltainn ann.",
"No one is going to this event": "Thèid {going} ann|Thèid {going} ann|Thèid {going} ann|Thèid {going} ann",
"No open reports yet": "Chan eil gearan gun fhuasgladh ann",
"No participant matches the filters": "Chan eil com-pàirtiche sam bith a maidseadh nan criathragan",
"No participant to approve|Approve participant|Approve {number} participants": "Aontaich ri {number} chom-pàirtiche|Aontaich ri {number} chom-pàirtiche|Aontaich ri {number} com-pàirtichean|Aontaich ri {number} com-pàirtiche",
"No participant to reject|Reject participant|Reject {number} participants": "Diùlt {number} chom-pàirtiche|Diùlt {number} chom-pàirtiche|Diùlt {number} com-pàirtichean|Diùlt {number} com-pàirtiche",
"No posts found": "Cha deach post a lorg",
"No posts yet": "Chan eil post ann fhathast",
"No profile matches the filters": "Chan eil pròifil sam bith a maidseadh nan criathragan",
"No profiles found": "Cha deach pròifil a lorg",
"No public upcoming events": "Cha bhi tachartas poblach ann a dhaithghearr",
"No resolved reports yet": "Cha deach gearan fuasgladh fhathast",
"No resources in this folder": "Chan eil goireas sa phasgan seo",
"No resources selected": "Chaidh {count} ghoireas a thaghadh|Chaidh {count} ghoireas a thaghadh|Chaidh {count} goireasan a thaghadh|Chaidh {count} goireas a thaghadh",
"No resources yet": "Chan eil goireas ann fhathast",
"No results for \"{queryText}\"": "Cha deach toradh a lorg airson “{queryText}”",
"No rules defined yet.": "Cha deach riaghailt a mhìneachadh fhathast.",
"None": "Chan eil gin",
"Not approved": "Gun aonta",
"Not confirmed": "Gun dearbhadh",
"Notes": "Nòtaichean",
"Nothing to see here": "Chan eil dad ri fhaicinn an-seo",
"Notification before the event": "Brath ron tachartas",
"Notification on the day of the event": "Brath air latha an tachartais",
"Notifications for manually approved participations to an event": "Brathan mu chom-pàirteachaichean air tachartas a chaidh aontachadh riutha à làimh",
"Now, create your first profile:": "Nise, cruthaich a chiad phròifil agad:",
"Number of places": "Co mheud àite",
"OK": "Ceart ma-thà",
"Old password": "An seann fhacal-faire",
"On {date}": "{date}",
"On {date} ending at {endTime}": "{date}, a crìochnachadh aig {endTime}",
"On {date} from {startTime} to {endTime}": "{date} o {startTime} gu {endTime}",
"On {date} starting at {startTime}": "{date}, a tòiseachadh aig {startTime}",
"On {instance}": "Air {instance}",
"Only accessible through link": "Cha ghabh inntrigeadh ach le ceangal",
"Only accessible through link (private)": "Cha ghabh inntrigeadh ach le ceangal (prìobhaideach)",
"Only accessible to members of the group": "Cha ghabh inntrigeadh ach le buill a bhuidhinn",
"Only alphanumeric lowercased characters and underscores are supported.": "Chan eil taic ach ri litrichean gun sràcan, àireamhan is fo-loidhnichean.",
"Only group members can access discussions": "Chan fhaod ach buill a bhuidhinn na deasbadan inntrigeadh",
"Only group moderators can create, edit and delete posts.": "Chan urrainn ach do mhaoir postaichean a chruthachadh, a dheasachadh s a sguabadh às.",
"Open": "Fosgailte",
"Open a topic on our forum": "Fosgail cuspair air a bhòrd-bhrath againn",
"Open an issue on our bug tracker (advanced users)": "Fosgail cùis air tracaiche nam buga againn (luchd-cleachdaidh adhartach)",
"Opened reports": "Gearanan gun fhuasgladh",
"Or": "No",
"Organized": "Ga eagrachadh",
"Organized by": "Ga eagrachadh le",
"Organized by {name}": "Ga eagrachadh le {ainm}",
"Organizer": "Eagraiche",
"Organizer notifications": "Brathan an eagraiche",
"Organizers": "Eagraichean",
"Other": "Eile",
"Other notification options:": "Roghainnean eile nam brathan:",
"Other software may also support this.": "Dhfhaoidte gun doir bathar-bog eile taic ri seo cuideachd.",
"Otherwise this identity will just be removed from the group administrators.": "Air neo thèid an dearbh-aithne seo a thoirt air falbh le rianairean a bhuidhinn.",
"Page": "Duilleag",
"Page limited to my group (asks for auth)": "Duilleag cuingichte air a bhuidheann agam (thèid dearbhadh iarraidh)",
"Parent folder": "Pasgan pàrant",
"Participant": "Com-pàirtiche",
"Participants": "Com-pàirtichean",
"Participate": "Gabh pàirt ann",
"Participate using your email address": "Gabh pàirt ann leis an t-seòladh puist-d agad",
"Participation approval": "Aontachadh a chom-pàirteachaidh",
"Participation confirmation": "Dearbhadh a chom-pàirteachaidh",
"Participation notifications": "Brathan mu chom-pàirteachaidhean",
"Participation requested!": "Chaidh com-pàirteachadh iarraidh!",
"Participations": "Com-pàirteachaidhean",
"Password": "Facal-faire",
"Password (confirmation)": "Facal-faire (dearbhadh)",
"Password reset": "Ath-shuidheachadh an fhacail-fhaire",
"Past events": "Tachartasan a tha seachad mu thràth",
"Pending": "Ri dhèiligeadh",
"Pick": "Tagh",
"Pick a group": "Tagh buidheann",
"Pick a profile or a group": "Tagh pròifil no buidheann",
"Pick an identity": "Tagh dearbh-aithne",
"Pick an instance": "Tagh ionstans",
"Please add as many details as possible to help identify the problem.": "Cuir nas urrainn dhut de dhfhiosrachadh ris ach an aithnicheamaid an duilgheadas.",
"Please check your spam folder if you didn't receive the email.": "Thoir sùil air pasgan an spama agad mur fhuair thu am post-d.",
"Please contact this instance's Mobilizon admin if you think this is a mistake.": "Cuir fios gu rianaire an ionstans Mobilizon seo ma tha thu dhen bheachd gur e mearachd a th ann.",
"Please do not use it in any real way.": "Na cleachd ann an da-rìribh e.",
"Please enter your password to confirm this action.": "Cuir a-steach am facal-faire agad gus a dhearbhadh.",
"Please make sure the address is correct and that the page hasn't been moved.": "Dèan cinnteach gu bheil an t-seòladh mar bu chòir s nach deach an duilleag a ghluasad.",
"Please read the {fullRules} published by {instance}'s administrators.": "Leugh {fullRules} a chaidh fhoillseachadh leis na rianairean aig {instance}.",
"Post": "Post",
"Post a comment": "Postaich beachd",
"Post a reply": "Postaich freagairt",
"Postal Code": "Còd-puist",
"Posts": "Postaichean",
"Powered by {mobilizon}. © 2018 - {date} The Mobilizon Contributors - Made with the financial support of {contributors}.": "Le cumhachd {mobilizon}. © 2018 {date} Luchd-cuideachaidh Mobilizon Le taic maoineachaidh o {contributors}.",
"Preferences": "Roghainnean",
"Previous": "Air ais",
"Previous page": "An duilleag roimhpe",
"Privacy Policy": "Poileasaidh prìobhaideachd",
"Privacy policy": "Poileasaidh prìobhaideachd",
"Private event": "Tachartas prìobhaideach",
"Private feeds": "Inbhirean prìobhaideach",
"Profiles": "Pròifilean",
"Profiles and federation": "Pròifilean agus co-nasgadh",
"Promote": "Àrdaich",
"Public": "Poblach",
"Public RSS/Atom Feed": "Inbhir RSS/Atom poblach",
"Public comment moderation": "Maorsainneachd nam beachdan poblach",
"Public event": "Tachartas poblach",
"Public feeds": "Inbhirean poblach",
"Public iCal Feed": "Inbhir iCal poblach",
"Public page": "Duilleag phoblach",
"Publication date": "Ceann-là an fhoillseachaidh",
"Publish": "Foillsich",
"Published events with <b>{comments}</b> comments and <b>{participations}</b> confirmed participations": "Chaidh tachartasan fhoillseachadh le <b>{comments}</b> beachd(an) riutha agus <b>{participations}</b> com-pàirteachadh/com-pàirteachaidhean air an dearbhadh",
"RSS/Atom Feed": "Inbhir RSS/Atom",
"Radius": "Astar",
"Recap every week": "Cuimhneachan seachdaineil",
"Receive one email per request": "Faigh aon phost-d air gach iarrtas",
"Redirecting to content…": "Gad ath-stiùireadh dhan t-susbaint…",
"Refresh profile": "Ath-nuadhaich a phròifil",
"Region": "Roinn-dùthcha",
"Register an account on {instanceName}!": "Clàraich cunntas air {instanceName}!",
"Register on this instance": "Clàraich leis an ionstans seo",
"Registration is allowed, anyone can register.": "Tha clàradh ceadaichte, s urrainn do dhuine sam bith clàradh.",
"Registration is closed.": "Tha an clàradh dùinte.",
"Registration is currently closed.": "Tha an clàradh dùinte aig an àm seo.",
"Registrations": "Clàraidhean",
"Registrations are restricted by allowlisting.": "Tha an clàradh cuingichte le liosta ceadachaidh.",
"Reject": "Diùlt",
"Rejected": "Air a dhiùltadh",
"Remember my participation in this browser": "Cùm an com-pàirteachadh agam an cuimhne a bhrabhsair seo",
"Remove": "Thoir air falbh",
"Rename": "Thoir ainm ùr air",
"Rename resource": "Thoir ainm ùr air a ghoireas",
"Reopen": "Ath-fhosgail",
"Reply": "Freagair",
"Report": "Dèan gearan",
"Report #{reportNumber}": "Gearan #{report_number}",
"Report this comment": "Dèan gearan mun bheachd seo",
"Report this event": "Dèan gearan mun tachartas seo",
"Report this group": "Dèan gearan mun bhuidheann seo",
"Reported": "Air gearan a dhèanamh",
"Reported by": "Chaidh gearan a dhèanamh le",
"Reported by someone on {domain}": "Rinn cuideigin air {domain} gearan mu dhèidhinn",
"Reported by {reporter}": "Rinn {reporter} gearan mu dhèidhinn",
"Reported group": "Chaidh gearan a dhèanamh mun bhuidheann",
"Reported identity": "Chaidh gearan a dhèanamh air dearbh-aithne",
"Reports": "Gearanan",
"Request for participation confirmation sent": "Chaidh iarrtas air dearbhadh a chom-pàirteachaidh a chur",
"Resend confirmation email": "Cuir am post-d dearbhaidh a-rithist",
"Reset my password": "Ath-shuidhich am facal-faire agam",
"Resolved": "Air fhuasgladh",
"Resource provided is not an URL": "Chan e URL a tha sa ghoireas a chaidh a solar",
"Resources": "Goireasan",
"Restricted": "Cuingichte",
"Return to the group page": "Till gu duilleag a bhuidhinn",
"Right now": "An-dràsta fhèin",
"Role": "Dreuchd",
"Rules": "Riaghailtean",
"SSL and it's successor TLS are encryption technologies to secure data communications when using the service. You can recognize an encrypted connection in your browser's address line when the URL begins with {https} and the lock icon is displayed in your browser's address bar.": "S e teicneolasan crioptachaidh a th anns an SSL agus san TLS a thàinig na dhèidh a nì dàta conaltraidh tèarainte nuair a chleachdas tu an t-seirbheis. Aithnichidh tu ceangal crioptaichte air loidhne an t-seòlaidh aig a bhrabhsair agad nuair a thòisicheas an URL le {https} agus ìomhaigheag glaise ga shealltainn air bàr an t-seòlaidh aig a bhrabhsair.",
"SSL/TLS": "SSL/TLS",
"Save": "Sàbhail",
"Save draft": "Sàbhail dreachd",
"Search": "Lorg",
"Search events, groups, etc.": "Lorg tachartasan, buidhnean is msaa.",
"Searching…": "Ga lorg…",
"Search…": "Lorg…",
"Select a language": "Tagh cànan",
"Select a radius": "Tagh astar",
"Select a timezone": "Tagh roinn-tìde",
"Select languages": "Tagh na cànain",
"Send email": "Cuir post-d",
"Send the confirmation email again": "Cuir am post-d dearbhaidh a-rithist",
"Send the report": "Cuir an gearan",
"Set an URL to a page with your own privacy policy.": "Suidhich an t-URL air duilleag leis a phoileasaidh prìobhaideachd agad fhèin.",
"Set an URL to a page with your own terms.": "Suidhich an t-URL air duilleag leis na teirmichean agad fhèin.",
"Settings": "Roghainnean",
"Share this event": "Co-roinn an tachartas seo",
"Short bio": "Sgeul-beatha goirid",
"Show map": "Seall am mapa",
"Show remaining number of places": "Seall na tha air fhàgail de dhàiteachan",
"Show the time when the event begins": "Seall an t-àm a thòisicheas an tachartas",
"Show the time when the event ends": "Seall an t-àm a chrìochnaicheas an tachartas",
"Sign in with": "Clàraich a-steach le",
"Sign up": "Clàraich",
"Since you are a new member, private content can take a few minutes to appear.": "On a tha thu nad bhall ùr, dhfhaoidte gun doir e greiseag mus nochd susbaint phrìobhaideach.",
"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:": "Tha cuid dhe na faclan a tha gan cleachdadh san teacsa gu h-ìosal, co-dhiù an e faclan teicnigeach a th annta gus nach e, mu bheachdan a tha caran doirbh a thuigsinn ma dhfhaoidte. Rinn sinn briathrachan ach am bhiod e na b fhasa dhut an tuigsinn:",
"Starts on…": "Àm-tòiseachaidh…",
"Status": "Staid",
"Street": "Sràid",
"Submit": "Cuir a-null",
"Suspend": "Cuir à rèim",
"Suspend group": "Cuir am buidheann à rèim",
"Suspended": "Chaidh a chur à rèim",
"Task lists": "Liostaichean shaothraichean",
"Technical details": "Mion-fhiosrachadh teicnigeach",
"Tentative": "Gun chinnt",
"Tentative: Will be confirmed later": "Gun chinnt: Thèid a dhearbhadh uaireigin eile",
"Terms": "Teirmichean",
"Terms of service": "Teirmichean na seirbheise",
"Text": "Teacsa",
"The account's email address was changed. Check your emails to verify it.": "Chaidh seòladh puist-d a chunntais atharrachadh. Thoir sùil air a phost-d agad airson a dhearbhadh.",
"The actual number of participants may differ, as this event is hosted on another instance.": "Dhfhaoidte gu bheil àireamh fhìrinneach nan com-pàirtichean diofraichte on a tha an tachartas seo ga òstadh air ionstans eile.",
"The content came from another server. Transfer an anonymous copy of the report?": "Thàinig an t-susbaint seo o fhrithealaiche eile. A bheil thu airson lethbhreac gun ainm dhen ghearan a thar-chur?",
"The draft event has been updated": "Chaidh dreachd an tachartais ùrachadh",
"The event has been created as a draft": "Chaidh an tachartas a chruthachadh mar dreachd",
"The event has been published": "Chaidh an tachartas fhoillseachadh",
"The event has been updated": "Chaidh an tachartas ùrachadh",
"The event has been updated and published": "Chaidh an tachartas ùrachadh s fhoillseachadh",
"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?": "Chuir eagraiche an tachartais romhpa gun dearbh iad na com-pàirteachaidhean a làimh.Am bu mhiann leat nòta a chur ris a mhìnicheas carson a tha thu airson gabhail pàirt san tachartas seo?",
"The event organizer didn't add any description.": "Cha do chuir eagraiche an tachartais tuairisgeul sam bith ris.",
"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.": "Dearbhaidh eagraiche an tachartais romhpa na com-pàirteachaidhean a làimh.On a chuir thu romhad pàirt a ghabhail ann gun chunntas, mìnich carson a bu mhiann leat pàirt a ghabhail san tachartas seo.",
"The event title will be ellipsed.": "Thèid tiotal an tachartais a ghiorrachadh.",
"The event will show as attributed to this group.": "Thèid an tachartas seo iomruineadh dhan bhuidheann seo.",
"The event will show as attributed to your personal profile.": "Thèid an tachartas seo iomruineadh dhan phròifil phearsanta agad.",
"The event will show the group as organizer.": "Seallaidh an tachartas am buidheann mar eagraiche.",
"The event {event} was created by {profile}.": "Chaidh an tachartas {event} a chruthachadh le {profile}.",
"The event {event} was deleted by {profile}.": "Chaidh an tachartas {event} a sguabadh às le {profile}.",
"The event {event} was updated by {profile}.": "Chaidh an tachartas {event} ùrachadh le {profile}.",
"The events you created are not shown here.": "Chan fhaic thu na tachartasan a chruthaich thu an-seo.",
"The group can now be joined by anyone.": "S urrainn do dhuine sam bith ballrachd fhaighinn sa bhuidheann seo a-nis.",
"The group can now only be joined with an invite.": "Chan urrainnear ballrachd fhaighinn sa bhuidheann seo ach le cuireadh a-nis.",
"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.": "Chithear am buidheann ann an toraidhean luirg gu poblach agus dhfhaoidte gun dèid a mholadh san earrann rùrachaidh. Cha nochd ach fiosrachadh poblach air an duilleag aige.",
"The group's avatar was changed.": "Chaidh avatar a bhuidhinn atharrachadh.",
"The group's banner was changed.": "Chaidh bratach a bhuidhinn atharrachadh.",
"The group's physical address was changed.": "Chaidh seòladh fiosaigeach a bhuidhinn atharrachadh.",
"The group's short description was changed.": "Chaidh tuairisgeul goirid a bhuidhinn atharrachadh.",
"The instance administrator is the person or entity that runs this Mobilizon instance.": "S e an neach no eintiteas a tha a ruith an t-ionstans seo de Mhobilizon a th ann an rianaire an ionstans.",
"The member was removed from the group {group}": "Chaidh am ball a thoirt air falbh on bhuidheann {group}",
"The only way for your group to get new members is if an admininistrator invites them.": "Chan fhaigh am buidheann agad buill ùra ach ma bheir rianaire cuireadh dhaibh.",
"The organiser has chosen to close comments.": "Chuir an eagraiche romhpa gun dùin iad na beachdan.",
"The page you're looking for doesn't exist.": "Chan eil an duilleag a tha thu a lorg ann.",
"The password was successfully changed": "Chaidh am facal-faire atharrachadh",
"The post {post} was created by {profile}.": "Chaidh am post {post} a chruthachadh le {profile}.",
"The post {post} was deleted by {profile}.": "Chaidh am post {post} a sguabadh às le {profile}.",
"The post {post} was updated by {profile}.": "Chaidh am post {post} ùrachadh le {profile}.",
"The report will be sent to the moderators of your instance. You can explain why you report this content below.": "Thèid do ghearan a chuir dha na maoir aig an ionstans agad. S urrainn dhut mìneachadh carson a tha thu a dèanamh gearan mun t-susbaint seo gu h-ìosal.",
"The technical details of the error can help developers solve the problem more easily. Please add them to your feedback.": "Cuidichidh am fiosrachadh teicnigeach mun mhearachd gum fuasgail an luchd-leasachaidh an duilgheadas nas fhasa. Cuir ri do bheachd e.",
"The {default_privacy_policy} will be used. They will be translated in the user's language.": "Thèid {default_privacy_policy} a chleachdadh. Thèid a h-eadar-theangachadh gu cànan a chleachdaiche.",
"The {default_terms} will be used. They will be translated in the user's language.": "Thèid {default_terms} a chleachdadh. Thèid an eadar-theangachadh gu cànan a chleachdaiche.",
"There are {participants} participants.": "Tha {participants} com-pàirtiche(an) ann.",
"There is no activity yet. Start doing some things to see activity appear here.": "Gun ghnìomhachd fhathast. Nochdaidh gnìomhachdan an-seo nuair a bhios tu air rudan a dhèanamh.",
"There will be no way to recover your data.": "Cha bhi dòigh sam bith ann gus an dàta agad aiseag.",
"There's no discussions yet": "Chan eil deasbad ann fhathast",
"These events may interest you": "Dhfhaoidte gu bheil ùidh agad sna tachartasan seo",
"This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "Gabhaidh an t-ionstans seo de Mhobilizon agus eagraiche an tachartais seo ri com-pàirteachadh gun ainm ach feumaidh tu a dhearbhadh air a phost-d.",
"This URL is not supported": "Chan eil taic ris an URL seo",
"This event has been cancelled.": "Chaidh an tachartas seo a chur gu neoini.",
"This event is accessible only through it's link. Be careful where you post this link.": "Cha ghabh an tachartas seo inntrigeadh ach leis a cheangal aige. Thoir an aire mus postaich thu an ceangal seo am badeigin.",
"This group doesn't have a description yet.": "Chan eil tuairisgeul aig a bhuidheann seo fhathast.",
"This group is invite-only": "Feumaidh tu cuireadh airson ballrachd fhaighinn sa bhuidheann seo",
"This identifier is unique to your profile. It allows others to find you.": "Tha an t-aithnichear seo àraidh dhan phròifil agad. Leigidh e le càch do lorg.",
"This identity is not a member of any group.": "Chan eil an dearbh-aithne seo na ball ann am buidheann sam bith.",
"This information is saved only on your computer. Click for details": "Tha dèid am fiosrachadh seo a shàbhaladh ach air a choimpiutair agad. Briog airson mion-fhiosrachadh",
"This instance isn't opened to registrations, but you can register on other instances.": "Chan eil an t-ionstans seo fosgailte a chùm clàraidh ach s urrainn dhut clàradh air ionstansan eile.",
"This instance, <b>{instanceName} ({domain})</b>, hosts your profile, so remember its name.": "S e an t-ionstans seo <b>{instanceName} ({domain})</b> a tha ag òstadh na pròifil agad, mar sin cuir ainm-san nad chuimhne.",
"This is a demonstration site to test Mobilizon.": "Seo làrach taisbeanaidh airson Mobilizon fheuchainn.",
"This is like your federated username (<code>{username}</code>) for groups. It will allow the group to be found on the federation, and is guaranteed to be unique.": "Tha seo coltach ris an ainm-chleachdaiche cho-naisgte agad (<code>{username}</code>) ach do bhuidhnean. Gabhaidh am buidheann a lorg leis sa cho-nasgadh agus s e ainm àraidh a bhios ann.",
"This month": "Am mìos seo",
"This setting will be used to display the website and send you emails in the correct language.": "Thèid an roghainn seo a chleachdadh airson an làrach-lìn a shealltainn agus puist-d a chur thugad sa chànan cheart.",
"This website isn't moderated and the data that you enter will be automatically destroyed every day at 00:01 (Paris timezone).": "Chan eil an làrach-lìn seo fo mhaorsainneachd agus thèid an dàta a chuireas tu a-steach a mhilleadh gu fèin-obrachail gach oidhche aig 00:01 (roinn-tìde Pharais).",
"This week": "An t-seachdain seo",
"This weekend": "An deireadh-seachdain seo",
"This will delete / anonymize all content (events, comments, messages, participations…) created from this identity.": "Sguabaidh seo às / Bheir seo air falbh gach susbaint (tachartasan, beachdan, teachdaireachdan, com-pàirteachaidhean…) a chaidh a chruthachadh leis an dearbh-aithne seo.",
"Timezone": "Roinn-tìde",
"Timezone detected as {timezone}.": "Mhothaich sinn dha {timezone} mar an roinn-tìde agad.",
"Title": "Tiotal",
"To activate more notifications, head over to the notification settings.": "Airson barrachd bhrathan a ghnìomhachadh, tadhail air roghainnean nam brathan.",
"To confirm, type your event title \"{eventTitle}\"": "Airson a dhearbhadh, sgrìobh tiotal do thachartais “{eventTitle}”",
"To confirm, type your identity username \"{preferredUsername}\"": "Airson a dhearbhadh, sgrìobh ainm-cleachdaiche an dearbh-aithne “{preferredUsername}” agad",
"To create and manage multiples identities from a same account": "Airson iomadh dearbh-aithne a chruthachadh s a stiùireadh on aon chunntas",
"To create and manage your events": "Airson na tachartasan agad a chruthachadh s a stiùireadh",
"To create or join an group and start organizing with other people": "Airson buidheann a chruthachadh no ballrachd fhaighinn ann agus nithean a chur air dòigh le daoine eile",
"To register for an event by choosing one of your identities": "Airson clàradh le tachartas le tè dhe na dearbh-aithnean agad",
"Today": "An-diugh",
"Tomorrow": "A-màireach",
"Transfer to {outsideDomain}": "Tar-chur gu {outsideDomain}",
"Type": "Seòrsa",
"Type or select a date…": "Sgrìobh rudeigin no tagh ceann-latha…",
"URL": "URL",
"URL copied to clipboard": "Chaidh lethbhreac dhen URL a chur air an stòr-bhòrd",
"Unable to copy to clipboard": "Cha b urrainn dhuinn a chur air an stòr-bhòrd",
"Unable to detect timezone.": "Cha do dhaithnich sinn an roinn-tìde.",
"Unable to load event for participation. The error details are provided below:": "Cha b urrainn dhuinn an tachartas a luchdadh dhan chom-pàirteachadh. Chì thu fiosrachadh mun mhearachd gu h-ìosal:",
"Unable to save your participation in this browser.": "Cha b urrainn dhuinn do chom-pàirteachadh a shàbhaladh sa bhrabhsair seo.",
"Unfortunately, this instance isn't opened to registrations": "Gu mì-fhortanach, chan eil an t-ionstans seo fosgailte a chùm clàraidh",
"Unfortunately, your participation request was rejected by the organizers.": "Gu mì-fhortanach, dhiùlt na h-eagraichean do chom-pàirteachadh.",
"Unknown": "Chan eil fhios",
"Unknown actor": "Actar nach aithne dhuinn",
"Unknown error.": "Mearachd nach aithne dhuinn.",
"Unknown value for the openness setting.": "Chaidh luach nach aithne dhuinn a shuidheachadh air dè cho fosgailte s a tha am buidheann.",
"Unsaved changes": "Atharraichean gun sàbhaladh",
"Unset group": "Dì-shuidhich am buidheann",
"Unsuspend": "Na cuir à rèim tuilleadh",
"Upcoming": "Ri thighinn",
"Upcoming events": "Tachartasan ri thighinn",
"Update": "Ùraich",
"Update event {name}": "Ùraich an tachartas {name}",
"Update group": "Ùraich am buidheann",
"Update my event": "Ùraich an tachartas agam",
"Update post": "Ùraich am post",
"Updated": "Air ùrachadh",
"Uploaded media size": "Meud a mheadhain a chaidh a luchdadh suas",
"Use my location": "Cleachd an t-ionad agam",
"User": "Cleachdaiche",
"Username": "Ainm-cleachdaiche",
"Users": "Cleachdaichean",
"View a reply": "Seall {totalReplies} fhreagairt|Seall {totalReplies} fhreagairt|Seall {totalReplies} freagairtean|Seall {totalReplies} freagairt",
"View all": "Seall a h-uile",
"View all events": "Seall a h-uile tachartas",
"View all posts": "Seall a h-uile post",
"View event page": "Seall duilleag an tachartais",
"View everything": "Seall a h-uile càil",
"View page on {hostname} (in a new window)": "Seall an duilleag air {hostname} (ann an uinneag ùr)",
"Visibility was set to an unknown value.": "Chaidh luach nach aithne dhuinn a shuidheachadh air an t-so-fhaicsinneachd.",
"Visibility was set to private.": "Chaidh so-fhaicsinneachd phrìobhaideach a shuidheachadh air.",
"Visibility was set to public.": "Chaidh so-fhaicsinneachd phoblach a shuidheachadh air.",
"Visible everywhere on the web": "Chithear air feadh an lìn e",
"Visible everywhere on the web (public)": "Chithear air feadh an lìn e (poblach)",
"Waiting for organization team approval.": "A feitheamh air aontachadh leis an sgioba eagrachaidh.",
"Warning": "Rabhadh",
"We improve this software thanks to your feedback. To let us know about this issue, two possibilities (both unfortunately require user account creation):": "Bheir sinn piseach air a bhathar-bhog le taic do bheachdan. Tha dà dhòigh ann airson innse dhuinn mu dhèidhinn na trioblaide seo (gu mì-fhortanach, feumaidh tu cunntas a chruthachadh dhaibh):",
"We just sent an email to {email}": "Tha sinn air post-d a chur gu {email}",
"We use your timezone to make sure you get notifications for an event at the correct time.": "Cleachdaidh sinn an roinn-tìde agad ach an cuir sinn na brathan mu thachartas thugad aig an àm cheart.",
"We will redirect you to your instance in order to interact with this event": "Bheir sinn dhan ionstans agad-sa thu airson eadar-ghnìomh a ghabhail leis an tachartas seo",
"We will redirect you to your instance in order to interact with this group": "Bheir sinn dhan ionstans agad-sa thu airson eadar-ghnìomh a ghabhail leis a bhuidheann seo",
"We'll send you an email one hour before the event begins, to be sure you won't forget about it.": "Cuiridh sinn post-d thugad uair a thìde mus tòisich an tachartas a dhèanamh cinnteach nach dìochuimhnich thu e.",
"We'll use your timezone settings to send a recap of the morning of the event.": "Cleachdaidh sinn an roinn-tìde agad airson cuimhneachan a chur thugad sa mhadainn ron tachartas.",
"Website": "Làrach-lìn",
"Website / URL": "Làrach-lìn / URL",
"Welcome back {username}!": "Fàilte air ais, {username}!",
"Welcome back!": "Fàilte air ais!",
"Welcome to Mobilizon, {username}!": "Fàilte gu Mobilizon, {username}!",
"What can I do to help?": "Dè nì mi airson cuideachadh?",
"When a moderator from the group creates an event and attributes it to the group, it will show up here.": "Nuair a chruthaicheas maor a bhuidhinn tachartas le iomruineadh dhan bhuidheann, nochdaidh e an-seo.",
"Who can view this event and participate": "Cò chì an tachartas seo s a dhfhaodas pàirt a ghabhail ann",
"Who can view this post": "Cò chì am post seo",
"Who published {number} events": "A dhfhoillsich {number} tachartas",
"Why create an account?": "Carson a chruthaichinn cunntas?",
"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.": "Leigidh seo leat staid do chom-pàirteachaidh a shealltainn s a stiùireadh air duilleag an tachartais nuair a chleachdas tu an t-uidheam seo. Thoir a chromag air falbh ma tha thu a cleachdadh uidheam poblach.",
"Within {number} kilometers of {place}": "Am broinn {number} chilemeatair o {place}|Am broinn {number} chilemeatair o {place}|Am broinn {number} cilemeatairean o {place}|Am broinn {number} cilemeatair o {place}",
"Write something…": "Sgrìobh rudeigin…",
"Yesterday": "An-dè",
"You accepted the invitation to join the group.": "Ghabh thu ris a bhallrachd sa bhuidheann.",
"You added the member {member}.": "Chuir thu am ball {member} ris.",
"You archived the discussion {discussion}.": "Chuir thu an deasbad {discussion} san tasg-lann.",
"You are not an administrator for this group.": "Chan eil thu nad rianaire sa bhuidheann seo.",
"You are not part of any group.": "Chan eil thu nad bhall ann am buidheann sam bith.",
"You are participating in this event anonymously": "Tha thu a gabhail pàirt san tachartas seo gun ainm",
"You are participating in this event anonymously but didn't confirm participation": "Tha thu a gabhail pàirt san tachartas seo gun ainm ach cha do dhearbh thu do chom-pàirteachadh",
"You can add tags by hitting the Enter key or by adding a comma": "S urrainn dhut tagaichean a chur ris s tu a brùthadh air Enter no a cur cromag ris",
"You can pick your timezone into your preferences.": "S urrainn dhut an roinn-tìde a thaghadh sna roghainnean agad.",
"You can try another search term or drag and drop the marker on the map": "S urrainn dhut facal-luirg eile fheuchainn no an comharra a shlaodadh agus leigeil às air a mhapa",
"You can't change your password because you are registered through {provider}.": "Chan urrainn dhut am facal-faire agad atharrachadh air sgàth s gun do clàraich thu le {provider}.",
"You created the discussion {discussion}.": "Chruthaich thu an deasbad {discussion}.",
"You created the event {event}.": "Chruthaich thu an tachartas {event}.",
"You created the folder {resource}.": "Chruthaich thu am pasgan {resource}.",
"You created the group {group}.": "Chruthaich thu am buidheann {group}.",
"You created the post {post}.": "Chruthaich thu am post {post}.",
"You created the resource {resource}.": "Chruthaich thu an goireas {resource}.",
"You deleted the discussion {discussion}.": "Sguab thu às an deasbad {discussion}.",
"You deleted the event {event}.": "Sguab thu às an tachartas {event}.",
"You deleted the folder {resource}.": "Sguab thu às am pasgan {resource}.",
"You deleted the post {post}.": "Sguab thu às am post {post}.",
"You deleted the resource {resource}.": "Sguab thu às an goireas {resource}.",
"You demoted the member {member} to an unknown role.": "Thug thu dreuchd nach aithnich sinn dha {member} (ìsleachadh).",
"You demoted {member} to moderator.": "Rinn thu maor dhe {member} (ìsleachadh).",
"You demoted {member} to simple member.": "Rinn thu ball àbhaisteach dhe {member} (ìsleachadh).",
"You didn't create or join any event yet.": "Cha do chruthaich thu tachartas is chan eil thu a gabhail pàirt ann am fear sam bith fhathast.",
"You don't follow any instances yet.": "Chan eil thu a leantainn air ionstans sam bith fhathast.",
"You excluded member {member}.": "Dhùin thu am ball {member} a-mach.",
"You have been disconnected": "Chaidh do cheangal a bhriseadh",
"You have been invited by {invitedBy} to the following group:": "Thug {invitedBy} cuireadh dhut dhan bhuidheann seo:",
"You have been removed from this group's members.": "Chaidh do thoirt air falbh o bhallrachd a bhuidhinn seo.",
"You have cancelled your participation": "Sguir thu dhen chom-pàirteachadh agad",
"You have one event in {days} days.": "| Bidh {count} tachartas agad sna {days} là(ithean) ri thighinn| Bidh {count} thachartas agad sna {days} là(ithean) ri thighinn| Bidh {count} tachartasan agad sna {days} là(ithean) ri thighinn| Bidh {count} tachartas agad sna {days} là(ithean) ri thighinn",
"You have one event today.": "Bidh {count} tachartas agad an-diugh| Bidh {count} thachartas agad an-diugh| Bidh {count} tachartasan agad an-diugh| Bidh {count} tachartas agad an-diugh",
"You have one event tomorrow.": "Bidh {count} tachartas agad a-màireach| Bidh {count} thachartas agad a-màireach| Bidh {count} tachartasan agad a-màireach| Bidh {count} tachartas agad a-màireach",
"You invited {member}.": "Thug thu cuireadh dha {member}.",
"You may clear all participation information for this device with the buttons below.": "S urrainn dhut gach fiosrachadh mun chom-pàirteachadh a shuathadh bàn on uidheam seo leis na putanan gu h-ìosal.",
"You may now close this window, or {return_to_event}.": "S urrainn dhut an uinneag seo a dhùnadh a-nis no {return_to_event}.",
"You moved the folder {resource} into {new_path}.": "Ghluais thu am pasgan {resource} gu {new_path}.",
"You moved the folder {resource} to the root folder.": "Ghluais thu am pasgan {resource} dhan phasgan freumhach.",
"You moved the resource {resource} into {new_path}.": "Ghluais thu an goireas {resource} gu {new_path}.",
"You moved the resource {resource} to the root folder.": "Ghluais thu an goireas {resource} dhan phasgan freumhach.",
"You need to create the group before you create an event.": "Feumaidh buidheann a chruthachadh mus cruthaich thu tachartas.",
"You need to login.": "Feumaidh tu clàradh a-steach.",
"You posted a comment on the event {event}.": "Chuir thu beachd ris an tachartas {event}.",
"You promoted the member {member} to an unknown role.": "Thug thu dreuchd nach aithnich sinn dha {member} (àrdachadh).",
"You promoted {member} to administrator.": "Rinn thu rianaire dhe {member} (àrdachadh).",
"You promoted {member} to moderator.": "Rinn thu maor dhe {member} (àrdachadh).",
"You renamed the discussion from {old_discussion} to {discussion}.": "Thug thu {discussion} air an deasbad {old_discussion}.",
"You renamed the folder from {old_resource_title} to {resource}.": "Thug thu {resource} air a phasgan {old_resource_title}.",
"You renamed the resource from {old_resource_title} to {resource}.": "Thug thu {resource} air a ghoireas {old_resource_title}.",
"You replied to a comment on the event {event}.": "Fhreagair thu do bheachd ris an tachartas {event}.",
"You replied to the discussion {discussion}.": "Fhreagair thu san deasbad {discussion}.",
"You requested to join the group.": "Dhiarr thu ballrachd sa bhuidheann.",
"You updated the event {event}.": "Dhùraich thu an tachartas {event}.",
"You updated the group {group}.": "Dhùraich thu am buidheann {group}.",
"You updated the member {member}.": "Dhùraich thu am ball {member}.",
"You updated the post {post}.": "Dhùraich thu am post {post}.",
"You were demoted to an unknown role by {profile}.": "Thug {profile} dreuchd nach aithnich sinn dhut (ìsleachadh).",
"You were demoted to moderator by {profile}.": "Rinn {profile} maor dhiot (ìsleachadh).",
"You were demoted to simple member by {profile}.": "Rinn {profile} ball àbhaisteach dhiot (ìsleachadh).",
"You were promoted to administrator by {profile}.": "Rinn {profile} rianaire dhiot (àrdachadh).",
"You were promoted to an unknown role by {profile}.": "Thug {profile} dreuchd nach aithnich sinn dhut (àrdachadh).",
"You were promoted to moderator by {profile}.": "Rinn {profile} maor dhiot (àrdachadh).",
"You will be able to add an avatar and set other options in your account settings.": "S urrainn dhut avatar a chur ris is roghainnean eile a thaghadh ann an roghainnean a chunntais agad.",
"You will be redirected to the original instance": "Thèid d ath-stiùireadh dhan ionstans tùsail",
"You will find here all the events you have created or of which you are a participant.": "Chì thu a h-uile tachartas a chruthaich thu no sa bheil thu a gabhail pàirt an-seo.",
"You wish to participate to the following event": "Tha thu airson pàirt a ghabhail san tachartas a leanas",
"You'll get a weekly recap every Monday for upcoming events, if you have any.": "Gheibh thu cuimhneachan gach madainn DiLuain mu na tachartasan ri thighinn ma tha gin agad.",
"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.": "Feumaidh tu URL a bhuidhinn a thar-chur ach an urrainn do dhaoine pròifil a bhuidhinn inntrigeadh. Cha ghabh am buidheann a lorg le gleus nan lorg aig Mobilizon no le einnseanan-luirg àbhaisteach.",
"You'll receive a confirmation email.": "Gheibh thu post-d dearbhaidh.",
"Your account has been successfully deleted": "Chaidh an cunntas agad a sguabadh às",
"Your account has been validated": "Chaidh an cunntas agad a dhearbhadh",
"Your account is being validated": "Tha an cunntas agad ga dhearbhadh",
"Your account is nearly ready, {username}": "Cha mhòr nach eil an cunntas gad ullamh, {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.": "Cha dèid am baile no sgìre s an t-astar agad a chleachdadh ach airson tachartasan am fagas a mholadh dhut. Bheir astar nan tachartasan an aire air meadhan riaghlaidh na sgìre.",
"Your current email is {email}. You use it to log in.": "Is {email} am post-d làithreach agad. Cleachd e airson clàradh a-steach.",
"Your email": "Am post-d agad",
"Your email address was automatically set based on your {provider} account.": "Chaidh am post-d agad a shuidheachadh gu fèin-obrachail, stèidhichte air a chunntas agad le {provider}.",
"Your email has been changed": "Chaidh am post-d agad atharrachadh",
"Your email is being changed": "Tha am post-d agad ga atharrachadh",
"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.": "Cha dèid am post-d agad a chleachdadh ach airson dearbhadh gur e neach a th annad agus airson naidheachdan a chur thugad mun tachartas seo. S ann NACH DÈID a thar-chur gu ionstansan eile no gu eagraiche an tachartais.",
"Your federated identity": "An dearbh-aithne co-naisgte agad",
"Your participation has been confirmed": "Chaidh an com-pàirteachadh agad a dhearbhadh",
"Your participation has been rejected": "Chaidh an com-pàirteachadh agad a dhiùltadh",
"Your participation has been requested": "Chaidh an com-pàirteachadh agad iarraidh",
"Your participation request has been validated": "Chaidh an com-pàirteachadh agad a dhearbhadh",
"Your participation request is being validated": "Tha an com-pàirteachadh agad ga dhearbhadh",
"Your participation status has been changed": "Chaidh staid do chom-pàirteachaidh atharrachadh",
"Your participation status is saved only on this device and will be deleted one month after the event's passed.": "Cha dèid staid a chom-pàirteachaidh agad a shàbhaladh ach air an uidheam seo agus thèid a sguabadh às mìos às dèidh crìoch an tachartais.",
"Your participation still has to be approved by the organisers.": "Feumaidh na h-eagraichean aontachadh ri do chom-pàirteachadh fhathast.",
"Your participation will be validated once you click the confirmation link into the email, and after the organizer manually validates your participation.": "Bidh do chom-pàirteachadh air a dhearbhadh nuair a bhriogas tu air a cheangal dearbhaidh sa phost-d agus nuair a bhios an t-eagraiche air do chom-pàirteachadh a dhearbhadh a làimh.",
"Your participation will be validated once you click the confirmation link into the email.": "Bidh do chom-pàirteachadh air a dhearbhadh nuair a bhriogas tu air a cheangal dearbhaidh sa phost-d.",
"Your profile will be shown as contact.": "Thèid a phròifil agad a shealltainn mar fhiosrachadh conaltraidh.",
"Your timezone is currently set to {timezone}.": "Chaidh an roinn-tìde agad a shuidheachadh air {timezone}.",
"Your timezone was detected as {timezone}.": "Mhothaich sinn dha {timezone} mar an roinn-tìde agad.",
"Your timezone {timezone} isn't supported.": "Chan eil taic ris an roinn-tìde {timezone} agad.",
"Your upcoming events": "Na tachartasan a tha gu bhith agad",
"[This comment has been deleted by it's author]": "[Chaidh am beachd seo a sguabadh às leis an ùghdar]",
"[This comment has been deleted]": "[Chaidh am beachd seo a sguabadh às]",
"[deleted]": "[air a sguabadh às]",
"a non-existent report": "gearan nach eil ann",
"and {number} groups": "agus {number} buidheann/buidhnean",
"any distance": "astar sam bith",
"as {identity}": "mar {identity}",
"contact uninformed": "gun fhiosrachadh conaltraidh",
"create a group": "buidheann a chruthachadh",
"create an event": "tachartas a chruthachadh",
"default Mobilizon privacy policy": "poileasaidh Mhobilizon thùsail",
"default Mobilizon terms": "teirmichean Mhobilizon tùsail",
"e.g. 10 Rue Jangot": "m.e. 10 Rathad a Chidhe",
"explore the events": "rùrachadh sna tachartasan",
"explore the groups": "rùrachadh sna buidhnean",
"full rules": "riaghailtean slàna",
"iCal Feed": "Inbhir iCal",
"instance rules": "riaghailtean an ionstans",
"more than 1360 contributors": "còrr is 1360 luchd-cuideachaidh",
"profile@instance": "ainm@ionstans",
"report #{report_number}": "gearan #{report_number}",
"return to the event's page": "till gu duilleag an tachartais",
"terms of service": "teirmichean na seirbheise",
"with another identity…": "le dearbh-aithne eile…",
"{approved} / {total} seats": "{approved} / {total} àite(achan)",
"{available}/{capacity} available places": "{available}/{capacity} àite air fhàgail|{available}/{capacity} àite air fhàgail|{available}/{capacity} àiteachan air fhàgail|{available}/{capacity} àite air fhàgail",
"{count} km": "{count} km",
"{count} participants": "{count} chom-pàirtiche| {count} chom-pàirtiche| {count} com-pàirtichean| {count} com-pàirtiche",
"{count} requests waiting": "Tha {count} iarrtas(an) a feitheamh",
"{count} team members": "Buill an sgioba ({count})",
"{group} activity timeline": "Loidhne-ama nan gnìomhachdan aig {group}",
"{group}'s events": "Na tachartasan aig {group}",
"{instanceName} is an instance of the {mobilizon} software.": "Tha {instanceName} na ionstans dhen bhathar-bhog {mobilizon}.",
"{instanceName} is an instance of {mobilizon_link}, a free software built with the community.": "Tha {instanceName} na ionstans dhe {mobilizon_link}, bathar-bog saor a tha ga thogail leis a choimhearsnachd.",
"{member} accepted the invitation to join the group.": "Ghabh {member} ris a bhallrachd sa bhuidheann.",
"{member} rejected the invitation to join the group.": "Dhiùlt {member} a bhallrachd sa bhuidheann.",
"{member} requested to join the group.": "Dhiarr {member} ballrachd sa bhuidheann.",
"{member} was invited by {profile}.": "Fhuair {member} cuireadh o {profile}.",
"{moderator} added a note on {report}": "Chuir {moderator} nòta ri {report}",
"{moderator} closed {report}": "Dhùin {moderator} {report}",
"{moderator} deleted an event named \"{title}\"": "Sguab {moderator} às tachartas air a bheil “{title}”",
"{moderator} has deleted user {user}": "Sguab {moderator} às an cleachdaiche {user}",
"{moderator} has unsuspended profile {profile}": "Ghnìomhaich {moderator} a phròifil {profile}",
"{moderator} marked {report} as resolved": "Chuir {moderator} comharra gun deach {report} fhuasgladh",
"{moderator} reopened {report}": "Dhfhosgail {moderator} {report} a-rithist",
"{moderator} suspended profile {profile}": "Chuir {moderator} a phròifil {profile} à rèim",
"{nb} km": "{nb} km",
"{number} members": "{number} ball/buill",
"{number} organized events": "Tha {number} tachartas ga chur air dòigh|Tha {number} thachartas ga chur air dòigh|Tha {number} tachartasan gan cur air dòigh|Tha {number} tachartas gan cur air dòigh",
"{number} participations": "{number} chom-pàirtiche|{number} chom-pàirtiche|{number} com-pàirtichean|{number} com-pàirtiche",
"{number} posts": "{number} phost|{number} phost|{number} postaichean|{number} post",
"{old_group_name} was renamed to {group}.": "Chaidh {group} a thoirt air {old_group_name}.",
"{profile} (by default)": "{profile} (o thùs)",
"{profile} added the member {member}.": "Chuir {profile} am ball {member} ris.",
"{profile} archived the discussion {discussion}.": "Chuir {profile} an deasbad {discussion} san tasg-lann.",
"{profile} created the discussion {discussion}.": "Chruthaich {profile} an deasbad {discussion}.",
"{profile} created the folder {resource}.": "Chruthaich {profile} am pasgan {resource}.",
"{profile} created the group {group}.": "Chruthaich {profile} am buidheann {group}.",
"{profile} created the resource {resource}.": "Chruthaich {profile} an goireas {resource}.",
"{profile} deleted the discussion {discussion}.": "Sguab {profile} às an deasbad {discussion}.",
"{profile} deleted the folder {resource}.": "Sguab {profile} às am pasgan {resource}.",
"{profile} deleted the resource {resource}.": "Sguab {profile} às an goireas {resource}.",
"{profile} demoted {member} to an unknown role.": "Thug {profile} dreuchd nach aithnich sinn dha {member} (ìsleachadh).",
"{profile} demoted {member} to moderator.": "Rinn {profile} maor dhe {member} (ìsleachadh).",
"{profile} demoted {member} to simple member.": "Rinn {profile} ball àbhaisteach dhe {member} (ìsleachadh).",
"{profile} excluded member {member}.": "Dhùin {profile} am ball {member} a-mach.",
"{profile} moved the folder {resource} into {new_path}.": "Ghluais {profile} am pasgan {resource} gu {new_path}.",
"{profile} moved the folder {resource} to the root folder.": "Ghluais {profile} am pasgan {resource} dhan phasgan freumhach.",
"{profile} moved the resource {resource} into {new_path}.": "Ghluais {profile} an goireas {resource} gu {new_path}.",
"{profile} moved the resource {resource} to the root folder.": "Ghluais {profile} an goireas {resource} dhan phasgan freumhach.",
"{profile} posted a comment on the event {event}.": "Chuir {profile} beachd ris an tachartas {event}.",
"{profile} promoted {member} to administrator.": "Rinn {profile} rianaire dhe {member} (àrdachadh).",
"{profile} promoted {member} to an unknown role.": "Thug {profile} dreuchd nach aithnich sinn dha {member} (àrdachadh).",
"{profile} promoted {member} to moderator.": "Rinn {profile} maor dhe {member} (àrdachadh).",
"{profile} quit the group.": "Dhfhàg {profile} am buidheann.",
"{profile} renamed the discussion from {old_discussion} to {discussion}.": "Thug {profile} {discussion} air an deasbad {old_discussion}.",
"{profile} renamed the folder from {old_resource_title} to {resource}.": "Thug {profile} {resource} air a phasgan {old_resource_title}.",
"{profile} renamed the resource from {old_resource_title} to {resource}.": "Thug {profile} {resource} air a ghoireas {old_resource_title}.",
"{profile} replied to a comment on the event {event}.": "Fhreagair {profile} do bheachd ris an tachartas {event}.",
"{profile} replied to the discussion {discussion}.": "Fhreagair {profile} san deasbad {discussion}.",
"{profile} updated the group {group}.": "Dhùraich {profile} am buidheann {group}.",
"{profile} updated the member {member}.": "Dhùraich {profile} am ball {member}.",
"{title} ({count} todos)": "{title} ({count} ri dhèanamh)",
"{username} was invited to {group}": "Fhuair {username} cuireadh gu {group}",
"© The OpenStreetMap Contributors": "© Luchd-cuideachaidh OpenStreetMap"
}

View File

@ -10,7 +10,9 @@
"<b>Please do not use it in any real way.</b>": "<b>Por favor, non o utilices nun escenario real.</b>",
"<b>{contact}</b> will be displayed as contact.": "<b>{contact}</b> será mostrado como contacto.|<b>{contact}</b> serán mostrados como contactos.",
"@{group}": "@{group}",
"@{username}": "@{username}",
"@{username} ({role})": "@{username} ({role})",
"@{username}'s follow request was accepted": "Foi aceptada a solicitude de seguimento de @{username}",
"@{username}'s follow request was rejected": "A solicitude de seguimento de @{username} foi rexeitada",
"A cookie is a small file containing information that is sent to your computer when you visit a website. When you visit the site again, the cookie allows that site to recognize your browser. Cookies may store user preferences and other information. You can configure your browser to refuse all cookies. However, this may result in some website features or services partially working. Local storage works the same way but allows you to store more data.": "Unha cookie é un pequeno ficheiro que contén información que se envía á túa computadora cando visitas unha web. Cando volves á mesma web, a cookie permite que esa web recoñeza o teu navegador. As cookies poden gardar preferencias da usuaria e outra información. Podes configurar o navegador para rexeitar todas as cookies. Porén, esto podería facer que algúns servizos ou características da web non funcionen correctamente. O almacenaxe local funciona do mesmo xeito pero permite almacenar máis datos.",
"A federated software": "Software federado",
@ -39,6 +41,7 @@
"Actions": "Accións",
"Activated": "Activado",
"Active": "Activa",
"Activity": "Actividade",
"Actor": "Actor",
"Add": "Engadir",
"Add / Remove…": "Engadir / Eliminar…",
@ -56,12 +59,14 @@
"Admin settings successfully saved.": "Gardáronse os axustes de Admin.",
"Administration": "Administración",
"Administrator": "Administradora",
"All activities": "Tódalas actividades",
"All good, let's continue!": "Todo ben, adiante!",
"All group members and other eventual server admins will still be able to view this information.": "Todos os membros do grupo e eventuais administradoras aínda poderán serguir vendo esta información.",
"All the places have already been taken": "Ocupáronse todas as prazas|Queda unha praza dispoñible|quedan {places} prazas dispoñibles",
"All the places have already been taken": "Ocupáronse todas as prazas",
"Allow all comments": "Permitir tódolos comentarios",
"Allow all comments from users with accounts": "Permitir comentarios de usuarias conectadas",
"Allow registrations": "Permitir o rexistro",
"An error has occured. Sorry about that. You may try to reload the page.": "Algo fallou, lamentámolo. Podes intentar recargar a páxina.",
"An error has occurred.": "Aconteceu un erro.",
"An ethical alternative": "Unha alternativa ética",
"An instance is an installed version of the Mobilizon software running on a server. An instance can be run by anyone using the {mobilizon_software} or other federated apps, aka the “fediverse”. This instance's name is {instance_name}. Mobilizon is a federated network of multiple instances (just like email servers), users registered on different instances may communicate even though they didn't register on the same instance.": "Unha instancia é unha versión do software Mobilizon instalada nun servidor. Calquera persoa pode instalar unha instancia usando o {mobilizon_software} ou outras apps federadas, coñecidas como \"fediverso\". O nome desta instancia é {instance_name}. Mobilizon é unha rede federada de múltiples instancias (como os servidores de email), usuarias rexistradas en diferentes servidores que poden comunicarse incluso se non están rexistradas na mesma instancia.",
@ -84,6 +89,7 @@
"Are you sure you want to cancel the event creation? You'll lose all modifications.": "¿Desexas cancelar a creación do evento? Perderás todas as modificacións.",
"Are you sure you want to cancel the event edition? You'll lose all modifications.": "¿Tes a certeza de que queres cancelar a edición do evento? Perderás as modificacións.",
"Are you sure you want to cancel your participation at event \"{title}\"?": "¿Tes a certeza de que queres cancelar a túa participación no evento \"{title}\"?",
"Are you sure you want to delete this entire discussion?": "Tes a certeza de querer eliminar o debate completo?",
"Are you sure you want to delete this event? This action cannot be reverted.": "¿Tes a certeza de que queres eliminar este evento? Esta acción non é reversible.",
"As the event organizer has chosen to manually validate participation requests, your participation will be really confirmed only once you receive an email stating it's being accepted.": "Como a organización do evento escolleu validar manualmente as solicitudes, a túa participación estará realmente confirmada cando recibas un email informándote.",
"Assigned to": "Asignado a",
@ -96,6 +102,7 @@
"Bold": "Resaltado",
"By @{group}": "Por @{group}",
"By @{username}": "Por @{username}",
"By others": "Por outras",
"By {author}": "Por {author}",
"By {group}": "Por {group}",
"By {username} and {group}": "Por {username} e {group}",
@ -115,6 +122,7 @@
"Change my password": "Cambiar contrasinal",
"Change timezone": "Cambiar zona horaria",
"Check your inbox (and your junk mail folder).": "Comproba a caixa de correo (e o cartafol de spam).",
"City or region": "Cidade ou rexión",
"Clear": "Baleirar",
"Clear participation data for all events": "Eliminar os datos de participación para todos os eventos",
"Clear participation data for this event": "Eliminar os datos de participación para este evento",
@ -123,9 +131,11 @@
"Click to upload": "Preme para subir",
"Close": "Pechar",
"Close comments for all (except for admins)": "Pechar comentarios para todos (excepto admins)",
"Close events": "Pechar eventos",
"Closed": "Pechado",
"Comment deleted": "Comentario eliminado",
"Comment from @{username} reported": "Comentario de @{username} denunciado",
"Comment text can't be empty": "O texto do comentario non pode estar baleiro",
"Comments": "Comentarios",
"Comments are closed for everybody else.": "Os comentarios están pechados para todas.",
"Comments have been closed.": "Non se permite comentar.",
@ -140,6 +150,7 @@
"Contact": "Contactar",
"Continue editing": "Continuar editando",
"Cookies and Local storage": "Cookies e Almacenaxe Local",
"Copy details to clipboard": "Copiar detalles ao portapapeis",
"Country": "País",
"Create": "Crear",
"Create a calc": "Crear folla cálculo",
@ -159,6 +170,7 @@
"Create my event": "Crear o meu evento",
"Create my group": "Crear o meu grupo",
"Create my profile": "Crear o meu perfil",
"Create new links": "Crear novas ligazóns",
"Create resource": "Crear recurso",
"Create the discussion": "Crear o debate",
"Create to-do lists for all the tasks you need to do, assign them and set due dates.": "Crear listas de tarefas para todo o que precisas facer, asignalas e establecer datas de entrega.",
@ -187,11 +199,13 @@
"Delete Event": "Borrar evento",
"Delete account": "Borrar conta",
"Delete conversation": "Eliminar conversa",
"Delete discussion": "Eliminar debate",
"Delete event": "Borrar evento",
"Delete everything": "Borrar todo",
"Delete group": "Eliminar grupo",
"Delete my account": "Eliminar a miña conta",
"Delete post": "Eliminar publicación",
"Delete this discussion": "Eliminar este debate",
"Delete this identity": "Eliminar esta identidade",
"Delete your identity": "Elimina a túa identidade",
"Delete {eventTitle}": "Eliminar {eventTitle}",
@ -238,6 +252,9 @@
"Enter your own privacy policy. HTML tags allowed. The {mobilizon_privacy_policy} is provided as template.": "Escribe a túa propia política de privacidade. Permítese marcado HTML. A {mobilizon_privacy_policy} proporciónase como modelo.",
"Enter your own terms. HTML tags allowed. The {mobilizon_terms} are provided as template.": "Escribe os teus propios termos. Permítese o marcado HTML. Os {mobilizon_terms} proporciónanse como modelo.",
"Error": "Erro",
"Error details copied!": "Detalles do erro copiados!",
"Error message": "Mensaxe do erro",
"Error stacktrace": "Informe do erro",
"Error while changing email": "Fallo ó cambiar o email",
"Error while communicating with the server.": "Fallo de comunicación co servidor.",
"Error while login with {provider}. Retry or login another way.": "Erro ó conectar con {provider}. Reintentar ou conectar doutro xeito.",
@ -288,6 +305,7 @@
"From the {startDate} at {startTime} to the {endDate}": "Desde o {startDate} ás {startTime} ata o {endDate}",
"From the {startDate} at {startTime} to the {endDate} at {endTime}": "Desde o {startDate} ás {startTime} ata o {endDate} ás {endTime}",
"From the {startDate} to the {endDate}": "Desde o {startDate} ata o {endDate}",
"From yourself": "De ti mesma",
"Gather ⋅ Organize ⋅ Mobilize": "Xunta - Organiza - Mobiliza",
"General": "Xeral",
"General information": "Información xeral",
@ -375,6 +393,7 @@
"Last IP adress": "Último enderezo IP",
"Last group created": "Último grupo creado",
"Last published event": "Último evento publicado",
"Last published events": "Últimos eventos publicados",
"Last sign-in": "Última conexión",
"Last week": "Última semana",
"Latest posts": "Últimas publicacións",
@ -392,6 +411,7 @@
"Limited number of places": "Número de prazas limitado",
"List title": "Título da lista",
"Load more": "Cargar máis",
"Load more activities": "Cargar máis actividades",
"Loading comments…": "Cargando comentarios…",
"Local": "Local",
"Locality": "Localidade",
@ -445,6 +465,7 @@
"New members": "Novos membros",
"New note": "Nova nota",
"New password": "Novo contrasinal",
"New post": "Nova publicación",
"New profile": "Novo perfil",
"Next": "Seguinte",
"Next month": "O mes seguinte",
@ -460,6 +481,7 @@
"No follower matches the filters": "Ningunha seguidora supera o filtro",
"No group found": "Non hai grupos",
"No groups found": "Non se atopa ningún grupo",
"No information": "Sen información",
"No instance follows your instance yet.": "Aínda non te segue ningunha instancia.",
"No instance to approve|Approve instance|Approve {number} instances": "Ningunha instancia que aprobar|Aprobar instancia|Aprobar {number} instancias",
"No instance to reject|Reject instance|Reject {number} instances": "Ningunha instancia que rexeitar|Rexeitar instancia|Rexeitar {number} instancias",
@ -468,6 +490,7 @@
"No member matches the filters": "Ningún membro concorda cos filtros",
"No message": "Sen mensaxe",
"No moderation logs yet": "Sen rexistros da moderación",
"No more activity to display.": "Sen máis actividade que amosar.",
"No one is going to this event": "Ninguén vai a este evento|Unha persoa vai ir|{going} persoas van ir",
"No open reports yet": "Aínda non se presentaron denuncias",
"No participant matches the filters": "Ningún participante para estos filtros",
@ -491,6 +514,7 @@
"Nothing to see here": "Nada por aquí",
"Notification before the event": "Notificación previa ó evento",
"Notification on the day of the event": "Notificación o día do evento",
"Notifications": "Notificacións",
"Notifications for manually approved participations to an event": "Notificacións para participacións no evento aprobadas manualmente",
"Now, create your first profile:": "Agora, crea o teu primeiro perfil:",
"Number of places": "Número de prazas",
@ -500,6 +524,7 @@
"On {date} ending at {endTime}": "O {date} remantando ás {endTime}",
"On {date} from {startTime} to {endTime}": "O {date} desde {startTime} ás {endTime}",
"On {date} starting at {startTime}": "O {date} comezando ás {startTime}",
"On {instance}": "En {instance}",
"Only accessible through link": "Accesible só a través da ligazón",
"Only accessible through link (private)": "Só accesible desde a ligazón {private}",
"Only accessible to members of the group": "Accesible só para membros do grupo",
@ -508,6 +533,8 @@
"Only group members can access discussions": "Só os membros do grupo poden acceder ás conversas",
"Only group moderators can create, edit and delete posts.": "Só as moderadoras do grupo poden crear, editar e eliminar publicacións.",
"Open": "Abrir",
"Open a topic on our forum": "Abrir un tema no noso foro",
"Open an issue on our bug tracker (advanced users)": "Abrir un informe no noso seguimento de fallos (usuarias avanzadas)",
"Opened reports": "Denuncias abertas",
"Or": "Ou",
"Organize and take action, freely": "Organiza e empodérate, libremente",
@ -538,11 +565,13 @@
"Password reset": "Restablecer contrasinal",
"Past events": "Eventos pasados",
"Pending": "Pendente",
"Personal feeds": "Fontes personais",
"Pick": "Escoller",
"Pick a group": "Escolle un grupo",
"Pick a profile or a group": "Escolle un perfil ou un grupo",
"Pick an identity": "Escolle unha identidade",
"Pick an instance": "Escolle unha instancia",
"Please add as many details as possible to help identify the problem.": "Por favor engade tódolos detalles posibles para axudarnos a identificar o problema.",
"Please check your spam folder if you didn't receive the email.": "Comproba o cartafol de spam se non recibiches o email.",
"Please contact this instance's Mobilizon admin if you think this is a mistake.": "Contacta coa administración da instancia Mobilizon se cres que é un erro.",
"Please do not use it in any real way.": "Non o utilices para eventos reais.",
@ -563,6 +592,7 @@
"Privacy policy": "Política de privacidade",
"Private event": "Evento privado",
"Private feeds": "Fontes privadas",
"Profile feeds": "Fontes do perfil",
"Profiles": "Perfís",
"Profiles and federation": "Perfís e federación",
"Promote": "Promocionar",
@ -585,6 +615,7 @@
"Redirecting to content…": "Redirixindo ó contido…",
"Redirecting to event…": "Redirixindo ó evento…",
"Refresh profile": "Actualiza perfil",
"Regenerate new links": "Recrear novas ligazóns",
"Region": "Rexión",
"Register": "Rexistar",
"Register an account on Mobilizon!": "Rexistrar unha conta en Mobilizon!",
@ -636,6 +667,7 @@
"Searching…": "Buscando…",
"Search…": "Buscar…",
"Select a language": "Escolle idioma",
"Select a radius": "Elixe o radio",
"Select a timezone": "Escolle zona horaria",
"Select languages": "Escolle idiomas",
"Send email": "Enviar email",
@ -664,6 +696,7 @@
"Suspend group": "Suspende grupo",
"Suspended": "Suspendida",
"Task lists": "Listas de tarefas",
"Technical details": "Detalles técnicos",
"Tentative": "Provisional",
"Tentative: Will be confirmed later": "Tentativa: será confirmada máis tarde",
"Terms": "Termos",
@ -682,23 +715,40 @@
"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.": "O organizador do evento aproba manualmente as participacións. Como escolleches participar sen crear unha conta, por favor explica a razón do teu desexo de participar.",
"The event title will be ellipsed.": "O título do evento será acurtado.",
"The event will show as attributed to this group.": "O evento aparecerá atribuído a este grupo.",
"The event will show as attributed to this profile.": "O evento aparecerá como atribuído a este perfil.",
"The event will show as attributed to your personal profile.": "O evento aparecerá atribuído ó teu perfil persoal.",
"The event will show the group as organizer.": "O evento mostrará ó grupo como organizador.",
"The event {event} was created by {profile}.": "O evento {event} foi creado por {profile}.",
"The event {event} was deleted by {profile}.": "{profile} eliminou o evento {event}.",
"The event {event} was updated by {profile}.": "{profile} actualizou o evento {evento}.",
"The events you created are not shown here.": "Os eventos que ti creaches non se mostran aquí.",
"The group can now be joined by anyone.": "Agora calquera pode unirse ao grupo.",
"The group can now only be joined with an invite.": "Agora só se pode acceder ao grupo cun convite.",
"The group will be publicly listed in search results and may be suggested in the explore section. Only public informations will be shown on it's page.": "Este grupo aparecerá en resultados de buscas e podería ser suxerido na sección descubrir. Só se mostrará información pública nesta páxina.",
"The group's avatar was changed.": "Cambiouse o avatar do grupo.",
"The group's banner was changed.": "Cambiouse a cabeceira do grupo.",
"The group's physical address was changed.": "Cambiouse o enderezo físico do grupo.",
"The group's short description was changed.": "Cambiouse a descrición curta do grupo.",
"The instance administrator is the person or entity that runs this Mobilizon instance.": "A administradora da instancia é a persoa ou entidade que xestiona a instancia Mobilizon.",
"The member was removed from the group {group}": "A usuaria foi eliminada do grupo {group}",
"The only way for your group to get new members is if an admininistrator invites them.": "O único xeito para que o grupo teña novos membros e a través de convites das administradoras.",
"The organiser has chosen to close comments.": "A organización escolleu pechar os comentarios.",
"The page you're looking for doesn't exist.": "A páxina que buscas non existe.",
"The password was successfully changed": "Cambiouse correctamente o contrasinal",
"The post {post} was created by {profile}.": "{profile} creou a publicación {post}.",
"The post {post} was deleted by {profile}.": "A publicación {post} foi eliminada por {profile}.",
"The post {post} was updated by {profile}.": "A publicación {post} foi actualizada por {profile}.",
"The report will be sent to the moderators of your instance. You can explain why you report this content below.": "A denuncia vaise enviar á moderación da instancia. Podes explicar aquí abaixo as razóns para denunciar.",
"The technical details of the error can help developers solve the problem more easily. Please add them to your feedback.": "Os detalles técnicos do erro axudan ás desenvolvedoras a solucionar o problema máis facilmente. Engádeos ao teu informe.",
"The {default_privacy_policy} will be used. They will be translated in the user's language.": "Vaise usar a {default_privacy_policy} e será traducida ó idioma da usuaria.",
"The {default_terms} will be used. They will be translated in the user's language.": "Serán utilizados os {default_terms}. Serán traducidos ó idioma da usuaria.",
"There are {participants} participants.": "Hai {participants} participantes.",
"There is no activity yet. Start doing some things to see activity appear here.": "Aínda non hai actividade. Aparecerán aquí as cousas que vaias facendo.",
"There will be no way to recover your data.": "Non hai xeito de recuperar os teus datos.",
"There's no discussions yet": "Aínda non hai conversas",
"These events may interest you": "Estos eventos poderían interesarche",
"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.": "Estas fontes conteñen datos de eventos para calquera dos teus perfís nos que es participante ou creadora. Deberías mantelas privadas. Podes atopar fontes para perfís específicos en cada páxina de edición do perfil.",
"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.": "Estas fontes conteñen datos dos eventos dos que este perfil é participante ou creador. Deberías mantelas privadas. Podes atopar fontes nos axustes de notificacións para tódolos teus perfís.",
"This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "Esta instancia Mobilizon e os organizadores do evento permiten a participación anónima, pero requiren validación a través dun email.",
"This URL is not supported": "O URL non está soportado",
"This event has been cancelled.": "Este evento foi cancelado.",
@ -739,6 +789,7 @@
"Type or select a date…": "Escribe o elixe unha data…",
"URL": "URL",
"URL copied to clipboard": "URL copiado ó portapapeis",
"Unable to copy to clipboard": "Non se puido copiar ao portapapeis",
"Unable to detect timezone.": "Non se detectou a zona horaria.",
"Unable to load event for participation. The error details are provided below:": "Non se puido cargar a participación no evento. Aquí abaixo tes detalles do erro:",
"Unable to save your participation in this browser.": "Non se puido gardar a túa participación neste navegador.",
@ -747,6 +798,7 @@
"Unknown": "Descoñecido",
"Unknown actor": "Actor descoñecido",
"Unknown error.": "Erro descoñecido.",
"Unknown value for the openness setting.": "Axuste descoñecido para o acceso ao grupo.",
"Unsaved changes": "Cambios non gardados",
"Unset group": "Sacar do grupo",
"Unsuspend": "Reactivar",
@ -771,12 +823,16 @@
"View event page": "Ver páxina do evento",
"View everything": "Velo todo",
"View page on {hostname} (in a new window)": "Ver páxina en {hostname} (nova ventá)",
"Visibility was set to an unknown value.": "Estableceuse a visibilidade a un valor descoñecido.",
"Visibility was set to private.": "Estableceuse a visibilidade como privada.",
"Visibility was set to public.": "Estableceuse a visibilidade como pública.",
"Visible everywhere on the web": "Visible para todas na internet",
"Visible everywhere on the web (public)": "Visible en toda a web (público)",
"Waiting for organization team approval.": "Agardando pola aprobación da organización.",
"Warning": "Aviso",
"We asked professional designers to help us develop our vision for Mobilizon. We took time to study the {digital_habits} in order to understand the features they need to gather, organize, and mobilize so that right from its conception, Mobilizon would {fit_needs_uses_people} who are going to use it.": "Pedímoslle a deseñadoras profesionais que nos axuden a desenvolver as nosas ideas para Mobilizon. Levounos tempo estudar os {digital_habits} para poder comprender as características que se precisan para xuntar, organizar e mobilizar e que desde os seus comezos Mobilizon {fit_needs_uses_people} das persoas que a usen.",
"We cant change the world from within Facebook. The tool we dream of, surveillance capitalism corporations wont develop, as they cannot profit from it. This is an opportunity to build something better, by taking another approach.": "Non podemos cambiar o mundo desde dentro de Facebook. A ferramenta que precisamos non nola vai dar o capitalismo de vixilancia, porque non pode sacar cartos dela. Esta é unha oportunidade para construír algo mellor, adoptando un enfoque diferente.",
"We improve this software thanks to your feedback. To let us know about this issue, two possibilities (both unfortunately require user account creation):": "Melloramos este software grazas á túa colaboración. Infórmanos acerca deste asunto, tes dúas posibilidades (desafortunadamente as dúas requiren a creación dunha conta):",
"We just sent an email to {email}": "Enviámosche un email a {email}",
"We use your timezone to make sure you get notifications for an event at the correct time.": "Usamos a túa zona horaria para asegurarnos de que recibes as notificacións para o evento na hora correcta.",
"We want to develop a <b>digital common</b> that everyone can make their own, one which respects <b>privacy and activism by design</b>.": "Queremos desenvolver un <b>ben común dixital</b> que todas poidamos desfrutar, que por deseño respecte a <b>privacidade e o activismo</b>.",
@ -789,6 +845,7 @@
"Welcome back {username}!": "Benvida {username}!",
"Welcome back!": "Benvida!",
"Welcome to Mobilizon, {username}!": "Benvida a Mobilizon, {username}!",
"What can I do to help?": "Que podo facer para axudar?",
"When a moderator from the group creates an event and attributes it to the group, it will show up here.": "Aquí aparecerá un evento cando un moderador do grupo o cree e o atribúa ó grupo.",
"When someone from the group creates an event and attributes it to the group, it will show up here.": "Cando alguén do grupo crea un evento e o atribúe ó grupo, aparecerá aquí.",
"Who can view this event and participate": "Quen pode ver e participar neste evento",
@ -796,8 +853,13 @@
"Who published {number} events": "Que publicaron {number} eventos",
"Why create an account?": "Por que crear unha conta?",
"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.": "Permitirá mostrar e xestionar o estado da túa participación na páxina do evento cando utilices este dispositivo. Quita a marca se estás a usar un dispositivo público.",
"Within {number} kilometers of {place}": "|Menos dun quilómetro de {place}|A menos de {number} quilometros de {place}",
"World map": "Mapa do mundo",
"Write something…": "Escribe algo…",
"Yesterday": "Onte",
"You accepted the invitation to join the group.": "Aceptaches o convite para unirte ao grupo.",
"You added the member {member}.": "Engadiches a {member}.",
"You archived the discussion {discussion}.": "Arquivaches o debate {discussion}.",
"You are not an administrator for this group.": "Non es administradora deste grupo.",
"You are not part of any group": "Non formas parte de ningún grupo",
"You are not part of any group.": "Non formas parte de ningún grupo.",
@ -808,9 +870,24 @@
"You can pick your timezone into your preferences.": "Podes escoller a zona horaria nas preferencias.",
"You can try another search term or drag and drop the marker on the map": "Podes intentalo con outro termo de busca ou arrastrar e soltar a marca no mapa",
"You can't change your password because you are registered through {provider}.": "Non podes cambiar o contrasinal porque estás rexistrada en {provider}.",
"You created the discussion {discussion}.": "Creaches o debate {discussion}.",
"You created the event {event}.": "Creaches o evento {event}.",
"You created the folder {resource}.": "Creaches o cartafol {resource}.",
"You created the group {group}.": "Creaches o grupo {group}.",
"You created the post {post}.": "Creaches a publicación {post}.",
"You created the resource {resource}.": "Creaches o recurso {resource}.",
"You deleted the discussion {discussion}.": "Eliminaches o debate {discussion}.",
"You deleted the event {event}.": "Eliminaches o evento {evento}.",
"You deleted the folder {resource}.": "Eliminaches o cartafol {resource}.",
"You deleted the post {post}.": "Eliminaches a publicación {post}.",
"You deleted the resource {resource}.": "Eliminaches o recurso {resource}.",
"You demoted the member {member} to an unknown role.": "Degradaches a {member} a un rol descoñecido.",
"You demoted {member} to moderator.": "Degradaches a {member} a moderadora.",
"You demoted {member} to simple member.": "Degradaches a {member] a membresía básica.",
"You didn't create or join any event yet": "Non creaches nin te uniches a ningún evento",
"You didn't create or join any event yet.": "Aínda non te uniches nin creaches un evento.",
"You don't follow any instances yet.": "Aínda non segues ningunha instancia.",
"You excluded member {member}.": "Excluíches a {member}.",
"You have been disconnected": "Desconectáronte",
"You have been invited by {invitedBy} to the following group:": "Foches convidada por {invitedBy} ó seguinte grupo:",
"You have been removed from this group's members.": "Sacáronte deste grupo.",
@ -818,22 +895,51 @@
"You have one event in {days} days.": "Non tes eventos en {days} días | Tes un evento en {days} días. | Tes {count} eventos en {days} días",
"You have one event today.": "Hoxe non tes eventos | Hoxe tes un evento. | Tes {count} eventos hoxe",
"You have one event tomorrow.": "Non tes eventos mañán | Tes un evento mañán. | Tes {count] eventos mañán",
"You invited {member}.": "Convidaches a {member}.",
"You may clear all participation information for this device with the buttons below.": "Podes eliminar a información da participación neste dispositivo cos botóns inferiores.",
"You may now close this window, or {return_to_event}.": "Xa podes pechar esta ventá, ou {return_to_event}.",
"You may now close this window.": "Xa podes pechar esta ventá.",
"You may show some members as contacts.": "Podes mostrar algúns membros como contactos.",
"You moved the folder {resource} into {new_path}.": "Moveches o cartafol {resource} a {new_path}.",
"You moved the folder {resource} to the root folder.": "Moveches o cartafol {resource} ao cartafol raíz.",
"You moved the resource {resource} into {new_path}.": "Moveches o recurso {resource} a {new_path}.",
"You moved the resource {resource} to the root folder.": "Moveches o recurso {resource} ao cartafol raíz.",
"You need to create the group before you create an event.": "Tes que crear un grupo antes de crear un evento.",
"You need to login.": "Teste que conectar.",
"You posted a comment on the event {event}.": "Publicaches un comentario no evento {event}.",
"You promoted the member {member} to an unknown role.": "Adxudicácheslle a {member} un rol descoñecido.",
"You promoted {member} to administrator.": "Fixeches que {member} sexa administradora.",
"You promoted {member} to moderator.": "Fixeches que {member} sexa moderadora.",
"You renamed the discussion from {old_discussion} to {discussion}.": "Cambiacheslle o nome ao debate de {old_discussion} a {discussion}.",
"You renamed the folder from {old_resource_title} to {resource}.": "Cambiaches o nome do cartafol de {old_resource_title} a {resource}.",
"You renamed the resource from {old_resource_title} to {resource}.": "Cambiaches o nome do recurso de {old_resource_title} a {resource}.",
"You replied to a comment on the event {event}.": "Respondeches a un comentario no evento {event}.",
"You replied to the discussion {discussion}.": "Respondeches ao debate {discussion}.",
"You requested to join the group.": "Solicitaches unirte ao grupo.",
"You updated the event {event}.": "Actualizaches o evento {event}.",
"You updated the group {group}.": "Actualizaches o grupo {group}.",
"You updated the member {member}.": "Actualizaches a partipante {member}.",
"You updated the post {post}.": "Actualizaches a publicación {post}.",
"You were demoted to an unknown role by {profile}.": "Foches degradada a un rol descoñecido por {profile].",
"You were demoted to moderator by {profile}.": "Foches degradada a moderador por {profile}.",
"You were demoted to simple member by {profile}.": "Foches degradada a usuaria básica por {profile}.",
"You were promoted to administrator by {profile}.": "Foches promovida a administradora por {profile}.",
"You were promoted to an unknown role by {profile}.": "Foches promovida a un rol descoñecido por {profile}.",
"You were promoted to moderator by {profile}.": "Foches promovida a moderadora por {profile}.",
"You will be able to add an avatar and set other options in your account settings.": "Poderás engadir un avatar e establecer outras opcións nos axustes da conta.",
"You will be redirected to the original instance": "Vas ser redirixida á instancia orixinal",
"You will find here all the events you have created or of which you are a participant.": "Atoparás aquí tódolos eventos que creaches ou nos que vas participar.",
"You wish to participate to the following event": "Queres participar no seguinte evento",
"You'll get a weekly recap every Monday for upcoming events, if you have any.": "Recibirás un resumen semanal cada Luns para os próximos eventos, se os tes.",
"You'll need to change the URLs where there were previously entered.": "Precisarás cambiar os URLs alá onde fosen previamente utilizados.",
"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.": "Precisarás transmitir o URL do grupo para que a xente poida acceder ó perfil do grupo. O grupo non será descubrible nas buscas de Mobilizon ou buscadores normais.",
"You'll receive a confirmation email.": "Recibirás un email de confirmación.",
"Your account has been successfully deleted": "A túa conta foi eliminada",
"Your account has been validated": "A túa conta foi validada",
"Your account is being validated": "A túa conta está sendo validada",
"Your account is nearly ready, {username}": "A túa conta xa case está preparada, {username}",
"Your city or region and the radius will only be used to suggest you events nearby.": "A túa cidade ou rexión e o radio que se utilizará para suxerirche eventos na proximidade.",
"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 túa cidade ou rexión e o radio só se utilizará para suxerirche eventos próximos. O radio do evento será considerado desde o centro da área administrativa.",
"Your current email is {email}. You use it to log in.": "O teu email é {email}. Utilízao para conectarte.",
"Your email": "O teu email",
"Your email address was automatically set based on your {provider} account.": "O enderezo de correo estableceuse automáticamente baseándonos na conta {provider}.",
@ -855,6 +961,7 @@
"Your timezone is currently set to {timezone}.": "Zona horaria actual establecida a {timezone}.",
"Your timezone was detected as {timezone}.": "Zona horaria detectada como {timezone}.",
"Your timezone {timezone} isn't supported.": "A túa zona horaria {timezone} non está soportada.",
"Your upcoming events": "Os teus próximos eventos",
"[This comment has been deleted by it's author]": "[Este comentario foi eliminado pola súa autora]",
"[This comment has been deleted]": "[Este comentario foi eliminado]",
"[deleted]": "[eliminado]",
@ -890,12 +997,19 @@
"with another identity…": "con outra identidade…",
"{approved} / {total} seats": "{approved} / {total} prazas",
"{available}/{capacity} available places": "Non quedan prazas|{available}/{capacity} prazas dispoñibles",
"{count} km": "{count} km",
"{count} participants": "Sen participantes | Un participante | {count} participantes",
"{count} requests waiting": "{count} solicitudes agardando",
"{count} team members": "{count} membros do equipo",
"{group} activity timeline": "Cronoloxía de actividade de {group}",
"{group}'s events": "Eventos de {group}",
"{instanceName} is an instance of the {mobilizon} software.": "{instanceName} é unha instancia do software {mobilizon}.",
"{instanceName} is an instance of {mobilizon_link}, a free software built with the community.": "{instanceName} é unha instancia de {mobilizon_link}, software libre feito para a comunidade.",
"{license} guarantees {respect} of the people who use it. Since {source}, anyone can audit it, which guarantees its transparency.": "{license} garante o {respect} polas persoas que a usan. Desde {source}, calquera pode auditar o código, o que garante a súa transparencia.",
"{member} accepted the invitation to join the group.": "{member} aceptou o convite para unirse ao grupo.",
"{member} rejected the invitation to join the group.": "{member} rexeitou o convite para unirse ao grupo.",
"{member} requested to join the group.": "{member} solicitou unirse ao grupo.",
"{member} was invited by {profile}.": "{profile} convidou a {member}.",
"{moderator} added a note on {report}": "{moderator} engadeu unha nota a {report}",
"{moderator} closed {report}": "{moderator} pechou {report}",
"{moderator} deleted an event named \"{title}\"": "{moderator} eliminou o evento de nome \"{title}\"",
@ -909,7 +1023,37 @@
"{number} organized events": "Sen eventos organizados|Un evento organizado|{number} eventos organizados",
"{number} participations": "Sen participacións|Unha participación|{number} participacións",
"{number} posts": "Sen publicacións|Unha publicación|{number} publicacións",
"{old_group_name} was renamed to {group}.": "{old_group_name} mudou de nome a {group}.",
"{profile} (by default)": "{profile} (by default)",
"{profile} added the member {member}.": "{profile} engadiu a {member}.",
"{profile} archived the discussion {discussion}.": "{profile} arquivou o debate {discussion}.",
"{profile} created the discussion {discussion}.": "{profile} creou o debate {discussion}.",
"{profile} created the folder {resource}.": "{profile} creou o cartafol {resource}.",
"{profile} created the group {group}.": "{profile} creou o grupo {group}.",
"{profile} created the resource {resource}.": "{profile} creou o recurso {resource}.",
"{profile} deleted the discussion {discussion}.": "{profile} eliminou o debate {discussion}.",
"{profile} deleted the folder {resource}.": "{profile} eliminou o cartafol {resource}.",
"{profile} deleted the resource {resource}.": "{profile} eliminou o recurso {resource}.",
"{profile} demoted {member} to an unknown role.": "{profile} degradou a {member} a un rol descoñecido.",
"{profile} demoted {member} to moderator.": "{profile} degradou a {member} a moderadora.",
"{profile} demoted {member} to simple member.": "{profile} degradou a {member] a simple participante.",
"{profile} excluded member {member}.": "{profile} excluíu a {member}.",
"{profile} moved the folder {resource} into {new_path}.": "{profile} moveu o cartafol {resource} a {new_path}.",
"{profile} moved the folder {resource} to the root folder.": "{profile} moveu o cartafol {resource} ao cartafol raíz.",
"{profile} moved the resource {resource} into {new_path}.": "{profile} moveu o recurso {resource} a {new_path}.",
"{profile} moved the resource {resource} to the root folder.": "{profile} moveu o recurso {recurso} ao cartafol raíz.",
"{profile} posted a comment on the event {event}.": "{profile} publicou un comentario no evento {event}.",
"{profile} promoted {member} to administrator.": "{profile} promocionou a {member} a administradora.",
"{profile} promoted {member} to an unknown role.": "{profile} promocionou a {member} a un rol descoñecido.",
"{profile} promoted {member} to moderator.": "{profile} promocionou a {member} a moderadora.",
"{profile} quit the group.": "{profile} deixou o grupo.",
"{profile} renamed the discussion from {old_discussion} to {discussion}.": "{profile} cambioulle o nome ao debate de {old_discussion} to {discussion}.",
"{profile} renamed the folder from {old_resource_title} to {resource}.": "{profile} cambioulle o nome ao cartafol de {old_resource_title} a {resource}.",
"{profile} renamed the resource from {old_resource_title} to {resource}.": "{profile} cambioulle o nome ao recurso de {old_resource_title} a {resource}.",
"{profile} replied to a comment on the event {event}.": "{profile} respondeu a un comentario no evento {event}.",
"{profile} replied to the discussion {discussion}.": "{profile} respondeu ao debate {discussion}.",
"{profile} updated the group {group}.": "{profile} actualizou o grupo {group}.",
"{profile} updated the member {member}.": "{profile} actualizou a participante {member].",
"{title} ({count} todos)": "{title} ({count} pendentes)",
"{username} was invited to {group}": "{username} convidoute a {group}",
"© The OpenStreetMap Contributors": "© The OpenStreetMap Contributors"

View File

@ -9,7 +9,10 @@
"+ Start a discussion": "+ Megbeszélés indítása",
"<b>{contact}</b> will be displayed as contact.": "<b>{contact}</b> meg lesz jelenítve kapcsolatként.|<b>{contact}</b> meg lesznek jelenítve kapcsolatokként.",
"@{group}": "@{group}",
"@{username}": "@{username}",
"@{username} ({role})": "@{username} ({role})",
"@{username}'s follow request was accepted": "@{username} követési kérése el lett fogadva",
"@{username}'s follow request was rejected": "@{username} követési kérése vissza lett utasítva",
"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.": "A süti egy információt tartalmazó kis fájl, amelyet akkor küld el a számítógépe, ha meglátogat egy weboldalt. Amikor újra meglátogatja a weboldalt, akkor a süti lehetővé teszi annak az oldalnak, hogy felismerje a böngészőjét. A sütik tárolhatnak felhasználói beállításokat vagy egyéb információkat. Beállíthatja a böngészőjét úgy, hogy utasítson vissza minden sütit. Azonban ez azt eredményezheti, hogy néhány weboldalon a funkciók vagy a szolgáltatások csak részlegesen működnek. A helyi tároló hasonlóan működik, de több adat tárolását teszi lehetővé.",
"A federated software": "Egy föderált szoftver",
"A place for your code of conduct, rules or guidelines. You can use HTML tags.": "Egy hely a magatartási kódexének, szabályainak és irányelveinek. Használhat HTML címkéket.",
@ -37,6 +40,7 @@
"Actions": "Műveletek",
"Activated": "Aktiválva",
"Active": "Aktív",
"Activity": "Tevékenység",
"Actor": "Szereplő",
"Add": "Hozzáadás",
"Add / Remove…": "Hozzáadás vagy eltávolítás…",
@ -54,11 +58,13 @@
"Admin settings successfully saved.": "Az adminisztrátori beállítások sikeresen mentve.",
"Administration": "Adminisztráció",
"Administrator": "Adminisztrátor",
"All activities": "Összes tevékenység",
"All good, let's continue!": "Minden rendben, menjünk tovább!",
"All group members and other eventual server admins will still be able to view this information.": "Az összes csoporttag és más végleges kiszolgáló rendszergazdák továbbra is képesek lesznek megtekinteni ezt az információt.",
"All the places have already been taken": "Az összes hely elfogyott|Egy hely még elérhető|{places} hely még elérhető",
"All the places have already been taken": "Már az összes helyet elfoglalták",
"Allow all comments from users with accounts": "Az összes hozzászólás engedélyezése a bejelentkezett felhasználóktól",
"Allow registrations": "Regisztrációk engedélyezése",
"An error has occured. Sorry about that. You may try to reload the page.": "Hiba történt. Sajnáljuk. Megpróbálhatja újratölteni az oldalt.",
"An ethical alternative": "Egy etikus alternatíva",
"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 on your behalf, automatically and remotely.": "Az „alkalmazásprogramozási felület” vagy „API” egy olyan kommunikációs protokoll, amely lehetővé teszi a szoftverkomponensek számára az egymással történő kommunikációt. A Mobilizon API például lehetővé teheti a harmadik féltől származó szoftveres eszközök számára, hogy kommunikáljanak a Mobilizon példányokkal és végrehajtsanak bizonyos műveleteket, mint például események automatikus és távolról történő beküldését az Ön nevében.",
@ -80,9 +86,11 @@
"Are you sure you want to cancel the event creation? You'll lose all modifications.": "Biztosan meg szeretné szakítani az esemény létrehozását? Az összes módosítást el fogja veszíteni.",
"Are you sure you want to cancel the event edition? You'll lose all modifications.": "Biztosan meg szeretné szakítani az esemény szerkesztését? Az összes módosítást el fogja veszíteni.",
"Are you sure you want to cancel your participation at event \"{title}\"?": "Biztosan meg szeretné szakítani a(z) „{title}” eseményen való részvételét?",
"Are you sure you want to delete this entire discussion?": "Biztosan törölni szeretné ezt a teljes megbeszélést?",
"Are you sure you want to delete this event? This action cannot be reverted.": "Biztosan törölni szeretné ezt az eseményt? Ezt a műveletet nem lehet visszavonni.",
"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.": "Mivel az esemény szervezője a részvételi kérések kézi ellenőrzését választotta, az Ön részvétele csak akkor lesz valóban megerősítve, ha megkapja azt az e-mailt, amely azt állítja, hogy el lett fogadva.",
"Assigned to": "Hozzárendelve ehhez",
"Atom feed for events and posts": "Atom hírforrás az eseményekhez és a hozzászólásokhoz",
"Avatar": "Profilkép",
"Back to previous page": "Vissza az előző oldalra",
"Banner": "Reklámcsík",
@ -91,6 +99,7 @@
"Bold": "Félkövér",
"By @{group}": "@{group} által",
"By @{username}": "@{username} által",
"By others": "Másoktól származó",
"By {author}": "{author} által",
"By {group}": "{group} által",
"Can be an email or a link, or just plain text.": "Lehet egy e-mail-cím vagy egy hivatkozás, vagy csak egyszerű szöveg.",
@ -109,6 +118,7 @@
"Change my password": "Jelszavam megváltoztatása",
"Change timezone": "Időzóna megváltoztatása",
"Check your inbox (and your junk mail folder).": "Nézze meg a bejövő leveleit (és a levélszemét mappát is).",
"City or region": "Település vagy régió",
"Clear": "Törlés",
"Clear participation data for all events": "Részvételi adatok törlése az összes eseménynél",
"Clear participation data for this event": "Részvételi adatok törlése ennél az eseménynél",
@ -117,9 +127,11 @@
"Click to upload": "Kattintson a feltöltéshez",
"Close": "Lezárás",
"Close comments for all (except for admins)": "Hozzászólások lezárása mindenkinél (kivéve az adminisztrátoroknál)",
"Close events": "Események bezárása",
"Closed": "Lezárva",
"Comment deleted": "Hozzászólás törölve",
"Comment from @{username} reported": "@{username} felhasználótól érkezett hozzászólás jelentve",
"Comment text can't be empty": "A hozzászólás szövege nem lehet üres",
"Comments": "Hozzászólások",
"Comments are closed for everybody else.": "A hozzászólások le vannak zárva mindenki más számára.",
"Confirm my participation": "Részvételem megerősítése",
@ -131,6 +143,7 @@
"Contact": "Kapcsolat",
"Continue editing": "Szerkesztés folytatása",
"Cookies and Local storage": "Sütik és helyi tároló",
"Copy details to clipboard": "Részletek másolása a vágólapra",
"Country": "Ország",
"Create": "Létrehozás",
"Create a calc": "Táblázat létrehozása",
@ -148,6 +161,7 @@
"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 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.",
@ -175,11 +189,13 @@
"Delete Event": "Esemény törlése",
"Delete account": "Fiók 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 everything": "Minden törlése",
"Delete group": "Csoport törlése",
"Delete my account": "Saját fiók törlése",
"Delete post": "Hozzászólás 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",
"Delete {eventTitle}": "{eventTitle} törlése",
@ -224,6 +240,9 @@
"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.",
"Enter your own terms. HTML tags allowed. The {mobilizon_terms} are provided as template.": "Adja meg a saját használati feltételeit. A HTML címkék engedélyezettek. A {mobilizon_terms} meg van adva sablonként.",
"Error": "Hiba",
"Error details copied!": "Hibarészletek másolva!",
"Error message": "Hibaüzenet",
"Error stacktrace": "Hiba veremkiíratása",
"Error while changing email": "Hiba az e-mail megváltoztatásakor",
"Error while login with {provider}. Retry or login another way.": "Hiba a(z) {provider} használatával történő bejelentkezés közben. Próbálja újra vagy jelentkezzen be más módon.",
"Error while login with {provider}. This login provider doesn't exist.": "Hiba a(z) {provider} használatával történő bejelentkezés közben. Ez a bejelentkezés-szolgáltató nem létezik.",
@ -257,7 +276,9 @@
"Find an address": "Cím keresése",
"Find an instance": "Példány keresése",
"Find another instance": "Másik példány keresése",
"Follower": "Követő",
"Followers": "Követők",
"Followers will receive new public events and posts.": "A követők új nyilvános eseményeket és hozzászólásokat fognak kapni.",
"Followings": "Követések",
"For instance: London": "Például: Budapest",
"For instance: London, Taekwondo, Architecture…": "Például: Budapest, Taekwondo, Építészet…",
@ -266,14 +287,17 @@
"From the {startDate} at {startTime} to the {endDate}": "{startDate} {startTime} és {endDate} között",
"From the {startDate} at {startTime} to the {endDate} at {endTime}": "{startDate} {startTime} és {endDate} {endTime} között",
"From the {startDate} to the {endDate}": "{startDate} és {endDate} között",
"From yourself": "Öntől származó",
"Gather ⋅ Organize ⋅ Mobilize": "Összejövetel ⋅ Szervezés ⋅ Mozgósítás",
"General": "Általános",
"General information": "Általános információk",
"Getting location": "Hely lekérése",
"Getting there": "Megközelítés",
"Glossary": "Szójegyzék",
"Go": "Menj",
"Go to the event page": "Ugrás az esemény oldalára",
"Going as {name}": "Ön {name} néven jön",
"Group Followers": "Követők csoportosítása",
"Group Members": "Csoporttagok",
"Group address": "Csoport címe",
"Group display name": "Csoport megjelenített neve",
@ -285,6 +309,7 @@
"Group {displayName} created": "A(z) {displayName} csoport létrehozva",
"Group {groupTitle} reported": "A(z) {groupTitle} csoport jelentve",
"Groups": "Csoportok",
"Groups are not enabled on this instance.": "A csoportok nincsenek engedélyezve ezen a példányon.",
"Groups are spaces for coordination and preparation to better organize events and manage your community.": "A csoportok a koordináció és a felkészülés terei az események jobb szervezéséhez és a közösség kezeléséhez.",
"Headline picture": "Főcím fényképe",
"Hide replies": "Válaszok elrejtése",
@ -300,6 +325,8 @@
"I participate": "Részt veszek",
"I want to allow people to participate without an account.": "Lehetővé szeretném tenni az embereknek, hogy fiók nélkül egyenek részt.",
"I want to approve every participation request": "Jóvá szeretnék hagyni minden részvételi kérést",
"ICS feed for events": "ICS hírforrás az eseményekhez",
"ICS/WebCal Feed": "ICS/WebCal hírforrás",
"Identity {displayName} created": "A(z) {displayName} személyazonosság létrehozva",
"Identity {displayName} deleted": "A(z) {displayName} személyazonosság törölve",
"Identity {displayName} updated": "A(z) {displayName} személyazonosság frissítve",
@ -333,6 +360,7 @@
"Invite a new member": "Új tag meghívása",
"Invite member": "Tag meghívása",
"Invited": "Meghívva",
"It is possible that the content is not accessible on this instance, because this instance has blocked the profiles or groups behind this content.": "Lehetséges, hogy a tartalom nem érhető el ezen a példányon, mert ez a példány letiltotta a tartalom mögötti profilokat vagy csoportokat.",
"Italic": "Dőlt",
"Join <b>{instance}</b>, a Mobilizon instance": "Csatlakozás a(z) <b>{instance}</b> példányhoz, egy Mobilizon-példányhoz",
"Join group": "Csatlakozás a csoporthoz",
@ -342,6 +370,7 @@
"Last IP adress": "Utolsó IP-cím",
"Last group created": "Utolsó csoport létrehozva",
"Last published event": "Legutóbb közzétett esemény",
"Last published events": "Legutóbb közzétett események",
"Last sign-in": "Utolsó bejelentkezés",
"Last week": "Múlt hét",
"Latest posts": "Legutóbbi hozzászólások",
@ -357,6 +386,7 @@
"Limited number of places": "A helyek száma korlátozott",
"List title": "Lista címe",
"Load more": "Több betöltése",
"Load more activities": "Több tevékenység betöltése",
"Loading comments…": "Hozzászólások betöltése…",
"Local": "Helyi",
"Locality": "Hely",
@ -371,6 +401,7 @@
"Manage my notifications": "Saját értesítések kezelése",
"Manage my settings": "Saját beállítások kezelése",
"Manage participations": "Részvételek 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",
"Mark as resolved": "Megjelölés megoldottként",
"Member": "Tag",
@ -405,6 +436,7 @@
"New members": "Új tagok",
"New note": "Új jegyzet",
"New password": "Új jelszó",
"New post": "Új hozzászólás",
"New profile": "Új profil",
"Next": "Következő",
"Next month": "Következő hónap",
@ -417,8 +449,10 @@
"No discussions yet": "Még nincsenek megbeszélések",
"No end date": "Nincs befejezési dátum",
"No events found": "Nem találhatók események",
"No follower matches the filters": "Nincs a szűrőkre illeszkedő követő",
"No group found": "Nem található csoport",
"No groups found": "Nem találhatók csoportok",
"No information": "Nincs információ",
"No instance follows your instance yet.": "Még egyetlen példány sem követi az Ön példányát.",
"No instance to approve|Approve instance|Approve {number} instances": "Nincs jóváhagyandó példány|Példány jóváhagyása|{number} példány jóváhagyása",
"No instance to reject|Reject instance|Reject {number} instances": "Nincs visszautasítandó példány|Példány visszautasítása|{number} példány visszautasítása",
@ -427,6 +461,7 @@
"No member matches the filters": "Nincs a szűrőkre illeszkedő tag",
"No message": "Nincs üzenet",
"No moderation logs yet": "Még nincsenek moderálási naplók",
"No more activity to display.": "Nincs több megjelenítendő tevékenység.",
"No one is going to this event": "Senki sem jön erre az eseményre|Egy személy jön|{going} személy jön",
"No open reports yet": "Még nincsenek nyitott jelentések",
"No participant matches the filters": "Nincs a szűrőkre illeszkedő résztvevő",
@ -450,6 +485,7 @@
"Nothing to see here": "Nincs mit nézni itt",
"Notification before the event": "Értesítés az esemény előtt",
"Notification on the day of the event": "Értesítés az esemény napján",
"Notifications": "Értesítések",
"Notifications for manually approved participations to an event": "Értesítések egy esemény kézzel jóváhagyott részvételeinél",
"Now, create your first profile:": "Most hozza létre az első profilját:",
"Number of places": "Helyek száma",
@ -459,13 +495,17 @@
"On {date} ending at {endTime}": "{date} {endTime}-kor fejeződik be",
"On {date} from {startTime} to {endTime}": "{date} {startTime} és {endTime} között",
"On {date} starting at {startTime}": "{date} {startTime}-kor kezdődik",
"On {instance}": "Ezen: {instance}",
"Only accessible through link": "Csak hivatkozáson keresztül érhető el",
"Only accessible through link (private)": "Csak hivatkozáson keresztül érhető el (személyes)",
"Only accessible to members of the group": "Csak a csoport tagjainak érhető el",
"Only alphanumeric characters and underscores are supported.": "Csak betűk, számok és aláhúzások támogatottak.",
"Only alphanumeric lowercased characters and underscores are supported.": "Csak kis betűk, számok és aláhúzások támogatottak.",
"Only group members can access discussions": "Csak csoporttagok férhetnek hozzá a megbeszélésekhez",
"Only group moderators can create, edit and delete posts.": "Csak a csoport moderátorai hozhatnak létre, szerkeszthetnek és törölhetnek hozzászólásokat.",
"Open": "Megnyitás",
"Open a topic on our forum": "Téma nyitása a fórumunkon",
"Open an issue on our bug tracker (advanced users)": "Jegy nyitása a hibakövetőnkben (haladó felhasználóknak)",
"Opened reports": "Nyitott jelentések",
"Or": "Vagy",
"Organized": "Megszervezve",
@ -495,11 +535,13 @@
"Password reset": "Jelszó visszaállítása",
"Past events": "Elmúlt események",
"Pending": "Függőben",
"Personal feeds": "Személyes hírforrások",
"Pick": "Választás",
"Pick a group": "Válasszon csoportot",
"Pick a profile or a group": "Válasszon profilt vagy csoportot",
"Pick an identity": "Válasszon személyazonosságot",
"Pick an instance": "Válasszon példányt",
"Please add as many details as possible to help identify the problem.": "Adja meg a lehető legtöbb részletet, hogy segítsen a probléma azonosításában.",
"Please check your spam folder if you didn't receive the email.": "Nézze meg a levélszemét mappát, ha nem kapta meg az e-mailt.",
"Please contact this instance's Mobilizon admin if you think this is a mistake.": "Vegye fel a kapcsolatot a példány Mobilizon adminisztrátorával, ha úgy gondolja, hogy ez hiba.",
"Please do not use it in any real way.": "Ne használja semmilyen valódi módon.",
@ -519,6 +561,7 @@
"Privacy policy": "Adatvédelmi irányelv",
"Private event": "Személyes esemény",
"Private feeds": "Személyes hírforrások",
"Profile feeds": "Profil hírforrások",
"Profiles": "Profilok",
"Profiles and federation": "Profilok és föderáció",
"Promote": "Előléptetés",
@ -539,6 +582,7 @@
"Redirecting to content…": "Átirányítás a tartalomhoz…",
"Redirecting to event…": "Átirányítás az eseményhez…",
"Refresh profile": "Profil frissítése",
"Regenerate new links": "Új hivatkozások ismételt előállítása",
"Region": "Régió",
"Register an account on Mobilizon!": "Regisztráljon egy fiókot a Mobilizonra!",
"Register an account on {instanceName}!": "Regisztráljon egy fiókot a(z) {instanceName} páldányon!",
@ -575,6 +619,7 @@
"Resource provided is not an URL": "A megadott erőforrás nem URL",
"Resources": "Erőforrások",
"Restricted": "Korlátozott",
"Return to the group page": "Visszatérés a csoport oldalára",
"Right now": "Épp most",
"Role": "Szerep",
"Rules": "Szabályok",
@ -587,6 +632,7 @@
"Searching…": "Keresés…",
"Search…": "Keresés…",
"Select a language": "Nyelv kiválasztása",
"Select a radius": "Sugár kiválasztása",
"Select a timezone": "Válasszon egy időzónát",
"Select languages": "Nyelvek kiválasztása",
"Send email": "E-mail küldése",
@ -613,6 +659,7 @@
"Suspend group": "Csoport felfüggesztése",
"Suspended": "Felfüggesztve",
"Task lists": "Feladatlisták",
"Technical details": "Műszaki részletek",
"Tentative": "Feltételes",
"Tentative: Will be confirmed later": "Feltételes: később lesz megerősítve",
"Terms": "Használati feltételek",
@ -631,21 +678,40 @@
"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.": "Az esemény szervezője kézzel hagyja jóvá a részvételeket. Mivel azt választotta, hogy fiók nélkül vesz részt, magyarázza el, hogy miért szeretne részt venni ezen az eseményen.",
"The event title will be ellipsed.": "Az esemény címe hármasponttal lesz megjelenítve.",
"The event will show as attributed to this group.": "Az esemény ennek a csoportnak tulajdonítva lesz megjelenítve.",
"The event will show as attributed to this profile.": "Az esemény ennek a profilnak tulajdonítva lesz megjelenítve.",
"The event will show as attributed to your personal profile.": "Az esemény az Ön személyes profiljának tulajdonítva lesz megjelenítve.",
"The event will show the group as organizer.": "Az esemény szervezőként fogja megjeleníteni a csoportot.",
"The event {event} was created by {profile}.": "A(z) {event} eseményt {profile} hozta létre.",
"The event {event} was deleted by {profile}.": "A(z) {event} eseményt {profile} törölte.",
"The event {event} was updated by {profile}.": "A(z) {event} eseményt {profile} frissítette.",
"The events you created are not shown here.": "A létrehozott események nincsenek megjelenítve itt.",
"The group can now be joined by anyone.": "A csoporthoz mostantól bárki csatlakozhat.",
"The group can now only be joined with an invite.": "A csoporthoz mostantól csak meghívással lehet csatlakozni.",
"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.": "A csoport nyilvánosan fel lesz sorolva a keresési eredményekben, és ajánlva is lehet a felfedezés szakaszban. Csak nyilvános információk lesznek megjelenítve az oldalán.",
"The group's avatar was changed.": "A csoport profilképe megváltozott.",
"The group's banner was changed.": "A csoport reklámcsíkja megváltozott.",
"The group's physical address was changed.": "A csoport fizikai címe megváltozott.",
"The group's short description was changed.": "A csoport rövid leírása megváltozott.",
"The instance administrator is the person or entity that runs this Mobilizon instance.": "A példány adminisztrátora az a személy vagy jogi személy, aki ezt a Mobilizon példányt futtatja.",
"The member was removed from the group {group}": "A tag el lett távolítva ebből a csoportból: {group}",
"The only way for your group to get new members is if an admininistrator invites them.": "Az egyetlen mód a csoportja számára, hogy új tagokat szerezzen, ha egy adminisztrátor meghívja őket.",
"The organiser has chosen to close comments.": "A szervező azt választotta, hogy lezárja a hozzászólásokat.",
"The page you're looking for doesn't exist.": "A keresett oldal nem létezik.",
"The password was successfully changed": "A jelszó sikeresen meg lett változtatva",
"The post {post} was created by {profile}.": "A(z) {post} hozzászólást {profile} hozta létre.",
"The post {post} was deleted by {profile}.": "A(z) {post} hozzászólást {profile} törölte.",
"The post {post} was updated by {profile}.": "A(z) {post} hozzászólást {profile} frissítette.",
"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 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.",
"The {default_privacy_policy} will be used. They will be translated in the user's language.": "Az {default_privacy_policy} lesz használva. Ez le lesz fordítva a felhasználó nyelvére.",
"The {default_terms} will be used. They will be translated in the user's language.": "Az {default_terms} lesznek használva. Le lesz fordítva a felhasználó nyelvére.",
"There are {participants} participants.": "{participants} résztvevő van.",
"There is no activity yet. Start doing some things to see activity appear here.": "Még nincs tevékenység. Kezdjen el valamit csinálni, hogy lássa az itt megjelenő tevékenységet.",
"There will be no way to recover your data.": "Nem lesz mód az adatai visszaállítására.",
"There's no discussions yet": "Még nincsenek megbeszélések",
"These events may interest you": "Ez az események érdekelhetik Önt",
"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.": "Ezek a hírforrások eseményadatokat tartalmaznak azon eseményekhez, amelyeknél a profiljai bármelyike résztvevő vagy létrehozó. Ezeket bizalmasan kell tartania. Adott profilokhoz találhat hírforrásokat az egyes profilszerkesztő oldalakon.",
"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.": "Ezek a hírforrások eseményadatokat tartalmaznak azon eseményekhez, amelyeknél ez a bizonyos profil résztvevő vagy létrehozó. Ezeket bizalmasan kell tartania. Az összes profiljához találhat hírforrásokat az értesítési beállításaiban.",
"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 is not supported": "Ez az URL nem támogatott",
"This event has been cancelled.": "Ezt az eseményt törölték.",
@ -679,8 +745,10 @@
"Tomorrow": "Holnap",
"Transfer to {outsideDomain}": "Átvitel ide: {outsideDomain}",
"Type": "Típus",
"Type or select a date…": "Gépeljen be vagy válasszon egy dátumot…",
"URL": "URL",
"URL copied to clipboard": "URL másolva a vágólapra",
"Unable to copy to clipboard": "Nem lehet a vágólapra másolni",
"Unable to detect timezone.": "Nem sikerült felismerni az időzónát.",
"Unable to load event for participation. The error details are provided below:": "Nem lehet betölteni az eseményt a részvételhez. A hiba részletei lent olvashatók:",
"Unable to save your participation in this browser.": "Nem lehet elmenteni a részvételét ebben a böngészőben.",
@ -689,6 +757,7 @@
"Unknown": "Ismeretlen",
"Unknown actor": "Ismeretlen szereplő",
"Unknown error.": "Ismeretlen hiba.",
"Unknown value for the openness setting.": "Ismeretlen érték a nyitottság beállításnál.",
"Unsaved changes": "Mentetlen változtatások",
"Unset group": "Csoport beállításának törlése",
"Unsuspend": "Felfüggesztés visszavonása",
@ -713,10 +782,14 @@
"View event page": "Eseményoldal megtekintése",
"View everything": "Minden megtekintése",
"View page on {hostname} (in a new window)": "Oldal megtekintése a(z) {hostname} gépen (új ablakban)",
"Visibility was set to an unknown value.": "A láthatóság egy ismeretlen értékre lett állítva.",
"Visibility was set to private.": "A láthatóság személyesre lett állítva.",
"Visibility was set to public.": "A láthatóság nyilvánosra lett állítva.",
"Visible everywhere on the web": "Látható bárhol a világhálón",
"Visible everywhere on the web (public)": "Mindenhol látható a világhálón (nyilvános)",
"Waiting for organization team approval.": "Várakozás a szervezői csapat jóváhagyására.",
"Warning": "Figyelmeztetés",
"We improve this software thanks to your feedback. To let us know about this issue, two possibilities (both unfortunately require user account creation):": "A visszajelzésének köszönhetően javítunk a szoftveren. Két lehetősége van, hogy tudassa velünk a problémát (sajnos mind a kettőhöz fiók létrehozása szükséges):",
"We just sent an email to {email}": "Most küldtünk egy e-mailt erre a címre: {email}",
"We use your timezone to make sure you get notifications for an event at the correct time.": "Az időzónáját használjuk annak biztosításához, hogy a megfelelő időben kapja meg egy esemény értesítéseit.",
"We will redirect you to your instance in order to interact with this event": "Át fogjuk irányítani a saját példányára az eseménnyel való interakció érdekében",
@ -728,15 +801,22 @@
"Welcome back {username}!": "Üdvözöljük, {username}!",
"Welcome back!": "Üdvözöljük!",
"Welcome to Mobilizon, {username}!": "Üdvözli a Mobilizon, {username}!",
"What can I do to help?": "Mit tehetek, hogy segítsek?",
"When a moderator from the group creates an event and attributes it to the group, it will show up here.": "Ha a csoportból egy moderátor létrehoz egy eseményt és a csoportnak tulajdonítja azt, akkor az itt fog megjelenni.",
"Who can view this event and participate": "Ki láthatja ezt az eseményt és ki vehet részt",
"Who can view this post": "Ki láthatja ezt a hozzászólást",
"Who published {number} events": "akik közzétettek {number} eseményt",
"Why create an account?": "Miért hozzon létre fiókot?",
"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.": "Lehetővé fogja tenni a részvételi állapotának megjelenítést és kezelését az esemény oldalán, ha ezt az eszközt használja. Törölje a bejelölést, ha nyilvános eszközt használ.",
"Within {number} kilometers of {place}": "|{place} egy kilométeres körzetén belül|{place} {number} kilométeres körzetén belül",
"Write something…": "Írjon valamit…",
"Yesterday": "Tegnap",
"You accepted the invitation to join the group.": "Ön elfogadta a meghívást a csoporthoz való csatlakozáshoz.",
"You added the member {member}.": "Ön hozzáadta {member} tagot.",
"You archived the discussion {discussion}.": "Ön archiválta a(z) {discussion} megbeszélést.",
"You are not an administrator for this group.": "Ön nem adminisztrátor ennél a csoportnál.",
"You are not part of any group": "Ön nem tagja egyetlen csoportnak sem",
"You are not part of any group.": "Ön nem tagja egyetlen csoportnak sem.",
"You are participating in this event anonymously": "Névtelenül vesz részt ezen az eseményen",
"You are participating in this event anonymously but didn't confirm participation": "Névtelenül vesz részt ezen az eseményen, de nem erősítette meg a részvételét",
"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",
@ -744,8 +824,24 @@
"You can pick your timezone into your preferences.": "Kiválaszthatja az időzónát a beállításaiban.",
"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 created the discussion {discussion}.": "Ön létrehozta a(z) {discussion} megbeszélést.",
"You created the event {event}.": "Ön létrehozta a(z) {event} eseményt.",
"You created the folder {resource}.": "Ön létrehozta a(z) {resource} mappát.",
"You created the group {group}.": "Ön létrehozta a(z) {group} csoportot.",
"You created the post {post}.": "Ön létrehozta a(z) {post} hozzászólást.",
"You created the resource {resource}.": "Ön létrehozta a(z) {resource} erőforrást.",
"You deleted the discussion {discussion}.": "Ön törölte a(z) {discussion} megbeszélést.",
"You deleted the event {event}.": "Ön törölte a(z) {event} eseményt.",
"You deleted the folder {resource}.": "Ön törölte a(z) {resource} mappát.",
"You deleted the post {post}.": "Ön törölte a(z) {post} hozzászólást.",
"You deleted the resource {resource}.": "Ön törölte a(z) {resource} erőforrást.",
"You demoted the member {member} to an unknown role.": "Ön lefokozta {member} tagot egy ismeretlen szerepre.",
"You demoted {member} to moderator.": "Ön lefokozta {member} tagot moderátorrá.",
"You demoted {member} to simple member.": "Ön lefokozta {member} tagot egyszerű taggá.",
"You didn't create or join any event yet": "Még nem hozott létre vagy nem csatlakozott egyetlen eseményhez sem",
"You didn't create or join any event yet.": "Még nem hozott létre vagy nem csatlakozott egyetlen eseményhez sem.",
"You don't follow any instances yet.": "Még nem követ egyetlen példányt sem.",
"You excluded member {member}.": "Ön kizárta {member} tagot.",
"You have been disconnected": "A kapcsolata bontva lett",
"You have been invited by {invitedBy} to the following group:": "{invitedBy} meghívta Önt a következő csoportba:",
"You have been removed from this group's members.": "El lett távolítva a csoport tagjai közül.",
@ -753,22 +849,51 @@
"You have one event in {days} days.": "Nincsenek eseményei {days} napon belül | Egy eseménye van {days} napon belül. | {count} eseménye van {days} napon belül",
"You have one event today.": "Nincsenek eseményei ma | Egy eseménye van ma. | {count} eseménye van ma",
"You have one event tomorrow.": "Nincsenek eseményei holnap | Egy eseménye van holnap. | {count} eseménye van holnap",
"You invited {member}.": "Ön meghívta {member} tagot.",
"You may clear all participation information for this device with the buttons below.": "Törölheti az összes részvételi információját ennél az eszköznél a lenti gombokkal.",
"You may now close this window, or {return_to_event}.": "Most már bezárhatja ezt az ablakot, vagy {return_to_event}.",
"You may now close this window.": "Most már bezárhatja ezt az ablakot.",
"You may show some members as contacts.": "Megjeleníthet néhány tagot kapcsolatokként.",
"You moved the folder {resource} into {new_path}.": "Ön áthelyezte a(z) {resource} mappát erre a helyre: {new_path}.",
"You moved the folder {resource} to the root folder.": "Ön áthelyezte a(z) {resource} mappát a gyökérmappába.",
"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 create the group before you create an event.": "Létre kell hoznia egy csoportot egy esemény létrehozása előtt.",
"You need to login.": "Be kell jelentkeznie.",
"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á.",
"You promoted {member} to moderator.": "Ön előléptette {member} tagot moderátorrá.",
"You renamed the discussion from {old_discussion} to {discussion}.": "Ön átnevezte a megbeszélést {old_discussion} névről {discussion} névre.",
"You renamed the folder from {old_resource_title} to {resource}.": "Ön átnevezte a mappát {old_resource_title} névről {resource} névre.",
"You renamed the resource from {old_resource_title} to {resource}.": "Ön átnevezte az erőforrást {old_resource_title} névről {resource} névre.",
"You replied to a comment on the event {event}.": "Ön válaszolt egy hozzászólásra a(z) {event} eseménynél.",
"You replied to the discussion {discussion}.": "Ön válaszolt a(z) {discussion} megbeszélésre.",
"You requested to join the group.": "Ön kérelmezte a csoporthoz való csatlakozást.",
"You updated the event {event}.": "Ön frissítette a(z) {event} eseményt.",
"You updated the group {group}.": "Ön frissítette a(z) {group} csoportot.",
"You updated the member {member}.": "Ön frissítette {member} tagot.",
"You updated the post {post}.": "Ön frissített a(z) {post} hozzászólást.",
"You were demoted to an unknown role by {profile}.": "Önt {profile} lefokozta egy ismeretlen szerepre.",
"You were demoted to moderator by {profile}.": "Önt {profile} lefokozta moderátorrá.",
"You were demoted to simple member by {profile}.": "Önt {profile} lefokozta egyszerű taggá.",
"You were promoted to administrator by {profile}.": "Önt {profile} előléptette adminisztrátorrá.",
"You were promoted to an unknown role by {profile}.": "Önt {profile} előléptette egy ismeretlen szerepre.",
"You were promoted to moderator by {profile}.": "Önt {profile} előléptette moderátorrá.",
"You will be able to add an avatar and set other options in your account settings.": "Lehetősége lesz hozzáadni egy profilképet, és más lehetőségeket beállítani a fiókja beállításaiban.",
"You will be redirected to the original instance": "Át lesz irányítva az eredeti példányra",
"You will find here all the events you have created or of which you are a participant.": "Itt megtalálja az összes eseményt, amelyeket létrehozott vagy amelyeknél Ön résztvevő.",
"You wish to participate to the following event": "Részt kíván venni a következő eseményen",
"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.",
"You'll receive a confirmation email.": "Kapni fog egy megerősítő e-mailt.",
"Your account has been successfully deleted": "A fiókja sikeresen törölve lett",
"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 city or region and the radius will only be used to suggest you events nearby.": "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.",
"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",
"Your email address was automatically set based on your {provider} account.": "Az e-mail-címe automatikusan be lett állítva a(z) {provider} fiókja alapján.",
@ -790,6 +915,7 @@
"Your timezone is currently set to {timezone}.": "Az Ön időzónája jelenleg erre van állítva: {timezone}.",
"Your timezone was detected as {timezone}.": "Az Ön időzónája úgy lett felismerve mint {timezone}.",
"Your timezone {timezone} isn't supported.": "A(z) {timezone} időzónája nem támogatott.",
"Your upcoming events": "A közelgő eseményei",
"[This comment has been deleted by it's author]": "[Ezt a hozzászólást törölte a szerzője]",
"[This comment has been deleted]": "[Ezt a hozzászólást törölték]",
"[deleted]": "[törölve]",
@ -817,11 +943,18 @@
"with another identity…": "egy másik személyazonossággal…",
"{approved} / {total} seats": "{approved} / {total} ülés",
"{available}/{capacity} available places": "Nincsenek szabad helyek|{available}/{capacity} elérhető hely",
"{count} km": "{count} km",
"{count} participants": "Még nincsenek résztvevők | Egy résztvevő | {count} résztvevő",
"{count} requests waiting": "{count} kérés várakozik",
"{count} team members": "{count} csapattag",
"{group} activity timeline": "{group} tevékenységi idővonala",
"{group}'s events": "{group} eseményei",
"{instanceName} is an instance of the {mobilizon} software.": "A(z) {instanceName} a {mobilizon} szoftver egy példánya.",
"{instanceName} is an instance of {mobilizon_link}, a free software built with the community.": "A(z) {instanceName} a {mobilizon_link} egy példánya, amely egy közösség által készített szabad szoftver.",
"{member} accepted the invitation to join the group.": "{member} elfogadta a meghívását a csoporthoz való csatlakozáshoz.",
"{member} rejected the invitation to join the group.": "{member} visszautasította a meghívását a csoporthoz való csatlakozáshoz.",
"{member} requested to join the group.": "{member} kérelmezte a csoporthoz való csatlakozást.",
"{member} was invited by {profile}.": "{member} tagot meghívta {profile}.",
"{moderator} added a note on {report}": "{moderator} jegyzetet adott ehhez: {report}",
"{moderator} closed {report}": "{moderator} lezárta ezt: {report}",
"{moderator} deleted an event named \"{title}\"": "{moderator} törölt egy „{title}” nevű eseményt",
@ -835,7 +968,37 @@
"{number} organized events": "Nincsenek szervezett események|Egy szervezett esemény|{number} szervezett esemény",
"{number} participations": "Nincsenek részvételek|Egy részvétel|{number} részvétel",
"{number} posts": "Nincsenek hozzászólások|Egy hozzászólás|{number} hozzászólás",
"{old_group_name} was renamed to {group}.": "A(z) {old_group_name} csoport át lett nevezve {group} névre.",
"{profile} (by default)": "{profile} (alapértelmezetten)",
"{profile} added the member {member}.": "{profile} hozzáadta {member} tagot.",
"{profile} archived the discussion {discussion}.": "{profile} archiválta a(z) {discussion} megbeszélést.",
"{profile} created the discussion {discussion}.": "{profile} létrehozta a(z) {discussion} megbeszélést.",
"{profile} created the folder {resource}.": "{profile} létrehozta a(z) {resource} mappát.",
"{profile} created the group {group}.": "{profile} létrehozta a(z) {group} csoportot.",
"{profile} created the resource {resource}.": "{profile} létrehozta a(z) {resource} erőforrást.",
"{profile} deleted the discussion {discussion}.": "{profile} törölte a(z) {discussion} megbeszélést.",
"{profile} deleted the folder {resource}.": "{profile} törölte a(z) {resource} mappát.",
"{profile} deleted the resource {resource}.": "{profile} törölte a(z) {resource} erőforrást.",
"{profile} demoted {member} to an unknown role.": "{profile} lefokozta {member} tagot egy ismeretlen szerepre.",
"{profile} demoted {member} to moderator.": "{profile} lefokozta {member} tagot moderátorrá.",
"{profile} demoted {member} to simple member.": "{profile} lefokozta {member} tagot egyszerű taggá.",
"{profile} excluded member {member}.": "{profile} kizárta {member} tagot.",
"{profile} moved the folder {resource} into {new_path}.": "{profile} áthelyezte a(z) {resource} mappát erre a helyre: {new_path}.",
"{profile} moved the folder {resource} to the root folder.": "{profile} áthelyezte a(z) {resource} mappát a gyökérmappába.",
"{profile} moved the resource {resource} into {new_path}.": "{profile} áthelyezte a(z) {resource} erőforrást erre a helyre: {new_path}.",
"{profile} moved the resource {resource} to the root folder.": "{profile} áthelyezte a(z) {resource} erőforrást a gyökérmappába.",
"{profile} posted a comment on the event {event}.": "{profile} hozzászólást küldött a(z) {event} eseményhez.",
"{profile} promoted {member} to administrator.": "{profile} előléptette {member} tagot adminisztrátorrá.",
"{profile} promoted {member} to an unknown role.": "{profile} előléptette {member} tagot egy ismeretlen szerepre.",
"{profile} promoted {member} to moderator.": "{profile} előléptette {member} tagot moderátorrá.",
"{profile} quit the group.": "{profile} kilépett a csoportból.",
"{profile} renamed the discussion from {old_discussion} to {discussion}.": "{profile} átnevezte a megbeszélést {old_discussion} névről {discussion} névre.",
"{profile} renamed the folder from {old_resource_title} to {resource}.": "{profile} átnevezte a mappát {old_resource_title} névről {resource} névre.",
"{profile} renamed the resource from {old_resource_title} to {resource}.": "{profile} átnevezte az erőforrást {old_resource_title} névről {resource} névre.",
"{profile} replied to a comment on the event {event}.": "{profile} válaszolt egy hozzászólásra a(z) {event} eseménynél.",
"{profile} replied to the discussion {discussion}.": "{profile} válaszolt a(z) {discussion} megbeszélésre.",
"{profile} updated the group {group}.": "{profile} frissítette a(z) {group} csoportot.",
"{profile} updated the member {member}.": "{profile} frissítette {member} tagot.",
"{title} ({count} todos)": "{title} ({count} tennnivaló)",
"{username} was invited to {group}": "{username} meg lett hívva ide: {group}",
"© The OpenStreetMap Contributors": "© Az OpenStreetMap közreműködői"

View File

@ -3,7 +3,6 @@
"be": "Беларуская мова",
"bn": "বাংলা",
"ca": "Català",
"cs": "čeština",
"de": "Deutsch",
"en": "English",
"eo": "Esperanto",
@ -11,6 +10,7 @@
"eu": "Euskara",
"fi": "suomi",
"fr": "Français",
"gd": "Gàidhlig",
"gl": "Galego",
"hu": "Magyar",
"it": "Italiano",
@ -22,7 +22,7 @@
"pl": "Polski",
"pt": "Português",
"pt_BR": "Português brasileiro",
"ru": "Русский",
"sl": "Slovenščina",
"sv": "Svenska"
"sv": "Svenska",
"zh_Hant": "繁體字"
}

View File

@ -40,6 +40,7 @@
"Actions": "Accions",
"Activated": "Activat",
"Active": "Actiu-va",
"Activity": "Activitat",
"Actor": "Actor",
"Add": "Ajustar",
"Add / Remove…": "Ajustar / Suprimir…",
@ -62,7 +63,7 @@
"Administrator": "Administrator",
"All good, let's continue!": "Tot es bon, contunham!",
"All group members and other eventual server admins will still be able to view this information.": "Totes les membres de grop e los autres administrators eventuals poiràn totjorn capables de veire aquesta informacion.",
"All the places have already been taken": "Totas las plaças son presas|Una plaça es encara disponibla|{places} plaças son encara disponiblas",
"All the places have already been taken": "Totas las plaças son presas",
"Allow all comments": "Autorizar totes los comentaris",
"Allow all comments from users with accounts": "Autorizar los comentaris dels utilizaires amb compte",
"Allow registrations": "Permetre las inscripcions",
@ -791,7 +792,7 @@
"To change the world, change the software": "Per cambiar lo monde, cambiatz de logicial",
"To confirm, type your event title \"{eventTitle}\"": "Per confirmar picatz lo títol de leveniment « {eventTitle} »",
"To confirm, type your identity username \"{preferredUsername}\"": "Per confirmar picatz lo nom de lidentitat « {preferredUsername} »",
"To create and manage multiples identities from a same account": "Podètz crear e gerir mantunas identitats amb un meteis compte",
"To create and manage multiples identities from a same account": "Podètz crear e gerir mantuna identitat amb un meteis compte",
"To create and manage your events": "Per crear e gerir vòstres eveniments",
"To create or join an group and start organizing with other people": "Per crear o rejónher un grop e començar a vos organizar amb dautras personas",
"To register for an event by choosing one of your identities": "Per sinscriure a un eveniment en causissent una de vòstras identitats",

View File

@ -820,7 +820,7 @@
"as {identity}": "jako {identity}",
"default Mobilizon privacy policy": "Domyślna polityka prywatności Mobilizon",
"default Mobilizon terms": "domyślny regulamin Mobilizon",
"e.g. 10 Rue Jangot": "np. Jana Pawła II 21/37",
"e.g. 10 Rue Jangot": "",
"firstDayOfWeek": "0",
"full rules": "zasady",
"iCal Feed": "Strumień iCal",

View File

@ -0,0 +1,11 @@
export default function (choice: number): number {
if (choice === 1 || choice === 11) {
return 0;
}
if (choice === 2 || choice === 12) {
return 1;
}
return choice > 0 && choice < 20 ? 2 : 3;
}

View File

@ -0,0 +1,5 @@
import gd from "./gd";
export default {
gd,
};

View File

@ -1,40 +1,98 @@
{
"#{tag}": "#{tag}",
"(Masked)": "(Oculto)",
"(this folder)": "(esta pasta)",
"(this link)": "(este link)",
"+ Add a resource": "+ Adicionar um recurso",
"+ Create an event": "+ Criar um evento",
"+ Post a public message": "+ Publicar uma mensagem pública",
"+ Start a discussion": "+ Iniciar uma conversa",
"<b>Please do not use it in any real way.</b>": "<b>Por favor, não use isso para fins reais.</b>",
"A user-friendly, emancipatory and ethical tool for gathering, organising, and mobilising.": "Uma ferramenta de convívio, emancipadora e ética, para se reunir, se organizar e se mobilizar.",
"A validation email was sent to {email}": "Um email de confirmação foi enviado ao {email}",
"<b>{contact}</b> will be displayed as contact.": "<b>{contact}</b> será mostrado como contato.|<b>{contact}</b> será mostrado como contatos.",
"@{group}": "@{group}",
"@{username} ({role})": "@{username} ({role})",
"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.": "Um cookie é um arquivo pequeno contendo informações que são enviadas ao seu computador quando você visita um site web. Quando você visita o site novamente, o cookie permite que o site reconheça o seu navegador. Os cookies podem armazenar preferências do usuário e outras informações. Você pode configurar o seu navegador para que ele recuse todos os cookies. Contudo, isso talvez faça com que alguns recursos ou serviços do site funcionem parcialmente. Armazenamento local funciona da mesma maneira, mas possibilita armazenar mais dados.",
"A federated software": "Um aplicativo federado",
"A place for your code of conduct, rules or guidelines. You can use HTML tags.": "Um lugar para o seu código de conduta, regras ou diretrizes. Você pode usar tags HTML.",
"A place to explain who you are and the things that set your instance apart. You can use HTML tags.": "Um lugar para explicar quem é você e as coisas que diferenciam a sua instância. Pode usar tags HTML.",
"A place to publish something to the whole world, your community or just your group members.": "Um lugar para você publicar alguma coisa para o mundo inteiro, sua comunidade ou apenas os membros do seu grupo.",
"A place to store links to documents or resources of any type.": "Um lugar para guardar links para os documentos ou recursos de qualquer tipo.",
"A practical tool": "Uma ferramenta prática",
"A short tagline for your instance homepage. Defaults to \"Gather ⋅ Organize ⋅ Mobilize\"": "Um slogan para a página de início da sua instância. O valor predefinido é \"Reunir - Organizar - Mobiliar\"",
"A user-friendly, emancipatory and ethical tool for gathering, organising, and mobilising.": "Uma ferramenta amigável, emancipadora e ética para se reunir, organizar e mobilizar.",
"A validation email was sent to {email}": "Um email de confirmação foi enviado para {email}",
"API": "API",
"Abandon editing": "Abandonar a edição",
"Abandon edition": "Abandonar a edição",
"About": "Sobre",
"About Mobilizon": "Sobre Mobilizon",
"About Mobilizon": "Sobre o Mobilizon",
"About this event": "Sobre este evento",
"About this instance": "Sobre esta instância",
"Accepted": "Aceitado",
"About {instance}": "Sobre {instance}",
"Accept": "Aceitar",
"Accepted": "Aceito",
"Accessible only to members": "Acessível apenas aos membros",
"Accessible through link": "Acessível através do link",
"Account": "Conta",
"Actions": "Ações",
"Activated": "Ativado",
"Active": "Ativo",
"Actor": "Participante",
"Add": "Adicionar",
"Add / Remove…": "Adicionar / Remover…",
"Add a contact": "Adicionar um contato",
"Add a group": "Adicionar grupo",
"Add a new post": "Adicionar nova publicação",
"Add a note": "Adicionar uma nota",
"Add a todo": "Adicionar uma tarefa",
"Add an address": "Adicionar um endereço",
"Add an instance": "Adicionar uma instância",
"Add some tags": "Adicionar etiquetas",
"Add to my calendar": "Adicionar no meu calendário",
"Add some tags": "Adicionar algumas tags",
"Add to my calendar": "Adicionar ao meu calendário",
"Additional comments": "Adicionar comentários",
"Admin": "Administrador",
"Admin settings": "Configuração do administrador",
"Admin settings successfully saved.": "Configurações do administrador salvadas com sucesso.",
"Admin settings successfully saved.": "Configurações do administrador gravadas com sucesso.",
"Administration": "Administração",
"All the places have already been taken": "Todos os lugares foram ocupados |Um lugar ainda está disponível|{places}lugares estão ainda disponíveis",
"Administrator": "Administrador",
"All good, let's continue!": "Ótimo, vamos continuar !",
"All the places have already been taken": "Todos os lugares já foram ocupados",
"Allow all comments": "Permitir todos comentários",
"Allow all comments from users with accounts": "Permitir todos os comentários de usuários que efetuaram acesso",
"Allow registrations": "Permitir inscrições",
"An error has occurred.": "Ocorreu um erro.",
"An ethical alternative": "Uma alternativa ética",
"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.": "Uma instância é uma versão instalada do aplicativo Mobilizon em um servidor. Uma instância pode ser administrada por qualquer pessoa que utilize o {mobilizon_sotware} ou outro aplicativo federado, também conhecido como \"fediverse\". O nome dessa instância é {instance_name}. O Mobilizon é uma rede federada de múltiplas instâncias (exatamente como os servidores de email), usuários registrados em diferente instâncias podem se comunicar mesmo que eles não se registraram na mesma instância.",
"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.": "Um API (Application Programming Interface), em português (interface de programação de aplicativo) é um protocolo de comunicação que permite componentes de aplicativos de se comunicarem entre si. O API Mobilizon, por exemplo, pode permitir que ferramentas de aplicativos de terceiros comuniquem com instâncias Mobilizon para realizar algumas ações, tais como, postar eventos automaticamente e remotamente em seu nome.",
"And {number} comments": "E {number} comentários",
"Anonymous participant": "Participante anônimo",
"Anonymous participants will be asked to confirm their participation through e-mail.": "Os participantes anônimos deverão confirmar sua participação por email.",
"Anonymous participations": "Participações anônimas",
"Any day": "Qualquer dia",
"Application": "Aplicação",
"Approve": "Aprovar",
"Are you sure you want to <b>delete</b> this comment? This action cannot be undone.": "Você está seguro que quer <b>apagar</b> este comentário? Esta ação não pode ser desfeita.",
"Are you sure you want to <b>delete</b> this event? This action cannot be undone. You may want to engage the discussion with the event creator or edit its event instead.": "Você está seguro que quer <b>apagar</b> este evento? Esta ação não pode ser desfeita. Talvez você queira tentar uma conversa com o criador do evento ou, então, editar este evento.",
"Are you sure you want to cancel the event creation? You'll lose all modifications.": "Você está seguro que quer cancelar a criação do evento? Você perderá todas as modificações.",
"Are you sure you want to cancel the event edition? You'll lose all modifications.": "Você está seguro que quer cancelar a edição do evento? Você perderá todas as modificações.",
"Are you sure you want to cancel your participation at event \"{title}\"?": "Você está seguro que quer cancelar a sua participação no evento \"{title}\"?",
"Are you sure you want to delete this event? This action cannot be reverted.": "Você está seguro que quer apagar este evento? Esta ação não pode ser desfeita.",
"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.": "Tem certeza que você quer apagar toda sua conta? Você perderá tudo, identidades, configurações, eventos criados, mensagens e as participações desaparecerão para sempre.",
"Are you sure you want to <b>completely delete</b> this group? All members - including remote ones - will be notified and removed from the group, and <b>all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed</b>.": "Tem certeza que você quer <b>apagar completamente</b> este grupo? Todos os membros - incluindo membros remotos - serão notificados e removidos deste grupo e <b>todos os dados do grupo (eventos, publicações, conversas, tarefas…) serão irremediavelmente destruídos</b>.",
"Are you sure you want to <b>delete</b> this comment? This action cannot be undone.": "Tem certeza que você quer <b>apagar</b> este comentário? Esta ação não pode ser desfeita.",
"Are you sure you want to <b>delete</b> this event? This action cannot be undone. You may want to engage the discussion with the event creator or edit its event instead.": "Tem certeza que você quer <b>apagar</b> este evento? Esta ação não pode ser desfeita. Talvez você queira tentar uma conversa com o criador do evento ou então editar este evento.",
"Are you sure you want to <b>suspend</b> this group? All members - including remote ones - will be notified and removed from the group, and <b>all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed</b>.": "Tem certeza que você quer <b>suspender</b>este grupo? Todos os membros - incluindo os membros remotos - serão notificados e removidos do grupo, e <b>todos os dados do grupo (eventos, publicações, conversas, tarefas...) serão irremediavelmente destruídos</b>.",
"Are you sure you want to <b>suspend</b> 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.": "Tem certeza que você quer <b>suspender</b> este grupo? Visto que este grupo é oriundo da instância {instance}, isto irá remover apenas os membros locais e apagar os dados locais, como também rejeitar todos os dados futuros.",
"Are you sure you want to cancel the event creation? You'll lose all modifications.": "Tem certeza que você quer cancelar a criação do evento? Você perderá todas as modificações.",
"Are you sure you want to cancel the event edition? You'll lose all modifications.": "Tem certeza que você quer cancelar a edição do evento? Você perderá todas as modificações.",
"Are you sure you want to cancel your participation at event \"{title}\"?": "Tem certeza que você quer cancelar a sua participação no evento \"{title}\"?",
"Are you sure you want to delete this event? This action cannot be reverted.": "Tem certeza que você quer apagar este evento? Esta ação não pode ser desfeita.",
"Assigned to": "Atribuído a",
"Avatar": "Avatar",
"Back to previous page": "Voltar à página anterior",
"Before you can login, you need to click on the link inside it to validate your account.": "Antes de você poder começar, você precisa clicar no link que está no interior para validar a sua conta.",
"Banner": "Banner",
"Before you can login, you need to click on the link inside it to validate your account.": "Antes de você entrar, você precisa clicar no link interno para validar a sua conta.",
"Begins on": "Começa às",
"Bold": "Negrito",
"By @{group}": "Por @{group}",
"By @{username}": "Por @{username}",
"By {author}": "Por {author}",
"By {group}": "Por {group}",
"Can be an email or a link, or just plain text.": "Pode ser um email ou um link, ou apenas um texto simples.",
"Cancel": "Cancelar",
"Cancel anonymous participation": "Cancelar participação anônima",
"Cancel creation": "Cancelar a criação",
@ -43,79 +101,141 @@
"Cancel my participation…": "Cancelar minha participação…",
"Cancelled: Won't happen": "Cancelado: Não irá acontecer",
"Category": "Categoria",
"Change": "Modificar",
"Change my identity…": "Mudar minha identidade…",
"Change my password": "Mudar minha senha",
"Change": "Alterar",
"Change my email": "Alterar o meu email",
"Change my identity…": "Alterar a minha identidade…",
"Change my password": "Alterar a minha senha",
"Change password": "Mudar a senha",
"Change timezone": "Mudar fuso horário",
"Check your inbox (and your junk mail folder).": "Verifique sua caixa de emails (e também a sua pasta de spam).",
"Clear": "Limpar",
"Click to select": "Clique para selecionar",
"Click to upload": "Click para subir",
"Click to upload": "Click para enviar",
"Close": "Fechar",
"Close comments for all (except for admins)": "Fechar comentários para todos (exceto para administradores)",
"Closed": "Fechar",
"Closed": "Fechado",
"Comment deleted": "Comentário apagado",
"Comment from @{username} reported": "Comentário de @{username} reportado",
"Comment from @{username} reported": "Comentário de @{username} enviado",
"Comments": "Comentários",
"Comments are closed for everybody else.": "Os comentários estão fechados para todos os demais.",
"Comments have been closed.": "Os comentários foram fechados.",
"Confirm my participation": "Confirmar minha participação",
"Confirm my particpation": "Confirmar minha participação",
"Confirmed": "Confirmado",
"Confirmed at": "Confirmado às",
"Confirmed: Will happen": "Confirmado: Irá acontecer",
"Congratulations, your account is now created!": "Parabéns, sua conta está criada agora!",
"Contact": "Contato",
"Continue editing": "Continuar a edição",
"Cookies and Local storage": "Cookies e armazenamento local",
"Country": "País",
"Create": "Criar",
"Create a new event": "Criar novo evento",
"Create a new group": "Criar novo grupo",
"Create a new identity": "Criar nova identidade",
"Create a calc": "Criar um calc",
"Create a discussion": "Criar uma conversa",
"Create a folder": "Criar uma pasta",
"Create a new event": "Criar um novo evento",
"Create a new group": "Criar um novo grupo",
"Create a new identity": "Criar uma nova identidade",
"Create a new list": "Criar uma nova lista",
"Create a pad": "Criar um pad",
"Create a videoconference": "Criar uma videoconferência",
"Create an account": "Criar um conta",
"Create and manage several identities from the same account": "Criar e administrar várias identidades da mesma conta",
"Create group": "Criar grupo",
"Create my event": "Criar meu evento",
"Create my group": "Criar meu grupo",
"Create my profile": "Criar meu perfil",
"Create resource": "Criar recurso",
"Create the discussion": "Criar a conversa",
"Create to-do lists for all the tasks you need to do, assign them and set due dates.": "Crie uma lista para todas as tarefas que você precisa fazer, atribua-as e defina datas de vencimento.",
"Create token": "Criar token",
"Create, edit or delete events": "Criar, editar ou apagar eventos",
"Created by {name}": "Criado por {name}",
"Created by {username}": "Criado por {username}",
"Creator": "Criador",
"Current identity has been changed to {identityName} in order to manage this event.": "A identidade atual foi modificada para {identityName} para poder administrar este evento.",
"Current identity has been changed to {identityName} in order to manage this event.": "A identidade atual foi alterada para {identityName} para poder administrar este evento.",
"Current page": "Página atual",
"Custom": "Personalizar",
"Custom URL": "URL personalizada",
"Custom text": "Texto personalizado",
"Daily email summary": "Resumo diário por email",
"Dashboard": "Painel de controle",
"Date": "Data",
"Date and time": "Data e hora",
"Date and time settings": "Configuração da data e hora",
"Date parameters": "Parâmetros da data",
"Decline": "Recusar",
"Default": "Padrão",
"Default Mobilizon privacy policy": "Políticas padrões de privacidade do Mobilizon",
"Default Mobilizon terms": "Condições gerais padrões do Mobilizon",
"Default Mobilizon.org terms": "Termos de uso padrão do Mobilizon.org",
"Delete": "Apagar",
"Delete Comment": "Apagar comentário",
"Delete Event": "Apagar o Evento",
"Delete event": "Apagar um Evento",
"Delete Event": "Apagar evento",
"Delete account": "Apagar conta",
"Delete conversation": "Apagar conversa",
"Delete event": "Apagar evento",
"Delete everything": "Apagar tudo",
"Delete group": "Apagar grupo",
"Delete my account": "Apagar minha conta",
"Delete post": "Apagar publicação",
"Delete this identity": "Apagar esta identidade",
"Delete your identity": "Apagar a sua identidade",
"Delete {eventTitle}": "Apagar {eventTitle}",
"Delete {preferredUsername}": "Apagar {preferredUsername}",
"Deleting comment": "Apagar comentário",
"Deleting event": "Apagar evento",
"Deleting my account will delete all of my identities.": "Apagar minha conta apagará todas as minhas identidades.",
"Deleting your Mobilizon account": "Apagando sua conta Mobilizon",
"Demote": "Retroceder",
"Description": "Descrição",
"Didn't receive the instructions ?": "Você não recebeu as instruções?",
"Didn't receive the instructions?": "Você não recebeu as instruções?",
"Disabled": "Desativado",
"Discussions": "Conversas",
"Display name": "Mostrar nome",
"Display participation price": "Mostrar um preço de participação",
"Display participation price": "Mostrar preço para participação",
"Displayed nickname": "Apelido exibido",
"Displayed on homepage and meta tags. Describe what Mobilizon is and what makes this instance special in a single paragraph.": "Mostrado na página de início e nas meta tags. Descreva o que é Mobilizon e o que torna esta instância especial em apenas um parágrafo.",
"Do not receive any mail": "Não receber nenhum email",
"Domain": "Domínio",
"Draft": "Rascunho",
"Drafts": "Rascunhos",
"Due on": "Previsto para",
"Duplicate": "Duplicar",
"Edit": "Editar",
"Eg: Stockholm, Dance, Chess…": "Exemplo: São Paulo, Brasília, Salvador…",
"Edit post": "Editar publicação",
"Edited {ago}": "Editado {ago}",
"Eg: Stockholm, Dance, Chess…": "Exemplo: São Paulo, Dança, Xadrez…",
"Either on the {instance} instance or on another instance.": "Tanto na instância {instance} como em outra instância.",
"Either the account is already validated, either the validation token is incorrect.": "Ou a conta já está validada, ou o token de validação está incorreto.",
"Either the email has already been changed, either the validation token is incorrect.": "Ou o email foi alterado, ou a validação do token está incorreta.",
"Either the participation has already been validated, either the validation token is incorrect.": "Oi a participação já foi validada, ou o token de validação está incorreto.",
"Either the participation request has already been validated, either the validation token is incorrect.": "Ou o pedido de participação já foi validado, ou a validação do token está incorreta.",
"Email": "Email",
"Email address": "Endereço de email",
"Email notifications": "Notificações de email",
"Enabled": "Habilitado",
"Ends on…": "Termina em…",
"Enjoy discovering Mobilizon!": "Divirta-se descobrindo Mobilizon!",
"Enter the link URL": "Insira o link URL",
"Enter your email address below, and we'll email you instructions on how to change your password.": "Insira o seu endereço de email abaixo e nós enviaremos à você um email com instruções de como mudar a senha.",
"Enter your own privacy policy. HTML tags allowed. The {mobilizon_privacy_policy} is provided as template.": "Insira sua própria política de privacidade. Tags HTML são permitidas. As {mobilizon_privacy_policy} são oferecidas como modelo.",
"Enter your own terms. HTML tags allowed. Mobilizon.org's terms are provided as template.": "Insira seus próprios termos. tags HTML são autorizadas. Os termos do Mobilizon.org são oferecidos como um exemplo apenas.",
"Enter your own terms. HTML tags allowed. The {mobilizon_terms} are provided as template.": "Insira suas próprias condições gerais. Tags HTML são permitidas. As {mobilizon_terms} são oferecidas como modelo.",
"Error": "Erro",
"Error while changing email": "Erro ao modificar o email",
"Error while communicating with the server.": "Erro ao comunicar com o servidor.",
"Error while login with {provider}. Retry or login another way.": "Erro ao entrar com {provider}. Tente novamente ou entre de outra maneira.",
"Error while login with {provider}. This login provider doesn't exist.": "Erro ao entrar com {provider}. O provedor deste login não existe.",
"Error while reporting group {groupTitle}": "Erro ao denunciar o grupo {groupTitle}",
"Error while saving report.": "Erro ao salvar o relatório.",
"Error while validating account": "Erro ao validar a conta",
"Error while validating participation": "Erro ao validar a participação",
"Error while validating participation request": "Erro ao validar o pedido de participação",
"Ethical alternative to Facebook events, groups and pages, Mobilizon is a <b>tool designed to serve you</b>. Period.": "Alternativa ética aos eventos, grupos e páginas do Facebook, o Mobilizon é uma <b>ferramenta criada pra servir você</b>. Ponto.",
"Event": "Evento",
"Event already passed": "Evento já ocorreu",
"Event already passed": "Evento já aconteceu",
"Event cancelled": "Evento cancelado",
"Event creation": "Criação de evento",
"Event edition": "Edição de evento",
@ -126,211 +246,401 @@
"Event {eventTitle} deleted": "Evento {eventTitle} foi apagado",
"Event {eventTitle} reported": "Evento {eventTitle} foi reportado",
"Events": "Eventos",
"Events tagged with {tag}": "Eventos etiquetados com {tag}",
"Everything": "Tudo",
"Ex: mobilizon.fr": "Ex: mobilizon.fr",
"Ex: someone@mobilizon.org": "Ex: alguém@mobilizon.org",
"Exclude": "Excluir",
"Explore": "Explorar",
"Failed to save admin settings": "Falha ao salvar configurações do administrador",
"Explore events": "Explorar eventos",
"Failed to save admin settings": "Falha ao gravar as configurações do administrador",
"Featured events": "Eventos em destaque",
"Features": "Funcionalidades",
"Federated Group Name": "Nome do grupo federado",
"Federation": "Federação",
"Fetch more": "Buscar mais",
"Find an address": "Encontrar um endereço",
"Find an instance": "Encontrar uma instância",
"Followers": "Seguidores",
"Followings": "Seguindo",
"For instance: London": "Por exemplo: Londres",
"For instance: London, Taekwondo, Architecture…": "Por exemplo: Londres, Taekwondo, Arquitetura…",
"Forgot your password ?": "Esqueceu a senha?",
"Forgot your password ?": "Esqueceu a sua senha?",
"Forgot your password?": "Esqueceu a sua senha?",
"From a birthday party with friends and family to a march for climate change, right now, our gatherings are <b>trapped inside the tech giants platforms</b>. How can we organize, how can we click “Attend,” without <b>providing private data</b> to Facebook or <b>locking ourselves up</b> inside MeetUp?": "Desde um aniversário com amigos e família até uma marcha pela mudança do clima, exatamente agora, right now, os bons motivos para nos juntarmos <b>Presos pelos gigantes da tecnologia</b>. Como nós podemos nos organizar, como nós podemos clicar, \"Participar\" sem <b>dar nossos dados</b> para o Facebook <b>que nos prende</b> dentro do MeetUp?",
"From the {startDate} at {startTime} to the {endDate}": "De {startDate} às {startTime} até {endDate}",
"From the {startDate} at {startTime} to the {endDate} at {endTime}": "De {startDate} às {startTime} até {endDate} às {endTime}",
"From the {startDate} to the {endDate}": "De {startDate} até {endDate}",
"From the {startDate} to the {endDate}": "De {startDate} até {endDate}",
"Gather ⋅ Organize ⋅ Mobilize": "Reunir⋅ Organizar⋅ Mobilizar",
"General": "Geral",
"General information": "Informações gerais",
"Getting location": "Obter localização",
"Getting location": "Obter a localização",
"Glossary": "Glossário",
"Go": "Vamos",
"Go to the event page": "Vá para a página do evento",
"Going as {name}": "Indo como {name}",
"Group List": "Lista de grupos",
"Group Members": "Membros do grupo",
"Group address": "Endereço do grupo",
"Group display name": "Nome de exibição do grupo",
"Group full name": "Nome completo do grupo",
"Group name": "Nome do grupo",
"Group settings": "Configurações de grupo",
"Group settings saved": "Configurações do grupo salvas",
"Group short description": "Descrição curta do grupo",
"Group visibility": "Visibilidade do grupo",
"Group {displayName} created": "Grupo {displayName} criado",
"Group {groupTitle} reported": "Grupo {groupTitle} denunciado",
"Groups": "Grupos",
"Groups are spaces for coordination and preparation to better organize events and manage your community.": "Os grupos são espaços para coordenação e preparação para melhor organizar eventos e administrar a sua comunidade.",
"Headline picture": "Imagem de manchete",
"Hide replies": "Esconder as respostas",
"Home": "Início",
"Home to {number} users": "Início para {number} usuários",
"Hourly email summary": "Resumo por e-mail à cada hora",
"I agree to the {instanceRules} and {termsOfService}": "Eu concordo com as {instanceRules} e {termsOfService}",
"I create an identity": "Eu crio uma identidade",
"I don't have a Mobilizon account": "Eu não tenho uma conta Mobilizon",
"I have a Mobilizon account": "Eu tenho uma conta Mobilizon",
"I have an account on another Mobilizon instance.": "Eu tenho uma conta numa outra instância Mobilizon.",
"I have an account on another Mobilizon instance.": "Eu tenho uma conta em uma outra instância Mobilizon.",
"I participate": "Eu participo",
"I want to allow people to participate without an account.": "Eu quero permitir pessoas participarem sem uma conta.",
"I want to approve every participation request": "Eu quero aprovar cada pedido de participação",
"Identity {displayName} created": "Identidade {displayName} criada",
"Identity {displayName} deleted": "Identidade {displayName} apagada",
"Identity {displayName} updated": "Identidade {displayName} atualizada",
"If allowed by organizer": "Se autorizado pelo organizador",
"If an account with this email exists, we just sent another confirmation email to {email}": "Se uma conta com esse email existe, nós acabamos de enviar um outro email de confirmação para {email}",
"If this identity is the only administrator of some groups, you need to delete them before being able to delete this identity.": "Se esta identidade é o único administrador de alguns grupos, você precisa apagar esses grupos antes de poder apagar esta identidade.",
"If you have opted for manual validation of participants, Mobilizon will send you an email to inform you of new participations to be processed. You can choose the frequency of these notifications below.": "Se você optou por validação manual dos participantes, o Mobilizon enviará à você um email informando os novos participantes a serem processados. Você pode escolher a frequência dessas notificações abaixo.",
"If you want, you may send a message to the event organizer here.": "Se você quiser, você pode enviar uma mensagem para o organizador do evento aqui.",
"Impossible to login, your email or password seems incorrect.": "Impossível fazer login, seu e-mail ou senha parecem estar incorreto.",
"In the following context, an application is a software, either provided by the Mobilizon team or by a 3rd-party, used to interact with your instance.": "No contexto que se segue, uma aplicação é um software, seja fornecido pela equipe Mobilizon ou por um terceiro, usado para interagir com a sua instância.",
"In the meantime, please consider that the software is not (yet) finished. More information {onBlog}.": "Enquanto isso, favor considerar que o aplicativo não está (ainda) terminado. Mais informações {onBlog}.",
"Installing Mobilizon will allow communities to free themselves from the services of tech giants by creating <b>their own event platform</b>.": "instalar Mobilizon possibilitará às comunidades de se libertarem dos serviços de grandes empresas de tecnologia criando, elas mesmas, <b>suas próprias plataformas</b>.",
"Instance": "Instância",
"Instance Description": "Descrição da instância",
"Instance Long Description": "Descrição longa da instância",
"Instance Name": "Nome da instância",
"Instance Privacy Policy": "Política de privacidade da instância",
"Instance Privacy Policy Source": "Fonte da política de privacidade da instância",
"Instance Privacy Policy URL": "URL da política de privacidade da instância",
"Instance Rules": "Regras da instância",
"Instance Short Description": "Descrição curta da instância",
"Instance Slogan": "Slogan da instância",
"Instance Terms": "Termos de uso da instância",
"Instance Terms Source": "Termos básicos de uso da instância",
"Instance Terms Source": "Fonte dos termos de uso da instância",
"Instance Terms URL": "URL dos termos de uso da instância",
"Instance administrator": "Administrador da instância",
"Instance configuration": "Configuração da instância",
"Instance languages": "Idiomas da instância",
"Instance rules": "Regras da instância",
"Instance settings": "Configurações da instância",
"Instances": "Instâncias",
"Instances following you": "Instâncias seguindo você",
"Instances you follow": "Instâncias que você segue",
"Invite a new member": "Convidar um novo membro",
"Invite member": "Convidar membro",
"Invited": "Convidado",
"Italic": "Itálico",
"Join <b>{instance}</b>, a Mobilizon instance": "Juntar-se a <b>{instance}</b>, uma instância Mobilizon",
"Join group": "Juntar-se ao grupo",
"Join {instance}, a Mobilizon instance": "Junte-se à {instance}, uma instância Mobilizon",
"Keep the entire conversation about a specific topic together on a single page.": "Mantenha toda a conversa sobre um tema específico em apenas uma página.",
"Key words": "Palavras chave",
"Language": "Idioma",
"Last IP adress": "Último endereço IP",
"Last group created": "Último grupo criado",
"Last published event": "Último evento publicado",
"Last sign-in": "Último log-in",
"Last week": "Última semana",
"Latest posts": "Últimas publicações",
"Learn more": "Saiba mais",
"Learn more about Mobilizon": "Saiba mais sobre Mobilizon",
"Learn more about Mobilizon": "Saiba mais sobre o Mobilizon",
"Learn more about {instance}": "Aprenda mais sobre {instance}",
"Leave": "Sair",
"Leave event": "Deixar o evento",
"Leaving event \"{title}\"": "Deixar o evento \"{title}\"",
"Legal": "Legal",
"Let's create a new common": "Vamos criar um novo Common",
"Let's define a few settings": "Vamos definir algumas configurações",
"License": "Licença",
"Limited number of places": "Número de lugares limitados",
"List title": "Título da lista",
"Load more": "Ver mais",
"Local": "Local",
"Locality": "Localidade",
"Location": "Local",
"Log in": "Entrar",
"Log out": "Sair",
"Login": "Entrar",
"Login on Mobilizon!": "Entrar no Mobilizon!",
"Login on {instance}": "Entrar em {instance}",
"Login status": "Estado do Login",
"Main languages you/your moderators speak": "Principais línguas faladas por você ou seus moderadores",
"Manage participations": "Gerenciar participações",
"Mark as resolved": "Marcar como resolvido",
"Member": "Membro",
"Members": "Membros",
"Mobilizon is a federated network. You can interact with this event from a different server.": "Mobilizon é uma rede federada. Você pode interagir com este evento através de um outro servidor.",
"Message": "Mensagem",
"Mobilizon": "Mobilizon",
"Mobilizon is a federated network. You can interact with this event from a different server.": "O Mobilizon é uma rede federada. Você pode interagir com este evento por meio de um outro servidor.",
"Mobilizon is a free/libre software that will allow communities to create <b>their own spaces</b> to publish events in order to better emancipate themselves from tech giants.": "Mobilizon é um aplicativo livre/gratuito que permitirá às comunidades de criarem <b>seus próprios espaços</b> para publicarem eventos para se emanciparem dos grandes gigantes da tecnologia.",
"Mobilizon is a tool that helps you <b>find, create and organise events</b>.": "O Mobilizon é uma ferramenta que ajuda você a <b>encontrar, criar e organizar eventos</b>.",
"Mobilizon is not a giant platform, but a <b>multitude of interconnected Mobilizon websites</b>.": "Mobilizon não é uma plataforma gigante, mas uma <b>multitude de sites web Mobilizon interconectados</b>.",
"Mobilizon is under development, we will add new features to this site during regular updates, until the release of <b>version 1 of the software in the first half of 2020</b>.": "Mobilizon está em desenvolvimento, nós iremos adicionar novas funcionalidades neste site durante atualizações regulares, até o lançamento da <b>versão 1 do aplicativo no primeiro semestre de 2020</b>.",
"Mobilizon software": "Aplicativo Mobilizon",
"Mobilizon version": "Versão Mobilizon",
"Mobilizon will send you an email when the events you are attending have important changes: date and time, address, confirmation or cancellation, etc.": "Mobilizon te enviará um email quando o evento que você estiver participando tiver mudanças importantes: data e hora, endereço, confirmação ou cancelamento, etc.",
"Mobilizons licence": "A licença Mobilizon",
"Moderated comments (shown after approval)": "Comentários moderados (mostrados após aprovação)",
"Moderation": "Moderação",
"Moderation log": "Relatório de moderação",
"Moderator": "Moderador",
"Move": "Mover",
"Move \"{resourceName}\"": "Mover \"{resourceName}\"",
"Move resource to {folder}": "Mover recurso para {folder}",
"My account": "Minha conta",
"My events": "Meus eventos",
"My groups": "Meus grupos",
"My identities": "Minhas identidades",
"NOTE! The default terms have not been checked over by a lawyer and thus are unlikely to provide full legal protection for all situations for an instance admin using them. They are also not specific to all countries and jurisdictions. If you are unsure, please check with a lawyer.": "NOTA! As condições gerais não foram verificadas por um advogado e, portanto, é pouco provável que ofereçam proteção legal para todas as situações para um administrador de instância utilizá-las. E também não são específicas para todos os países e jurisdições. Se você não está seguro, favor verificar com um advogado.",
"Name": "Nome",
"New discussion": "Nova conversa",
"New email": "Novo email",
"New folder": "Nova pasta",
"New link": "Novo link",
"New note": "Nova nota",
"New password": "Nova senha",
"New profile": "Novo perfil",
"Next month": "Próximo mês",
"Next page": "Próxima página",
"Next week": "Na próxima semana",
"No actors found": "Nenhum ator encontrado",
"No address defined": "Nenhum endereço definido",
"No closed reports yet": "Nenhum relatório fechado ainda",
"No comment": "Nenhum comentário",
"No comments yet": "Nenhum comentário ainda",
"No discussions yet": "Nenhuma conversa ainda",
"No end date": "Não há data final",
"No events found": "Nenhum evento encontrado",
"No group found": "Nenhum grupo encontrado",
"No groups found": "Nenhum grupo encontrado",
"No instance follows your instance yet.": "Nenhuma instância seguindo sua instância ainda.",
"No instance follows your instance yet.": "Nenhuma instância segue a sua instância ainda.",
"No instance to approve|Approve instance|Approve {number} instances": "Nenhuma instância para aprovar|Aprovar instância|Aprovar {number} instâncias",
"No instance to reject|Reject instance|Reject {number} instances": "Nenhuma instância a rejeitar|Rejeitar instância|Rejeitar {number} instâncias",
"No instance to remove|Remove instance|Remove {number} instances": "Nenhuma instância para remover|Remover instância|Remover {number} instâncias",
"No instance to reject|Reject instance|Reject {number} instances": "Nenhuma instância para rejeitar|Rejeitar instância|Rejeitar {number} instâncias",
"No instance to remove|Remove instance|Remove {number} instances": "Nenhuma instância para remover|Remover instância|Remover {number} instâncias",
"No languages found": "Nenhum idioma encontrado",
"No member matches the filters": "Nenhum membro corresponde aos filtros",
"No message": "Nenhuma mensagem",
"No moderation logs yet": "Nenhum relatório de moderação ainda",
"No one is going to this event": "Ninguém vai neste evento|Uma pessoa vai|{going} pessoas vão",
"No open reports yet": "Nenhum relatório aberto ainda",
"No participant matches the filters": "Nenhum participante corresponde aos filtros",
"No participant to approve|Approve participant|Approve {number} participants": "Nenhum participante para aprovar|Aprovar participante|Aprovar {number} participantes",
"No participant to reject|Reject participant|Reject {number} participants": "Nenhum participante para rejeitar|Rejeitar participante|Rejeitar {number} participantes",
"No posts found": "Nenhuma publicação encontrada",
"No posts yet": "Nenhuma publicação ainda",
"No profile matches the filters": "Nenhum perfil corresponde aos filtros",
"No profiles found": "Nenhum perfil encontrado",
"No public upcoming events": "Não há próximos eventos públicos",
"No resolved reports yet": "Nenhum relatório resolvido ainda",
"No resources in this folder": "Nenhum recurso nessa pasta",
"No resources selected": "Nenhum recurso selecionado|Um recurso selecionado|{count} recursos selecionados",
"No resources yet": "Nenhum recurso ainda",
"No results for \"{queryText}\"": "Não há resultado para \"{queryText}\"",
"No rules defined yet.": "Nenhuma regra definida ainda.",
"No user account with this email was found. Maybe you made a typo?": "Nenhuma conta de usuário com este e-mail foi encontrado. Talvez você esqueceu ou trocou alguma letra?",
"None": "Nenhum",
"Not approved": "Não aprovado",
"Not confirmed": "Não confirmado",
"Notes": "Notas",
"Nothing to see here": "Não há nada para ver aqui",
"Notification before the event": "Notificações antes do evento",
"Notification on the day of the event": "Notificações no dia do evento",
"Notifications for manually approved participations to an event": "Notificações para participações aprovadas manualmente para um evento",
"Now, create your first profile:": "Agora, crie seu primeiro perfil:",
"Number of places": "Número de lugares",
"OK": "OK",
"Old password": "senha antiga",
"Old password": "Senha antiga",
"On {date}": "Em {date}",
"On {date} ending at {endTime}": "Em {date} terminando às {endTime}",
"On {date} from {startTime} to {endTime}": "Em {date} de {startTime} até {endTime}",
"On {date} starting at {startTime}": "Em {date} começando às {startTime}",
"One person is going": "Ninguém irá| Uma pessoa irá | {approved} pessoas irão",
"Only accessible through link": "Acessível apenas através do link",
"Only accessible through link (private)": "Acessível somente através de link (privado)",
"Only accessible through link and search (private)": "Acessível somente através de um link e busca (privada)",
"Only accessible to members of the group": "Acessível apenas aos membros do grupo",
"Only alphanumeric characters and underscores are supported.": "Apenas letras e números e sublinhado (underscore) é aceito.",
"Only alphanumeric lowercased characters and underscores are supported.": "Permitido apenas caracteres alfanuméricos minúsculos e caracter de sublinhado.",
"Open": "Aberto",
"Opened reports": "Relatórios abertos",
"Or": "Ou",
"Organized": "Organizado",
"Organized by {name}": "Organizado por {name}",
"Organized by": "Organizado por",
"Organized by {name}": "Organizado por {name}",
"Organizer": "Organizador",
"Organizer notifications": "Notificações do organizador",
"Organizers": "Organizadores",
"Other": "Outro",
"Other notification options:": "Outras opções de notificações:",
"Other software may also support this.": "Outros aplicativos talvez também suportem esta funcionalidade.",
"Otherwise this identity will just be removed from the group administrators.": "Caso contrário, esta identidade será removida do grupo de administradores.",
"Page": "Página",
"Page limited to my group (asks for auth)": "Acesso limitado ao meu grupo (solicite o acesso)",
"Page not found": "Página não encontrada",
"Parent folder": "Pasta pai",
"Participant": "Participante",
"Participant already was rejected.": "Participante já foi rejeitado.",
"Participant has already been approved as participant.": "o participante já foi aprovado como participante.",
"Participants": "Participantes",
"Participate": "Participar",
"Participate using your email address": "Participar utilizando o seu endereço de email",
"Participation approval": "Aprovação de participação",
"Participation confirmation": "Confirmação da participação",
"Participation notifications": "Notificações de participações",
"Participation requested!": "Participação solicitada!",
"Participations": "Participações",
"Password": "Senha",
"Password (confirmation)": "Senha (confirmação)",
"Password change": "Mudança de senha",
"Password reset": "Reinicializar a senha",
"Past events": "Eventos realizados",
"Password reset": "Resetar a senha",
"Past events": "Eventos passados",
"Pending": "Pendente",
"Pick": "Escolha",
"Pick a group": "Escolha um grupo",
"Pick a profile or a group": "Escolha um perfil ou um grupo",
"Pick an identity": "Escolha uma identidade",
"Please check your spam folder if you didn't receive the email.": "Favor verificar sua caixa de spam caso não tenha recebido o email.",
"Please contact this instance's Mobilizon admin if you think this is a mistake.": "Contate o administrador desta instância Mobilizon se você pensa se tratar de um erro.",
"Please contact this instance's Mobilizon admin if you think this is a mistake.": "Por favor contate o administrador desta instância Mobilizon se você pensa se tratar de um erro.",
"Please do not use it in any real way.": "Por favor, não o use de forma real.",
"Please enter your password to confirm this action.": "Favor inserir sua senha para confirmar esta ação.",
"Please make sure the address is correct and that the page hasn't been moved.": "Favor certificar-se de que o endereço está correto e de que a página não foi movida.",
"Please read the full rules": "Favor leia todas as regras",
"Please read the {fullRules} published by {instance}'s administrators.": "Favor ler as {fullRules} publicadas pelos administradores da instância {instance}.",
"Please refresh the page and retry.": "Favor atualizar a página e tentar novamente.",
"Post a comment": "Adicione um comentário",
"Post": "Publicação",
"Post a comment": "Envie um comentário",
"Post a reply": "Envie uma resposta",
"Postal Code": "Código Postal",
"Postal Code": "Código postal",
"Posts": "Publicações",
"Powered by {mobilizon}. © 2018 - {date} The Mobilizon Contributors - Made with the financial support of {contributors}.": "Distribuído por {mobilizon}. © 2018 - {date} Os contribuidores do Mobilizon - Feito com o apoio financeiro dos {contributors}.",
"Preferences": "Preferências",
"Previous page": "Página anterior",
"Privacy Policy": "Política de privacidade",
"Privacy policy": "Política de privacidade",
"Private event": "Evento privado",
"Private feeds": "Feeds Privados",
"Public RSS/Atom Feed": "RSS público/Atom feed",
"Private feeds": "Feeds privados",
"Profiles": "Perfis",
"Promote": "Promover",
"Public": "Público",
"Public RSS/Atom Feed": "RSS público/Feed Atom",
"Public comment moderation": "Moderação de comentários públicos",
"Public event": "Evento público",
"Public feeds": "Feeds públicos",
"Public iCal Feed": "Feed iCal público",
"Public page": "Página pública",
"Publication date": "Data da publicação",
"Publish": "Publicar",
"Published events": "Eventos publicados",
"RSS/Atom Feed": "RSS/Feed Atom",
"Published events with <b>{comments}</b> comments and <b>{participations}</b> confirmed participations": "Eventos publicados com <b>{comments}</b> comentários e <b>{participations}</b> participações confirmadas",
"RSS/Atom Feed": "RSS/Feed Atom",
"Radius": "Radio",
"Read Framasofts statement of intent on the Framablog": "Leia a declaração de intenção da Associação Framasoft em Framablog",
"Recap every week": "Resumo semanal",
"Receive one email per request": "Receber um email por solicitação",
"Redirecting to event…": "Redirecionando para o evento…",
"Refresh profile": "Atualizar perfil",
"Region": "Região",
"Register": "Inscrever",
"Register an account on Mobilizon!": "Registrar uma conta no Mobilizon!",
"Register an account on {instanceName}!": "Registrar uma conta em {instanceName}!",
"Register for an event by choosing one of your identities": "Inscrever-se num evento escolhendo uma de suas identidades",
"Register on this instance": "Registrar-se nesta instância",
"Registration is allowed, anyone can register.": "Inscrições autorizadas, qualquer um pode se inscrever.",
"Registration is closed.": "Inscrições fechadas.",
"Registration is currently closed.": "Inscrições estão atualmente fechadas.",
"Registrations": "Inscrições",
"Registrations are restricted by allowlisting.": "As inscrições são reservadas à lista de acesso.",
"Registrations are restricted by whitelisting.": "Inscrições são restritas aos membros da lista branca.",
"Reject": "Rejeitar",
"Rejected": "Rejeitado",
"Rejected participations": "Participantes rejeitados",
"Remember my participation in this browser": "Lembrar a minha participação neste navegador",
"Remove": "Remover",
"Rename": "Renomear",
"Rename resource": "Renomear recurso",
"Reopen": "Reabrir",
"Reply": "Responder",
"Report": "Relatar",
"Report #{reportNumber}": "Relatório #{reportNumber}",
"Report this comment": "Relatar este comentário",
"Report this event": "Relatar este evento",
"Report this group": "Denunciar este grupo",
"Reported": "Reportado",
"Reported by": "Relatado por",
"Reported by someone on {domain}": "Relatado por alguém em {domain}",
"Reported by {reporter}": "Relatado por {reporter}",
"Reported group": "Grupo denunciado",
"Reported identity": "Identidade reportada",
"Reports": "Relatórios",
"Request for participation confirmation sent": "Pedido de confirmação de participação enviado",
"Requests": "Solicitações",
"Resend confirmation email": "Enviar um novo email de confirmação",
"Reset my password": "Recuperar a senha",
"Resend confirmation email": "Reenviar um novo email de confirmação",
"Reset my password": "Resetar a minha senha",
"Resolved": "Resolvido",
"Resource provided is not an URL": "O recurso oferecido não é um URL",
"Resource provided is not an URL": "O recurso oferecido não é uma URL",
"Resources": "Recursos",
"Restricted": "Limitado",
"Right now": "Agora mesmo",
"Role": "Papel",
"Rules": "Regras",
"SSL and it's successor TLS are encryption technologies to secure data communications when using the service. You can recognize an encrypted connection in your browser's address line when the URL begins with {https} and the lock icon is displayed in your browser's address bar.": "SSL e seu sucessor TLS são tecnologias de criptografia que protege comunicação de dados quando se usa o serviço. Você pode reconhecer uma conexão criptografada na linha de endereço do seu navegador quando o URL começa com {https} e o ícone de um cadeado é mostrado na barra de endereço do seu navegador.",
"SSL/TLS": "SSL/TLS",
"Save": "Salvar",
"Save draft": "Salvar rascunho",
"Search": "Buscar",
"Search events, groups, etc.": "Buscar eventos, grupos, etc.",
"Search results: \"{search}\"": "Resultados da busca: \"{search}\"",
"Searching…": "Buscando…",
"Search…": "Buscar…",
"Select a language": "Selecione um idioma",
"Select a timezone": "Selecionar um fuso horário",
"Select languages": "Selecionar idioma",
"Send email": "Enviar email",
"Send me an email to reset my password": "Envie-me um e-mail para eu reiniciar minha senha",
"Send me the confirmation email once again": "Envie-me o email de confirmação novamente",
"Send the confirmation email again": "Enviar o email de confirmação novamente",
"Send the report": "Enviar o relato",
"Set an URL to a page with your own terms.": "Insira um URL apontando para uma página contendo os seus próprios termos.",
"Set an URL to a page with your own privacy policy.": "Defina um endereço URL apontando para uma página web com a sua própria política de privacidade.",
"Set an URL to a page with your own terms.": "Insira uma URL apontando para uma página contendo os seus próprios termos.",
"Settings": "Parâmetros",
"Share this event": "Compartilhar este evento",
"Short bio": "Breve biografia",
"Show map": "Mostrar mapa",
"Show remaining number of places": "Mostrar o número de lugares restantes",
"Show the time when the event begins": "Mostrar o horário de início do evento",
"Show the time when the event ends": "Mostrar o horário que o evento termina",
"Show the time when the event ends": "Mostrar o horário de término do evento",
"Sign in with": "Entrar com",
"Sign up": "Registrar",
"Since you are a new member, private content can take a few minutes to appear.": "Uma vez que você é um membro novo, conteúdo privado pode levar alguns minutos para aparecer.",
"Software to the people": "Aplicativos para as pessoas",
"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:": "Alguns termos, técnicos ou não, utilizados no texto abaixo talvez trate de conceitos que são difíceis de compreender. Oferecemos aqui um glossário para ajudar você a compreendê-los melhor:",
"Starts on…": "Começa em…",
"Status": "Status",
"Status": "Estado",
"Street": "Rua",
"Submit": "Enviar",
"Suspend": "Suspender",
"Suspend group": "Suspender o grupo",
"Suspended": "Suspenso",
"Task lists": "Lista de tarefas",
"Tentative: Will be confirmed later": "Provisório: será confirmado mais tarde",
"Terms": "Termos de uso",
"The actual number of participants may differ, as this event is hosted on another instance.": "O número atual de participantes talvez difiram, já que este evento é hospedado em outra instância.",
"Terms of service": "Condições de uso",
"Text": "Texto",
"The account's email address was changed. Check your emails to verify it.": "O endereço de email da conta foi modificado. Olhe seus emails para verificar isso.",
"The actual number of participants may differ, as this event is hosted on another instance.": "O número atual de participantes pode variar, já que este evento é hospedado em outra instância.",
"The content came from another server. Transfer an anonymous copy of the report?": "O conteúdo vem de um outro servidor. Transferir uma cópia anônima do relatório?",
"The current identity doesn't have any permission on this event. You should probably change it.": "O identidade atual não tem permissão neste evento. Você deverá provavelmente mudar isso.",
"The draft event has been updated": "O rascunho do evento foi atualizado",
@ -338,84 +648,151 @@
"The event has been published": "Evento publicado",
"The event has been updated": "Evento atualizado",
"The event has been updated and published": "Evento atualizado e publicado",
"The event organiser has chosen to validate manually participations. Do you want to add a little note to explain why you want to participate to this event?": "O organizador do evento escolheu validar manualmente as participações. Você quer adicionar uma pequena nota para explicar porque você quer participar deste evento?",
"The event organizer didn't add any description.": "O organizador do evento não inseriu nenhuma descrição.",
"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.": "O organizador do evento aprova manualmente as participações. Visto que você escolheu participar sem uma conta, por favor explique porque você quer participar deste evento.",
"The event title will be ellipsed.": "O título do evento será reticulado.",
"The page you're looking for doesn't exist.": "A página que você procura não existe.",
"The password was successfully changed": "A senha foi modificada com sucesso",
"The report will be sent to the moderators of your instance. You can explain why you report this content below.": "O relato será enviado aos moderadores da sua instância. Você pode explicar o por que você relatou o conteúdo abaixo.",
"The event will show as attributed to this group.": "O evento será mostrado como atribuído a este grupo.",
"The event will show as attributed to your personal profile.": "O evento será mostrado como atribuído a seu perfil pessoal.",
"The event will show the group as organizer.": "O evento mostrará o grupo como organizador.",
"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.": "O grupo será publicamente listado nos resultados de buscas e pode ser sugerido na seção « Exploração ». Apenas informações públicas serão mostradas nessa página.",
"The instance administrator is the person or entity that runs this Mobilizon instance.": "O administrador da instância é a pessoa ou entidade que administra esta instância Mobilizon.",
"The member was removed from the group {group}": "O membro foi removido do grupo {group}",
"The organiser has chosen to close comments.": "O organizador optou por fechar comentários.",
"The page you're looking for doesn't exist.": "A página que você está procurando não existe.",
"The password was successfully changed": "A senha foi alterada com sucesso",
"The report will be sent to the moderators of your instance. You can explain why you report this content below.": "O relato será enviado aos moderadores da sua instância. Você pode explicar porque você relatou o conteúdo abaixo.",
"The user account you're trying to login as has not been confirmed yet. Check your email inbox and eventually your spam folder.": "A conta de usuário que você utiliza para entrar não foi confirmada ainda. Verifique sua caixa de emails e, eventualmente, a sua caixa de spam.",
"The {default_privacy_policy} will be used. They will be translated in the user's language.": "A {default_privacy_policy} será usada. Elas serão traduzidas no idioma do usuário.",
"The {default_terms} will be used. They will be translated in the user's language.": "Os {default_terms} será usado. Eles serão traduzidos no idioma do usuário.",
"There are {participants} participants.": "Há {participants} participantes.",
"These events may interest you": "Estes eventos talvez te interessem",
"There will be no way to recover your data.": "Não será possível recuperar os seus dados.",
"These events may interest you": "Estes eventos talvez interessem a você",
"This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "Esta instância Mobilizon e o organizador deste evento permitem participantes anônimos, mas solicita a validação através da confirmação do email.",
"This email is already registered as participant for this event": "Este email ja está registrado como participante deste evento",
"This information is saved only on your computer. Click for details": "Esta informação é salva apenas no seu computador. Clique para mais detalhes",
"This event has been cancelled.": "Este evento foi cancelado.",
"This event is accessible only through it's link. Be careful where you post this link.": "Este evento é acessível apenas através do seu link. Tenha cuidado onde você publica este link.",
"This identifier is unique to your profile. It allows others to find you.": "Este identificador é único para o seu perfil. Permite que outros te encontrem.",
"This identity is not a member of any group.": "Esta identidade não é membro de nenhum grupo.",
"This information is saved only on your computer. Click for details": "Esta informação é gravada apenas no seu computador. Clique para mais detalhes",
"This installation (called “instance“) can easily {interconnect}, thanks to {protocol}.": "Esta instalação (chamada “instância“) pode facilmente {interconnect}, graças a {protocol}.",
"This instance isn't opened to registrations, but you can register on other instances.": "Esta instância não está aberta para registros, mas você pode se registrar em outras instâncias.",
"This is a demonstration site to test Mobilizon.": "Este é um site de demonstração para testar o Mobilizon.",
"This is a demonstration site to test the beta version of Mobilizon.": "Este é um site teste de demonstração da versão beta do Mobilizon.",
"This is like your federated username (<code>{username}</code>) for groups. It will allow the group to be found on the federation, and is guaranteed to be unique.": "Isto é como o seu usuário (<code>{username}</code>) federado para grupos. Ele permitirá que o grupo seja encontrado na federação e garante que seja único.",
"This month": "Este mês",
"This week": "Esta semana",
"This weekend": "Este fim de semana",
"This will delete / anonymize all content (events, comments, messages, participations…) created from this identity.": "Isto irá apagar / tornar anônimo todo o conteúdo (eventos, comentários, mensagens, participantes...) criados por esta identidade.",
"Timezone": "Fuso horário",
"Timezone detected as {timezone}.": "Fuso horário detectado como {timezone}.",
"Title": "Título",
"To achieve your registration, please create a first identity profile.": "Para concluir sua inscrição, favor criar seu primeiro perfil de identidade.",
"To activate more notifications, head over to the notification settings.": "Para ativar mais notificações, vá até configurações de notificações.",
"To change the world, change the software": "Para mudar o mundo, mude o aplicativo",
"To confirm, type your event title \"{eventTitle}\"": "Para confirmar, insira o título do seu evento \"{eventTitle}\"",
"To confirm, type your identity username \"{preferredUsername}\"": "Para confirmar, insira o nome da identidade \"{preferredUsername}\"",
"To confirm, type your identity username \"{preferredUsername}\"": "Para confirmar, insira o seu nome de usuário da identidade \"{preferredUsername}\"",
"To create and manage multiples identities from a same account": "Para criar e administrar múltiplas identidades de uma mesma conta",
"To create and manage your events": "Para criar e administrar seus eventos",
"To create or join an group and start organizing with other people": "Para criar ou juntar-se a um grupo e começar a organizar com outras pessoas",
"To register for an event by choosing one of your identities": "Para se inscrever em um evento escolhendo uma de suas identidades",
"Today": "Hoje",
"Tomorrow": "Amanhã",
"Transfer to {outsideDomain}": "Transferir para {outsideDomain}",
"Type": "Tipo",
"URL": "URL",
"URL copied to clipboard": "URL copiado para a área de transferência",
"Unable to detect timezone.": "Impossível detectar o fuso horário.",
"Unfortunately, this instance isn't opened to registrations": "Infelizmente, esta instância não está aberta para registros",
"Unfortunately, your participation request was rejected by the organizers.": "Infelizmente, seu pedido de participação foi rejeitado pelos organizadores.",
"Unknown": "Desconhecido",
"Unknown actor": "Ator desconhecido",
"Unknown error.": "Erro desconhecido.",
"Unsaved changes": "Modificações não salvas",
"Unsaved changes": "Alterações não salvas",
"Unset group": "Remover seleção do grupo",
"Unsuspend": "Anular a suspensão",
"Upcoming": "Em breve",
"Upcoming events": "Próximos eventos",
"Update": "Atualizar",
"Update event {name}": "Atualizar evento {name}",
"Update group": "Atualizar grupo",
"Update my event": "Atualizar meu evento",
"Update post": "Atualizar publicação",
"Updated": "Atualizado",
"Use my location": "Use minha localização",
"User": "Usuário",
"Username": "Nome de usuário",
"Users": "Usuários",
"View a reply": "Nenhuma resposta|Ver uma resposta|Ver {totalReplies} respostas",
"View a reply": "|Ver uma resposta|Ver {totalReplies} respostas",
"View all": "Ver tudo",
"View all posts": "Ver todas as publicações",
"View event page": "Ver a página do evento",
"View everything": "Ver tudo",
"View page on {hostname} (in a new window)": "Ver a página em {hostname} (numa nova janela)",
"View page on {hostname} (in a new window)": "Ver a página em {hostname} (em uma nova janela)",
"Visible everywhere on the web": "Visível por toda parte na web",
"Visible everywhere on the web (public)": "Visível a todo mundo na web (público)",
"Waiting for organization team approval.": "Aguardando pela aprovação da equipe de organização.",
"Waiting list": "Lista de espera",
"Warning": "Atenção",
"We just sent an email to {email}": "Acabamos de enviar um email para {email}",
"We use your timezone to make sure you get notifications for an event at the correct time.": "Nós usamos seu fuso horário para assegurar que você recebe as notificações de um evento no horário correto.",
"We want to develop a <b>digital common</b>, that everyone can make their own, which respects <b>privacy and activism by design</b>.": "Queremos criar um <b>bem comum (commons) digital </b>, onde cada qual possa se apropriar e fazer o seu também, respeitando <b>a privacidade e o ativismo como base</b>.",
"We will redirect you to your instance in order to interact with this event": "Iremos redirecionar você para sua instância para você interagir com este evento",
"We wont change the world from Facebook. The tool we dream of, surveillance capitalism corporations wont develop it, as they couldnt profit from it. This is an opportunity to build something better, by taking another approach.": "Nós não mudarmos o mundo pelo Facebook. A ferramenta que nós sonhamos não será criada pelas corporações do capitalismo de vigilância, já que eles não teriam lucro com ela. Esta é uma oportunidade para construirmos algo melhor, adotando uma outra abordagem.",
"We'll send you an email one hour before the event begins, to be sure you won't forget about it.": "Enviaremos um e-mail uma hora antes do início do evento, para assegurar que você não o esquecerá.",
"We'll use your timezone settings to send a recap of the morning of the event.": "Nós usaremos suas configurações de fuso horário para enviar um resumo dos seus eventos pela manhã.",
"Website": "Site web",
"Website / URL": "Website / URL",
"Welcome back {username}!": "Bem-vindo(a) novamente {username}!",
"Welcome back!": "Bem-vindo de volta!",
"Welcome back!": "Bem-vindo(a) de volta!",
"Welcome on your administration panel": "Bem-vindo ao seu painel de administração",
"Welcome to Mobilizon, {username}!": "Bem-vindo(a) ao Mobilizon, {username}!",
"Who can view this event and participate": "Quem pode ver este evento e participar",
"Who can view this post": "Quem pode ver esta publicação",
"Who published {number} events": "Quem publicou {number} eventos",
"Why create an account?": "Por que criar uma conta?",
"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.": "Permitirá mostrar e administrar o estado da sua participação na página do evento quando usar este aparelho. Desmarque se você está usando um dispositivo público.",
"World map": "Mapa mundi",
"Write something…": "Escreva qualquer coisa…",
"You and one other person are going to this event": "Você é o único que está indo neste evento|Você e uma outra pessoa estão indo neste evento | Você e {approved} pessoas estão indo neste evento.",
"You are already a participant of this event.": "Você já participa deste evento.",
"You are participating in this event anonymously": "Você participa deste evento de forma anônima",
"You are participating in this event anonymously but didn't confirm participation": "Você participa deste evento de forma anônima, mas você não confirmou a sua participação",
"You can add tags by hitting the Enter key or by adding a comma": "Você pode adicionar etiquetas pressionando Enter ou adicionando uma vírgula",
"You can try another search term or drag and drop the marker on the map": "Você pode tentar inserir outro termo de busca ou arrastar o marcador do mapa",
"You are not an administrator for this group.": "Você não é um administrador deste grupo.",
"You are participating in this event anonymously": "Você está participando deste evento de forma anônima",
"You are participating in this event anonymously but didn't confirm participation": "Você está participando deste evento de forma anônima, mas você não confirmou a sua participação",
"You can add tags by hitting the Enter key or by adding a comma": "Você pode adicionar tags pressionando a tecla Enter ou adicionando uma vírgula",
"You can pick your timezone into your preferences.": "Você pode selecionar seu fuso horário nas suas preferências.",
"You can try another search term or drag and drop the marker on the map": "Você pode tentar inserir outro termo de busca ou arrastar o marcador no mapa",
"You can't change your password because you are registered through {provider}.": "Você não pode mudar sua senha porque você está registrado em {provider}.",
"You can't remove your last identity.": "Você não pode remover a sua última identidade.",
"You don't follow any instances yet.": "Você não segue nenhuma instância ainda.",
"You have been disconnected": "Você foi disconectado",
"You have been disconnected": "Você foi desconectado",
"You have been invited by {invitedBy} to the following group:": "Você foi convidado por {invitedBy} para o seguinte grupo:",
"You have been removed from this group's members.": "Você foi removido dos membros deste grupo.",
"You have cancelled your participation": "Você cancelou a sua participação",
"You have one event in {days} days.": "Você não tem eventos nos próximos {days} dias. |Você tem um evento em {days} dias. | Você tem {count} eventos em {days} dias",
"You have one event in {days} days.": "Você não tem eventos nos próximos {days} dias. |Você tem um evento em {days} dias. | Você tem {count} eventos em {days} dias",
"You have one event today.": "Você não tem evento hoje | Você tem um evento hoje. | Você tem {count} eventos hoje",
"You have one event tomorrow.": "Você não tem eventos amanhã | Você tem um evento amanhã. | Você tem {count} eventos amanhã",
"You have one event tomorrow.": "Você não tem eventos amanhã | Você tem um evento amanhã. | Você tem {count} eventos amanhã",
"You may also ask to {resend_confirmation_email}.": "Você pode também pedir para {resend_confirmation_email}.",
"You need to login.": "Você precisa entrar (fazer login).",
"You may now close this window, or {return_to_event}.": "Você pode agora fechar a janela, ou {return_to_event}.",
"You need to create the group before you create an event.": "Você precisa criar um grupo antes de criar um evento.",
"You need to login.": "Você precisa entrar.",
"You will be able to add an avatar and set other options in your account settings.": "Você poderá adicionar um avatar e definir outras opções nas configurações da sua conta.",
"You will be redirected to the original instance": "Você será redirecionado para a instância original",
"You wish to participate to the following event": "Você deseja participar do seguinte evento",
"You'll get a weekly recap every Monday for upcoming events, if you have any.": "Todas as segundas-feiras você receberá um resumo dos próximos eventos, se você tiver algum.",
"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.": "Você precisará transmitir a URL do grupo para que as pessoas possam acessar o perfil do grupo. O grupo não será encontrado no motor de busca do Mobilizon ou nos demais motores de busca.",
"You'll receive a confirmation email.": "Você receberá um email de confirmação.",
"Your account has been successfully deleted": "Sua conta foi apagada com sucesso",
"Your account has been validated": "Sua conta foi validada",
"Your account is being validated": "Sua conta esta sendo validada",
"Your account is nearly ready, {username}": "Sua conta está quase pronta, {username}",
"Your current email is {email}. You use it to log in.": "Seu email atual é {email}. Utilize-o para fazer entrar.",
"Your email": "Seu email",
"Your email address was automatically set based on your {provider} account.": "Seu endereço de email foi configurado baseado na sua conta {provider}.",
"Your email has been changed": "Seu email foi alterado",
"Your email is being changed": "Seu email está sendo alterado",
"Your email is not whitelisted, you can't register.": "Seu email não está na lista branca, você não pode se registrar.",
"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.": "Seu email será usado apenas para confirmar que você é uma pessoa real e para enviar à você eventuais atualizações para este evento. Ele NÃO será transmitido a outras instâncias ou ao organizador do evento.",
"Your email will only be used to confirm that you're a real person and send you eventual updates for this event. It will NOT be transmitted to other instances or to the event organizer.": "Seu email será usado apenas para confirmar que você é uma pessoa real e para enviar à você eventuais atualizações para este evento. Ele NÃO será enviado a outras instâncias ou ao organizador do evento.",
"Your federated identity": "Sua identidade federada",
"Your local administrator resumed its policy:": "Seus administrador local resumiu sua política assim:",
"Your participation has been confirmed": "Sua participação foi confirmada",
@ -423,26 +800,63 @@
"Your participation has been requested": "Sua participação foi solicitada",
"Your participation has been validated": "Sua participação foi validada",
"Your participation is being validated": "Sua participação está sendo validada",
"Your participation status has been changed": "O status da sua participação foi modificado",
"Your participation request has been validated": "Sua participação foi validada",
"Your participation request is being validated": "Sua participação está sendo validada",
"Your participation status has been changed": "O estado da sua participação foi modificado",
"Your participation still has to be approved by the organisers.": "Sua participação ainda tem que ser aprovada pelos organizadores.",
"Your profile will be shown as contact.": "Seu perfil será mostrado como contato.",
"Your timezone is currently set to {timezone}.": "Seu fuso horário está configurado para {timezone}.",
"Your timezone was detected as {timezone}.": "Seu fuso horário foi detectado como {timezone}.",
"[This comment has been deleted by it's author]": "[Este comentário foi apagado pelo seu autor]",
"[This comment has been deleted]": "[Este comentário foi apagado]",
"[deleted]": "[apagado]",
"a decentralised federation protocol": "um protocolo de federação descentralizada",
"a non-existent report": "Um relatório inexistente",
"and {number} groups": "e {number} grupos",
"any distance": "qualquer distância",
"as {identity}": "como {identity}",
"contact uninformed": "Contato não especificado",
"default Mobilizon privacy policy": "Política padrão de privacidade do Mobilizon",
"default Mobilizon terms": "Termos de utilização padrão do Mobilizon.org",
"e.g. 10 Rue Jangot": "por exemplo: 10 Rue Jangot",
"e.g. 10 Rue Jangot": "por exemplo: Rua Jangot, 10",
"firstDayOfWeek": "1",
"full rules": "Regras completas",
"iCal Feed": "Feed iCal",
"instance rules": "regras da instância",
"interconnect with others like it": "Interconectar com outros como este",
"its source code is public": "seu código fonte é público",
"more than 1360 contributors": "mais de 1360 contribuidores",
"on our blog": "no nosso blog",
"profile@instance": "perfil@instance",
"report #{report_number}": "relatório #{report_number}",
"resend confirmation email": "Reenviar email de confirmação",
"respect of the fundamental freedoms": "o respeito às liberdades fundamentais",
"terms of service": "condições gerais do serviço",
"with another identity…": "com uma outra identidade…",
"{approved} / {total} seats": "{approved} / {total} lugares",
"{available}/{capacity} available places": "Nenhum lugar sobrando|{available}/{capacity} lugares disponíveis",
"{count} participants": "Nenhum participante ainda | Um participante | {count} participantes",
"{count} requests waiting": "Uma solução aguardando | {count} solicitações aguardando",
"{count} requests waiting": "{count} solicitações aguardando",
"{count} team members": "{count} membros da equipe",
"{group}'s events": "Eventos do {group}",
"{instanceName} is an instance of the {mobilizon} software.": "{instanceName} é uma instância do aplicativo {mobilizon}.",
"{license} guarantees {respect} of the people who will use it. Since {source}, anyone can audit it, which guarantees its transparency.": "{license} garantir o {respect} das pessoas que irão usar, Uma vez que {source}, qualquer um pode auditar isso, o que garante a transparência.",
"{moderator} added a note on {report}": "{moderator} adicionou uma nota no {report}",
"{moderator} closed {report}": "{moderator} fechou {report}",
"{moderator} deleted an event named \"{title}\"": "{moderator} apagou um evento chamado \"{title}\"",
"{moderator} has deleted user {user}": "{moderator} apagou o usuário {user}",
"{moderator} has unsuspended profile {profile}": "{moderator} anulou a suspensão de {profile}",
"{moderator} marked {report} as resolved": "{moderator} marcou {report} como resolvido",
"{moderator} reopened {report}": "{moderator} reabriu {report}",
"{moderator} suspended profile {profile}": "{moderator} suspendeu o perfil {profile}",
"{nb} km": "{nb} km",
"{number} members": "{number} membros",
"{number} organized events": "Nenhum evento organizado|Um evento organizado|{number} eventos organizados",
"{number} participations": "Nenhuma participação|Uma participação|{number} participações",
"{number} posts": "Nenhuma publicação|Uma publicação|{number} publicações",
"{profile} (by default)": "{profile} (padrão)",
"{title} ({count} todos)": "{title} ({count} tarefas pendentes)",
"{username} was invited to {group}": "{username} foi convidado para o {group}",
"© The Mobilizon Contributors {date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks": "© Os colaboradores Mobilizon {date} - Feito com Elixir, Phoenix, VueJS & e com um pouco de amor em algumas semanas",
"© The OpenStreetMap Contributors": "© Os colaboradores OpenStreetMap"
"© The OpenStreetMap Contributors": "© Os colaboradores do OpenStreetMap"
}

View File

@ -1 +1,586 @@
{}
{
"(Masked)": "(Скрыто)",
"@{group}": "@{group}",
"@{username} ({role})": "@{username} ({role})",
"A user-friendly, emancipatory and ethical tool for gathering, organising, and mobilising.": "Удобный, свободный и этичный инструмент для объединения, организации и мобилизации.",
"A validation email was sent to {email}": "Письмо с подтверждением было отправлено на адрес {email}",
"API": "API",
"Abandon editing": "Отменить изменения",
"About": "О",
"About Mobilizon": "О Mobilizon",
"About this event": "Об этом мероприятии",
"About this instance": "Об этом узле",
"Accept": "Принять",
"Accepted": "Принято",
"Account": "Учётная запись",
"Actions": "Действия",
"Activated": "Активирован",
"Active": "Активный",
"Actor": "Агент",
"Add": "Добавить",
"Add a group": "Добавить группу",
"Add a note": "Добавить заметку",
"Add a todo": "Добавить в список задач",
"Add an address": "Добавить адрес",
"Add an instance": "Добавить узел",
"Add some tags": "Добавить теги",
"Add to my calendar": "Добавить в мой календарь",
"Additional comments": "Дополнительные комментарии",
"Admin": "Админ",
"Admin settings successfully saved.": "Настройки администратора успешно сохранены.",
"Administration": "Администрация",
"Administrator": "Администратор",
"All good, let's continue!": "Все хорошо, продолжим!",
"All the places have already been taken": "Все места уже заняты",
"Allow registrations": "Разрешить регистрацию",
"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.": "Узел - это программное обеспечение Mobilizon, установленное на сервере. Узел может быть запущен кем угодно, использующим {mobilizon_software} или другие федеративные приложения, называемые «Федиверзум». Имя этого узла - {instance_name}. Mobilizon - это федеративная сеть, состоящая из нескольких узлов (как почтовые серверы). Пользователи могут свободно общаться друг с другом, даже если они зарегистрированы на разных узлах.",
"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.": "Интерфейс прикладного программирования» или «API» - это протокол связи, который позволяет программным компонентам взаимодействовать друг с другом. Например, API Mobilizon позволяет стороннему программному обеспечению взаимодействовать с узлами Mobilizon для выполнения определенных действий, таких как автоматическая публикация мероприятий от вашего имени.",
"And {number} comments": "И {number} комментариев",
"Anonymous participant": "Анонимный участник",
"Anonymous participants will be asked to confirm their participation through e-mail.": "Анонимные участники получат запрос на подтверждение своего участия по электронной почте.",
"Anonymous participations": "Анонимное участие",
"Application": "Приложение",
"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.": "Вы действительно уверены, что хотите удалить свою учетную запись? Вы потеряете всё. Идентификаторы, настройки, созданные мероприятия, сообщения и история исчезнут навсегда.",
"Are you sure you want to <b>delete</b> this comment? This action cannot be undone.": "Вы действительно хотите <b>удалить</b> этот комментарий? Это действие не может быть отменено.",
"Are you sure you want to <b>delete</b> this event? This action cannot be undone. You may want to engage the discussion with the event creator or edit its event instead.": "Вы действительно хотите <b>удалить</b> это мероприятие? Это действие не может быть отменено. Вы можете обсудить мероприятие с его автором, или просто отредактировать его.",
"Are you sure you want to cancel the event creation? You'll lose all modifications.": "Вы уверены, что хотите отменить создание мероприятия? Все изменения будут потеряны.",
"Are you sure you want to cancel the event edition? You'll lose all modifications.": "Вы уверены, что хотите отменить редактирование мероприятия? Все изменения будут потеряны.",
"Are you sure you want to cancel your participation at event \"{title}\"?": "Вы действительно хотите отказаться от участия в мероприятии \"{title}\"?",
"Are you sure you want to delete this event? This action cannot be reverted.": "Вы уверены, что хотите удалить это мероприятие? Это действие нельзя отменить.",
"Assigned to": "Присвоен",
"Avatar": "Аватар",
"Back to previous page": "Вернуться на предыдущую страницу",
"Before you can login, you need to click on the link inside it to validate your account.": "Перед тем как войти в систему, вы должны перейти по указанной в письме ссылке, чтобы подтвердить свою учетную запись.",
"Begins on": "Начало",
"Bold": "Жирный",
"By @{group}": "Из @{group}",
"By @{username}": "От @{username}",
"Cancel": "Отмена",
"Cancel anonymous participation": "Отменить анонимное участие",
"Cancel creation": "Отменить создание",
"Cancel edition": "Отменить редактирование",
"Cancel my participation request…": "Отменить мою заявку на участие…",
"Cancel my participation…": "Отменить моё участие…",
"Cancelled: Won't happen": "Отменено: Не состоится",
"Change": "Изменить",
"Change my email": "Изменить мой адрес электронной почты",
"Change my identity…": "Изменить мой идентификатор…",
"Change my password": "Изменить свой пароль",
"Change timezone": "Изменить часовой пояс",
"Clear": "Очистить",
"Click to upload": "Нажмите, чтобы загрузить",
"Close": "Закрыть",
"Close comments for all (except for admins)": "Закрыть комментарии для всех (кроме админов)",
"Closed": "Закрыто",
"Comment deleted": "Комментарий удален",
"Comment from @{username} reported": "Жалоба на комментарий от @{username} отправлена",
"Comments": "Комментарии",
"Confirm my participation": "Подтвердите мое участие",
"Confirm my particpation": "Подтвердите мое участие",
"Confirmed": "Подтверждённый",
"Confirmed at": "Подтверждён в",
"Confirmed: Will happen": "Подтверждено: Состоится",
"Contact": "Контакт",
"Continue editing": "Продолжить редактирование",
"Cookies and Local storage": "Файлы cookie и локальное хранилище",
"Country": "Страна",
"Create": "Создать",
"Create a calc": "Создать таблицу",
"Create a new event": "Создать новое мероприятие",
"Create a new group": "Создать новую группу",
"Create a new identity": "Создать новый идентификатор",
"Create a new list": "Создать новый список",
"Create a pad": "Создать документ",
"Create a videoconference": "Создать видеоконференцию",
"Create group": "Создать группу",
"Create my event": "Создать мое мероприятие",
"Create my group": "Создать мою группу",
"Create my profile": "Создать мой профиль",
"Create resource": "Создать ресурс",
"Create token": "Создать токен",
"Current identity has been changed to {identityName} in order to manage this event.": "Текущий идентификатор был изменен на {identityName}, чтобы иметь возможность управлять этим событием.",
"Current page": "Текущая страница",
"Custom": "Пользовательский",
"Custom URL": "Пользовательский URL",
"Custom text": "Пользовательский текст",
"Daily email summary": "Ежедневная сводка на электронную почту",
"Dashboard": "Панель",
"Date": "Дата",
"Date and time": "Дата и время",
"Date and time settings": "Настройки даты и времени",
"Date parameters": "Параметры даты",
"Decline": "Отклонить",
"Default": "По умолчанию",
"Delete": "Удалить",
"Delete Comment": "Удалить комментарий",
"Delete Event": "Удалить мероприятие",
"Delete account": "Удалить учётную запись",
"Delete event": "Удалить мероприятие",
"Delete everything": "Удалить всё",
"Delete my account": "Удалить мою учётную запись",
"Delete this identity": "Удалить этот идентификатор",
"Delete your identity": "Удалить ваш идентификатор",
"Delete {eventTitle}": "Удалить {eventTitle}",
"Delete {preferredUsername}": "Удалить {preferredUsername}",
"Deleting comment": "Удаление комментария",
"Deleting event": "Удаление мероприятия",
"Deleting my account will delete all of my identities.": "Удаление моей учетной записи приведет к удалению всех моих личных данных.",
"Deleting your Mobilizon account": "Удаление моей учётной записи Mobilizon",
"Description": "Описание",
"Disabled": "Отключено",
"Discussions": "Обсуждения",
"Display name": "Отображаемое имя",
"Display participation price": "Показать стоимость участия",
"Do not receive any mail": "Не получать электронные письма",
"Domain": "Домен",
"Draft": "Черновик",
"Drafts": "Черновики",
"Due on": "Выполнить к",
"Duplicate": "Копировать",
"Edit": "Редактировать",
"Eg: Stockholm, Dance, Chess…": "Например: Москва, танцы, шахматы…",
"Either on the {instance} instance or on another instance.": "На узле {instance}, либо на другом.",
"Either the account is already validated, either the validation token is incorrect.": "Учетная запись уже подтверждена или токен проверки недействителен.",
"Either the email has already been changed, either the validation token is incorrect.": "Адрес электронной почты уже был изменен или токен проверки недействителен.",
"Either the participation request has already been validated, either the validation token is incorrect.": "Заявка на участие уже подтверждена или токен проверки недействителен.",
"Email": "Электронная почта",
"Email address": "Адрес электронной почты",
"Email notifications": "Уведомления по электронной почте",
"Enabled": "Включено",
"Ends on…": "Заканчивается в…",
"Enter the link URL": "Введите URL ссылки",
"Enter your email address below, and we'll email you instructions on how to change your password.": "Введите ниже свой адрес электронной почты, и мы пришлём вам инструкции по изменению пароля.",
"Error while changing email": "Произошла ошибка при изменении адреса электронной почты",
"Error while validating account": "Ошибка подтверждения учётной записи",
"Error while validating participation request": "Произошла ошибка при проверке заявки на участие",
"Event": "Мероприятие",
"Event already passed": "Мероприятие уже прошло",
"Event cancelled": "Мероприятие отменено",
"Event creation": "Создание мероприятия",
"Event edition": "Редактирования мероприятия",
"Event list": "Список мероприятий",
"Event page settings": "Настройки страницы мероприятия",
"Event to be confirmed": "Мероприятие должно быть подтверждено",
"Event {eventTitle} deleted": "Мероприятие {eventTitle} удалено",
"Event {eventTitle} reported": "Жалоба на мероприятие {eventTitle} отправлена",
"Events": "Мероприятия",
"Everything": "Всё",
"Ex: mobilizon.fr": "Например: mobilizon.fr",
"Ex: someone@mobilizon.org": "Например: user@mobilizon.org",
"Explore": "Обзор",
"Failed to save admin settings": "Не удалось сохранить настройки администратора",
"Featured events": "Избранные мероприятия",
"Federation": "Федерализация",
"Find an address": "Найти адрес",
"Find an instance": "Найти узел",
"Followers": "Подписчики",
"Followings": "Подписки",
"For instance: London, Taekwondo, Architecture…": "Например: Москва, йога, архитектура…",
"Forgot your password ?": "Забыли свой пароль?",
"Forgot your password?": "Забыли свой пароль?",
"From the {startDate} at {startTime} to the {endDate}": "От {startDate}, {startTime} до {endDate}",
"From the {startDate} at {startTime} to the {endDate} at {endTime}": "От {startDate}, {startTime} до {endDate}, {endTime}",
"From the {startDate} to the {endDate}": "От {startDate} до {endDate}",
"Gather ⋅ Organize ⋅ Mobilize": "Объединять ⋅ Организовывать ⋅ Мобилизовывать",
"General": "Общий",
"General information": "Общая информация",
"Getting location": "Получить местоположение",
"Glossary": "Глоссарий",
"Go": "Идти",
"Group Members": "Участники группы",
"Group name": "Название группы",
"Group {displayName} created": "Группа {displayName} создана",
"Groups": "Группы",
"Headline picture": "Заглавное изображение",
"Hide replies": "Скрыть ответы",
"Home": "Домашняя страница",
"Home to {number} users": "Дом для {number} пользователей",
"Hourly email summary": "Ежечасная сводка на электронную почту",
"I agree to the {instanceRules} and {termsOfService}": "Я принимаю {instanceRules} и {termsOfService}",
"I create an identity": "Я создаю идентификатор",
"I don't have a Mobilizon account": "У меня нет учётной записи Mobilizon",
"I have a Mobilizon account": "У меня есть учётная запись Mobilizon",
"I have an account on another Mobilizon instance.": "У меня есть учётная запись на другом узле Mobilizon.",
"I participate": "Я участвую",
"I want to allow people to participate without an account.": "Я хочу разрешить участие людям без учетной записи.",
"I want to approve every participation request": "Я хочу одобрять каждую заявку на участие",
"Identity {displayName} created": "Идентификатор {displayName} создан",
"Identity {displayName} deleted": "Идентификатор {displayName} удалён",
"Identity {displayName} updated": "Идентификатор {displayName} обновлён",
"If allowed by organizer": "Если разрешено организатором",
"If an account with this email exists, we just sent another confirmation email to {email}": "Если учетная запись с этим адресом электронной почты существует, мы отправим еще одно письмо с подтверждением на адрес {email}",
"If this identity is the only administrator of some groups, you need to delete them before being able to delete this identity.": "Если этот идентификатор является единственным администратором некоторых групп, то сперва нужно удалить эти группы, прежде чем вы сможете удалить этот идентификатор.",
"If you want, you may send a message to the event organizer here.": "Здесь вы можете отправить сообщение организатору мероприятия.",
"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.": "Приложение в этом контексте - это программное обеспечение, предоставленное командой Mobilizon или третьей стороной, которое используется для взаимодействия с вашим узлом.",
"Instance": "Узел",
"Instance Name": "Имя узла",
"Instance Privacy Policy": "Политика конфиденциальности узла",
"Instance Privacy Policy Source": "Источник политики конфиденциальности узла",
"Instance Privacy Policy URL": "URL-адрес политики конфиденциальности узла",
"Instance Rules": "Правила узла",
"Instance Terms": "Условия использования узла",
"Instance Terms Source": "Условия использования этого узла",
"Instance Terms URL": "URL условий использования узла",
"Instance administrator": "Администратор узла",
"Instance configuration": "Настройки узла",
"Instance rules": "Правила узла",
"Instance settings": "Настройки узла",
"Instances": "Узлы",
"Invite a new member": "Пригласить нового участника",
"Invite member": "Пригласить участника",
"Italic": "Курсив",
"Join <b>{instance}</b>, a Mobilizon instance": "Присоединиться к <b>{instance}</b>, узлу Mobilizon",
"Language": "Язык",
"Last published event": "Последнее опубликованное мероприятие",
"Last week": "На прошлой неделе",
"Latest posts": "Последние записи",
"Learn more": "Узнать больше",
"Learn more about Mobilizon": "Узнать больше о Mobilizon",
"Leave event": "Покинуть мероприятие",
"Leaving event \"{title}\"": "Покинуть мероприятие \"{title}\"",
"Legal": "Правовая информация",
"Let's define a few settings": "Сделаем некоторые настройки",
"License": "Лицензия",
"Limited number of places": "Ограниченное количество мест",
"List title": "Заголовок списка",
"Load more": "Загрузить больше",
"Local": "Местный",
"Locality": "Местонахождение",
"Location": "Местонахождение",
"Log in": "Вход в систему",
"Log out": "Выйти",
"Login": "Войти",
"Login on Mobilizon!": "Авторизуйтесь на Mobilizon!",
"Login on {instance}": "Войдите на узел {instance}",
"Login status": "Статус входа",
"Manage participations": "Управление участниками",
"Mark as resolved": "Отметить как решённое",
"Members": "Участники",
"Message": "Сообщение",
"Mobilizon": "Mobilizon",
"Mobilizon is a federated network. You can interact with this event from a different server.": "Mobilizon - это федеративная сеть. Вы можете взаимодействовать с этим мероприятием с другого сервера.",
"Mobilizon software": "Программное обеспечение Mobilizon",
"Mobilizon version": "Версия Mobilizon",
"Mobilizon will send you an email when the events you are attending have important changes: date and time, address, confirmation or cancellation, etc.": "Mobilizon отправит вам электронное письмо, если в мероприятиях, в которых вы участвуете, произошли важные изменения: дата и время, адрес, подтверждение или отмена и т.д.",
"Moderated comments (shown after approval)": "Модерируемые комментарии (будут видны после одобрения)",
"Moderation": "На модерации",
"Moderation log": "Журнал модерации",
"Moderator": "Модератор",
"Move": "Переместить",
"My account": "Моя учётная запись",
"My events": "Мои мероприятия",
"My groups": "Мои группы",
"My identities": "Мои идентификаторы",
"Name": "Имя",
"New email": "Новый адрес электронной почты",
"New folder": "Новая папка",
"New link": "Новая ссылка",
"New note": "Новая заметка",
"New password": "Новый пароль",
"New profile": "Новый профиль",
"Next page": "Следующая страница",
"No address defined": "Адрес не указан",
"No closed reports yet": "Пока нет закрытых отчётов",
"No comment": "Нет комментариев",
"No comments yet": "Пока нет комментариев",
"No end date": "Без даты окончания",
"No events found": "Мероприятий не найдено",
"No group found": "Группа не найдена",
"No groups found": "Группы не найдены",
"No instance follows your instance yet.": "Ни один узел еще не подписан на ваш узел.",
"No instance to approve|Approve instance|Approve {number} instances": "Нет узлов для одобрения | Одобрить узел | Одобрить {number} узлов",
"No instance to reject|Reject instance|Reject {number} instances": "Нет узлов для отклонения | Отклонить узел | Отклонить {number} узлов",
"No instance to remove|Remove instance|Remove {number} instances": "Нет узлов для удаления | Удалить узел | Удалить {number} узлов",
"No message": "Нет сообщений",
"No moderation logs yet": "Журналов модерации пока нет",
"No one is going to this event": "Никто не идёт на это мероприятие|Один человек пойдёт|{going} людей пойдут",
"No open reports yet": "Пока нет открытых отчётов",
"No participant matches the filters": "Ни один участник не соответствует критериям",
"No participant to approve|Approve participant|Approve {number} participants": "Нет участников для одобрения | Принять участника | Принять {number} участников",
"No participant to reject|Reject participant|Reject {number} participants": "Нет участников для отклонения | Отклонить участника | Отклонить {number} участников",
"No profile matches the filters": "Ни один профиль не соответствует критериям",
"No public upcoming events": "Нет предстоящих публичных мероприятий",
"No resolved reports yet": "Решённых отчётов пока нет",
"No resources selected": "Ресурсы не выбраны|Выбран один ресурс|Выбрано {count} ресурсов",
"No results for \"{queryText}\"": "Нет результатов по запросу \"{queryText}\"",
"No rules defined yet.": "Правила еще не определены.",
"None": "Никто",
"Not approved": "Не одобрено",
"Not confirmed": "Не подтверждено",
"Notes": "Примечания",
"Nothing to see here": "Здесь ничего нет",
"Notification before the event": "Уведомление перед мероприятием",
"Notification on the day of the event": "Уведомление в день мероприятия",
"Notifications for manually approved participations to an event": "Уведомления об участиях в мероприятиях, одобренных вручную",
"Number of places": "Количество мест",
"OK": "OK",
"Old password": "Прежний пароль",
"On {date}": "{date}",
"On {date} ending at {endTime}": "{date}, заканчивается в {endTime}",
"On {date} from {startTime} to {endTime}": "{date} c {startTime} до {endTime}",
"On {date} starting at {startTime}": "{date}, начало в {startTime}",
"Only accessible through link (private)": "Доступно только по ссылке (приватно)",
"Only alphanumeric lowercased characters and underscores are supported.": "Допустимы только буквенно-цифровые символы нижнего регистра и подчеркивания.",
"Open": "Открыть",
"Opened reports": "Открытые отчёты",
"Or": "Или",
"Organized": "Организованно",
"Organized by {name}": "Организатор: {name}",
"Organizer": "Организатор",
"Organizer notifications": "Уведомления организатора",
"Organizers": "Организаторы",
"Other": "Другой",
"Other notification options:": "Другие настройки уведомлений:",
"Other software may also support this.": "Другое программное обеспечение также может поддерживать это.",
"Otherwise this identity will just be removed from the group administrators.": "В противном случае этот идентификатор будет удалён у администраторов группы.",
"Page": "Страница",
"Page limited to my group (asks for auth)": "Страница предназначена только для моей группы (требуется авторизация)",
"Participant": "Участник",
"Participants": "Участники",
"Participate": "Принять участие",
"Participate using your email address": "Участвуйте, используя свой адрес электронной почты",
"Participation approval": "Разрешение на участие",
"Participation confirmation": "Подтверждение участия",
"Participation notifications": "Уведомления об участии",
"Participation requested!": "Вы попросили присоединиться!",
"Participations": "Участие",
"Password": "Пароль",
"Password (confirmation)": "Пароль (подтверждение)",
"Password reset": "Сброс пароля",
"Past events": "Прошедшие мероприятия",
"Pending": "В ожидании",
"Pick a group": "Выберите группу",
"Pick an identity": "Выберите идентификатор",
"Please check your spam folder if you didn't receive the email.": "Если вы не получили письмо, проверьте папку со спамом.",
"Please contact this instance's Mobilizon admin if you think this is a mistake.": "Если вы считаете, что произошла ошибка, обратитесь к администратору этого узла.",
"Please do not use it in any real way.": "Пожалуйста, используйте это только для тестовых целей.",
"Please enter your password to confirm this action.": "Введите свой пароль, чтобы подтвердить это действие.",
"Please make sure the address is correct and that the page hasn't been moved.": "Убедитесь, что адрес правильный и страница не была перемещена.",
"Post a comment": "Оставить комментарий",
"Post a reply": "Ответить",
"Postal Code": "Почтовый индекс",
"Powered by {mobilizon}. © 2018 - {date} The Mobilizon Contributors - Made with the financial support of {contributors}.": "На основе {mobilizon}. © 2018 - {date} Участники Mobilizon - Создан благодаря финансовой поддержке {contributors}.",
"Preferences": "Предпочтения",
"Previous page": "Предыдущая страница",
"Privacy Policy": "Политика конфиденциальности",
"Privacy policy": "Политика конфиденциальности",
"Private event": "Приватное мероприятие",
"Private feeds": "Приватная лента",
"Profiles": "Профили",
"Public": "Публичный",
"Public RSS/Atom Feed": "Публичная RSS/Atom новостная лента",
"Public comment moderation": "Модерация публичных комментариев",
"Public event": "Публичное мероприятие",
"Public feeds": "Публичные ленты",
"Public iCal Feed": "Публичная iCal-лента",
"Public page": "Публичная страница",
"Publish": "Опубликовать",
"Published events with <b>{comments}</b> comments and <b>{participations}</b> confirmed participations": "Опубликованные мероприятия с <b>{comments}</b> комментариями и <b>{participations}</b> подтвержденными участниками",
"RSS/Atom Feed": "RSS/Atom новостная лента",
"Recap every week": "Подводить итоги каждую неделю",
"Receive one email per request": "Получать электронное письмо на каждый запрос",
"Region": "Область",
"Register on this instance": "Зарегистрируйтесь на этом узле",
"Registration is allowed, anyone can register.": "Регистрация разрешена, зарегистрироваться может любой желающий.",
"Registration is closed.": "Регистрация закрыта.",
"Registration is currently closed.": "Регистрация на данный момент закрыта.",
"Registrations": "Регистрации",
"Rejected": "Отклонено",
"Rename": "Переименовать",
"Rename resource": "Переименовать ресурс",
"Reopen": "Открыть заново",
"Reply": "Ответ",
"Report": "Отчёт",
"Report this comment": "Пожаловаться на этот комментарий",
"Report this event": "Пожаловаться на это мероприятие",
"Reported": "Уведомлено",
"Reported by": "Сообщил",
"Reported by someone on {domain}": "Об этом сообщил пользователь из {domain}",
"Reported by {reporter}": "Сообщил {reporter}",
"Reported identity": "Идентификатор сообщившего",
"Reports": "Отчеты",
"Reset my password": "Сбросить пароль",
"Resolved": "Решено",
"Resource provided is not an URL": "Указанный ресурс не является URL-адресом",
"Resources": "Ресурсы",
"Restricted": "Ограниченный",
"Role": "Роль",
"Rules": "Правила",
"SSL and it's successor TLS are encryption technologies to secure data communications when using the service. You can recognize an encrypted connection in your browser's address line when the URL begins with {https} and the lock icon is displayed in your browser's address bar.": "SSL и его преемник TLS - это технологии шифрования для защиты передачи данных при использовании сервиса. Вы можете увидеть в браузере, что соединение зашифровано, если адрес начинается с {https}, а в адресной строке есть значок замка.",
"SSL/TLS": "SSL/TLS",
"Save": "Сохранить",
"Save draft": "Сохранить черновик",
"Search": "Поиск",
"Search events, groups, etc.": "Искать мероприятия, группы и т. п.",
"Searching…": "Поиск…",
"Select a language": "Выберите язык",
"Select a timezone": "Выберите часовой пояс",
"Send email": "Отправить электронное письмо",
"Send the confirmation email again": "Отправьте письмо с подтверждением еще раз",
"Send the report": "Отправить отчёт",
"Set an URL to a page with your own privacy policy.": "Укажите URL-адрес страницы с вашей собственной политикой конфиденциальности.",
"Set an URL to a page with your own terms.": "Установите URL-адрес на страницу с вашими собственными условиями.",
"Settings": "Настройки",
"Share this event": "Поделиться этим мероприятием",
"Show map": "Показать карту",
"Show remaining number of places": "Показать оставшееся количество мест",
"Show the time when the event begins": "Показать время начала мероприятия",
"Show the time when the event ends": "Показать время окончания мероприятия",
"Sign up": "Зарегистрироваться",
"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:": "Некоторые термины, технические или иные, используемые в приведенном ниже тексте, могут охватывать трудные для понимания концепции. Мы подготовили глоссарий чтобы помочь вам лучше их освоить:",
"Starts on…": "Начало…",
"Status": "Статус",
"Street": "Улица",
"Submit": "Отправить",
"Suspend": "Приостановить",
"Suspended": "Приостановлен",
"Task lists": "Списки задач",
"Tentative: Will be confirmed later": "Предварительно: будет подтверждено позже",
"Terms": "Условия",
"Terms of service": "Условия обслуживания",
"Text": "Текст",
"The account's email address was changed. Check your emails to verify it.": "Почтовый адрес аккаунта был изменён. Проверьте свою электронную почту, чтобы убедиться в этом.",
"The actual number of participants may differ, as this event is hosted on another instance.": "Фактическое количество участников может отличаться, так как это мероприятие проводится на другом узле.",
"The content came from another server. Transfer an anonymous copy of the report?": "Контент пришел с другого сервера. Переслать анонимную копию отчета?",
"The draft event has been updated": "Черновик мероприятия обновлён",
"The event has been created as a draft": "Мероприятие было создано в виде черновика",
"The event has been published": "Мероприятие опубликовано",
"The event has been updated": "Мероприятие обновлено",
"The event has been updated and published": "Мероприятие обновлено и опубликовано",
"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?": "Организатор мероприятия решил подтверждать участие вручную. Хотели бы вы добавить короткую заметку, объясняющую, почему вы хотите участвовать в этом мероприятии?",
"The event organizer didn't add any description.": "Организатор мероприятия не добавил описания.",
"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.": "Организатор мероприятия утверждает участие вручную. Поскольку вы выбрали участие без учётной записи, объясните, почему вы хотите участвовать в этом мероприятии.",
"The event title will be ellipsed.": "Название этого мероприятие сокращено троеточием.",
"The event will show the group as organizer.": "На мероприятии группа будет представлена как организатор.",
"The instance administrator is the person or entity that runs this Mobilizon instance.": "Администратор узла - это физическое или юридическое лицо, которое управляет данным узлом Mobilizon.",
"The page you're looking for doesn't exist.": "Страницы, которую вы ищете, не существует.",
"The password was successfully changed": "Пароль был успешно изменен",
"The report will be sent to the moderators of your instance. You can explain why you report this content below.": "Отчёт будет отправлен модераторам вашего узла. Вы можете объяснить причину своей жалобы ниже.",
"The {default_privacy_policy} will be used. They will be translated in the user's language.": "Будет использоваться {default_privacy_policy}. Они будут переведены на язык пользователя.",
"The {default_terms} will be used. They will be translated in the user's language.": "Будут использоваться {default_terms}. Они будут переведены на язык пользователя.",
"There are {participants} participants.": "Имеется {participants} участников.",
"There will be no way to recover your data.": "Восстановить ваши данные будет невозможно.",
"These events may interest you": "Эти мероприятия могут вас заинтересовать",
"This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "Этот узел Mobilizon и этот организатор мероприятия допускают анонимное участие, но требуют подтверждения по электронной почте.",
"This event has been cancelled.": "Это мероприятие было отменено.",
"This event is accessible only through it's link. Be careful where you post this link.": "Это мероприятие доступно только по ссылке. Будьте осторожны, когда публикуете её.",
"This identity is not a member of any group.": "Этот идентификатор не является членом какой-либо группы.",
"This information is saved only on your computer. Click for details": "Эта информация сохраняется только на вашем компьютере. Нажмите, чтобы узнать подробности",
"This instance isn't opened to registrations, but you can register on other instances.": "Этот узел не позволяет регистрироваться, но вы можете зарегистрироваться на других.",
"This is a demonstration site to test Mobilizon.": "Это демонстрационная площадка для тестирования Mobilizon.",
"This will delete / anonymize all content (events, comments, messages, participations…) created from this identity.": "Это приведет к удалению / анонимизации всего контента (событий, комментариев, сообщений, участия…), созданного с помощью этого идентификатора.",
"Timezone": "Часовой пояс",
"Timezone detected as {timezone}.": "Часовой пояс определен как {timezone}.",
"Title": "Заголовок",
"To activate more notifications, head over to the notification settings.": "Перейдите в настройки уведомлений, чтобы включить дополнительные уведомления.",
"To confirm, type your event title \"{eventTitle}\"": "Для подтверждения введите название мероприятия \"{eventTitle}\"",
"To confirm, type your identity username \"{preferredUsername}\"": "Для подтверждения введите имя пользователя \"{preferredUsername}\" идентификатора",
"Transfer to {outsideDomain}": "Перенос в {outsideDomain}",
"Type": "Тип",
"URL": "URL-адрес",
"Unfortunately, this instance isn't opened to registrations": "К сожалению, регистрация на этом узле закрыта",
"Unfortunately, your participation request was rejected by the organizers.": "К сожалению, ваша заявка на участие была отклонена организаторами.",
"Unknown": "Неизвестный",
"Unknown actor": "Неизвестный агент",
"Unknown error.": "Неизвестная ошибка.",
"Unsaved changes": "Несохранённые изменения",
"Unset group": "Отменить выбор группы",
"Unsuspend": "Отменить приостановку",
"Upcoming": "Предстоящие",
"Upcoming events": "Предстоящие мероприятия",
"Update event {name}": "Обновить мероприятие {name}",
"Update my event": "Обновить моё мероприятие",
"Updated": "Обновлено",
"Use my location": "Использовать моё местоположение",
"User": "Пользователь",
"Username": "Имя пользователя",
"Users": "Пользователи",
"View a reply": "|Посмотреть один ответ|Посмотреть {totalReplies} ответов",
"View event page": "Просмотреть страницу мероприятия",
"View everything": "Посмотреть всё",
"View page on {hostname} (in a new window)": "Просмотреть страницу на {hostname} (в новом окне)",
"Visible everywhere on the web (public)": "Видно во всем Интернете (публично)",
"Waiting for organization team approval.": "Ожидает одобрения организаторами.",
"Warning": "Предупреждение",
"We just sent an email to {email}": "Мы отправили электронное письмо на адрес {email}",
"We use your timezone to make sure you get notifications for an event at the correct time.": "Мы используем настройки вашего часового пояса, чтобы вы своевременно получали уведомления о мероприятиях.",
"We will redirect you to your instance in order to interact with this event": "Вы будете перенаправлены на свой узел, чтобы иметь возможность взаимодействовать с этим событием",
"We'll send you an email one hour before the event begins, to be sure you won't forget about it.": "Мы отправим вам электронное письмо за час до начала мероприятия, чтобы вы не забыли про него.",
"We'll use your timezone settings to send a recap of the morning of the event.": "Мы используем настройки вашего часового пояса, чтобы утром отправить вам напоминание о мероприятии.",
"Website": "Веб-сайт",
"Website / URL": "Веб-сайт / URL",
"Welcome back {username}!": "С возвращением, {username}!",
"Welcome back!": "С возвращением!",
"Welcome to Mobilizon, {username}!": "Добро пожаловать в Mobilizon, {username}!",
"Who can view this event and participate": "Кто может просматривать и участвовать в мероприятии",
"Who published {number} events": "Которые опубликовали {number} мероприятий",
"Write something…": "Напиши что-нибудь…",
"You are participating in this event anonymously": "Вы участвуете в этом мероприятии анонимно",
"You are participating in this event anonymously but didn't confirm participation": "Вы участвуете в этом мероприятии анонимно, но не подтвердили свое участие",
"You can add tags by hitting the Enter key or by adding a comma": "Вы можете добавлять тэги, нажимая клавишу Enter или разделяя слова запятой",
"You can pick your timezone into your preferences.": "Вы можете изменить часовой пояс по своему усмотрению.",
"You can try another search term or drag and drop the marker on the map": "Вы можете попробовать другие критерии поиска или перетащить маркер на карту",
"You don't follow any instances yet.": "Вы пока не подписаны ни на один узел.",
"You have been disconnected": "Вы были отключены",
"You have been invited by {invitedBy} to the following group:": "Вы были приглашены пользователем {invitedBy} в следующую группу:",
"You have cancelled your participation": "Вы отказались от участия",
"You have one event in {days} days.": "У вас нет мероприятий в течение {days} дней | У вас одно мероприятие в течении {days} дней | У вас {count} мероприятий в течении {days} дней",
"You have one event today.": "У вас сегодня нет мероприятий | У вас сегодня одно мероприятие. | У вас сегодня {count} мероприятий",
"You have one event tomorrow.": "Завтра у вас нет мероприятий | Завтра у вас одно мероприятие. | Завтра у вас {count} мероприятий",
"You need to create the group before you create an event.": "Перед созданием мероприятия вам необходимо создать группу.",
"You need to login.": "Вы должны авторизоваться.",
"You will be redirected to the original instance": "Вы будете перенаправлены на исходный узел",
"You wish to participate to the following event": "Вы хотите принять участие в следующем мероприятии",
"You'll get a weekly recap every Monday for upcoming events, if you have any.": "Каждый понедельник вы будете получать сводку о предстоящих мероприятиях, в которых вы принимаете участие.",
"You'll receive a confirmation email.": "Вы получите электронное письмо с подтверждением.",
"Your account has been successfully deleted": "Ваша учетная запись была успешно удалена",
"Your account has been validated": "Ваша учетная запись была подтверждена",
"Your account is being validated": "Ваша учетная запись проверяется",
"Your account is nearly ready, {username}": "Ваш аккаунт почти готов, {username}",
"Your current email is {email}. You use it to log in.": "Ваш текущий адрес электронной почты{email}. Вы используете его для входа в систему.",
"Your email has been changed": "Ваш адрес электронной почты был изменен",
"Your email is being changed": "Ваш адрес электронной почты меняется",
"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.": "Ваш адрес электронной почты будет использоваться только для подтверждения того, что вы настоящий человек, и для отправки вам возможных новостей об этом мероприятии. Он НЕ будет передан другим узлам или организатору мероприятия.",
"Your federated identity": "Ваш федеративный идентификатор",
"Your participation has been confirmed": "Ваше участие подтверждено",
"Your participation has been rejected": "Ваше участие было отклонено",
"Your participation has been requested": "Вы попросили принять участие",
"Your participation request has been validated": "Ваше участие подтверждено",
"Your participation request is being validated": "Ваше участие проверяется",
"Your participation status has been changed": "Ваш статус участия был изменен",
"Your timezone is currently set to {timezone}.": "Ваш часовой пояс в настоящее время установлен на {timezone}.",
"Your timezone was detected as {timezone}.": "Ваш часовой пояс был определен как {timezone}.",
"[This comment has been deleted]": "[Этот комментарий был удалён]",
"[deleted]": "[удалено]",
"a non-existent report": "несуществующий отчет",
"as {identity}": "как {identity}",
"default Mobilizon privacy policy": "Политика конфиденциальности Mobilizon по умолчанию",
"default Mobilizon terms": "условия использования Mobilizon по умолчанию",
"e.g. 10 Rue Jangot": "например: Садовая 10",
"full rules": "полные правила",
"iCal Feed": "iCal лента",
"instance rules": "правила узла",
"more than 1360 contributors": "более 1360 участников",
"profile@instance": "профиль@узел",
"report #{report_number}": "отчёт #{report_number}",
"terms of service": "условия обслуживания",
"with another identity…": "с другим идентификатором…",
"{approved} / {total} seats": "{approved} / {total} мест",
"{available}/{capacity} available places": "Мест нет|{available}/{capacity} свободных мест",
"{count} participants": "Нет участников | Один участник | {count} участников",
"{count} requests waiting": "{count} ожидающих рассмотрения заявок",
"{instanceName} is an instance of the {mobilizon} software.": "{instanceName} - это узел использующий ПО {mobilizon}.",
"{moderator} added a note on {report}": "{moderator} добавил примечание к {report}",
"{moderator} closed {report}": "{moderator} закрыл {report}",
"{moderator} deleted an event named \"{title}\"": "{moderator} удалил мероприятие с названием \"{title}\"",
"{moderator} has deleted user {user}": "{moderator} удалил пользователя {user}",
"{moderator} has unsuspended profile {profile}": "{modeator} снял блокировку профиля {profile}",
"{moderator} marked {report} as resolved": "{moderator} пометил {report} как решённый",
"{moderator} reopened {report}": "{moderator} повторно открыл {report}",
"{moderator} suspended profile {profile}": "{moderator} заблокировал профиль {profile}",
"{number} organized events": "Нет организованных мероприятий|Организованно одно мероприятие|Организованно {number} мероприятий",
"{number} participations": "Нет участников|Один участник|{number} участников",
"{profile} (by default)": "{profile} (по умолчанию)",
"{title} ({count} todos)": "{title} ({count} незавершенных задач)",
"© The OpenStreetMap Contributors": "© Авторы OpenStreetMap"
}

View File

@ -1,19 +1,51 @@
{
"#{tag}": "#{tag}",
"(Masked)": "(Maskirano)",
"(this folder)": "(ta mapa)",
"(this link)": "(ta povezava)",
"+ Add a resource": "+ Dodaj vir",
"+ Create an event": "+ Ustvari dogodek",
"+ Post a public message": "+ Objavi javno sporočilo",
"+ Start a discussion": "+ Začni razpravo",
"<b>{contact}</b> will be displayed as contact.": "<b>{contact}</b> bo prikazan kot stik.|<b>{contact}</b> bodo prikazani kot stiki.",
"@{group}": "@{group}",
"@{username}": "@{username}",
"@{username} ({role})": "@{username} ({role})",
"@{username}'s follow request was accepted": "Prošnja za sledenje je bila sprejeta. @{username} vam sedaj sledi",
"@{username}'s follow request was rejected": "Prošnja za sledenje od uporabnika @{username} je bila zavrnjena",
"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.": "Piškotek je majhna datoteka, ki vsebuje informacije, ki se pošljejo v vaš računalnik, ko obiščete spletno mesto. Ko znova obiščete spletno mesto, mu piškotek omogoča, da prepozna vaš brskalnik. Piškotki lahko shranjujejo uporabniške nastavitve in druge informacije. Vaš brskalnik lahko nastavite tako, da zavrne vse piškotke, vendar lahko nekatere funkcije ali storitve spletnega mesta delujejo le delno. Lokalni pomnilnik deluje na enak način, vendar omogoča shranjevanje več podatkov.",
"A federated software": "Federirana programska oprema",
"A place for your code of conduct, rules or guidelines. You can use HTML tags.": "Prostor za kodeks ravnanja, pravila ali smernice. Uporabite lahko oznake HTML.",
"A place to explain who you are and the things that set your instance apart. You can use HTML tags.": "Prostor, kjer lahko razložite, kdo ste, in stvari, ki ločujejo vaše vozlišče od drugih. Uporabite lahko oznake HTML.",
"A place to publish something to the whole world, your community or just your group members.": "Prostor za objavo nečesa širnemu svetu, skupnosti ali samo članom skupine.",
"A place to store links to documents or resources of any type.": "Prostor za shranjevanje povezav do dokumentov ali virov katere koli vrste.",
"A practical tool": "Praktično orodje",
"A short tagline for your instance homepage. Defaults to \"Gather ⋅ Organize ⋅ Mobilize\"": "Kratek slogan za domačo stran vašega vozlišča. Privzeto je »Zberi ⋅ Organiziraj ⋅ Mobiliziraj«",
"A user-friendly, emancipatory and ethical tool for gathering, organising, and mobilising.": "Uporabniku prijazno, emancipatorno in etično orodje za zbiranje, organiziranje in mobilizacijo.",
"A validation email was sent to {email}": "E-pošta za potrditev je bla poslana na {email}",
"API": "API",
"Abandon editing": "Opusti urejanje",
"About": "O Mobilizonu",
"About Mobilizon": "O Mobilizon-u",
"About anonymous participation": "O anonimni udeležbi",
"About this event": "O tem dogodku",
"About this instance": "O tem vozlišču",
"About {instance}": "O {instance}",
"Accept": "Sprejmi",
"Accepted": "Sprejet",
"Accessible only to members": "Dostopno samo članom",
"Accessible through link": "Dostopno prek povezave",
"Account": "Račun",
"Actions": "Dejanja",
"Activated": "Dejavno",
"Active": "Aktivno",
"Activity": "Dejavnost",
"Actor": "Igralec",
"Add": "Dodaj",
"Add / Remove…": "Dodaj / odstrani …",
"Add a contact": "Dodaj stik",
"Add a group": "Dodaj supino",
"Add a new post": "Dodaj novo objavo",
"Add a note": "Dodaj opombo",
"Add a todo": "Dodaj opravilo",
"Add an address": "Dodaj naslov",
@ -24,70 +56,118 @@
"Admin": "Skrbnik",
"Admin settings successfully saved.": "Nastavitve skrbnika so bile uspešno shranjene.",
"Administration": "Skrbništvo",
"All the places have already been taken": "Vsa mesta so zasedena|Eno mesto je še na voljo|{places} mest je še na voljo",
"Administrator": "Skrbnik",
"All activities": "Vse aktivnosti",
"All good, let's continue!": "Vse je dobro, nadaljujmo!",
"All the places have already been taken": "Vsa mesta so že zasedena",
"Allow all comments from users with accounts": "Dovoli vse komentarje prijavljenih uporabnikov",
"Allow registrations": "Dovoli registracije",
"An error has occured. Sorry about that. You may try to reload the page.": "Prišlo je do napake. Se opravičujemo. Stran lahko poskusite ponovno naložiti.",
"An ethical alternative": "Etična alternativa",
"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.": "Vozlišče je nameščena različica programske opreme Mobilizon, ki se izvaja na strežniku. Vozlišče lahko zažene vsak, ki uporablja {mobilizon_software} ali druge federirane aplikacije, imenovane tudi \"fediverse\". Ime tega vozlišča je {instance_name}. Mobilizon je federirano omrežje več vozlišč (tako kot e-poštni strežniki), uporabniki, registrirani na različnih vozliščih, lahko komunicirajo, čeprav niso registrirani na istem vozlišču.",
"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.": "\"Vmesnik za namensko programiranje\" ali \"API\" je komunikacijski protokol, ki komponentam programske opreme omogoča medsebojno komunikacijo. API Mobilizon, na primer, lahko dovoli programskim orodjem tretjih oseb, da komunicirajo z Mobilizon vozlišči, da samodejno in na daljavo izvedejo določena dejanja, na primer objavljanje dogodkov v vašem imenu.",
"And {number} comments": "In {number} komentarjev",
"Anonymous participant": "Anonimni udeleženec",
"Anonymous participants will be asked to confirm their participation through e-mail.": "Anonimni udeleženci bodo morali svojo udeležbo potrditi preko e-pošte.",
"Anonymous participations": "Anonimni udeleženci",
"Any day": "Katerikoli dan",
"Anyone can join freely": "Vsak se lahko prosto pridruži",
"Anyone wanting to be a member from your group will be able to from your group page.": "Vsakdo, ki želi postati član vaše skupine, bo to lahko storil na vaši strani skupine.",
"Application": "Program",
"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.": "Ali ste prepričani, da želite izbrisati celoten račun? Izgubili boste vse. Identitete, nastavitve, ustvarjeni dogodki, sporočila in udeležbe bodo za vedno izbrisane.",
"Are you sure you want to <b>completely delete</b> this group? All members - including remote ones - will be notified and removed from the group, and <b>all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed</b>.": "Ali ste prepričani, da želite <b>popolnoma izbrisati</b> to skupino? Vsi člani - vključno z oddaljenimi - bodo obveščeni in odstranjeni iz skupine, <b>vsi podatki skupine (dogodki, objave, razprave, zapiski…) pa bodo nepovratno uničeni</b>.",
"Are you sure you want to <b>delete</b> this comment? This action cannot be undone.": "Ali ste prepričani, da želite <b>izbrisati</b> ta komentar? Tega dejanja ni mogoče razveljaviti.",
"Are you sure you want to <b>delete</b> this event? This action cannot be undone. You may want to engage the discussion with the event creator or edit its event instead.": "Ali ste prepričani, da želite <b>izbrisati</b> ta dogodek? Tega dejanja ni mogoče razveljaviti. Morda boste želeli sodelovati v razpravi z ustvarjalcem dogodka ali urediti njegov dogodek.",
"Are you sure you want to <b>suspend</b> this group? All members - including remote ones - will be notified and removed from the group, and <b>all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed</b>.": "Ali ste prepričani, da želite <b>začasno ustaviti</b> to skupino? Vsi člani - vključno z oddaljenimi - bodo obveščeni in odstranjeni iz skupine, <b>vsi podatki skupine (dogodki, objave, razprave, zapiski…) pa bodo nepovratno uničeni</b>.",
"Are you sure you want to <b>suspend</b> 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.": "Ali ste prepričani, da želite <b>začasno ustaviti</b> to skupino? Ker ta skupina izvira iz vozlišča {instance}, bo to odstranilo le lokalne člane in lokalne podatke ter zavrnilo vse prihodnje podatke.",
"Are you sure you want to cancel the event creation? You'll lose all modifications.": "Ali ste prepričani, da želite preklicati ustvarjanje dogodka? Izgubili boste vse spremembe.",
"Are you sure you want to cancel the event edition? You'll lose all modifications.": "",
"Are you sure you want to cancel the event edition? You'll lose all modifications.": "Ali ste prepričani, da želite preklicati izdajo dogodka? Izgubili boste vse spremembe.",
"Are you sure you want to cancel your participation at event \"{title}\"?": "Ali ste prepričani, da želite preklicati udeležbo na dogodku \"{title}\"?",
"Are you sure you want to delete this entire discussion?": "Ste prepričani, da želite izbrisati celotno razpravo?",
"Are you sure you want to delete this event? This action cannot be reverted.": "Ali ste prepričani, da želite izbrisati ta dogodek? Tega dejanja ni mogoče razveljaviti.",
"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.": "Ker se je organizator dogodka odločil za ročno preverjanje prošenj za udeležbo, bo vaša udeležba potrjena šele, ko boste prejeli potrditveno e-pošto.",
"Assigned to": "Dodeljeno",
"Atom feed for events and posts": "Vir Atom za dogodke in objave",
"Avatar": "Podoba",
"Back to previous page": "Nazaj na prejšnjo stran",
"Banner": "Pasica",
"Before you can login, you need to click on the link inside it to validate your account.": "Preden se lahko prijavite, morate klikniti na povezavo znotraj njega, da potrdite svoj račun.",
"Begins on": "Začne se v",
"Bold": "Krepko",
"By @{group}": "Avtor @{group}",
"By @{username}": "Od @{username}",
"By others": "Od drugih",
"By {author}": "Od {author}",
"By {group}": "Od {group}",
"Can be an email or a link, or just plain text.": "Lahko je e-pošta ali povezava ali preprosto besedilo.",
"Cancel": "Prekliči",
"Cancel anonymous participation": "Prekliči anonimno udeležbo",
"Cancel creation": "Prekliči ustvarjanje",
"Cancel edition": "",
"Cancel edition": "Prekliči izdajo",
"Cancel my participation request…": "Prekliči mojo prošnjo za udeležbo …",
"Cancel my participation…": "Prekliči mojo udeležbo …",
"Cancelled": "Prekinjeno",
"Cancelled: Won't happen": "Preklicano: Ne bo se zgodilo",
"Change": "Spremeni",
"Change my email": "Spremeni moj e-poštni naslov",
"Change my identity…": "Spremeni mojo identiteto …",
"Change my password": "Spremeni moje geslo",
"Change timezone": "Spremeni časovni pas",
"Check your inbox (and your junk mail folder).": "Preverite mapo »Prejeto« (in mapo z neželeno pošto).",
"City or region": "Mesto ali regija",
"Clear": "Izbriši",
"Clear participation data for all events": "Izbriši podatke o udeležbi za vse dogodke",
"Clear participation data for this event": "Izbriši podatke o udeležbi za ta dogodek",
"Click for more information": "Klikni za več informacij",
"Click to select": "Kliknite za izbiro",
"Click to upload": "Kliknite za pošiljanje",
"Close": "Zapri",
"Close comments for all (except for admins)": "Zapri komentarje za vse (razen za skrbnike)",
"Close events": "Zapri dogodke",
"Closed": "Zaprto",
"Comment deleted": "Komentar je izbrisan",
"Comment from @{username} reported": "Prijavljen je bil komentar uporabnika @{username}",
"Comments": "Komentarji",
"Comments are closed for everybody else.": "Komentarji so zaprti za vse ostale.",
"Confirm my participation": "Potrdi mojo udeležbo",
"Confirm my particpation": "Potrdi mojo udeležbo",
"Confirmed": "Potrjeno",
"Confirmed at": "Potrjeno ob",
"Confirmed: Will happen": "Potrjeno: Zgodilo se bo",
"Congratulations, your account is now created!": "Čestitam, vaš račun je zdaj ustvarjen!",
"Contact": "Kontakt",
"Continue editing": "Nadaljuj z urejanjem",
"Cookies and Local storage": "Piškotki in lokalna shramba",
"Copy details to clipboard": "Kopiraj podrobnosti v odložišče",
"Country": "Država",
"Create": "Ustvari",
"Create a calc": "Ustvari tabelo",
"Create a discussion": "Ustvari razpravo",
"Create a folder": "Ustvari mapo",
"Create a new event": "Ustvari nov dogodek",
"Create a new group": "Ustvari novo skupino",
"Create a new identity": "Ustvari novo identiteto",
"Create a new list": "Ustvari nov seznam",
"Create a pad": "Ustvari zapisnik",
"Create a videoconference": "Ustvari videokonferenco",
"Create an account": "Ustvari račun",
"Create event": "Ustvari dogodek",
"Create group": "Ustvari skupino",
"Create my event": "Ustvari moj dogodek",
"Create my group": "Ustvari mojo skupino",
"Create my profile": "Ustvari moj profil",
"Create resource": "Ustvari vir",
"Create the discussion": "Ustvari razpravo",
"Create to-do lists for all the tasks you need to do, assign them and set due dates.": "Ustvarite sezname opravil za vse naloge, ki jih morate opraviti, jih dodelite in določite roke.",
"Create token": "Ustvari žeton",
"Created by {name}": "Ustvaril/a {name}",
"Created by {username}": "Ustvaril/a {username}",
"Current identity has been changed to {identityName} in order to manage this event.": "Trenutna identiteta je bila spremenjena v {identityName}, da bi lahko upravljali ta dogodek.",
"Current page": "Trenutna stran",
"Custom": "Po meri",
"Custom URL": "URL po meri",
"Custom text": "Besedilo po meri",
"Daily email summary": "Dnevni povzetek po e-pošti",
"Dashboard": "Nadzorna plošča",
"Date": "Datum",
"Date and time": "Datum in čas",
@ -95,13 +175,20 @@
"Date parameters": "Parametri datuma",
"Decline": "Zavrni",
"Default": "Privzeto",
"Default Mobilizon privacy policy": "Privzeti pravilnik o zasebnosti za Mobilizon",
"Default Mobilizon terms": "Privzeti pogoji za Mobilizon",
"Delete": "Izbriši",
"Delete Comment": "Izbriši komentar",
"Delete Event": "Izbriši dogodek",
"Delete account": "Izbriši račun",
"Delete conversation": "Izbriši pogovor",
"Delete discussion": "Izbriši razpravo",
"Delete event": "Izbriši dogodek",
"Delete everything": "Izbriši vse",
"Delete group": "Izbriši skupino",
"Delete my account": "Izbriši moj račun",
"Delete post": "Izbriši objavo",
"Delete this discussion": "Izbriši to razpravo",
"Delete this identity": "Izbriši to identiteto",
"Delete your identity": "Izbriši svojo identiteto",
"Delete {eventTitle}": "Izbriši {eventTitle}",
@ -110,64 +197,116 @@
"Deleting event": "Brisanje dogodka",
"Deleting my account will delete all of my identities.": "Če izbrišete račun, se izbrišejo vse moje identitete.",
"Deleting your Mobilizon account": "Brisanje računa Mobilizon",
"Demote": "Degradiraj",
"Description": "Opis",
"Didn't receive the instructions?": "Niste prejeli navodil?",
"Disabled": "Onemogočeno",
"Discussions": "Razprave",
"Display name": "Prikazno ime",
"Display participation price": "Prikaži ceno udeležbe",
"Displayed nickname": "Prikazan vzdevek",
"Displayed on homepage and meta tags. Describe what Mobilizon is and what makes this instance special in a single paragraph.": "Prikazano na domači strani in metaoznakah. V enem odstavku opišite, kaj je Mobilizon in zakaj je to vozlišče posebno.",
"Do not receive any mail": "Ne prejemaj nobene e-pošte",
"Do you wish to {create_event} or {explore_events}?": "Želite {create_event} ali {explore_events}?",
"Do you wish to {create_group} or {explore_groups}?": "Želite {create_group} ali {explore_groups}?",
"Domain": "Domena",
"Draft": "Osnutek",
"Drafts": "Osnutki",
"Due on": "Do",
"Duplicate": "Podvojiti",
"Edit": "Uredi",
"Edit post": "Uredi objavo",
"Edited {ago}": "Urejeno {ago}",
"Eg: Stockholm, Dance, Chess…": "Npr.: Stockholm, ples, šah …",
"Either on the {instance} instance or on another instance.": "Ali na vozlišču {instance}, ali na drugem.",
"Either the account is already validated, either the validation token is incorrect.": "Ali je račun že potrjen, ali je žeton za preverjanje veljavnosti napačen.",
"Either the email has already been changed, either the validation token is incorrect.": "Ali je bil e-poštni naslov že spremenjen, ali je žeton za preverjanje veljavnosti napačen.",
"Either the participation request has already been validated, either the validation token is incorrect.": "Ali je bila prošnja za udeležbo že potrjena, ali je žeton za preverjanje veljavnosti napačen.",
"Email": "E-pošta",
"Email address": "E-poštni naslov",
"Email notifications": "Obvestila po e-pošti",
"Enabled": "Omogočeno",
"Ends on…": "Se konča …",
"Enter the link URL": "Vnesite URL povezave",
"Enter your email address below, and we'll email you instructions on how to change your password.": "Spodaj vnesite svoj e-poštni naslov, mi pa vam bomo poslali navodila, kako spremeniti geslo.",
"Enter your own privacy policy. HTML tags allowed. The {mobilizon_privacy_policy} is provided as template.": "Vnesite svoj pravilnik o zasebnosti. Dovoljene so oznake HTML.{mobilizon_privacy_policy} je naveden kot predloga.",
"Enter your own terms. HTML tags allowed. The {mobilizon_terms} are provided as template.": "Vnesite svoje pogoje. Dovoljene so oznake HTML. {mobilizon_terms} so navedeni kot predloga.",
"Error": "Napaka",
"Error details copied!": "Podrobnosti o napaki so kopirani!",
"Error message": "Sporočilo o napaki",
"Error stacktrace": "Sledenje napake",
"Error while changing email": "Napaka pri spreminjanju e-poštnega naslova",
"Error while login with {provider}. Retry or login another way.": "Napaka pri prijavi s {provider}. Poskusite znova ali se prijavite na drug način.",
"Error while login with {provider}. This login provider doesn't exist.": "Napaka pri prijavi s {provider}. Ta ponudnik ne obstaja.",
"Error while reporting group {groupTitle}": "Napaka pri poročanju skupine {groupTitle}",
"Error while validating account": "Napaka pri preverjanju veljavnosti računa",
"Error while validating participation request": "Napaka pri preverjanju veljavnosti računa",
"Ethical alternative to Facebook events, groups and pages, Mobilizon is a <b>tool designed to serve you</b>. Period.": "Etična alternativa dogodkom, skupinam in stranem na Facebooku, Mobilizon je <b>orodje, namenjeno vam</b>. Pika.",
"Event": "Dogodek",
"Event already passed": "Dogodek je že minil",
"Event cancelled": "Dogodek preklican",
"Event creation": "Ustvarjanje dogodkov",
"Event edition": "Izdaja dogodka",
"Event list": "Seznam dogodkov",
"Event page settings": "Nastavitve dogodka",
"Event to be confirmed": "Dogodek bo potrjen",
"Event {eventTitle} deleted": "Dogodek {eventTitle} je izbrisan",
"Event {eventTitle} reported": "Dogodek {eventTitle} je prijavljen",
"Events": "Dogodki",
"Events tagged with {tag}": "Dogodki z oznako {tag}",
"Everything": "Vse",
"Ex: mobilizon.fr": "Npr.: mobilizon.fr",
"Ex: someone@mobilizon.org": "Npr.: nekdo@mobilizon.org",
"Explore": "Razišči",
"Explore events": "Razišči dogodke",
"Failed to save admin settings": "Skrbniških nastavitev ni bilo mogoče shraniti",
"Featured events": "Izbrani dogodki",
"Federated Group Name": "Ime federirane skupine",
"Federation": "Federacija",
"Fetch more": "Pridobi več",
"Find an address": "Poišči naslov",
"Find an instance": "Poišči vozlišče",
"Find another instance": "Poišči drugo vozlišče",
"Follower": "Sledilec",
"Followers": "Sledilci",
"Followings": "",
"Followers will receive new public events and posts.": "Sledilci bodo prejemali nove javne dogodke in objave.",
"Followings": "Sledi",
"For instance: London": "Na primer: Ljubljana",
"For instance: London, Taekwondo, Architecture…": "Na primer: London, taekwondo, arhitektura …",
"Forgot your password ?": "Ste pozabili geslo?",
"Forgot your password?": "Ste pozabili geslo?",
"From the {startDate} at {startTime} to the {endDate}": "Od {startDate} ob {startTime}, do {endDate}",
"From the {startDate} at {startTime} to the {endDate} at {endTime}": "Od {startDate} ob {startTime}, do {endDate} ob {endTime}",
"From the {startDate} to the {endDate}": "Od {startDate}, do {endDate}",
"Gather ⋅ Organize ⋅ Mobilize": "Zberite ⋅ Organizirajte ⋅ Mobilizirajte",
"From yourself": "Od sebe",
"Gather ⋅ Organize ⋅ Mobilize": "Zberi ⋅ Organiziraj ⋅ Mobiliziraj",
"General": "Splošno",
"General information": "Splošne informacije",
"Getting location": "Pridobivanje lokacije",
"Getting there": "Približujemo se",
"Glossary": "Slovar",
"Go": "Pojdi",
"Go to the event page": "Pojdi na stran dogodka",
"Group Followers": "Sledilci skupine",
"Group Members": "Člani skupine",
"Group address": "Naslov skupine",
"Group display name": "Prikazno ime skupine",
"Group name": "Ime skupine",
"Group settings": "Nastavitve skupine",
"Group settings saved": "Nastavitve skupine so shranjene",
"Group short description": "Kratek opis skupine",
"Group visibility": "Vidnost skupine",
"Group {displayName} created": "Skupina {displayName} je ustvarjena",
"Group {groupTitle} reported": "Skupina {groupTitle} je prijavljena",
"Groups": "Skupine",
"Groups are not enabled on this instance.": "Skupine na tem vozlišču niso omogočene.",
"Groups are spaces for coordination and preparation to better organize events and manage your community.": "Skupine so prostori za usklajevanje in priprave za boljšo organizacijo dogodkov in upravljanje vaše skupnosti.",
"Headline picture": "Naslovna slika",
"Hide replies": "Skrij odgovore",
"Home": "Domov",
"Home to {number} users": "Dom {number} uporabnikom",
"Hourly email summary": "Urni povzetek po e-pošti",
"I agree to the {instanceRules} and {termsOfService}": "Strinjam se s {instanceRules} in {termsOfService}",
"I create an identity": "Ustvarim identiteto",
"I don't have a Mobilizon account": "Nimam Mobilizon računa",
"I have a Mobilizon account": "Imam Mobilizon račun",
@ -175,81 +314,165 @@
"I participate": "Sodelujem",
"I want to allow people to participate without an account.": "Ljudem želim omogočiti udeležbo brez računa.",
"I want to approve every participation request": "Želim odobriti vsako prošnjo za udeležbo",
"ICS feed for events": "Vir ICS za dogodke",
"ICS/WebCal Feed": "Vir ICS/WebCal",
"Identity {displayName} created": "Identiteta {displayName} je ustvarjena",
"Identity {displayName} deleted": "Identiteta {displayName} je izbrisana",
"Identity {displayName} updated": "Identiteta {displayName} je posodobljena",
"If allowed by organizer": "Če dovoli organizator",
"If an account with this email exists, we just sent another confirmation email to {email}": "Če račun s tem e-poštnim naslovom obstaja, smo pravkar poslali novo potrditveno e-pošto na {email}",
"If this identity is the only administrator of some groups, you need to delete them before being able to delete this identity.": "Če je ta identiteta edini skrbnik katerih skupin, jih morate izbrisati, preden lahko izbrišete identiteto.",
"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:": "Če vas prosijo za federirano identiteto, je sestavljena iz vašega uporabniškega imena in vozlišča. Na primer, federirana identiteta za vaš prvi profil je:",
"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.": "Če ste se odločili za ročno potrjevanje udeležencev, vam bo Mobilizon poslal e-pošto o novih udeležbah, ki jih je treba obravnavati. Pogostost teh obvestil lahko izberete spodaj.",
"If you want, you may send a message to the event organizer here.": "Če želite, lahko tukaj pošljete sporočilo organizatorju dogodka.",
"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.": "V naslednjem kontekstu je program programska oprema, ki jo je zagotovila skupina Mobilizon ali neodvisna stranka in se uporablja za interakcijo z vašim vozliščem.",
"Instance": "Vozlišče",
"Instance Long Description": "Daljši opis vozlišča",
"Instance Name": "Ime vozlišča",
"Instance Privacy Policy": "Pravilnik o zasebnosti za vozlišče",
"Instance Privacy Policy Source": "Vir do pravilnika o zasebnosti za vozlišče",
"Instance Privacy Policy URL": "URL pravilnika o zasebnosti za vozlišče",
"Instance Rules": "Pravila vozlišča",
"Instance Short Description": "Kratek opis vozlišča",
"Instance Slogan": "Slogan vozlišča",
"Instance Terms": "Pogoji uporabe vozlišča",
"Instance Terms Source": "Viri pogojev uporabe vozlišča",
"Instance Terms URL": "URL pogojev uporabe vozlišča",
"Instance administrator": "Skrbnik vozlišča",
"Instance configuration": "Nastavitve vozlišča",
"Instance languages": "Jezik vozlišča",
"Instance rules": "Pravila vozlišča",
"Instance settings": "Nastavitve vozlišča",
"Instances": "Vozlišča",
"Instances following you": "Vozlišča, ki vam sledijo",
"Instances you follow": "Vozlišča, katerim sledite",
"Invite a new member": "Povabi novega člana",
"Invite member": "Povabi člana",
"Invited": "Povabljeni",
"It is possible that the content is not accessible on this instance, because this instance has blocked the profiles or groups behind this content.": "Možno je, da vsebina na tem vozlišču ni dostopna, ker je to vozlišče blokiralo profile ali skupine, ki stojijo za to vsebino.",
"Italic": "Ležeče",
"Join <b>{instance}</b>, a Mobilizon instance": "Pridruži se <b>{instance}</b>, ki je Mobilizon vozlišče",
"Join group": "Pridruži se skupini",
"Keep the entire conversation about a specific topic together on a single page.": "Celoten pogovor o določeni temi naj bo na eni strani.",
"Key words": "Ključne besede",
"Language": "Jezik",
"Last IP adress": "Zadnji naslov IP",
"Last group created": "Zadnja skupina ustvarjena",
"Last published event": "Zadnji objavljeni dogodek",
"Last published events": "Zadnji objavljeni dogodki",
"Last sign-in": "Zadnja prijava",
"Last week": "Prejšnji teden",
"Latest posts": "Zadnje objave",
"Learn more": "Izvedi več",
"Learn more about Mobilizon": "Preberite več o Mobilizonu",
"Learn more about {instance}": "Več o {instance}",
"Leave": "Zapusti",
"Leave event": "Zapusti dogodek",
"Leaving event \"{title}\"": "Zapuščanje dogodka »{title}«",
"Legal": "Pravno",
"Let's define a few settings": "Določimo nekaj nastavitev",
"License": "Licenca",
"Limited number of places": "Omejeno število mest",
"List title": "Naslov seznama",
"Load more": "Naloži več",
"Load more activities": "Naloži več dejavnosti",
"Loading comments…": "Nalaganje komentarjev…",
"Local": "Lokalno",
"Locality": "Okolica",
"Location": "Lokacija",
"Log in": "Vpiši se",
"Log out": "Odjava",
"Login": "Prijava",
"Login on Mobilizon!": "Prijava v Mobilizon!",
"Login on {instance}": "Prijava v {instance}",
"Login status": "Stanje prijave",
"Main languages you/your moderators speak": "Glavni jeziki, ki jih govorite vi/vaši moderatorji",
"Manage participations": "Upravljaj udeležbe",
"Manually approve new followers": "Ročno potrdite nove sledilce",
"Manually invite new members": "Ročno povabi nove člane",
"Mark as resolved": "Označi kot razrešeno",
"Member": "Član",
"Members": "Člani",
"Message": "Sporočilo",
"Mobilizon is a federated network. You can interact with this event from a different server.": "Mobilizon je združeno omrežje. S tem dogodkom lahko komunicirate z drugega strežnika.",
"Mobilizon": "Mobilizon",
"Mobilizon is a federated network. You can interact with this event from a different server.": "Mobilizon je federirano omrežje. S tem dogodkom lahko komunicirate z drugega strežnika.",
"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 je federirana programska oprema, kar pomeni, da lahko komunicirate (odvisno od skrbniških nastavitev federacije) z vsebino iz drugih vozlišč, na primer z združevanjem skupin ali dogodkov, ki so bili ustvarjeni drugje.",
"Mobilizon is a tool that helps you <b>find, create and organise events</b>.": "Mobilizon je orodje, ki vam pomaga <b>najti, ustvariti in organizirati dogodke</b>.",
"Mobilizon is not a giant platform, but a <b>multitude of interconnected Mobilizon websites</b>.": "Mobilizon ni velikanska platforma, temveč <b>množica med seboj povezanih spletnih mest Mobilizon</b>.",
"Mobilizon software": "Programska oprema Mobilizon",
"Mobilizon uses a system of profiles to compartiment your activities. You will be able to create as many profiles as you want.": "Mobilizon uporablja sistem profilov za ločevanje vaših dejavnosti. Ustvarili boste lahko poljubno število profilov.",
"Mobilizon version": "Mobilizon različica",
"Mobilizon will send you an email when the events you are attending have important changes: date and time, address, confirmation or cancellation, etc.": "Mobilizon vam bo poslal e-pošto, ko se bodo dogodki, ki se jih udeležujete, spremenili: datum in čas, naslov, potrditev ali odpoved itd.",
"Moderated comments (shown after approval)": "Moderirani komentarji (prikazani po odobritvi)",
"Moderation": "Moderiranje",
"Moderation log": "Dnevnik moderiranja",
"Moderator": "Moderator",
"Move": "Premakni",
"Move \"{resourceName}\"": "Premakni \"{resourceName}\"",
"Move resource to {folder}": "Premakni vir v {folder}",
"My account": "Moj račun",
"My events": "Moji dogodki",
"My groups": "Moje skupine",
"My identities": "Moje identitete",
"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.": "OPOMBA! Privzetih pogojev ni preveril odvetnik in zato verjetno ne bodo zagotovili popolnega pravnega varstva za vse primere, ki jih uporablja skrbnika vozlišča. Prav tako niso značilne za vse države in jurisdikcije. Če niste prepričani, se obrnite na odvetnika.",
"Name": "Ime",
"New discussion": "Nova razprava",
"New email": "Nov e-poštni naslov",
"New folder": "Nova mapa",
"New link": "Nova povezava",
"New members": "Novi člani",
"New note": "Nova opomba",
"New password": "Novo geslo",
"New profile": "Nov profil",
"Next": "Naslednje",
"Next month": "Naslednji mesec",
"Next page": "Naslednja stran",
"Next week": "Naslednji teden",
"No address defined": "Naslov ni določen",
"No closed reports yet": "Še ni zaključenih poročil",
"No comment": "Brez komentarja",
"No comments yet": "Še brez komentarja",
"No discussions yet": "Nobenih razprav",
"No end date": "Brez končnega datuma",
"No events found": "Najdenih ni nobenih dogodkov",
"No follower matches the filters": "Noben sledilec ne ustreza filtrom",
"No group found": "Najdena ni nobena skupina",
"No groups found": "Najdenih ni nobenih skupin",
"No information": "Ni informacij",
"No instance follows your instance yet.": "Še nobeno vozlišče ne sledi vašemu vozlišču.",
"No instance to approve|Approve instance|Approve {number} instances": "Nobenega vozlišča za odobritev|Odobri vozlišče|Odobri {number} vozlišč",
"No instance to reject|Reject instance|Reject {number} instances": "Nobenega vozlišča za zavrnitev|Zavrni vozlišče|Zavrni {number} vozlišč",
"No instance to remove|Remove instance|Remove {number} instances": "Nobenega vozlišča za odstranitev|Odstrani vozlišče|Odstrani {number} vozlišč",
"No languages found": "Ni najdenih jezikov",
"No member matches the filters": "Noben član se ne ujema s filtri",
"No message": "Ni sporočil",
"No moderation logs yet": "Nobenega dnevnika moderiranja še ni",
"No more activity to display.": "Ni več dejavnosti za prikaz.",
"No one is going to this event": "Nihče ne gre na ta dogodek|Ena oseba gre|{going} oseb gre",
"No open reports yet": "Še ni odprtih poročil",
"No participant matches the filters": "Noben udeleženec se ne ujema s filtri",
"No participant to approve|Approve participant|Approve {number} participants": "Nobenega udeleženca za odobritev|Odobri udeleženca|Odobri {number} udeležencev",
"No participant to reject|Reject participant|Reject {number} participants": "Nobenega udeleženca za zavrnitev|Zavrni udeleženca|Zavrni {number} udeležencev",
"No posts found": "Ni najdenih objav",
"No posts yet": "Nobenih objav",
"No profile matches the filters": "Noben profil se ne ujema s filtri",
"No profiles found": "Ni najdenih profilov",
"No public upcoming events": "Ni javnih prihajajočih dogodkov",
"No resolved reports yet": "Še ni razrešenih poročil",
"No resources in this folder": "V tej mapi ni virov",
"No resources selected": "Izbran ni noben vir|En vir je izbran|{count} virov je izbranih",
"No resources yet": "Nobenih virov",
"No results for \"{queryText}\"": "Ni rezultatov za \"{queryText}\"",
"No rules defined yet.": "Pravila še niso določena.",
"None": "Nihče",
"Not approved": "Ni odobreno",
"Not confirmed": "Ni potrjeno",
"Notes": "Opombe",
"Nothing to see here": "Tukaj ni ničesar za videti",
"Notification before the event": "Obvestilo pred dogodkom",
"Notification on the day of the event": "Obvestilo na dan dogodka",
"Notifications for manually approved participations to an event": "Obvestila o ročno odobrenih udeležbah na dogodku",
"Now, create your first profile:": "Ustvarite svoj prvi profil:",
"Number of places": "Število mest",
"OK": "V redu",
"Old password": "Staro geslo",
@ -257,47 +480,73 @@
"On {date} ending at {endTime}": "{date}, do {endTime}",
"On {date} from {startTime} to {endTime}": "{date}, od {startTime} do {endTime}",
"On {date} starting at {startTime}": "{date}, ob {startTime}",
"On {instance}": "Na {instance}",
"Only accessible through link": "Dostopno samo prek povezave",
"Only accessible through link (private)": "Dostopno samo prek povezave (zasebno)",
"Only accessible to members of the group": "Dostopno samo članom skupine",
"Only alphanumeric lowercased characters and underscores are supported.": "Podprte so samo alfanumerične male črke in podčrtaji.",
"Only group members can access discussions": "Do razprav lahko dostopajo samo člani skupine",
"Only group moderators can create, edit and delete posts.": "Samo moderatorji skupin lahko ustvarjajo, urejajo in brišejo objave.",
"Open": "Odpri",
"Open a topic on our forum": "Odpri temo na forumu",
"Open an issue on our bug tracker (advanced users)": "Odprite težavo v našem programu za sledenje hroščev (napredni uporabniki)",
"Opened reports": "Odprta poročila",
"Or": "Ali",
"Organized": "Organizirano",
"Organized by": "Organizira",
"Organized by {name}": "Organizira {name}",
"Organizer": "Organizator",
"Organizer notifications": "Obvestila organizatorja",
"Organizers": "Organizatorji",
"Other": "Ostali",
"Other notification options:": "Druge možnosti obveščanja:",
"Other software may also support this.": "To lahko podpira tudi druga programska oprema.",
"Otherwise this identity will just be removed from the group administrators.": "V nasprotnem primeru bo ta identiteta odstranjena samo iz skupine skrbnikov.",
"Page": "Stran",
"Page limited to my group (asks for auth)": "Stran je omejena na mojo skupino (prosi za avtorizacijo)",
"Parent folder": "Nadrejena mapa",
"Participant": "Udeleženec",
"Participants": "Udeleženci",
"Participate": "Udeleži se",
"Participate using your email address": "Udeleži se s svojim e-poštnim naslovom",
"Participation approval": "Odobritev udeležbe",
"Participation confirmation": "Potrditev udeležbe",
"Participation notifications": "Obvestila o udeležbi",
"Participation requested!": "Udeležba zahtevana!",
"Participations": "Udeležbe",
"Password": "Geslo",
"Password (confirmation)": "Geslo (potrditev)",
"Password reset": "Ponastavitev gesla",
"Past events": "Pretekli dogodki",
"Pending": "Na čakanju",
"Pick": "Izberi",
"Pick a group": "Izberi skupino",
"Pick a profile or a group": "Izberi profil ali skupino",
"Pick an identity": "Izberi si identiteto",
"Pick an instance": "Izberi vozlišče",
"Please add as many details as possible to help identify the problem.": "Dodajte čim več podrobnosti, da bomo lažje ugotovili težavo.",
"Please check your spam folder if you didn't receive the email.": "Če niste prejeli e-pošte, preverite mapo z vsiljeno pošto.",
"Please contact this instance's Mobilizon admin if you think this is a mistake.": "Če menite, da gre za napako, se obrnite na skrbnika tega Mobilizon vozlišča.",
"Please do not use it in any real way.": "Prosim, ne uporabljajte ga na noben resen način.",
"Please enter your password to confirm this action.": "Vnesite svoje geslo, da potrdite to dejanje.",
"Please make sure the address is correct and that the page hasn't been moved.": "Prepričajte se, da je naslov pravilen in da stran ni bila premaknjena.",
"Please read the {fullRules} published by {instance}'s administrators.": "Preberite {fullRules}, ki so jih objavili skrbniki vozlišča {instance}.",
"Post": "Objavi",
"Post a comment": "Objavi komentar",
"Post a reply": "Objavi odgovor",
"Postal Code": "Poštna številka",
"Posts": "Objave",
"Powered by {mobilizon}. © 2018 - {date} The Mobilizon Contributors - Made with the financial support of {contributors}.": "Poganja {mobilizon}. © 2018 - {date} Mobilizon sodelavci - Izdelano s finančno podporo {contributors}.",
"Preferences": "Možnosti",
"Previous": "Prejšnje",
"Previous page": "Prejšnja stran",
"Privacy Policy": "Pravilnik o zasebnosti",
"Privacy policy": "Politika zasebnosti",
"Private event": "Zasebni dogodek",
"Private feeds": "Zasebni viri",
"Profiles": "Profili",
"Profiles and federation": "Profili in federacija",
"Promote": "Povišaj",
"Public": "Javno",
"Public RSS/Atom Feed": "Javni vir RSS/Atom",
"Public comment moderation": "Moderiranje javnih komentarjev",
@ -305,54 +554,95 @@
"Public feeds": "Javni viri",
"Public iCal Feed": "Javni vir iCal",
"Public page": "Javna stran",
"Publication date": "Datum objave",
"Publish": "Objavi",
"Published events with <b>{comments}</b> comments and <b>{participations}</b> confirmed participations": "Objavljeni dogodki s <b>{comments}</b> komentarji in <b>{participations}</b> potrjenimi udeležbami",
"RSS/Atom Feed": "Vir RSS/Atom",
"Radius": "Območje",
"Recap every week": "Povzetek vsak teden",
"Receive one email per request": "Na zahtevo prejmi eno e-pošto",
"Redirecting to content…": "Preusmeritev na vsebino …",
"Refresh profile": "Osveži profil",
"Region": "Regija",
"Register an account on {instanceName}!": "Registrirajte račun na {instanceName}!",
"Register on this instance": "Registriraj se na tem vozlišču",
"Registration is allowed, anyone can register.": "Registracija je dovoljena, prijavi se lahko vsak.",
"Registration is closed.": "Registracija je zaprta.",
"Registration is currently closed.": "Registracija je trenutno zaprta.",
"Registrations": "Registracije",
"Registrations are restricted by allowlisting.": "Registracije so omejene s seznamom dovoljenj.",
"Reject": "Zavrni",
"Rejected": "Zavrnjeno",
"Remember my participation in this browser": "Zapomni si moje udeležbe v tem brskalniku",
"Remove": "Odstrani",
"Rename": "Preimenuj",
"Rename resource": "Preimenuj vir",
"Reopen": "Ponovno odprto",
"Reply": "Odgovori",
"Report": "Prijavi",
"Report #{reportNumber}": "Prijava #{reportNumber}",
"Report this comment": "Prijavi ta komentar",
"Report this event": "Prijavi ta dogodek",
"Report this group": "Prijavi to skupino",
"Reported": "Prijavljeno",
"Reported by": "Prijavil",
"Reported by someone on {domain}": "Prijavil nekdo na {domain}",
"Reported by {reporter}": "Prijavil {reporter}",
"Reported group": "Skupina je prijavljena",
"Reported identity": "Prijavljena identiteta",
"Reports": "Prijave",
"Request for participation confirmation sent": "Prošnja za potrditev udeležbe je poslana",
"Resend confirmation email": "Ponovno pošljite potrditveno e-pošto",
"Reset my password": "Ponastavi geslo",
"Resolved": "Razrešeno",
"Resource provided is not an URL": "Navedeni vir ni URL",
"Resources": "Viri",
"Restricted": "Omejeno",
"Return to the group page": "Vrni se na stran skupine",
"Right now": "Takoj zdaj",
"Role": "Vloga",
"Rules": "Pravila",
"SSL and it's successor TLS are encryption technologies to secure data communications when using the service. You can recognize an encrypted connection in your browser's address line when the URL begins with {https} and the lock icon is displayed in your browser's address bar.": "SSL in njegov naslednik TLS sta tehnologiji šifriranja za zaščito podatkovnih komunikacij pri uporabi storitve. Šifrirano povezavo lahko prepoznate v naslovni vrstici brskalnika, ko se URL začne s {https} in je v naslovni vrstici brskalnika prikazana ikona ključavnice.",
"SSL/TLS": "SSL/TLS",
"Save": "Shrani",
"Save draft": "Shrani osnutek",
"Search": "Poišči",
"Search events, groups, etc.": "Poišči dogodke, skupine itd.",
"Searching…": "Iskanje…",
"Search…": "Iskanje…",
"Select a language": "Izberi jezik",
"Select a radius": "Izberite območje",
"Select a timezone": "Izberi časovni pas",
"Select languages": "Izberi jezike",
"Send email": "Pošlji e-pošto",
"Send the confirmation email again": "Ponovno pošlji potrditveno e-pošto",
"Send the report": "Pošlji prijavo",
"Set an URL to a page with your own privacy policy.": "Nastavite URL strani s lastnim pravilnikom o zasebnosti.",
"Set an URL to a page with your own terms.": "Nastavi URL na stran s svojimi pogoji.",
"Settings": "Nastavitve",
"Share this event": "Daj dogodek v skupno rabo",
"Short bio": "Kratka biografija",
"Show map": "Pokaži zemljevid",
"Show remaining number of places": "Prikaži preostalo število mest",
"Show the time when the event begins": "Prikaži uro, ko se dogodek začne",
"Show the time when the event ends": "Prikaži uro, ko se dogodek konča",
"Sign in with": "Prijavi se z",
"Sign up": "Vpis",
"Since you are a new member, private content can take a few minutes to appear.": "Ker ste novi član, lahko traja nekaj minut, da se prikaže zasebna vsebina.",
"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:": "Nekateri izrazi, tehnični ali drugačni, uporabljeni v spodnjem besedilu, lahko zajemajo pojme, ki jih je težko razumeti. Tukaj smo pripravili slovar, ki vam bo pomagal bolje jih razumeti:",
"Starts on…": "Začne se…",
"Status": "Stanje",
"Street": "Ulica",
"Submit": "Pošlji",
"Suspend": "Suspendiraj",
"Suspend group": "Začasno ustavi skupino",
"Suspended": "Suspendirano",
"Task lists": "Seznami nalog",
"Technical details": "Tehnične podrobnosti",
"Tentative": "Začasno",
"Tentative: Will be confirmed later": "Okvirno: kasneje bo potrjeno",
"Terms": "Pogoji",
"Terms of service": "Pogoji storitve",
"Text": "Tekst",
"The account's email address was changed. Check your emails to verify it.": "E-poštni naslov računa je bil spremenjen. Poglejte e-pošto, da preverite naslov.",
"The actual number of participants may differ, as this event is hosted on another instance.": "Dejansko število udeležencev se lahko razlikuje, saj ta dogodek gosti drugo vozlišče.",
@ -366,102 +656,317 @@
"The event organizer didn't add any description.": "Organizator dogodka ni dodal nobenega opisa.",
"The event organizer manually approves participations. Since you've chosen to participate without an account, please explain why you want to participate to this event.": "Organizator dogodka ročno odobri udeležbe. Ker ste se odločili za udeležbo brez računa, pojasnite, zakaj želite sodelovati na tem dogodku.",
"The event title will be ellipsed.": "Naslov dogodka bo zatemnjen.",
"The event will show as attributed to this group.": "Dogodek bo prikazan kot dodeljen tej skupini.",
"The event will show as attributed to your personal profile.": "Dogodek bo prikazan kot pripisan vašemu osebnemu profilu.",
"The event will show the group as organizer.": "Na dogodku bo skupina prikazana kot organizator.",
"The event {event} was created by {profile}.": "Dogodek {event} je ustvaril/a {profil}.",
"The event {event} was deleted by {profile}.": "Dogodek {event} je izbrisal/a {profil}.",
"The event {event} was updated by {profile}.": "Dogodek {event} je posodobil/a {profile}.",
"The events you created are not shown here.": "Dogodki, ki ste jih ustvarili, tukaj niso prikazani.",
"The group can now be joined by anyone.": "Skupini se lahko pridruži kdorkoli.",
"The group can now only be joined with an invite.": "Skupini se lahko pridružite le z vabilom.",
"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.": "Skupina bo javno navedena v rezultatih iskanja in bo morda predlagana v razdelku za raziskovanje. Na tej strani bodo prikazane samo javne informacije.",
"The group's avatar was changed.": "Podoba skupine je bila spremenjena.",
"The group's banner was changed.": "Spremenjena je bila oznaka skupine.",
"The group's physical address was changed.": "Fizični naslov skupine je bil spremenjen.",
"The group's short description was changed.": "Kratek opis skupine je bil spremenjen.",
"The instance administrator is the person or entity that runs this Mobilizon instance.": "Skrbnik vozlišča je fizična ali pravna oseba, ki vodi to Mobilizon vozlišče.",
"The member was removed from the group {group}": "Član je bil odstranjen iz skupine {group}",
"The only way for your group to get new members is if an admininistrator invites them.": "Edini način, da vaša skupina pridobi nove člane, je da jih povabi skrbnik.",
"The organiser has chosen to close comments.": "Organizator se je odločil zapreti komentarje.",
"The page you're looking for doesn't exist.": "Stran, ki jo iščete, ne obstaja.",
"The password was successfully changed": "Geslo je bilo uspešno spremenjeno",
"The post {post} was created by {profile}.": "Objavo {post} je ustvaril/a {profil}.",
"The post {post} was deleted by {profile}.": "Objavo {post} je izbrisal/a {profil}.",
"The post {post} was updated by {profile}.": "Objavo {post} je posodobil/a {profil}.",
"The report will be sent to the moderators of your instance. You can explain why you report this content below.": "Poročilo bo poslano moderatorjem vašega vozlišča. Spodaj lahko razložite, zakaj prijavljate to vsebino.",
"The technical details of the error can help developers solve the problem more easily. Please add them to your feedback.": "Tehnične podrobnosti napake lahko razvijalcem pomagajo pri lažjem reševanju težave. Dodajte jih v povratne informacije.",
"The {default_privacy_policy} will be used. They will be translated in the user's language.": "Uporabljen bo {default_privacy_policy}. Preveden bo v uporabnikov jezik.",
"The {default_terms} will be used. They will be translated in the user's language.": "Uporabljeni bodo {default_terms}. Prevedeni bodo v uporabnikov jezik.",
"There are {participants} participants.": "Sodeluje {participants} udeležencev.",
"There is no activity yet. Start doing some things to see activity appear here.": "Ni še nobene dejavnosti. Postanite aktivni, da se bo tu pojavila dejavnost.",
"There will be no way to recover your data.": "Vaših podatkov ne bo mogoče obnoviti.",
"There's no discussions yet": "Ni še nobenih razprav",
"These events may interest you": "Ti dogodki vas lahko zanimajo",
"This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "To Mobilizon vozlišče in organizator dogodkov omogočata anonimne udeležbe, vendar zahtevata potrditev po e-pošti.",
"This URL is not supported": "Ta URL ni podprt",
"This event has been cancelled.": "Ta dogodek je bil preklican.",
"This event is accessible only through it's link. Be careful where you post this link.": "Ta dogodek je dostopen samo prek njegove povezave. Bodite previdni, kje objavite to povezavo.",
"This group doesn't have a description yet.": "Ta skupina še nima opisa.",
"This group is invite-only": "Ta skupina je samo za povabljence",
"This identifier is unique to your profile. It allows others to find you.": "Ta identifikator je edinstven za vaš profil. Omogoča drugim, da vas najdejo.",
"This identity is not a member of any group.": "Ta identiteta ni članica nobene skupine.",
"This information is saved only on your computer. Click for details": "Ti podatki so shranjeni samo na vašem računalniku. Kliknite za podrobnosti",
"This instance isn't opened to registrations, but you can register on other instances.": "To vozlišče ni odprto za registracije, lahko pa se registrirate na drugih vozliščih.",
"This instance, <b>{instanceName} ({domain})</b>, hosts your profile, so remember its name.": "Vozlišče <b>{instanceName} ({domain})</b> gosti vaš profil, zato si zapomnite njegovo ime.",
"This is a demonstration site to test Mobilizon.": "To je demonstracijska stran za preizkušanje Mobilizona.",
"This is like your federated username (<code>{username}</code>) for groups. It will allow the group to be found on the federation, and is guaranteed to be unique.": "To je kot vaše federirano uporabniško ime (<code>{username}</code>) za skupine. To omogoči, da skupino lahko najdejo v federaciji in ji zagotovi edinstvenost.",
"This month": "Ta mesec",
"This setting will be used to display the website and send you emails in the correct language.": "Ta nastavitev bo uporabljena za prikaz spletišča in pošiljanje e-pošte v pravilnem jeziku.",
"This website isn't moderated and the data that you enter will be automatically destroyed every day at 00:01 (Paris timezone).": "To spletno mesto ni moderirano in vneseni podatki se samodejno uničijo vsak dan ob 00:01 (pariški časovni pas).",
"This week": "Ta teden",
"This weekend": "Ta vikend",
"This will delete / anonymize all content (events, comments, messages, participations…) created from this identity.": "S tem boste izbrisali / anonimizirali vso vsebino (dogodke, komentarje, sporočila, udeležbe ...), ustvarjeno iz te identitete.",
"Timezone": "Časovni pas",
"Timezone detected as {timezone}.": "Časovni pas je zaznan kot {timezone}.",
"Title": "Naslov",
"To activate more notifications, head over to the notification settings.": "Če želite omogočiti več obvestil, pojdite na nastavitve obvestil.",
"To confirm, type your event title \"{eventTitle}\"": "Za potrditev vnesite naslov dogodka \"{eventTitle}\"",
"To confirm, type your identity username \"{preferredUsername}\"": "Za potrditev vnesite svoje uporabniško ime \"{preferredUsername}\"",
"To create and manage multiples identities from a same account": "Ustvarjanje in upravljanje več identitet iz istega računa",
"To create and manage your events": "Ustvarjanje in upravljanje dogodkov",
"To create or join an group and start organizing with other people": "Če želite ustvariti skupino ali se ji pridružiti in začeti organizirati z drugimi",
"To register for an event by choosing one of your identities": "Če se želite prijaviti na dogodek z izbiro ene od svojih identitet",
"Today": "Danes",
"Tomorrow": "Jutri",
"Transfer to {outsideDomain}": "Prenesi na {outsideDomain}",
"Type": "Tip",
"Type or select a date…": "Vnesite ali izberite datum…",
"URL": "URL",
"URL copied to clipboard": "URL je kopiran v odložišče",
"Unable to copy to clipboard": "Ni mogoče kopirati v odložišče",
"Unable to detect timezone.": "Časovnega pasu ni mogoče zaznati.",
"Unable to load event for participation. The error details are provided below:": "Ni mogoče naložiti dogodka za udeležbo. Podrobnosti o napaki so navedene spodaj:",
"Unable to save your participation in this browser.": "V tem brskalniku ni mogoče shraniti vaše udeležbe.",
"Unfortunately, this instance isn't opened to registrations": "Na žalost tao vozlišče ni odprto za registracije",
"Unfortunately, your participation request was rejected by the organizers.": "Na žalost so organizatorji zavrnili vašo prošnjo za udeležbo.",
"Unknown": "Neznano",
"Unknown actor": "Neznani udeleženec",
"Unknown error.": "Neznana napaka.",
"Unknown value for the openness setting.": "Neznana vrednost za nastavitev odprtosti.",
"Unsaved changes": "Neshranjene spremembe",
"Unset group": "Ponastavi skupino",
"Unsuspend": "Odsuspendiraj",
"Upcoming": "Prihajajoči",
"Upcoming events": "Prihajajoči dogodki",
"Update": "Posodobi",
"Update event {name}": "Posodobi dogodek {name}",
"Update group": "Posodobi skupino",
"Update my event": "Posodobi moj dogodek",
"Update post": "Posodobi objavo",
"Updated": "Posodobljeno",
"Uploaded media size": "Velikost poslanega medija",
"Use my location": "Uporabi mojo lokacijo",
"User": "Uporabnik",
"Username": "Uporabniško ime",
"Users": "Uporabniki",
"View a reply": "|Pokaži en odgovor|Pokaži {totalReplies} odgovorov",
"View all": "Poglej vse",
"View all events": "Prikaži vse dogodke",
"View all posts": "Prikaži vse objave",
"View event page": "Pokaži stran dogodka",
"View everything": "Pokaži vse",
"View page on {hostname} (in a new window)": "Pokaži stran na {hostname} (v novem oknu)",
"Visibility was set to an unknown value.": "Vidnost je bila nastavljena na neznano vrednost.",
"Visibility was set to private.": "Vidnost je bila nastavljena na zasebno.",
"Visibility was set to public.": "Vidnost je bila nastavljena na javno.",
"Visible everywhere on the web": "Vidno povsod po spletu",
"Visible everywhere on the web (public)": "Vidno povsod v spletu (javno)",
"Waiting for organization team approval.": "Čakanje na odobritev organizacijske ekipe.",
"Warning": "Opozorilo",
"We improve this software thanks to your feedback. To let us know about this issue, two possibilities (both unfortunately require user account creation):": "Zaradi vaših povratnih informacij lahko to programsko opremo izboljšujemo. Če nas želite obvestiti o tej težavi, lahko uporabite dve možnosti (obe žal zahtevata ustvarjanje uporabniškega računa):",
"We just sent an email to {email}": "Pravkar smo poslali e-pošto na naslov {email}",
"We use your timezone to make sure you get notifications for an event at the correct time.": "Vaš časovni pas uporabljamo za to, da ob pravem času prejemate obvestila o dogodku.",
"We will redirect you to your instance in order to interact with this event": "Za interakcijo s tem dogodkom vas bomo preusmerili na vaše vozlišče",
"We will redirect you to your instance in order to interact with this group": "Za interakcijo s to skupino vas bomo preusmerili na vaše vozlišče",
"We'll send you an email one hour before the event begins, to be sure you won't forget about it.": "Eno uro pred začetkom dogodka vam bomo poslali e-pošto, da ne boste pozabili na dogodek.",
"We'll use your timezone settings to send a recap of the morning of the event.": "Na podlagi časovnega pasa, bomo poslali povzetek na jutro dogodka.",
"Website": "Spletna stran",
"Website / URL": "URL spletne strani",
"Welcome back {username}!": "Dobrodošli nazaj {username}!",
"Welcome back!": "Dobrodošli nazaj!",
"Welcome to Mobilizon, {username}!": "Dobrodošli na Mobilizonu, {username}!",
"What can I do to help?": "Kako lahko pomagam?",
"When a moderator from the group creates an event and attributes it to the group, it will show up here.": "Ko moderator iz skupine ustvari dogodek in ga pripiše skupini, se bo prikazal tukaj.",
"Who can view this event and participate": "Kdo si lahko ogleda ta dogodek in se ga udeleži",
"Who can view this post": "Kdo si lahko ogleda to objavo",
"Who published {number} events": "Ki so objavili {number} dogodkov",
"Why create an account?": "Zakaj ustvariti račun?",
"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.": "Omogoča prikaz in upravljanje vašega stanja udeležbe na napravi. Odoznači, če uporabljate javno napravo.",
"Within {number} kilometers of {place}": "|Znotraj kilometra od {place}|Znotraj {number} kilometrov od {place}",
"Write something…": "Napišite nekaj …",
"Yesterday": "Včeraj",
"You accepted the invitation to join the group.": "Sprejeli ste povabilo v skupino.",
"You added the member {member}.": "Dodali ste člana {member}.",
"You archived the discussion {discussion}.": "Arhivirali ste razpravo {discussion}.",
"You are not an administrator for this group.": "Niste skrbnik te skupine.",
"You are not part of any group.": "Niste član nobene skupine.",
"You are participating in this event anonymously": "Tega dogodka se udeležujete anonimno",
"You are participating in this event anonymously but didn't confirm participation": "Tega dogodka se udeležujete anonimno, vendar niste potrdili udeležbe",
"You can add tags by hitting the Enter key or by adding a comma": "Oznake lahko dodate tako, da pritisnete tipko Enter ali z vejico",
"You can pick your timezone into your preferences.": "Časovni pas lahko izberete po svojih željah.",
"You can try another search term or drag and drop the marker on the map": "Lahko poskusite z drugim iskalnim izrazom ali povlečete in spustite oznako na zemljevidu",
"You can't change your password because you are registered through {provider}.": "Gesla ne morete spremeniti, ker ste registrirani pri {provider}.",
"You created the discussion {discussion}.": "Ustvarili ste razpravo {discussion}.",
"You created the event {event}.": "Ustvarili ste dogodek {event}.",
"You created the folder {resource}.": "Ustvarili ste mapo {resource}.",
"You created the group {group}.": "Ustvarili ste skupino {group}.",
"You created the post {post}.": "Ustvarili ste objavo {post}.",
"You created the resource {resource}.": "Ustvarili ste vir {resource}.",
"You deleted the discussion {discussion}.": "Izbrisali ste razpravo {discussion}.",
"You deleted the event {event}.": "Izbrisali ste dogodek {event}.",
"You deleted the folder {resource}.": "Izbrisali ste mapo {resource}.",
"You deleted the post {post}.": "Izbrisali ste objavo {post}.",
"You deleted the resource {resource}.": "Izbrisali ste vir {resource}.",
"You demoted the member {member} to an unknown role.": "Člana {member} ste degradirali v neznano vlogo.",
"You demoted {member} to moderator.": "Člana {member} ste degradirali v moderatorja.",
"You demoted {member} to simple member.": "Člana {member} ste degradirali v navadnega člana.",
"You didn't create or join any event yet.": "Niste ustvarili nobenega dogodka ali se mu pridružili.",
"You don't follow any instances yet.": "Še nobenega vozlišča ne spremljate.",
"You have been disconnected": "Oklopljeni ste",
"You excluded member {member}.": "Izključili ste člana {member}.",
"You have been disconnected": "Povezava je bila prekinjena",
"You have been invited by {invitedBy} to the following group:": "{invitedBy} vas je povabil v naslednjo skupino:",
"You have been removed from this group's members.": "Odstranjeni ste bili iz te skupine.",
"You have cancelled your participation": "Odpovedali ste udeležbo",
"You have one event in {days} days.": "V {days} dneh nimate dogodkov | V {days} dneh imate en dogodek | V {days} dneh imate {count} dogodkov",
"You have one event today.": "Danes nimate dogodkov | Danes imate en dogodek | Danes imate {count} dogodkov",
"You have one event tomorrow.": "Jutri nimate dogodkov | Jutri imate en dogodek | Jutri imate {count} dogodkov",
"You invited {member}.": "Povabili ste {member}.",
"You may clear all participation information for this device with the buttons below.": "Vse podatke o udeležbi za to napravo lahko počistite s spodnjimi gumbi.",
"You may now close this window, or {return_to_event}.": "Zdaj lahko zaprete to okno ali {return_to_event}.",
"You moved the folder {resource} into {new_path}.": "Premaknili ste mapo {resource} v {new_path}.",
"You moved the folder {resource} to the root folder.": "Premaknili ste mapo {resource} v korensko mapo.",
"You moved the resource {resource} into {new_path}.": "Vir {resource} ste premaknili v {new_path}.",
"You moved the resource {resource} to the root folder.": "Vir {resource} ste premaknili v korensko mapo.",
"You need to create the group before you create an event.": "Preden ustvarite dogodek, morate ustvariti skupino.",
"You need to login.": "Morate se prijaviti.",
"You posted a comment on the event {event}.": "Objavili ste komentar o dogodku {event}.",
"You promoted the member {member} to an unknown role.": "Člana {member} ste povišali v neznano vlogo.",
"You promoted {member} to administrator.": "Člana {member} ste povišali v skrbnika.",
"You promoted {member} to moderator.": "Člana {member} ste povišali v moderatorja.",
"You renamed the discussion from {old_discussion} to {discussion}.": "Razpravo ste preimenovali iz {old_discussion} v {discussion}.",
"You renamed the folder from {old_resource_title} to {resource}.": "Preimenovali ste mapo iz {old_resource_title} v {resource}.",
"You renamed the resource from {old_resource_title} to {resource}.": "Vir ste preimenovali iz {old_resource_title} v {resource}.",
"You replied to a comment on the event {event}.": "Odgovorili ste na komentar o dogodku {event}.",
"You replied to the discussion {discussion}.": "Odgovorili ste na razpravo {discussion}.",
"You requested to join the group.": "Zaprosili ste za članstvo v skupini.",
"You updated the event {event}.": "Posodobili ste dogodek {event}.",
"You updated the group {group}.": "Posodobili ste skupino {group}.",
"You updated the member {member}.": "Posodobili ste člana {član}.",
"You updated the post {post}.": "Posodobili ste objavo {post}.",
"You were demoted to an unknown role by {profile}.": "V neznano vlogo vas je degradiral/a {profil}.",
"You were demoted to moderator by {profile}.": "V moderatorja vas je degradiral/a {profile}.",
"You were demoted to simple member by {profile}.": "V navadnega člana vas je degradiral/a {profile}.",
"You were promoted to administrator by {profile}.": "V skrbnika vas je povišal/a {profile}.",
"You were promoted to an unknown role by {profile}.": "V neznano vlogo vas je povišal/a {profile}.",
"You were promoted to moderator by {profile}.": "V moderatorja vas je povišal/a {profile}.",
"You will be able to add an avatar and set other options in your account settings.": "V nastavitvah računa boste lahko dodali podobo in nastavili druge možnosti.",
"You will be redirected to the original instance": "Preusmerjeni boste na prvotno vozlišče",
"You will find here all the events you have created or of which you are a participant.": "Tu boste našli vse dogodke, ki ste jih ustvarili ali pri katerih sodelujete.",
"You wish to participate to the following event": "Želite se udeležiti naslednjega dogodka",
"You'll get a weekly recap every Monday for upcoming events, if you have any.": "Vsak ponedeljek boste dobili tedenski povzetek prihajajočih dogodkov.",
"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.": "Morali boste poslati URL skupine, da bodo lahko ljudje dostopali do profila skupine. Skupine ne bo mogoče najti v iskalnikih Mobilizon ali običajnih iskalnikih.",
"You'll receive a confirmation email.": "Prejeli boste potrditveno e-pošto.",
"Your account has been successfully deleted": "Vaš račun je uspešno izbrisan",
"Your account has been validated": "Vaš račun je potrjen",
"Your account is being validated": "Vaš račun je v procesu potrjevanja",
"Your account is nearly ready, {username}": "Vaš račun je skoraj pripravljen, {username}",
"Your 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.": "Vaše mesto ali regija in območje bosta uporabljena le za predlaganje dogodkov v bližini. Območje dogodka bo upošteval upravno središče območja.",
"Your current email is {email}. You use it to log in.": "Vaš trenutni e-poštni naslov je {email}. Uporabljate ga za prijavo.",
"Your email": "Vaša e-pošta",
"Your email address was automatically set based on your {provider} account.": "Vaš e-poštni naslov je bil samodejno nastavljen glede na račun ponudnika {provider}.",
"Your email has been changed": "Vaš e-poštni naslov je bil spremenjen",
"Your email is being changed": "Vaš e-poštni naslov je bil spremenjen",
"Your email will only be used to confirm that you're a real person and send you eventual updates for this event. It will NOT be transmitted to other instances or to the event organizer.": "Vaš e-poštni naslov bo uporabljen samo za potrditev, da ste resnična oseba, in za morebitne posodobitve za ta dogodek. NE bo posredovan drugim vozliščem ali organizatorju dogodka.",
"Your federated identity": "Vaša zvezna identiteta",
"Your federated identity": "Vaša federirana identiteta",
"Your participation has been confirmed": "Vaša udeležba je potrjena",
"Your participation has been rejected": "Vaša udeležba je bila zavrnjena",
"Your participation has been requested": "Zahtevana je vaša udeležba",
"Your participation request has been validated": "Vaša udeležba je potrjena",
"Your participation request is being validated": "Vaša udeležba je v procesu potrjevanja",
"Your participation status has been changed": "Vaše stanje udeležbe je bilo spremenjeno",
"Your participation status is saved only on this device and will be deleted one month after the event's passed.": "Stanje udeležbe je shranjeno samo v tej napravi in bo izbrisano en mesec po preteku dogodka.",
"Your participation still has to be approved by the organisers.": "Organizatorji morajo še odobriti vašo udeležbo.",
"Your participation will be validated once you click the confirmation link into the email, and after the organizer manually validates your participation.": "Udeležba bo potrjena, ko boste kliknili potrditveno povezavo v e-pošti in ko bo organizator ročno potrdil vašo udeležbo.",
"Your participation will be validated once you click the confirmation link into the email.": "Udeležba bo potrjena, ko boste kliknili potrditveno povezavo v e-pošti..",
"Your profile will be shown as contact.": "Vaš profil bo prikazan kot stik.",
"Your timezone is currently set to {timezone}.": "Vaš časovni pas je trenutno nastavljen na {timezone}.",
"Your timezone was detected as {timezone}.": "Vaš časovni pas je bil zaznan kot {timezone}.",
"Your timezone {timezone} isn't supported.": "Vaš časovni pas {timezone} ni podprt.",
"Your upcoming events": "Prihajajoči dogodki",
"[This comment has been deleted by it's author]": "[Ta komentar je avtor izbrisal]",
"[This comment has been deleted]": "[Ta komentar je bil izbrisan]",
"[deleted]": "[izbrisano]",
"a non-existent report": "neobstoječe poročilo",
"and {number} groups": "in {number} skupin",
"any distance": "vse razdalje",
"as {identity}": "kot {identity}",
"contact uninformed": "neobveščen stik",
"create a group": "ustvari skupino",
"create an event": "ustvari dogodek",
"default Mobilizon privacy policy": "privzet pravilnik o zasebnosti za Mobilizon",
"default Mobilizon terms": "privzeti pogoji Mobilizona",
"e.g. 10 Rue Jangot": "npr. Kersnikova ulica 4",
"explore the events": "razišči dogodke",
"explore the groups": "razišči skupine",
"full rules": "polna pravila",
"iCal Feed": "vir iCal",
"instance rules": "pravila vozlišča",
"more than 1360 contributors": "več kot 1360 sodelavcev",
"profile@instance": "profil@vozlišče",
"report #{report_number}": "poročilo #{report_number}",
"return to the event's page": "vrnitev na stran dogodka",
"terms of service": "pogoji storitve",
"with another identity…": "z drugo identiteto…",
"{approved} / {total} seats": "{approved} / {total} mest",
"{available}/{capacity} available places": "Prostih mest ni več|{available}/{capacity} prostih mest",
"{count} km": "{count} km",
"{count} participants": "Še ni udeležencev | En udeleženec | {count} udeležencev",
"{count} requests waiting": "{count} zahtev čaka",
"{count} team members": "{count} članov skupine",
"{group} activity timeline": "Časovnica dejavnosti od {group}",
"{group}'s events": "Dogodki skupine {group}",
"{instanceName} is an instance of the {mobilizon} software.": "{instanceName} je vozlišče programske opreme {mobilizon}.",
"{instanceName} is an instance of {mobilizon_link}, a free software built with the community.": "{instanceName} je vozlišče {mobilizon_link} brezplačne programske opreme, ki je nastala v sodelovanju s skupnostjo.",
"{member} accepted the invitation to join the group.": "{member} je sprejel/a povabilo v skupino.",
"{member} rejected the invitation to join the group.": "{member} je zavrnil/a povabilo v skupino.",
"{member} requested to join the group.": "{member} je zaprosil/a za članstvo v skupini.",
"{member} was invited by {profile}.": "{profile} je povabil/a {member}.",
"{moderator} added a note on {report}": "{moderator} je dodal_a opombo o {report}",
"{moderator} closed {report}": "{moderator} zaprl_a {report}",
"{moderator} deleted an event named \"{title}\"": "{moderator} je izbrisal_a dogodek z imenom \"{title}\"",
"{moderator} has deleted user {user}": "{moderator} je izbrisal_a uporabnika_co {user}",
"{moderator} has unsuspended profile {profile}": "{moderator} je odsuspendiral_a profil {profile}",
"{moderator} marked {report} as resolved": "{moderator} je označil_a {report} kot razrešeno",
"{moderator} reopened {report}": "{moderator} je ponovno odprl_a {report}",
"{moderator} suspended profile {profile}": "{moderator} je suspendiral_a profil {profile}",
"{nb} km": "{nb} km",
"{number} members": "{number} članov",
"{number} organized events": "Ni organiziranih dogodkov|En organiziran dogodek|{number} organiziranih dogodkov",
"{number} participations": "Ni udeležencev|En udeleženec|{number} udeležencev",
"{number} posts": "Ni objav|Ena objava|{number} objav",
"{old_group_name} was renamed to {group}.": "{old_group_name} je bilo preimenovano v {group}.",
"{profile} (by default)": "{profile} (privzeto)",
"{profile} added the member {member}.": "{profile} je dodal/a člana {member}.",
"{profile} archived the discussion {discussion}.": "{profile} je arhiviral/a razpravo {discussion}.",
"{profile} created the discussion {discussion}.": "{profile} je ustvaril/a razpravo {discussion}.",
"{profile} created the folder {resource}.": "{profile} je ustvaril/a mapo {resource}.",
"{profile} created the group {group}.": "{profile} je ustvaril/a skupino {group}.",
"{profile} created the resource {resource}.": "{profile} je ustvaril/a vir {resource}.",
"{profile} deleted the discussion {discussion}.": "{profile} je izbrisal/a razpravo {discussion}.",
"{profile} deleted the folder {resource}.": "{profile} je izbrisal/a mapo {resource}.",
"{profile} deleted the resource {resource}.": "{profile} je izbrisal/a vir {resource}.",
"{profile} demoted {member} to an unknown role.": "{profile} je degradiral {member} v neznano vlogo.",
"{profile} demoted {member} to moderator.": "{profile} je degradiral {member} v moderatorja.",
"{profile} demoted {member} to simple member.": "{profile} je degradiral {member} v navadnega člana.",
"{profile} excluded member {member}.": "{profile} je izključil/a člana {member}.",
"{profile} moved the folder {resource} into {new_path}.": "{profile} je premaknil/a mapo {resource} v {new_path}.",
"{profile} moved the folder {resource} to the root folder.": "{profile} je premaknil/a mapo {resource} v korensko mapo.",
"{profile} moved the resource {resource} into {new_path}.": "{profile} je premaknil/a vir {resource} v {new_path}.",
"{profile} moved the resource {resource} to the root folder.": "{profile} je premaknil/a vir {resource} v korensko mapo.",
"{profile} posted a comment on the event {event}.": "{profile} je objavil/a komentar o dogodku {event}.",
"{profile} promoted {member} to administrator.": "{profile} je promoviral {member} v skrbnika.",
"{profile} promoted {member} to an unknown role.": "{profile} je promoviral {member} v neznano vlogo.",
"{profile} promoted {member} to moderator.": "{profile} je promoviral {member} v moderatorja.",
"{profile} quit the group.": "{profile} je zapustil/a skupno.",
"{profile} renamed the discussion from {old_discussion} to {discussion}.": "{profile} je preimenoval/a razpravo iz {old_discussion} v {discussion}.",
"{profile} renamed the folder from {old_resource_title} to {resource}.": "{profile} je preimenoval/a mapo iz {old_resource_title} v {resource}.",
"{profile} renamed the resource from {old_resource_title} to {resource}.": "{profile} je preimenoval/a vir iz {old_resource_title} v {resource}.",
"{profile} replied to a comment on the event {event}.": "{profile} je odgovoril/a na komentar o dogodku {event}.",
"{profile} replied to the discussion {discussion}.": "{profile} je odgovoril/a na razpravo {discussion}.",
"{profile} updated the group {group}.": "{profile} je posodobil/a skupino {group}.",
"{profile} updated the member {member}.": "{profile} je posodobil člana {member}.",
"{title} ({count} todos)": "{title} ({count} todos)",
"{username} was invited to {group}": "{username} je povabljen/a v {group}",
"© The OpenStreetMap Contributors": "© The OpenStreetMap Contributors"
}

7
js/src/i18n/zh_Hant.json Normal file
View File

@ -0,0 +1,7 @@
{
"About": "關於",
"About Mobilizon": "關於Mobilizon",
"About this event": "關於這個活動",
"Accepted": "己接受",
"Add to my calendar": ""
}

31
js/src/mixins/activity.ts Normal file
View File

@ -0,0 +1,31 @@
import { CURRENT_ACTOR_CLIENT } from "@/graphql/actor";
import { IActivity } from "@/types/activity.model";
import { IActor } from "@/types/actor";
import { Component, Prop, Vue } from "vue-property-decorator";
@Component({
apollo: {
currentActor: CURRENT_ACTOR_CLIENT,
},
})
export default class ActivityMixin extends Vue {
@Prop({ required: true, type: Object }) activity!: IActivity;
currentActor!: IActor;
get subjectParams(): Record<string, string> {
return this.activity.subjectParams.reduce(
(acc: Record<string, string>, { key, value }) => {
acc[key] = value;
return acc;
},
{}
);
}
get isAuthorCurrentActor(): boolean {
return (
this.activity.author.id === this.currentActor.id &&
this.currentActor.id !== undefined
);
}
}

View File

@ -1,8 +1,17 @@
import { PERSON_MEMBERSHIPS, CURRENT_ACTOR_CLIENT } from "@/graphql/actor";
import { GROUP_MEMBERSHIP_SUBSCRIPTION_CHANGED } from "@/graphql/event";
import {
CURRENT_ACTOR_CLIENT,
GROUP_MEMBERSHIP_SUBSCRIPTION_CHANGED,
PERSON_MEMBERSHIP_GROUP,
} from "@/graphql/actor";
import { FETCH_GROUP } from "@/graphql/group";
import RouteName from "@/router/name";
import { Group, IActor, IGroup, IPerson } from "@/types/actor";
import {
Group,
IActor,
IGroup,
IPerson,
usernameWithDomain,
} from "@/types/actor";
import { MemberRole } from "@/types/enums";
import { Component, Vue } from "vue-property-decorator";
@ -26,11 +35,12 @@ import { Component, Vue } from "vue-property-decorator";
},
},
person: {
query: PERSON_MEMBERSHIPS,
query: PERSON_MEMBERSHIP_GROUP,
fetchPolicy: "cache-and-network",
variables() {
return {
id: this.currentActor.id,
group: usernameWithDomain(this.group),
};
},
subscribeToMore: {
@ -38,14 +48,23 @@ import { Component, Vue } from "vue-property-decorator";
variables() {
return {
actorId: this.currentActor.id,
group: this.group.preferredUsername,
};
},
skip() {
return !this.currentActor || !this.currentActor.id;
return (
!this.currentActor ||
!this.currentActor.id ||
!this.group.preferredUsername
);
},
},
skip() {
return !this.currentActor || !this.currentActor.id;
return (
!this.currentActor ||
!this.currentActor.id ||
!this.group.preferredUsername
);
},
},
currentActor: CURRENT_ACTOR_CLIENT,
@ -72,11 +91,8 @@ export default class GroupMixin extends Vue {
hasCurrentActorThisRole(givenRole: string | string[]): boolean {
const roles = Array.isArray(givenRole) ? givenRole : [givenRole];
return (
this.person &&
this.person.memberships.elements.some(
({ parent: { id }, role }) =>
id === this.group.id && roles.includes(role)
)
this.person?.memberships?.total > 0 &&
roles.includes(this.person?.memberships?.elements[0].role)
);
}

View File

@ -18,6 +18,7 @@ export enum GroupsRouteName {
POSTS = "POSTS",
GROUP_EVENTS = "GROUP_EVENTS",
GROUP_JOIN = "GROUP_JOIN",
TIMELINE = "TIMELINE",
}
const resourceFolder = (): Promise<EsModuleComponent> =>
@ -145,4 +146,12 @@ export const groupsRoutes: RouteConfig[] = [
name: GroupsRouteName.GROUP_JOIN,
meta: { requiredAuth: false },
},
{
path: "/@:preferredUsername/timeline",
name: GroupsRouteName.TIMELINE,
component: (): Promise<EsModuleComponent> =>
import("@/views/Group/Timeline.vue"),
props: true,
meta: { requiredAuth: true },
},
];

View File

@ -109,7 +109,7 @@ export const routes = [
path: "/interact",
name: RouteName.INTERACT,
component: (): Promise<EsModuleComponent> =>
import(/* webpackChunkName: "cookies" */ "@/views/Interact.vue"),
import(/* webpackChunkName: "interact" */ "@/views/Interact.vue"),
meta: { requiredAuth: false },
},
{
@ -158,9 +158,11 @@ const router = new Router({
router.beforeEach(authGuardIfNeeded);
router.afterEach(() => {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
router.app.$children[0].error = null;
if (router.app.$children[0]) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
router.app.$children[0].error = null;
}
});
export default router;

View File

@ -0,0 +1,35 @@
import { IActor, IGroup } from "./actor";
import { IMember } from "./actor/member.model";
import {
ActivityDiscussionSubject,
ActivityEventCommentSubject,
ActivityEventSubject,
ActivityGroupSubject,
ActivityMemberSubject,
ActivityPostSubject,
ActivityResourceSubject,
ActivityType,
} from "./enums";
import { IEvent } from "./event.model";
import { IPost } from "./post.model";
import { IResource } from "./resource";
export type ActivitySubject =
| ActivityEventSubject
| ActivityPostSubject
| ActivityMemberSubject
| ActivityResourceSubject
| ActivityDiscussionSubject
| ActivityGroupSubject
| ActivityEventCommentSubject;
export interface IActivity {
id: string;
type: ActivityType;
subject: ActivitySubject;
subjectParams: { key: string; value: string }[];
author: IActor;
group: IGroup;
object: IEvent | IPost | IGroup | IMember | IResource;
insertedAt: string;
}

View File

@ -10,6 +10,7 @@ import { Address } from "../address.model";
import { ActorType, Openness } from "../enums";
import type { IMember } from "./member.model";
import type { ITodoList } from "../todolist";
import { IActivity } from "../activity.model";
export interface IGroup extends IActor {
members: Paginate<IMember>;
@ -20,6 +21,7 @@ export interface IGroup extends IActor {
physicalAddress: IAddress;
openness: Openness;
manuallyApprovesFollowers: boolean;
activity: Paginate<IActivity>;
}
export class Group extends Actor implements IGroup {
@ -41,6 +43,7 @@ export class Group extends Actor implements IGroup {
this.patch(hash);
}
activity: Paginate<IActivity> = { elements: [], total: 0 };
openness: Openness = Openness.INVITE_ONLY;

View File

@ -66,9 +66,9 @@ export class Address implements IAddress {
let alternativeName = "";
let poiIcon: IPOIIcon = poiIcons.default;
// Google Maps doesn't have a type
if (this.type == null && this.description === this.street)
if (this.type == null && this.description === this.street) {
this.type = "house";
}
switch (this.type) {
case "house":
name = this.description;
@ -123,6 +123,9 @@ export class Address implements IAddress {
if (name && alternativeName) {
return `${name}, ${alternativeName}`;
}
if (name) {
return name;
}
return "";
}

View File

@ -12,13 +12,20 @@ export interface ICurrentUser {
defaultActor?: IPerson;
}
export interface IUserPreferredLocation {
range?: number;
name?: string;
geohash?: string;
}
export interface IUserSettings {
timezone: string;
notificationOnDay: boolean;
notificationEachWeek: boolean;
notificationBeforeEvent: boolean;
notificationPendingParticipation: INotificationPendingEnum;
notificationPendingMembership: INotificationPendingEnum;
timezone?: string;
notificationOnDay?: boolean;
notificationEachWeek?: boolean;
notificationBeforeEvent?: boolean;
notificationPendingParticipation?: INotificationPendingEnum;
notificationPendingMembership?: INotificationPendingEnum;
location?: IUserPreferredLocation;
}
export interface IUser extends ICurrentUser {

View File

@ -178,3 +178,75 @@ export enum GroupVisibility {
UNLISTED = "UNLISTED",
PRIVATE = "PRIVATE",
}
export enum AddressSearchType {
ADMINISTRATIVE = "ADMINISTRATIVE",
}
export enum ActivityType {
EVENT = "EVENT",
POST = "POST",
MEMBER = "MEMBER",
RESOURCE = "RESOURCE",
DISCUSSION = "DISCUSSION",
GROUP = "GROUP",
}
export enum ActivityEventSubject {
EVENT_CREATED = "event_created",
EVENT_UPDATED = "event_updated",
EVENT_DELETED = "event_deleted",
}
export enum ActivityEventCommentSubject {
COMMENT_POSTED = "comment_posted",
}
export enum ActivityPostSubject {
POST_CREATED = "post_created",
POST_UPDATED = "post_updated",
POST_DELETED = "post_deleted",
}
export enum ActivityMemberSubject {
MEMBER_REQUEST = "member_request",
MEMBER_INVITED = "member_invited",
MEMBER_ACCEPTED_INVITATION = "member_accepted_invitation",
MEMBER_REJECTED_INVITATION = "member_rejected_invitation",
MEMBER_ADDED = "member_added",
MEMBER_JOINED = "member_joined",
MEMBER_APPROVED = "member_approved",
MEMBER_UPDATED = "member_updated",
MEMBER_REMOVED = "member_removed",
MEMBER_QUIT = "member_quit",
}
export enum ActivityResourceSubject {
RESOURCE_CREATED = "resource_created",
RESOURCE_UPDATED = "resource_renamed",
RESOURCE_MOVED = "resource_moved",
RESOURCE_DELETED = "resource_deleted",
}
export enum ActivityDiscussionSubject {
DISCUSSION_CREATED = "discussion_created",
DISCUSSION_REPLIED = "discussion_replied",
DISCUSSION_RENAMED = "discussion_renamed",
DISCUSSION_ARCHIVED = "discussion_archived",
DISCUSSION_DELETED = "discussion_deleted",
}
export enum ActivityGroupSubject {
GROUP_CREATED = "group_created",
GROUP_UPDATED = "group_updated",
}
export enum EventSortField {
BEGINS_ON = "BEGINS_ON",
INSERTED_AT = "INSERTED_AT",
UPDATED_AT = "UPDATED_AT",
}
export enum SortDirection {
ASC = "ASC",
DESC = "DESC",
}

View File

@ -4,6 +4,7 @@ import { DateFnsPlugin } from "@/plugins/dateFns";
import en from "../i18n/en_US.json";
import langs from "../i18n/langs.json";
import { getLocaleData } from "./auth";
import pluralizationRules from "../i18n/pluralRules";
const DEFAULT_LOCALE = "en_US";
@ -31,6 +32,7 @@ export const i18n = new VueI18n({
messages: en, // set locale messages
fallbackLocale: DEFAULT_LOCALE,
formatFallbackMessages: true,
pluralizationRules,
});
const loadedLanguages = [DEFAULT_LOCALE];

View File

@ -94,6 +94,10 @@ $colors: map-merge(
$link,
$link-invert,
),
"grey": (
$grey,
findColorInvert($grey),
),
)
);

View File

@ -25,7 +25,11 @@
</div>
<div class="column contact">
<h4>{{ $t("Contact") }}</h4>
<instance-contact-link :contact="config.contact" />
<instance-contact-link
v-if="config && config.contact"
:contact="config.contact"
/>
<p v-else>{{ $t("No information") }}</p>
</div>
</section>
<hr />
@ -93,11 +97,11 @@ import langs from "../../i18n/langs.json";
query: LANGUAGES_CODES,
variables() {
return {
codes: this.config.languages,
codes: this?.config.languages,
};
},
skip() {
return !this.config || !this.config.languages;
return !this.config || !this.config?.languages;
},
},
},

View File

@ -1,7 +1,11 @@
<template>
<div class="container section">
<h2 class="title">{{ $t("Privacy Policy") }}</h2>
<div class="content" v-html="config.privacy.bodyHtml" />
<div
class="content"
v-if="config && config.privacy"
v-html="config.privacy.bodyHtml"
/>
</div>
</template>
@ -37,14 +41,14 @@ export default class Privacy extends Vue {
@Watch("config", { deep: true })
watchConfig(config: IConfig): void {
if (config.privacy.type) {
if (config?.privacy?.type) {
this.redirectToUrl();
}
}
redirectToUrl(): void {
if (this.config.privacy.type === InstancePrivacyType.URL) {
window.location.replace(this.config.privacy.url);
if (this.config?.privacy?.type === InstancePrivacyType.URL) {
window.location.replace(this.config?.privacy?.url);
}
}
}

View File

@ -1,7 +1,7 @@
<template>
<div class="container section">
<h2 class="title">{{ $t("Terms") }}</h2>
<div class="content" v-html="config.terms.bodyHtml" />
<div class="content" v-if="config" v-html="config.terms.bodyHtml" />
</div>
</template>
@ -37,14 +37,14 @@ export default class Terms extends Vue {
@Watch("config", { deep: true })
watchConfig(config: IConfig): void {
if (config.terms.type) {
if (config?.terms?.type) {
this.redirectToUrl();
}
}
redirectToUrl(): void {
if (this.config.terms.type === InstanceTermsType.URL) {
window.location.replace(this.config.terms.url);
if (this.config?.terms?.type === InstanceTermsType.URL) {
window.location.replace(this.config?.terms?.url);
}
}
}

View File

@ -98,6 +98,77 @@
$t("Delete this identity")
}}</span>
</div>
<section v-if="isUpdate">
<div class="setting-title">
<h2>{{ $t("Profile feeds") }}</h2>
</div>
<p>
{{
$t(
"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."
)
}}
</p>
<div v-if="identity.feedTokens && identity.feedTokens.length > 0">
<div
class="buttons"
v-for="feedToken in identity.feedTokens"
:key="feedToken.token"
>
<b-tooltip
:label="$t('URL copied to clipboard')"
:active="showCopiedTooltip.atom"
always
type="is-success"
position="is-left"
>
<b-button
tag="a"
icon-left="rss"
@click="
(e) => copyURL(e, tokenToURL(feedToken.token, 'atom'), 'atom')
"
:href="tokenToURL(feedToken.token, 'atom')"
target="_blank"
>{{ $t("RSS/Atom Feed") }}</b-button
>
</b-tooltip>
<b-tooltip
:label="$t('URL copied to clipboard')"
:active="showCopiedTooltip.ics"
always
type="is-success"
position="is-left"
>
<b-button
tag="a"
@click="
(e) => copyURL(e, tokenToURL(feedToken.token, 'ics'), 'ics')
"
icon-left="calendar-sync"
:href="tokenToURL(feedToken.token, 'ics')"
target="_blank"
>{{ $t("ICS/WebCal Feed") }}</b-button
>
</b-tooltip>
<b-button
icon-left="refresh"
type="is-text"
@click="openRegenerateFeedTokensConfirmation"
>{{ $t("Regenerate new links") }}</b-button
>
</div>
</div>
<div v-else>
<b-button
icon-left="refresh"
type="is-text"
@click="generateFeedTokens"
>{{ $t("Create new links") }}</b-button
>
</div>
</section>
</div>
</div>
</template>
@ -131,6 +202,10 @@ h1 {
.username-field + .field {
margin-bottom: 0;
}
::v-deep .buttons > *:not(:last-child) .button {
margin-right: 0.5rem;
}
</style>
<script lang="ts">
@ -151,6 +226,11 @@ import RouteName from "../../../router/name";
import { buildFileVariable } from "../../../utils/image";
import { changeIdentity } from "../../../utils/auth";
import identityEditionMixin from "../../../mixins/identityEdition";
import {
CREATE_FEED_TOKEN_ACTOR,
DELETE_FEED_TOKEN,
} from "@/graphql/feed_tokens";
import { IFeedToken } from "@/types/feedtoken.model";
@Component({
components: {
@ -191,6 +271,8 @@ export default class EditIdentity extends mixins(identityEditionMixin) {
RouteName = RouteName;
showCopiedTooltip = { ics: false, atom: false };
get message(): string | null {
if (this.isUpdate) return null;
return this.$t(
@ -353,6 +435,63 @@ export default class EditIdentity extends mixins(identityEditionMixin) {
return MOBILIZON_INSTANCE_HOST;
}
tokenToURL(token: string, format: string): string {
return `${window.location.origin}/events/going/${token}/${format}`;
}
copyURL(e: Event, url: string, format: "ics" | "atom"): void {
if (navigator.clipboard) {
e.preventDefault();
navigator.clipboard.writeText(url);
this.showCopiedTooltip[format] = true;
setTimeout(() => {
this.showCopiedTooltip[format] = false;
}, 2000);
}
}
async generateFeedTokens(): Promise<void> {
const newToken = await this.createNewFeedToken();
this.identity.feedTokens.push(newToken);
}
async regenerateFeedTokens(): Promise<void> {
if (this.identity?.feedTokens.length < 1) return;
await this.deleteFeedToken(this.identity.feedTokens[0].token);
const newToken = await this.createNewFeedToken();
this.identity.feedTokens.pop();
this.identity.feedTokens.push(newToken);
}
private async deleteFeedToken(token: string): Promise<void> {
await this.$apollo.mutate({
mutation: DELETE_FEED_TOKEN,
variables: { token },
});
}
private async createNewFeedToken(): Promise<IFeedToken> {
const { data } = await this.$apollo.mutate({
mutation: CREATE_FEED_TOKEN_ACTOR,
variables: { actor_id: this.identity?.id },
});
return data.createFeedToken;
}
openRegenerateFeedTokensConfirmation(): void {
this.$buefy.dialog.confirm({
type: "is-warning",
title: this.$t("Regenerate new links") as string,
message: this.$t(
"You'll need to change the URLs where there were previously entered."
) as string,
confirmText: this.$t("Regenerate new links") as string,
cancelText: this.$t("Cancel") as string,
onConfirm: () => this.regenerateFeedTokens(),
});
}
openDeleteIdentityConfirmation(): void {
this.$buefy.dialog.prompt({
type: "is-danger",

View File

@ -71,7 +71,7 @@
{{ $t("Main languages you/your moderators speak") }}
</small>
<b-taginput
v-model="adminSettings.instanceLanguages"
v-model="instanceLanguages"
:data="filteredLanguages"
autocomplete
:open-on-focus="true"
@ -332,7 +332,7 @@
</div>
</template>
<script lang="ts">
import { Component, Vue, Watch } from "vue-property-decorator";
import { Component, Vue } from "vue-property-decorator";
import {
ADMIN_SETTINGS,
SAVE_ADMIN_SETTINGS,
@ -361,24 +361,23 @@ export default class Settings extends Vue {
RouteName = RouteName;
@Watch("languages")
setCorrectLanguagesNames(): void {
if (this.languages && this.adminSettings) {
this.adminSettings.instanceLanguages = this.adminSettings.instanceLanguages
.map((code) => this.languageForCode(code))
.filter((language) => language) as string[];
}
get instanceLanguages(): string[] {
const languageCodes = this.adminSettings.instanceLanguages || [];
return languageCodes
.map((code) => this.languageForCode(code))
.filter((language) => language) as string[];
}
set instanceLanguages(instanceLanguages: string[]) {
this.adminSettings.instanceLanguages = instanceLanguages
.map((language) => {
return this.codeForLanguage(language);
})
.filter((code) => code !== undefined) as string[];
}
async updateSettings(): Promise<void> {
const variables = { ...this.adminSettings };
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
variables.instanceLanguages = variables.instanceLanguages.map(
(language) => {
return this.codeForLanguage(language);
}
);
try {
await this.$apollo.mutate({
mutation: SAVE_ADMIN_SETTINGS,
@ -408,7 +407,7 @@ export default class Settings extends Vue {
: [];
}
codeForLanguage(language: string): string | undefined {
private codeForLanguage(language: string): string | undefined {
if (this.languages) {
const lang = this.languages.find(({ name }) => name === language);
if (lang) return lang.code;
@ -416,7 +415,7 @@ export default class Settings extends Vue {
return undefined;
}
languageForCode(codeGiven: string): string | undefined {
private languageForCode(codeGiven: string): string | undefined {
if (this.languages) {
const lang = this.languages.find(({ code }) => code === codeGiven);
if (lang) return lang.name;

View File

@ -3,7 +3,11 @@
<h1>{{ $t("Create a discussion") }}</h1>
<form @submit.prevent="createDiscussion">
<b-field :label="$t('Title')">
<b-field
:label="$t('Title')"
:message="errors.title"
:type="errors.title ? 'is-danger' : undefined"
>
<b-input aria-required="true" required v-model="discussion.title" />
</b-field>
@ -64,7 +68,10 @@ export default class CreateDiscussion extends Vue {
discussion = { title: "", text: "" };
errors = { title: "" };
async createDiscussion(): Promise<void> {
this.errors = { title: "" };
try {
if (!this.group.id || !this.currentActor.id) return;
const { data } = await this.$apollo.mutate({
@ -86,7 +93,11 @@ export default class CreateDiscussion extends Vue {
} catch (error) {
console.error(error);
if (error.graphQLErrors && error.graphQLErrors.length > 0) {
this.$notifier.error(error.graphQLErrors[0].message);
if (error.graphQLErrors[0].field == "title") {
this.errors.title = error.graphQLErrors[0].message;
} else {
this.$notifier.error(error.graphQLErrors[0].message);
}
}
}
}

View File

@ -79,7 +79,7 @@
icon-right="close"
/>
<b-button
@click="deleteConversation"
@click="openDeleteDiscussionConfirmation"
type="is-danger"
native-type="button"
icon-left="delete"
@ -388,6 +388,19 @@ export default class discussion extends mixins(GroupMixin) {
this.editTitleMode = false;
}
openDeleteDiscussionConfirmation(): void {
this.$buefy.dialog.confirm({
type: "is-danger",
title: this.$t("Delete this discussion") as string,
message: this.$t(
"Are you sure you want to delete this entire discussion?"
) as string,
confirmText: this.$t("Delete discussion") as string,
cancelText: this.$t("Cancel") as string,
onConfirm: () => this.deleteConversation(),
});
}
async deleteConversation(): Promise<void> {
await this.$apollo.mutate({
mutation: DELETE_DISCUSSION,

View File

@ -75,8 +75,11 @@ import { IActor, IGroup, IPerson, usernameWithDomain } from "@/types/actor";
import DiscussionListItem from "@/components/Discussion/DiscussionListItem.vue";
import RouteName from "../../router/name";
import { MemberRole } from "@/types/enums";
import { CURRENT_ACTOR_CLIENT, PERSON_MEMBERSHIPS } from "@/graphql/actor";
import { GROUP_MEMBERSHIP_SUBSCRIPTION_CHANGED } from "@/graphql/event";
import {
CURRENT_ACTOR_CLIENT,
GROUP_MEMBERSHIP_SUBSCRIPTION_CHANGED,
PERSON_MEMBERSHIP_GROUP,
} from "@/graphql/actor";
import { IMember } from "@/types/actor/member.model";
import EmptyContent from "@/components/Utils/EmptyContent.vue";
@ -96,11 +99,12 @@ import EmptyContent from "@/components/Utils/EmptyContent.vue";
},
},
person: {
query: PERSON_MEMBERSHIPS,
query: PERSON_MEMBERSHIP_GROUP,
fetchPolicy: "cache-and-network",
variables() {
return {
id: this.currentActor.id,
group: this.preferredUsername,
};
},
subscribeToMore: {
@ -108,14 +112,21 @@ import EmptyContent from "@/components/Utils/EmptyContent.vue";
variables() {
return {
actorId: this.currentActor.id,
group: this.preferredUsername,
};
},
skip() {
return !this.currentActor || !this.currentActor.id;
return (
!this.currentActor ||
!this.currentActor.id ||
!this.preferredUsername
);
},
},
skip() {
return !this.currentActor || !this.currentActor.id;
return (
!this.currentActor || !this.currentActor.id || !this.preferredUsername
);
},
},
currentActor: CURRENT_ACTOR_CLIENT,

View File

@ -81,19 +81,21 @@
<subtitle>{{ $t("Organizers") }}</subtitle>
<div v-if="config && config.features.groups">
<div v-if="config && config.features.groups && organizerActor.id">
<b-field>
<organizer-picker-wrapper
v-model="event.attributedTo"
v-model="organizerActor"
:contacts.sync="event.contacts"
:identity="event.organizerActor"
/>
</b-field>
<p v-if="!event.attributedTo.id || attributedToEqualToOrganizerActor">
<p v-if="!attributedToAGroup && organizerActorEqualToCurrentActor">
{{
$t("The event will show as attributed to your personal profile.")
}}
</p>
<p v-else-if="!attributedToAGroup">
{{ $t("The event will show as attributed to this profile.") }}
</p>
<p v-else>
<span>{{
$t("The event will show as attributed to this group.")
@ -101,6 +103,7 @@
<span
v-if="event.contacts && event.contacts.length"
v-html="
' ' +
$tc(
'<b>{contact}</b> will be displayed as contact.',
event.contacts.length,
@ -114,6 +117,9 @@
)
"
/>
<span v-else>
{{ $t("You may show some members as contacts.") }}
</span>
</p>
</div>
<subtitle>{{ $t("Who can view this event and participate") }}</subtitle>
@ -431,6 +437,7 @@ import Subtitle from "@/components/Utils/Subtitle.vue";
import { Route } from "vue-router";
import { formatList } from "@/utils/i18n";
import {
ActorType,
CommentModeration,
EventJoinOptions,
EventStatus,
@ -447,10 +454,11 @@ import {
import { EventModel, IEvent } from "../../types/event.model";
import {
CURRENT_ACTOR_CLIENT,
IDENTITIES,
LOGGED_USER_DRAFTS,
LOGGED_USER_PARTICIPATIONS,
} from "../../graphql/actor";
import { IPerson, Person, displayNameAndUsername } from "../../types/actor";
import { displayNameAndUsername, IActor, IGroup } from "../../types/actor";
import { TAGS } from "../../graphql/tags";
import { ITag } from "../../types/tag.model";
import {
@ -479,6 +487,7 @@ const DEFAULT_LIMIT_NUMBER_OF_PLACES = 10;
currentActor: CURRENT_ACTOR_CLIENT,
tags: TAGS,
config: CONFIG,
identities: IDENTITIES,
event: {
query: FETCH_EVENT,
variables() {
@ -496,13 +505,11 @@ const DEFAULT_LIMIT_NUMBER_OF_PLACES = 10;
},
metaInfo() {
return {
// if no subcomponents specify a metaInfo.title, this title will be used
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
title: (this.isUpdate
? this.$t("Event edition")
: this.$t("Event creation")) as string,
// all titles will be injected into this template
titleTemplate: "%s | Mobilizon",
};
},
@ -514,12 +521,14 @@ export default class EditEvent extends Vue {
@Prop({ type: Boolean, default: false }) isDuplicate!: boolean;
currentActor = new Person();
currentActor!: IActor;
tags: ITag[] = [];
event: IEvent = new EventModel();
identities: IActor[] = [];
config!: IConfig;
unmodifiedEvent!: IEvent;
@ -574,16 +583,32 @@ export default class EditEvent extends Vue {
this.event.beginsOn = now;
this.event.endsOn = end;
this.event.organizerActor = this.getDefaultActor();
}
private getDefaultActor() {
if (this.event.organizerActor?.id) {
get organizerActor(): IActor {
if (this.event?.attributedTo?.id) {
return this.event.attributedTo;
}
if (this.event?.organizerActor?.id) {
return this.event.organizerActor;
}
return this.currentActor;
}
set organizerActor(actor: IActor) {
if (actor?.type === ActorType.GROUP) {
this.event.attributedTo = actor as IGroup;
this.event.organizerActor = this.currentActor;
} else {
this.event.attributedTo = undefined;
this.event.organizerActor = actor;
}
}
get attributedToAGroup(): boolean {
return this.event.attributedTo?.id !== undefined;
}
async mounted(): Promise<void> {
this.observer = new IntersectionObserver(
(entries) => {
@ -725,8 +750,10 @@ export default class EditEvent extends Vue {
return !(
this.eventId &&
this.event.organizerActor?.id !== undefined &&
this.currentActor.id !== this.event.organizerActor.id
) as boolean;
!this.identities
.map(({ id }) => id)
.includes(this.event.organizerActor?.id)
);
}
get updateEventMessage(): string {
@ -753,8 +780,7 @@ export default class EditEvent extends Vue {
*/
private postCreateOrUpdate(store: any, updateEvent: IEvent) {
const resultEvent: IEvent = { ...updateEvent };
const organizerActor: IPerson = this.event.organizerActor as Person;
resultEvent.organizerActor = organizerActor;
resultEvent.organizerActor = this.event.organizerActor;
resultEvent.relatedEvents = [];
store.writeQuery({
@ -767,12 +793,12 @@ export default class EditEvent extends Vue {
query: EVENT_PERSON_PARTICIPATION,
variables: {
eventId: updateEvent.id,
name: organizerActor.preferredUsername,
name: this.event.organizerActor?.preferredUsername,
},
data: {
person: {
__typename: "Person",
id: organizerActor.id,
id: this.event?.organizerActor?.id,
participations: {
__typename: "PaginatedParticipantList",
total: 1,
@ -783,7 +809,7 @@ export default class EditEvent extends Vue {
role: ParticipantRole.CREATOR,
actor: {
__typename: "Actor",
id: organizerActor.id,
id: this.event?.organizerActor?.id,
},
event: {
__typename: "Event",
@ -820,30 +846,29 @@ export default class EditEvent extends Vue {
];
}
get attributedToEqualToOrganizerActor(): boolean {
return (this.event.organizerActor?.id !== undefined &&
this.event.attributedTo?.id === this.event.organizerActor?.id) as boolean;
get organizerActorEqualToCurrentActor(): boolean {
return (
this.currentActor?.id !== undefined &&
this.organizerActor?.id === this.currentActor?.id
);
}
/**
* Build variables for Event GraphQL creation query
*/
private async buildVariables() {
this.event.organizerActor = this.event.organizerActor?.id
? this.event.organizerActor
: this.currentActor;
let res = this.event.toEditJSON();
if (this.event.organizerActor) {
const organizerActor = this.event.organizerActor?.id
? this.event.organizerActor
: this.organizerActor;
if (organizerActor) {
res = Object.assign(res, {
organizerActorId: this.event.organizerActor.id,
organizerActorId: organizerActor.id,
});
}
const attributedToId =
this.event.attributedTo &&
!this.attributedToEqualToOrganizerActor &&
this.event.attributedTo.id
? this.event.attributedTo.id
: null;
const attributedToId = this.event.attributedTo?.id
? this.event.attributedTo.id
: null;
res = Object.assign(res, { attributedToId });
// eslint-disable-next-line

View File

@ -737,11 +737,9 @@ import { IParticipant } from "../../types/participant.model";
},
metaInfo() {
return {
// if no subcomponents specify a metaInfo.title, this title will be used
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
title: this.eventTitle,
// all titles will be injected into this template
titleTemplate: "%s | Mobilizon",
meta: [
// eslint-disable-next-line @typescript-eslint/ban-ts-comment

View File

@ -186,9 +186,7 @@ import Subtitle from "../../components/Utils/Subtitle.vue";
},
metaInfo() {
return {
// if no subcomponents specify a metaInfo.title, this title will be used
title: this.$t("My events") as string,
// all titles will be injected into this template
titleTemplate: "%s | Mobilizon",
};
},

View File

@ -57,15 +57,71 @@
<b-skeleton v-else :animated="true" />
<br />
<div class="buttons">
<router-link
<b-button
outlined
icon-left="timeline-text"
v-if="isCurrentActorAGroupMember"
tag="router-link"
:to="{
name: RouteName.TIMELINE,
params: { preferredUsername: usernameWithDomain(group) },
}"
>{{ $t("Activity") }}</b-button
>
<b-button
outlined
icon-left="cog"
v-if="isCurrentActorAGroupAdmin"
tag="router-link"
:to="{
name: RouteName.GROUP_PUBLIC_SETTINGS,
params: { preferredUsername: usernameWithDomain(group) },
}"
class="button is-outlined"
>{{ $t("Group settings") }}</router-link
>{{ $t("Group settings") }}</b-button
>
<b-dropdown
class="menu-dropdown"
aria-role="list"
v-if="isCurrentActorAGroupMember"
position="is-bottom-left"
>
<b-button
slot="trigger"
outlined
role="button"
icon-right="dots-horizontal"
>
</b-button>
<b-dropdown-item
aria-role="listitem"
v-if="ableToReport"
@click="isReportModalActive = true"
>
<span>
{{ $t("Report") }}
<b-icon icon="flag" />
</span>
</b-dropdown-item>
<hr class="dropdown-divider" />
<b-dropdown-item has-link aria-role="listitem">
<a
:href="`@${preferredUsername}/feed/atom`"
:title="$t('Atom feed for events and posts')"
>
{{ $t("RSS/Atom Feed") }}
<b-icon icon="rss" />
</a>
</b-dropdown-item>
<b-dropdown-item has-link aria-role="listitem">
<a
:href="`@${preferredUsername}/feed/ics`"
:title="$t('ICS feed for events')"
>
{{ $t("ICS/WebCal Feed") }}
<b-icon icon="calendar-sync" />
</a>
</b-dropdown-item>
</b-dropdown>
</div>
</div>
</div>
@ -314,6 +370,7 @@
v-if="isCurrentActorAGroupModerator"
:to="{
name: RouteName.CREATE_EVENT,
query: { actorId: group.id },
}"
class="button is-primary"
>{{ $t("+ Create an event") }}</router-link
@ -442,19 +499,19 @@
/>
</div>
</b-modal>
<b-modal
:active.sync="isReportModalActive"
has-modal-card
ref="reportModal"
>
<report-modal
:on-confirm="reportGroup"
:title="$t('Report this group')"
:outside-domain="group.domain"
@close="$refs.reportModal.close()"
/>
</b-modal>
</div>
<b-modal
:active.sync="isReportModalActive"
has-modal-card
ref="reportModal"
>
<report-modal
:on-confirm="reportGroup"
:title="$t('Report this group')"
:outside-domain="group.domain"
@close="$refs.reportModal.close()"
/>
</b-modal>
</div>
</template>
@ -506,11 +563,9 @@ import ReportModal from "../../components/Report/ReportModal.vue";
},
metaInfo() {
return {
// if no subcomponents specify a metaInfo.title, this title will be used
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
title: this.groupTitle,
// all titles will be injected into this template
titleTemplate: "%s | Mobilizon",
meta: [
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
@ -617,15 +672,14 @@ export default class Group extends mixins(GroupMixin) {
}
get groupMember(): IMember | undefined {
if (!this.person || !this.person.id) return undefined;
return this.person.memberships.elements.find(
({ parent: { id } }) => id === this.group.id
);
if (this.person?.memberships?.total > 0) {
return this.person?.memberships?.elements[0];
}
return undefined;
}
get groupMemberships(): (string | undefined)[] {
if (!this.person || !this.person.id) return [];
return this.person.memberships.elements
return this.person?.memberships?.elements
.filter(
(membership: IMember) =>
![

View File

@ -33,14 +33,13 @@
</nav>
<section
class="container section"
v-if="group && isCurrentActorAGroupAdmin"
v-if="group && isCurrentActorAGroupAdmin && followers"
>
<h1>{{ $t("Group Followers") }} ({{ followers.total }})</h1>
<b-field :label="$t('Status')" horizontal>
<b-switch v-model="pending">{{ $t("Pending") }}</b-switch>
</b-field>
<b-table
v-if="followers"
:data="followers.elements"
ref="queueTable"
:loading="this.$apollo.loading"
@ -172,7 +171,7 @@ export default class GroupFollowers extends mixins(GroupMixin) {
pending: boolean | null =
(this.$route.query.pending as string) == "1" || null;
FOLLOWERS_PER_PAGE = 1;
FOLLOWERS_PER_PAGE = 10;
usernameWithDomain = usernameWithDomain;
@ -245,11 +244,14 @@ export default class GroupFollowers extends mixins(GroupMixin) {
},
],
});
this.$notifier.success(
this.$t("@{username}'s follow request was rejected", {
username: follower.actor.preferredUsername,
}) as string
);
const message = approved
? this.$t("@{username}'s follow request was accepted", {
username: follower.actor.preferredUsername,
})
: this.$t("@{username}'s follow request was rejected", {
username: follower.actor.preferredUsername,
});
this.$notifier.success(message as string);
} catch (error) {
console.error(error);
if (error.graphQLErrors && error.graphQLErrors.length > 0) {

View File

@ -104,9 +104,7 @@ import RouteName from "../../router/name";
},
metaInfo() {
return {
// if no subcomponents specify a metaInfo.title, this title will be used
title: this.$t("My groups") as string,
// all titles will be injected into this template
titleTemplate: "%s | Mobilizon",
};
},

View File

@ -49,4 +49,7 @@ export default class Settings extends mixins(GroupMixin) {
aside.section {
padding-top: 1rem;
}
.container.section {
background: $white;
}
</style>

View File

@ -0,0 +1,436 @@
<template>
<div class="container section">
<nav class="breadcrumb" aria-label="breadcrumbs">
<ul v-if="group">
<li>
<router-link
:to="{
name: RouteName.GROUP,
params: { preferredUsername: usernameWithDomain(group) },
}"
>{{ group.name }}</router-link
>
</li>
<li>
<router-link
:to="{
name: RouteName.TIMELINE,
params: { preferredUsername: usernameWithDomain(group) },
}"
>{{ $t("Activity") }}</router-link
>
</li>
</ul>
</nav>
<section class="timeline">
<b-field>
<b-radio-button v-model="activityType" :native-value="undefined">
<b-icon icon="timeline-text"></b-icon>
{{ $t("All activities") }}</b-radio-button
>
<b-radio-button
v-model="activityType"
:native-value="ActivityType.MEMBER"
>
<b-icon icon="account-multiple-plus"></b-icon>
{{ $t("Members") }}</b-radio-button
>
<b-radio-button
v-model="activityType"
:native-value="ActivityType.GROUP"
>
<b-icon icon="cog"></b-icon>
{{ $t("Settings") }}</b-radio-button
>
<b-radio-button
v-model="activityType"
:native-value="ActivityType.EVENT"
>
<b-icon icon="calendar"></b-icon>
{{ $t("Events") }}</b-radio-button
>
<b-radio-button
v-model="activityType"
:native-value="ActivityType.POST"
>
<b-icon icon="bullhorn"></b-icon>
{{ $t("Posts") }}</b-radio-button
>
<b-radio-button
v-model="activityType"
:native-value="ActivityType.DISCUSSION"
>
<b-icon icon="chat"></b-icon>
{{ $t("Discussions") }}</b-radio-button
>
<b-radio-button
v-model="activityType"
:native-value="ActivityType.RESOURCE"
>
<b-icon icon="link"></b-icon>
{{ $t("Resources") }}</b-radio-button
>
</b-field>
<b-field>
<b-radio-button v-model="activityAuthor" :native-value="undefined">
<b-icon icon="timeline-text"></b-icon>
{{ $t("All activities") }}</b-radio-button
>
<b-radio-button
v-model="activityAuthor"
:native-value="ActivityAuthorFilter.SELF"
>
<b-icon icon="account"></b-icon>
{{ $t("From yourself") }}</b-radio-button
>
<b-radio-button
v-model="activityAuthor"
:native-value="ActivityAuthorFilter.BY"
>
<b-icon icon="account-multiple"></b-icon>
{{ $t("By others") }}</b-radio-button
>
</b-field>
<transition-group name="timeline-list" tag="div">
<div
class="day"
v-for="[date, activityItems] in Object.entries(activities)"
:key="date"
>
<b-skeleton
v-if="date.search(/skeleton/) !== -1"
width="300px"
height="48px"
/>
<h2 class="is-size-3 has-text-weight-bold" v-else-if="isToday(date)">
<span v-tooltip="$options.filters.formatDateString(date)">
{{ $t("Today") }}
</span>
</h2>
<h2
class="is-size-3 has-text-weight-bold"
v-else-if="isYesterday(date)"
>
<span v-tooltip="$options.filters.formatDateString(date)">{{
$t("Yesterday")
}}</span>
</h2>
<h2 v-else class="is-size-3 has-text-weight-bold">
{{ date | formatDateString }}
</h2>
<ul>
<li v-for="activityItem in activityItems" :key="activityItem.id">
<skeleton-activity-item v-if="activityItem.skeleton" />
<component
v-else
:is="component(activityItem.type)"
:activity="activityItem"
/>
</li>
</ul></div
></transition-group>
<empty-content
icon="timeline-text"
v-if="
!$apollo.loading &&
activity.elements.length > 0 &&
activity.elements.length >= activity.total
"
>
{{ $t("No more activity to display.") }}
</empty-content>
<empty-content
v-if="!$apollo.loading && activity.total === 0"
icon="timeline-text"
>
{{
$t(
"There is no activity yet. Start doing some things to see activity appear here."
)
}}
</empty-content>
<observer @intersect="loadMore" />
<b-button
v-if="activity.elements.length < activity.total"
@click="loadMore"
>{{ $t("Load more activities") }}</b-button
>
</section>
</div>
</template>
<script lang="ts">
import { GROUP_TIMELINE } from "@/graphql/group";
import { IGroup, usernameWithDomain } from "@/types/actor";
import { ActivityType } from "@/types/enums";
import { Paginate } from "@/types/paginate";
import { Component, Prop, Vue } from "vue-property-decorator";
import { IActivity } from "../../types/activity.model";
import Observer from "../../components/Utils/Observer.vue";
import SkeletonActivityItem from "../../components/Activity/SkeletonActivityItem.vue";
import RouteName from "../../router/name";
const PAGINATION_LIMIT = 25;
const SKELETON_DAY_ITEMS = 2;
const SKELETON_ITEMS_PER_DAY = 5;
type IActivitySkeleton = IActivity | { skeleton: string };
enum ActivityAuthorFilter {
SELF = "SELF",
BY = "BY",
}
export type ActivityFilter = ActivityType | ActivityAuthorFilter | null;
@Component({
apollo: {
group: {
query: GROUP_TIMELINE,
fetchPolicy: "cache-and-network",
variables() {
return {
preferredUsername: this.preferredUsername,
page: 1,
limit: PAGINATION_LIMIT,
type: this.activityType,
author: this.activityAuthor,
};
},
},
},
components: {
Observer,
SkeletonActivityItem,
"event-activity-item": () =>
import("../../components/Activity/EventActivityItem.vue"),
"post-activity-item": () =>
import("../../components/Activity/PostActivityItem.vue"),
"member-activity-item": () =>
import("../../components/Activity/MemberActivityItem.vue"),
"resource-activity-item": () =>
import("../../components/Activity/ResourceActivityItem.vue"),
"discussion-activity-item": () =>
import("../../components/Activity/DiscussionActivityItem.vue"),
"group-activity-item": () =>
import("../../components/Activity/GroupActivityItem.vue"),
"empty-content": () => import("../../components/Utils/EmptyContent.vue"),
},
metaInfo() {
return {
title: this.$t("{group} activity timeline", {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
group: this.group?.name,
}) as string,
titleTemplate: "%s | Mobilizon",
};
},
})
export default class Timeline extends Vue {
@Prop({ required: true, type: String }) preferredUsername!: string;
group!: IGroup;
RouteName = RouteName;
usernameWithDomain = usernameWithDomain;
ActivityType = ActivityType;
ActivityAuthorFilter = ActivityAuthorFilter;
get activityType(): ActivityType | undefined {
if (this.$route?.query?.type) {
return this.$route?.query?.type as ActivityType;
}
return undefined;
}
set activityType(type: ActivityType | undefined) {
this.$router.push({
name: RouteName.TIMELINE,
params: {
preferredUsername: this.preferredUsername,
},
query: { ...this.$route.query, type },
});
}
get activityAuthor(): ActivityAuthorFilter | undefined {
if (this.$route?.query?.author) {
return this.$route?.query?.author as ActivityAuthorFilter;
}
return undefined;
}
set activityAuthor(author: ActivityAuthorFilter | undefined) {
this.$router.push({
name: RouteName.TIMELINE,
params: {
preferredUsername: this.preferredUsername,
},
query: { ...this.$route.query, author },
});
}
get activity(): Paginate<IActivitySkeleton> {
if (this.group) {
return this.group.activity;
}
return {
total: 0,
elements: this.skeletons.map((skeleton) => ({
skeleton,
})),
};
}
page = 1;
limit = PAGINATION_LIMIT;
component(type: ActivityType): string | undefined {
switch (type) {
case ActivityType.EVENT:
return "event-activity-item";
case ActivityType.POST:
return "post-activity-item";
case ActivityType.MEMBER:
return "member-activity-item";
case ActivityType.RESOURCE:
return "resource-activity-item";
case ActivityType.DISCUSSION:
return "discussion-activity-item";
case ActivityType.GROUP:
return "group-activity-item";
}
}
get skeletons(): string[] {
return [...Array(SKELETON_DAY_ITEMS)]
.map((_, i) => {
return [...Array(SKELETON_ITEMS_PER_DAY)].map((_a, j) => {
return `${i}-${j}`;
});
})
.flat();
}
async loadMore(): Promise<void> {
if (this.page * PAGINATION_LIMIT >= this.activity.total) {
return;
}
this.page++;
try {
await this.$apollo.queries.group.fetchMore({
variables: {
page: this.page,
limit: PAGINATION_LIMIT,
},
updateQuery: (previousResult, { fetchMoreResult }) => {
if (!fetchMoreResult) return previousResult;
const newActivities = fetchMoreResult.group.activity.elements;
const newTotal = fetchMoreResult.group.activity.total;
return {
group: {
...previousResult.group,
activity: {
__typename: previousResult.group.activity.__typename,
total: newTotal,
elements: [
...previousResult.group.activity.elements,
...newActivities,
],
},
},
};
},
});
} catch (e) {
console.error(e);
}
}
get activities(): Record<string, IActivitySkeleton[]> {
return this.activity.elements.reduce(
(acc: Record<string, IActivitySkeleton[]>, elem) => {
let key;
if (this.isIActivity(elem)) {
const insertedAt = new Date(elem.insertedAt);
insertedAt.setHours(0);
insertedAt.setMinutes(0);
insertedAt.setSeconds(0);
insertedAt.setMilliseconds(0);
key = insertedAt.toISOString();
} else {
key = `skeleton-${elem.skeleton.split("-")[0]}`;
}
const existing = acc[key];
if (existing) {
acc[key] = [...existing, ...[elem]];
} else {
acc[key] = [elem];
}
return acc;
},
{}
);
}
isIActivity(object: IActivitySkeleton): object is IActivity {
return !("skeleton" in object);
}
getRandomInt(min: number, max: number): number {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min) + min);
}
isToday(dateString: string): boolean {
const now = new Date();
const date = new Date(dateString);
return (
now.getFullYear() === date.getFullYear() &&
now.getMonth() === date.getMonth() &&
now.getDate() === date.getDate()
);
}
isYesterday(dateString: string): boolean {
const date = new Date(dateString);
const yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
return (
yesterday.getFullYear() === date.getFullYear() &&
yesterday.getMonth() === date.getMonth() &&
yesterday.getDate() === date.getDate()
);
}
}
</script>
<style lang="scss" scoped>
.container.section {
background: $white;
}
.timeline {
ul {
// padding: 0.5rem 0;
margin: 0;
list-style: none;
position: relative;
&::before {
content: "";
height: 100%;
width: 1px;
background-color: #d9d9d9;
position: absolute;
top: 0;
left: 1rem;
}
li {
display: flex;
margin: 0.5rem 0;
}
}
}
</style>

View File

@ -55,20 +55,23 @@
</div>
</section>
<div
id="featured_events"
id="recent_events"
class="container section"
v-if="config && (!currentUser.id || !currentActor.id)"
>
<section class="events-featured">
<h2 class="title">{{ $t("Featured events") }}</h2>
<section class="events-recent">
<h2 class="is-size-2 has-text-weight-bold">
{{ $t("Last published events") }}
</h2>
<p>
{{ $t("On {instance}", { instance: config.name }) }}
<b-loading :active.sync="$apollo.loading" />
</p>
<b-loading :active.sync="$apollo.loading" />
<div
v-if="filteredFeaturedEvents.length > 0"
class="columns is-multiline"
>
<div v-if="this.events.total > 0" class="columns is-multiline">
<div
class="column is-one-third-desktop"
v-for="event in filteredFeaturedEvents.slice(0, 6)"
v-for="event in this.events.elements.slice(0, 6)"
:key="event.uuid"
>
<EventCard :event="event" />
@ -193,11 +196,12 @@
})
}}</b-message>
</section>
<!-- Your upcoming events -->
<section
v-if="currentActor.id && goingToEvents.size > 0"
class="container"
>
<h3 class="title">{{ $t("Upcoming") }}</h3>
<h3 class="title">{{ $t("Your upcoming events") }}</h3>
<b-loading :active.sync="$apollo.loading" />
<div v-for="row of goingToEvents" class="upcoming-events" :key="row[0]">
<span
@ -239,6 +243,7 @@
>
</span>
</section>
<!-- Last week events -->
<section v-if="currentActor && lastWeekEvents.length > 0">
<h3 class="title">{{ $t("Last week") }}</h3>
<b-loading :active.sync="$apollo.loading" />
@ -252,19 +257,59 @@
/>
</div>
</section>
<section class="events-featured">
<h2 class="title">{{ $t("Featured events") }}</h2>
<b-loading :active.sync="$apollo.loading" />
<div
v-if="filteredFeaturedEvents.length > 0"
class="columns is-multiline"
>
<!-- Events close to you -->
<section class="events-close" v-if="closeEvents.total > 0">
<h2 class="is-size-2 has-text-weight-bold">
{{ $t("Close events") }}
</h2>
<p>
{{
$tc(
"Within {number} kilometers of {place}",
loggedUser.settings.location.range,
{
number: loggedUser.settings.location.range,
place: loggedUser.settings.location.name,
}
)
}}
<router-link :to="{ name: RouteName.PREFERENCES }">
<b-icon
class="clickable"
icon="pencil"
:title="$t('Change')"
size="is-small"
/>
</router-link>
<b-loading :active.sync="$apollo.loading" />
</p>
<div class="columns is-multiline">
<div
class="column is-one-third-desktop"
v-for="event in filteredFeaturedEvents.slice(0, 6)"
v-for="event in closeEvents.elements.slice(0, 3)"
:key="event.uuid"
>
<EventCard :event="event" />
<event-card :event="event" />
</div>
</div>
</section>
<hr class="home-separator" />
<section class="events-recent">
<h2 class="is-size-2 has-text-weight-bold">
{{ $t("Last published events") }}
</h2>
<p>
{{ $t("On {instance}", { instance: config.name }) }}
<b-loading :active.sync="$apollo.loading" />
</p>
<div v-if="this.events.total > 0" class="columns is-multiline">
<div
class="column is-one-third-desktop"
v-for="event in this.events.elements.slice(0, 6)"
:key="event.uuid"
>
<recent-event-card-wrapper :event="event" />
</div>
</div>
<b-message v-else type="is-danger"
@ -283,13 +328,14 @@
<script lang="ts">
import { Component, Vue, Watch } from "vue-property-decorator";
import { ParticipantRole } from "@/types/enums";
import { EventSortField, ParticipantRole, SortDirection } from "@/types/enums";
import { Paginate } from "@/types/paginate";
import { supportsWebPFormat } from "@/utils/support";
import { IParticipant, Participant } from "../types/participant.model";
import { FETCH_EVENTS } from "../graphql/event";
import { CLOSE_EVENTS, FETCH_EVENTS } from "../graphql/event";
import EventListCard from "../components/Event/EventListCard.vue";
import EventCard from "../components/Event/EventCard.vue";
import RecentEventCardWrapper from "../components/Event/RecentEventCardWrapper.vue";
import {
CURRENT_ACTOR_CLIENT,
LOGGED_USER_PARTICIPATIONS,
@ -309,6 +355,10 @@ import Subtitle from "../components/Utils/Subtitle.vue";
events: {
query: FETCH_EVENTS,
fetchPolicy: "no-cache", // Debug me: https://github.com/apollographql/apollo-client/issues/3030
variables: {
orderBy: EventSortField.INSERTED_AT,
direction: SortDirection.DESC,
},
},
currentActor: {
query: CURRENT_ACTOR_CLIENT,
@ -338,7 +388,24 @@ import Subtitle from "../components/Utils/Subtitle.vue";
(participation: IParticipant) => new Participant(participation)
),
skip() {
return this.currentUser.isLoggedIn === false;
return this.currentUser?.isLoggedIn === false;
},
},
closeEvents: {
query: CLOSE_EVENTS,
variables() {
return {
location: this.loggedUser?.settings?.location?.geohash,
radius: this.loggedUser?.settings?.location?.range,
};
},
update: (data) => data.searchEvents,
skip() {
return (
!this.currentUser?.isLoggedIn ||
!this.loggedUser?.settings?.location?.geohash ||
!this.loggedUser?.settings?.location?.range
);
},
},
},
@ -347,15 +414,14 @@ import Subtitle from "../components/Utils/Subtitle.vue";
DateComponent,
EventListCard,
EventCard,
RecentEventCardWrapper,
"settings-onboard": () => import("./User/SettingsOnboard.vue"),
},
metaInfo() {
return {
// if no subcomponents specify a metaInfo.title, this title will be used
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
title: this.instanceName,
// all titles will be injected into this template
titleTemplate: "%s | Mobilizon",
};
},
@ -372,7 +438,7 @@ export default class Home extends Vue {
country = { name: null };
currentUser!: ICurrentUser;
currentUser!: IUser;
loggedUser!: ICurrentUser;
@ -386,6 +452,8 @@ export default class Home extends Vue {
supportsWebPFormat = supportsWebPFormat;
closeEvents: Paginate<IEvent> = { elements: [], total: 0 };
// get displayed_name() {
// return this.loggedPerson && this.loggedPerson.name === null
// ? this.loggedPerson.preferredUsername
@ -507,21 +575,6 @@ export default class Home extends Vue {
return res;
}
/**
* Return all events from server excluding the ones shown as participating
*/
get filteredFeaturedEvents(): IEvent[] {
return this.events.elements.filter(
({ id }) =>
!this.thisWeekGoingToEvents
.filter(
(participation) => participation.role === ParticipantRole.CREATOR
)
.map(({ event: { id: eventId } }) => eventId)
.includes(id)
);
}
eventDeleted(eventid: string): void {
this.currentUserParticipations = this.currentUserParticipations.filter(
(participation) => participation.event.id !== eventid
@ -557,7 +610,7 @@ main > div > .container {
color: rgba(0, 0, 0, 0.87);
}
.events-featured {
.events-recent {
& > h3 {
padding-left: 0.75rem;
}
@ -628,7 +681,7 @@ section.hero {
}
}
#featured_events {
#recent_events {
padding: 1rem 0;
min-height: calc(100vh - 400px);
z-index: 10;
@ -688,4 +741,16 @@ section.hero {
}
}
}
#homepage {
background: $white;
}
.home-separator {
background-color: $orange-2;
}
.clickable {
cursor: pointer;
}
</style>

View File

@ -2,6 +2,43 @@
<div>
<form @submit.prevent="publish(false)" v-if="isCurrentActorAGroupModerator">
<div class="container section">
<nav class="breadcrumb" aria-label="breadcrumbs" v-if="actualGroup">
<ul>
<li>
<router-link
v-if="actualGroup"
:to="{
name: RouteName.GROUP,
params: {
preferredUsername: usernameWithDomain(actualGroup),
},
}"
>{{
actualGroup.name || actualGroup.preferredUsername
}}</router-link
>
<b-skeleton v-else :animated="true"></b-skeleton>
</li>
<li>
<router-link
v-if="actualGroup"
:to="{
name: RouteName.POSTS,
params: {
preferredUsername: usernameWithDomain(actualGroup),
},
}"
>{{ $t("Posts") }}</router-link
>
<b-skeleton v-else :animated="true"></b-skeleton>
</li>
<li class="is-active">
<span v-if="preferredUsername">{{ $t("New post") }}</span>
<span v-else-if="slug">{{ $t("Edit post") }}</span>
<b-skeleton v-else :animated="true"></b-skeleton>
</li>
</ul>
</nav>
<h1 class="title" v-if="isUpdate === true">
{{ $t("Edit post") }}
</h1>
@ -111,7 +148,6 @@
<script lang="ts">
import { Component, Prop, Watch } from "vue-property-decorator";
import { mixins } from "vue-class-component";
import { FETCH_GROUP } from "@/graphql/group";
import {
buildFileFromIMedia,
buildFileVariable,
@ -135,11 +171,24 @@ import TagInput from "../../components/Event/TagInput.vue";
import RouteName from "../../router/name";
import Subtitle from "../../components/Utils/Subtitle.vue";
import PictureUpload from "../../components/PictureUpload.vue";
import { PERSON_MEMBERSHIP_GROUP } from "@/graphql/actor";
import { FETCH_GROUP } from "@/graphql/group";
@Component({
apollo: {
tags: TAGS,
config: CONFIG,
group: {
query: FETCH_GROUP,
variables() {
return {
name: this.preferredUsername,
};
},
skip() {
return !this.preferredUsername;
},
},
post: {
query: FETCH_POST,
fetchPolicy: "cache-and-network",
@ -152,15 +201,17 @@ import PictureUpload from "../../components/PictureUpload.vue";
return !this.slug;
},
},
group: {
query: FETCH_GROUP,
person: {
query: PERSON_MEMBERSHIP_GROUP,
fetchPolicy: "cache-and-network",
variables() {
return {
name: this.preferredUsername,
id: this.currentActor.id,
group: this.actualGroup.preferredUsername,
};
},
skip() {
return !this.preferredUsername;
return !this.currentActor?.id || !this.actualGroup?.preferredUsername;
},
},
},
@ -206,6 +257,10 @@ export default class EditPost extends mixins(GroupMixin) {
errors: Record<string, unknown> = {};
RouteName = RouteName;
usernameWithDomain = usernameWithDomain;
async mounted(): Promise<void> {
this.pictureFile = await buildFileFromIMedia(this.post.picture);
}
@ -331,18 +386,6 @@ export default class EditPost extends mixins(GroupMixin) {
}
return this.group;
}
hasCurrentActorThisRole(givenRole: string | string[]): boolean {
const roles = Array.isArray(givenRole) ? givenRole : [givenRole];
return (
this.person &&
this.actualGroup &&
this.person.memberships.elements.some(
({ parent: { id }, role }) =>
id === this.actualGroup.id && roles.includes(role)
)
);
}
}
</script>
<style lang="scss" scoped>
@ -360,4 +403,8 @@ form {
}
}
}
.breadcrumb li.is-active > span {
padding: 0 0.75em;
}
</style>

View File

@ -128,11 +128,9 @@ const POSTS_PAGE_LIMIT = 10;
},
metaInfo() {
return {
// if no subcomponents specify a metaInfo.title, this title will be used
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
title: this.$t("My groups") as string,
// all titles will be injected into this template
titleTemplate: "%s | Mobilizon",
};
},

View File

@ -190,6 +190,9 @@
<b-modal :active.sync="createLinkResourceModal" has-modal-card>
<div class="modal-card">
<section class="modal-card-body">
<b-message type="is-danger" v-if="modalError">
{{ modalError }}
</b-message>
<form @submit.prevent="createResource">
<b-field :label="$t('URL')">
<b-input
@ -317,6 +320,8 @@ export default class Resources extends Mixins(ResourceMixin) {
renameModal = false;
modalError = "";
groupObject: Record<string, unknown> = {
name: "resources",
pull: "clone",
@ -341,6 +346,7 @@ export default class Resources extends Mixins(ResourceMixin) {
async createResource(): Promise<void> {
if (!this.resource.actor) return;
this.modalError = "";
try {
await this.$apollo.mutate({
mutation: CREATE_RESOURCE,
@ -364,21 +370,28 @@ export default class Resources extends Mixins(ResourceMixin) {
this.newResource.resourceUrl = "";
} catch (err) {
console.error(err);
this.modalError = err.graphQLErrors[0].message;
}
}
async previewResource(): Promise<void> {
if (this.newResource.resourceUrl === "") return;
const { data } = await this.$apollo.mutate({
mutation: PREVIEW_RESOURCE_LINK,
variables: {
resourceUrl: this.newResource.resourceUrl,
},
});
this.newResource.title = data.previewResourceLink.title;
this.newResource.summary = data.previewResourceLink.description;
this.newResource.metadata = data.previewResourceLink;
this.newResource.type = "link";
this.modalError = "";
try {
if (this.newResource.resourceUrl === "") return;
const { data } = await this.$apollo.mutate({
mutation: PREVIEW_RESOURCE_LINK,
variables: {
resourceUrl: this.newResource.resourceUrl,
},
});
this.newResource.title = data.previewResourceLink.title;
this.newResource.summary = data.previewResourceLink.description;
this.newResource.metadata = data.previewResourceLink;
this.newResource.type = "link";
} catch (err) {
console.error(err);
this.modalError = err.graphQLErrors[0].message;
}
}
createSentenceForType(type: string): string {

View File

@ -27,7 +27,9 @@
<address-auto-complete
v-model="location"
id="location"
ref="aac"
:placeholder="$t('For instance: London')"
@input="locchange"
/>
</b-field>
<b-field :label="$t('Radius')" label-for="radius">
@ -63,7 +65,7 @@
</section>
<section
class="events-featured"
v-if="!tag && !(search || location.geom || when !== 'any')"
v-if="!canSearchEvents && !canSearchGroups"
>
<b-loading :active.sync="$apollo.loading"></b-loading>
<h2 class="title">{{ $t("Featured events") }}</h2>
@ -173,7 +175,7 @@
<script lang="ts">
import { Component, Prop, Vue } from "vue-property-decorator";
import ngeohash from "ngeohash";
import ngeohash, { GeographicPoint } from "ngeohash";
import {
endOfToday,
addDays,
@ -188,7 +190,6 @@ import {
eachWeekendOfInterval,
} from "date-fns";
import { SearchTabs } from "@/types/enums";
import { RawLocation } from "vue-router";
import EventCard from "../components/Event/EventCard.vue";
import { FETCH_EVENTS } from "../graphql/event";
import { IEvent } from "../types/event.model";
@ -200,6 +201,7 @@ import { Paginate } from "../types/paginate";
import { IGroup } from "../types/actor";
import GroupCard from "../components/Group/GroupCard.vue";
import { CONFIG } from "../graphql/config";
import { REVERSE_GEOCODE } from "../graphql/address";
interface ISearchTimeOption {
label: string;
@ -211,6 +213,14 @@ const EVENT_PAGE_LIMIT = 10;
const GROUP_PAGE_LIMIT = 10;
const DEFAULT_RADIUS = 25; // value to set if radius is null but location set
const DEFAULT_ZOOM = 11; // zoom on a city
const GEOHASH_DEPTH = 9; // put enough accuracy, radius will be used anyway
const THROTTLE = 2000; // minimum interval in ms between two requests
@Component({
components: {
EventCard,
@ -235,9 +245,9 @@ const GROUP_PAGE_LIMIT = 10;
limit: EVENT_PAGE_LIMIT,
};
},
debounce: 300,
throttle: THROTTLE,
skip() {
return !this.tag && !this.geohash && this.end === null;
return !this.canSearchEvents;
},
},
searchGroups: {
@ -252,16 +262,15 @@ const GROUP_PAGE_LIMIT = 10;
limit: GROUP_PAGE_LIMIT,
};
},
throttle: THROTTLE,
skip() {
return !this.search && !this.geohash;
return !this.canSearchGroups;
},
},
},
metaInfo() {
return {
// if no subcomponents specify a metaInfo.title, this title will be used
title: this.$t("Explore events") as string,
// all titles will be injected into this template
titleTemplate: "%s | Mobilizon",
};
},
@ -336,6 +345,14 @@ export default class Search extends Vue {
GROUP_PAGE_LIMIT = GROUP_PAGE_LIMIT;
$refs!: {
aac: AddressAutoComplete;
};
mounted(): void {
this.prepareLocation(this.$route.query.geohash as string);
}
radiusString = (radius: number | null): string => {
if (radius) {
return this.$tc("{nb} km", radius, { nb: radius }) as string;
@ -354,13 +371,10 @@ export default class Search extends Vue {
}
set search(term: string | undefined) {
const route: RawLocation = {
this.$router.replace({
name: RouteName.SEARCH,
};
if (term !== "") {
route.query = { ...this.$route.query, term };
}
this.$router.replace(route);
query: { ...this.$route.query, term },
});
}
get activeTab(): SearchTabs {
@ -376,6 +390,21 @@ export default class Search extends Vue {
});
}
get geohash(): string | undefined {
if (this.location?.geom) {
const [lon, lat] = this.location.geom.split(";");
return ngeohash.encode(lat, lon, GEOHASH_DEPTH);
}
return undefined;
}
set geohash(value: string | undefined) {
this.$router.replace({
name: RouteName.SEARCH,
query: { ...this.$route.query, geohash: value },
});
}
get radius(): number | null {
if (this.$route.query.radius === "any") {
return null;
@ -413,16 +442,45 @@ export default class Search extends Vue {
return { start: startOfDay(start), end: endOfDay(end) };
}
get geohash(): string | undefined {
private prepareLocation(value: string | undefined): void {
console.info("geohash location", this.location);
if (this.location && this.location.geom) {
const [lon, lat] = this.location.geom.split(";");
return ngeohash.encode(lat, lon, 6);
if (value !== undefined) {
// decode
const latlon = ngeohash.decode(value);
// set location
this.reverseGeoCode(latlon, DEFAULT_ZOOM);
}
return undefined;
}
async reverseGeoCode(e: GeographicPoint, zoom: number): Promise<void> {
const result = await this.$apollo.query({
query: REVERSE_GEOCODE,
variables: {
latitude: e.latitude,
longitude: e.longitude,
zoom,
locale: this.$i18n.locale,
},
});
const addressData = result.data.reverseGeocode.map(
(address: IAddress) => new Address(address)
);
if (addressData.length > 0) {
this.location = addressData[0];
}
}
locchange = (e: IAddress): void => {
if (this.radius === undefined || this.radius === null) {
this.radius = DEFAULT_RADIUS;
}
if (e.geom) {
const [lon, lat] = e.geom.split(";");
this.geohash = ngeohash.encode(lat, lon, GEOHASH_DEPTH);
}
};
get start(): Date | undefined {
if (this.options[this.when]) {
return this.options[this.when].start;
@ -436,6 +494,31 @@ export default class Search extends Vue {
}
return undefined;
}
get canSearchGroups(): boolean {
return (
this.stringExists(this.search) ||
(this.stringExists(this.geohash) && this.valueExists(this.radius))
);
}
get canSearchEvents(): boolean {
return (
this.stringExists(this.search) ||
this.stringExists(this.tag) ||
(this.stringExists(this.geohash) && this.valueExists(this.radius)) ||
this.valueExists(this.end)
);
}
// helper functions for skip
private valueExists(value: any): boolean {
return value !== undefined && value !== null;
}
private stringExists(value: string | undefined): boolean {
return this.valueExists(value) && (value as string).length > 0;
}
}
</script>

View File

@ -9,7 +9,7 @@
</li>
<li class="is-active">
<router-link :to="{ name: RouteName.NOTIFICATIONS }">{{
$t("Email notifications")
$t("Notifications")
}}</router-link>
</li>
</ul>
@ -118,35 +118,123 @@
</b-select>
</div>
</section>
<section>
<div class="setting-title">
<h2>{{ $t("Personal feeds") }}</h2>
</div>
<p>
{{
$t(
"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."
)
}}
</p>
<div v-if="feedTokens && feedTokens.length > 0">
<div
class="buttons"
v-for="feedToken in feedTokens"
:key="feedToken.token"
>
<b-tooltip
:label="$t('URL copied to clipboard')"
:active="showCopiedTooltip.atom"
always
type="is-success"
position="is-left"
>
<b-button
tag="a"
icon-left="rss"
@click="
(e) => copyURL(e, tokenToURL(feedToken.token, 'atom'), 'atom')
"
:href="tokenToURL(feedToken.token, 'atom')"
target="_blank"
>{{ $t("RSS/Atom Feed") }}</b-button
>
</b-tooltip>
<b-tooltip
:label="$t('URL copied to clipboard')"
:active="showCopiedTooltip.ics"
always
type="is-success"
position="is-left"
>
<b-button
tag="a"
@click="
(e) => copyURL(e, tokenToURL(feedToken.token, 'ics'), 'ics')
"
icon-left="calendar-sync"
:href="tokenToURL(feedToken.token, 'ics')"
target="_blank"
>{{ $t("ICS/WebCal Feed") }}</b-button
>
</b-tooltip>
<b-button
icon-left="refresh"
type="is-text"
@click="openRegenerateFeedTokensConfirmation"
>{{ $t("Regenerate new links") }}</b-button
>
</div>
</div>
<div v-else>
<b-button
icon-left="refresh"
type="is-text"
@click="generateFeedTokens"
>{{ $t("Create new links") }}</b-button
>
</div>
</section>
</div>
</template>
<script lang="ts">
import { Component, Vue, Watch } from "vue-property-decorator";
import { INotificationPendingEnum } from "@/types/enums";
import { USER_SETTINGS, SET_USER_SETTINGS } from "../../graphql/user";
import {
USER_SETTINGS,
SET_USER_SETTINGS,
FEED_TOKENS_LOGGED_USER,
} from "../../graphql/user";
import { IUser } from "../../types/current-user.model";
import RouteName from "../../router/name";
import { IFeedToken } from "@/types/feedtoken.model";
import { CREATE_FEED_TOKEN, DELETE_FEED_TOKEN } from "@/graphql/feed_tokens";
@Component({
apollo: {
loggedUser: USER_SETTINGS,
feedTokens: {
query: FEED_TOKENS_LOGGED_USER,
update: (data) =>
data.loggedUser.feedTokens.filter(
(token: IFeedToken) => token.actor === null
),
},
},
})
export default class Notifications extends Vue {
loggedUser!: IUser;
notificationOnDay = true;
feedTokens: IFeedToken[] = [];
notificationEachWeek = false;
notificationOnDay: boolean | undefined = true;
notificationBeforeEvent = false;
notificationEachWeek: boolean | undefined = false;
notificationPendingParticipation = INotificationPendingEnum.NONE;
notificationBeforeEvent: boolean | undefined = false;
notificationPendingParticipation: INotificationPendingEnum | undefined =
INotificationPendingEnum.NONE;
notificationPendingParticipationValues: Record<string, unknown> = {};
RouteName = RouteName;
showCopiedTooltip = { ics: false, atom: false };
mounted(): void {
this.notificationPendingParticipationValues = {
[INotificationPendingEnum.NONE]: this.$t("Do not receive any mail"),
@ -175,6 +263,62 @@ export default class Notifications extends Vue {
refetchQueries: [{ query: USER_SETTINGS }],
});
}
tokenToURL(token: string, format: string): string {
return `${window.location.origin}/events/going/${token}/${format}`;
}
copyURL(e: Event, url: string, format: "ics" | "atom"): void {
if (navigator.clipboard) {
e.preventDefault();
navigator.clipboard.writeText(url);
this.showCopiedTooltip[format] = true;
setTimeout(() => {
this.showCopiedTooltip[format] = false;
}, 2000);
}
}
openRegenerateFeedTokensConfirmation(): void {
this.$buefy.dialog.confirm({
type: "is-warning",
title: this.$t("Regenerate new links") as string,
message: this.$t(
"You'll need to change the URLs where there were previously entered."
) as string,
confirmText: this.$t("Regenerate new links") as string,
cancelText: this.$t("Cancel") as string,
onConfirm: () => this.regenerateFeedTokens(),
});
}
async regenerateFeedTokens(): Promise<void> {
if (this.feedTokens.length < 1) return;
await this.deleteFeedToken(this.feedTokens[0].token);
const newToken = await this.createNewFeedToken();
this.feedTokens.pop();
this.feedTokens.push(newToken);
}
async generateFeedTokens(): Promise<void> {
const newToken = await this.createNewFeedToken();
this.feedTokens.push(newToken);
}
private async deleteFeedToken(token: string): Promise<void> {
await this.$apollo.mutate({
mutation: DELETE_FEED_TOKEN,
variables: { token },
});
}
private async createNewFeedToken(): Promise<IFeedToken> {
const { data } = await this.$apollo.mutate({
mutation: CREATE_FEED_TOKEN,
});
return data.createFeedToken;
}
}
</script>
@ -192,4 +336,8 @@ export default class Notifications extends Vue {
margin-left: 5px;
}
}
::v-deep .buttons > *:not(:last-child) .button {
margin-right: 0.5rem;
}
</style>

View File

@ -26,7 +26,7 @@
</option>
</b-select>
</b-field>
<b-field :label="$t('Timezone')">
<b-field :label="$t('Timezone')" v-if="selectedTimezone">
<b-select
:placeholder="$t('Select a timezone')"
:loading="!config || !loggedUser"
@ -55,11 +55,45 @@
<b-message v-else type="is-danger">{{
$t("Unable to detect timezone.")
}}</b-message>
<hr />
<b-field grouped>
<b-field :label="$t('City or region')" expanded>
<address-auto-complete
v-if="loggedUser && loggedUser.settings"
:type="AddressSearchType.ADMINISTRATIVE"
:doGeoLocation="false"
v-model="address"
>
</address-auto-complete>
</b-field>
<b-field :label="$t('Radius')">
<b-select
:placeholder="$t('Select a radius')"
v-model="locationRange"
>
<option
v-for="index in [1, 5, 10, 25, 50, 100]"
:key="index"
:value="index"
>
{{ $tc("{count} km", index, { count: index }) }}
</option>
</b-select>
</b-field>
</b-field>
<p>
{{
$t(
"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."
)
}}
</p>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue, Watch } from "vue-property-decorator";
import { Component, Vue } from "vue-property-decorator";
import ngeohash from "ngeohash";
import { saveLocaleData } from "@/utils/auth";
import { TIMEZONES } from "../../graphql/config";
import {
@ -68,40 +102,62 @@ import {
UPDATE_USER_LOCALE,
} from "../../graphql/user";
import { IConfig } from "../../types/config.model";
import { IUser } from "../../types/current-user.model";
import { IUser, IUserSettings } from "../../types/current-user.model";
import langs from "../../i18n/langs.json";
import RouteName from "../../router/name";
import AddressAutoComplete from "../../components/Event/AddressAutoComplete.vue";
import { AddressSearchType } from "@/types/enums";
import { Address, IAddress } from "@/types/address.model";
@Component({
apollo: {
config: TIMEZONES,
loggedUser: USER_SETTINGS,
},
components: {
AddressAutoComplete,
},
})
export default class Preferences extends Vue {
config!: IConfig;
loggedUser!: IUser;
selectedTimezone: string | null = null;
locale: string | null = null;
RouteName = RouteName;
langs: Record<string, string> = langs;
@Watch("loggedUser")
setSavedTimezone(loggedUser: IUser): void {
if (loggedUser && loggedUser.settings.timezone) {
this.selectedTimezone = loggedUser.settings.timezone;
} else {
this.selectedTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
AddressSearchType = AddressSearchType;
get selectedTimezone(): string {
if (this.loggedUser?.settings?.timezone) {
return this.loggedUser.settings.timezone;
}
if (loggedUser && loggedUser.locale) {
this.locale = loggedUser.locale;
} else {
this.locale = this.$i18n.locale;
return Intl.DateTimeFormat().resolvedOptions().timeZone;
}
set selectedTimezone(selectedTimezone: string) {
if (selectedTimezone !== this.loggedUser?.settings?.timezone) {
this.updateUserSettings({ timezone: selectedTimezone });
}
}
get locale(): string {
if (this.loggedUser?.locale) {
return this.loggedUser?.locale;
}
return this.$i18n.locale;
}
set locale(locale: string) {
if (locale) {
this.$apollo.mutate({
mutation: UPDATE_USER_LOCALE,
variables: {
locale,
},
});
saveLocaleData(locale);
}
}
@ -142,29 +198,67 @@ export default class Preferences extends Vue {
);
}
@Watch("selectedTimezone")
async updateTimezone(): Promise<void> {
if (this.selectedTimezone !== this.loggedUser.settings.timezone) {
await this.$apollo.mutate<{ setUserSetting: string }>({
mutation: SET_USER_SETTINGS,
variables: {
timezone: this.selectedTimezone,
get address(): IAddress | null {
if (
this.loggedUser?.settings?.location?.name &&
this.loggedUser?.settings?.location?.geohash
) {
const { latitude, longitude } = ngeohash.decode(
this.loggedUser?.settings?.location?.geohash
);
const name = this.loggedUser?.settings?.location?.name;
return {
description: name,
locality: "",
type: "administrative",
geom: `${longitude};${latitude}`,
street: "",
postalCode: "",
region: "",
country: "",
};
}
return null;
}
set address(address: IAddress | null) {
if (address && address.geom) {
const { geom } = address;
const addressObject = new Address(address);
const queryText = addressObject.poiInfos.name;
const [lon, lat] = geom.split(";");
const geohash = ngeohash.encode(lat, lon, 6);
if (queryText && geom) {
this.updateUserSettings({
location: {
geohash,
name: queryText,
},
});
}
}
}
get locationRange(): number | undefined {
return this.loggedUser?.settings?.location?.range;
}
set locationRange(locationRange: number | undefined) {
if (locationRange) {
this.updateUserSettings({
location: {
range: locationRange,
},
});
}
}
@Watch("locale")
async updateLocale(): Promise<void> {
if (this.locale) {
await this.$apollo.mutate({
mutation: UPDATE_USER_LOCALE,
variables: {
locale: this.locale,
},
});
saveLocaleData(this.locale);
}
private async updateUserSettings(userSettings: IUserSettings) {
await this.$apollo.mutate<{ setUserSetting: string }>({
mutation: SET_USER_SETTINGS,
variables: userSettings,
refetchQueries: [{ query: USER_SETTINGS }],
});
}
}
</script>

View File

@ -47,6 +47,7 @@ export default class Validate extends Vue {
this.loading = false;
await this.$router.push({ name: RouteName.HOME });
} catch (err) {
this.loading = false;
console.error(err);
this.failed = true;
}

View File

@ -156,9 +156,7 @@ import AuthProviders from "../../components/User/AuthProviders.vue";
},
metaInfo() {
return {
// if no subcomponents specify a metaInfo.title, this title will be used
title: this.$t("Login on Mobilizon!") as string,
// all titles will be injected into this template
titleTemplate: "%s | Mobilizon",
};
},

View File

@ -203,11 +203,9 @@ import AuthProviders from "../../components/User/AuthProviders.vue";
components: { Subtitle, AuthProviders },
metaInfo() {
return {
// if no subcomponents specify a metaInfo.title, this title will be used
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
title: this.title,
// all titles will be injected into this template
titleTemplate: "%s | Mobilizon",
};
},

File diff suppressed because it is too large Load Diff

34
lib/config_provider.ex Normal file
View File

@ -0,0 +1,34 @@
defmodule Mobilizon.ConfigProvider do
@moduledoc """
Module to provide configuration from a custom file
"""
@behaviour Config.Provider
def init(path) when is_binary(path), do: path
def load(config, path) do
config_path = System.get_env("MOBILIZON_CONFIG_PATH") || path
cond do
File.exists?(config_path) ->
runtime_config = Config.Reader.read!(config_path)
Config.Reader.merge(config, runtime_config)
is_nil(System.get_env("MOBILIZON_DOCKER")) ->
warning = [
IO.ANSI.red(),
IO.ANSI.bright(),
"!!! #{config_path} not found! Please ensure it exists and that MOBILIZON_CONFIG_PATH is unset or points to an existing file",
IO.ANSI.reset()
]
IO.puts(warning)
config
true ->
IO.puts("No runtime config file found, but using environment variables for Docker")
config
end
end
end

View File

@ -459,6 +459,7 @@ defmodule Mobilizon.Federation.ActivityPub do
Map.get(additional, :force_member_removal, false) ||
!Actors.is_only_administrator?(member_id, group_id)},
{:delete, {:ok, %Member{} = member}} <- {:delete, Actors.delete_member(member)},
Mobilizon.Service.Activity.Member.insert_activity(member, subject: "member_quit"),
leave_data <- %{
"to" => [group_members_url],
"cc" => [group_url],
@ -477,12 +478,17 @@ defmodule Mobilizon.Federation.ActivityPub do
def remove(
%Member{} = member,
%Actor{type: :Group, url: group_url, members_url: group_members_url},
%Actor{url: moderator_url},
%Actor{url: moderator_url} = moderator,
local,
_additional \\ %{}
) do
with {:ok, %Member{id: member_id}} <- Actors.update_member(member, %{role: :rejected}),
%Member{} = member <- Actors.get_member(member_id),
{:ok, _} <-
Mobilizon.Service.Activity.Member.insert_activity(member,
moderator: moderator,
subject: "member_removed"
),
:ok <- Group.send_notification_to_removed_member(member),
remove_data <- %{
"to" => [group_members_url],
@ -518,6 +524,11 @@ defmodule Mobilizon.Federation.ActivityPub do
invited_by_id: actor_id,
url: Map.get(additional, :url)
}),
{:ok, _} <-
Mobilizon.Service.Activity.Member.insert_activity(member,
moderator: actor,
subject: "member_invited"
),
invite_data <- %{
"type" => "Invite",
"attributedTo" => group_url,
@ -699,7 +710,7 @@ defmodule Mobilizon.Federation.ActivityPub do
@spec publish(Actor.t(), Activity.t()) :: :ok
def publish(actor, %Activity{recipients: recipients} = activity) do
Logger.debug("Publishing an activity")
Logger.debug(inspect(activity))
Logger.debug(inspect(activity, pretty: true))
public = Visibility.is_public?(activity)
Logger.debug("is public ? #{public}")
@ -914,12 +925,19 @@ defmodule Mobilizon.Federation.ActivityPub do
defp accept_join(%Member{} = member, additional) do
with {:ok, %Member{} = member} <-
Actors.update_member(member, %{role: :member}),
{:ok, _} <-
Mobilizon.Service.Activity.Member.insert_activity(member,
subject: "member_approved"
),
_ <-
unless(is_nil(member.parent.domain),
do: Refresher.fetch_group(member.parent.url, member.actor)
),
Absinthe.Subscription.publish(Endpoint, member.actor,
group_membership_changed: member.actor.id
group_membership_changed: [
Actor.preferred_username_and_domain(member.parent),
member.actor.id
]
),
member_as_data <- Convertible.model_to_as(member),
audience <-
@ -949,6 +967,10 @@ defmodule Mobilizon.Federation.ActivityPub do
%Actor{url: actor_url} <- Actors.get_actor(actor_id),
{:ok, %Member{id: member_id} = member} <-
Actors.update_member(member, %{role: :member}),
{:ok, _} <-
Mobilizon.Service.Activity.Member.insert_activity(member,
subject: "member_accepted_invitation"
),
accept_data <- %{
"type" => "Accept",
"attributedTo" => member.parent.url,
@ -1029,6 +1051,9 @@ defmodule Mobilizon.Federation.ActivityPub do
%Actor{url: actor_url} <- Actors.get_actor(actor_id),
{:ok, %Member{url: member_url, id: member_id} = member} <-
Actors.delete_member(member),
Mobilizon.Service.Activity.Member.insert_activity(member,
subject: "member_rejected_invitation"
),
accept_data <- %{
"type" => "Reject",
"actor" => actor_url,

Some files were not shown because too many files have changed in this diff Show More